(57)【要約】  オープンソースプロジェクトなど複数の非協調コンポーネントを含むソフトウェアスタックをアセンブルすることに関連する、幾つかの問題点に対処するためのツールを提供する。このツールはスタック用の個々のプロジェクトを識別し、従属関係を管理して、直感的なグラフィカルインタフェースを提供してユーザを補助する。また、フィルタ基準に従ってプロジェクトへのアクセス又はプロジェクトのインストールを制御するための、プロジェクトフィルタも提供する。このようにして、オープンソースその他のソフトウェアの使用に関する内部ポリシーのコンプライアンスが行われる。
2007535770.tif 000002
【特許請求の範囲】
【請求項１】
非協調ソフトウェアプロジェクトのスタックをアセンブルするための方法であって、
非協調ソフトウェアプロジェクトのスタックを含むソフトウェアプロジェクトのスタックに関するスタック情報を提供するためにシステムにアクセスするシステムアクセス工程と、
対象のスタックに関する入力を送出する入力送出工程と、
入力に応答してスタック情報を受信するスタック情報受信工程と、
システムアクセス工程はワイドエリアネットワークを介してリクエストを配信する工程を含むことと、からなる方法。
【請求項２】
スタック情報は１つ以上のオープンソースプロジェクトを含む第１のスタックに関する情報を含む請求項１に記載の方法。
【請求項３】
非協調ソフトウェアプロジェクトのスタックをインストールするための方法であって、
コンピュータベースツールを操作して、インストールされる複数の非協調ソフトウェアプロジェクトを識別する情報を受信する第１操作工程と、
同コンピュータベースツールを操作して、同複数の非協調ソフトウェアプロジェクトのインストールに関する情報を記憶装置から読み出す第２操作工程と、
同コンピュータベースツールを用いて同情報を処理し、同複数の非協調ソフトウェアプロジェクトのインストール手続を取得する情報処理工程と、
同コンピュータベースツールを用いて同インストール手続を実行するインストール手続実行工程と、
インストール手続実行工程の後、同複数の非協調ソフトウェアプロジェクトのうちの１つの更新を識別する更新識別工程と、からなる方法。
【請求項４】
前記コンピュータベースツールを用いて前記更新に対するさらなるインストール手続を取得する工程と、
前記コンピュータベースツールを用いて同さらなるインストール手続を実行する工程と、を含む請求項３に記載の方法。
【請求項５】
ユーザに前記更新に関する指示を促す工程を含む請求項３に記載の方法。
【請求項６】
１つ以上のオープンソースソフトウェアコンポーネントに関する情報を記憶するための記憶装置と、
コンピュータに対する第１のフィルタ情報を同１つ以上のオープンソースソフトウェアプロジェクトに関する第２のフィルタ情報と比較するフィルタと、
フィルタが第１のフィルタ情報及び第２のフィルタ情報の比較結果に基づきコンピュータに対するインストール手続を判定することに応答するインストーラと、
記憶装置は１つ以上のプロプライエタリソフトウェアプロジェクトに関する情報を記憶することと、からなる、ソフトウェアをインストールするように動作するシステム。
【請求項７】
１つ以上のオープンソースソフトウェアコンポーネントに関する情報を記憶するための記憶装置と、
コンピュータに対する第１のフィルタ情報を同１つ以上のオープンソースソフトウェアプロジェクトに関する第２のフィルタ情報と比較するフィルタと、
フィルタが第１のフィルタ情報及び第２のフィルタ情報の比較結果に基づきコンピュータに対するインストール手続を判定することに応答するインストーラと、
第２のフィルタ情報は一般公衆許諾契約書、劣等一般公衆許諾契約書及びプロプライエタリライセンスのうちの１つに関する関係を含むことと、からなる、ソフトウェアをイン
ストールするように動作するシステム。
【請求項８】
非協調ソフトウェアプロジェクトのスタックに対するサポートを取得するための方法であって、
非協調ソフトウェアプロジェクトのスタックを含むソフトウェアプロジェクトのスタックに対するサポート情報を提供するためにサポートモジュールにアクセスするサポートモジュールアクセス工程と、
ソフトウェアプロジェクトの第１のスタックに関する入力情報をサポートモジュールに提供する入力情報提供工程と、
ソフトウェアプロジェクトの第１のスタックに関するサポート情報をサポートモジュールから受信するサポート情報受信工程と、
入力情報提供工程はワイドエリアネットワークを介してサポートモジュールへリクエストを配信する工程を含むことと、からなる方法。
【請求項９】
非協調プロジェクトのインストール済みスタックに関する更新を管理するための方法であって、
更新の利用可能性に関する情報を取得する工程と、
同更新により影響を受ける可能性を有するスタックを識別する工程と、
同スタックに関連するユーザに更新情報を提供する工程と、
更新情報は、更新が利用可能であることの通知、更新を反映するソフトウェア、及び更新のインストール情報のうちの１つを含むことと、からなる方法。
【請求項１０】
非協調プロジェクトのインストール済みスタックに関する更新を管理するための方法であって、
更新の利用可能性に関する情報を取得する工程と、
同更新により影響を受ける可能性を有するスタックを識別する工程と、
同スタックに関連するユーザに更新情報を提供する工程と、
同スタックを更新し、同スタックのうちの少なくとも一部をインストール済み状態とする工程と、からなる方法。
【請求項１１】
ソフトウェアのライセンスを管理するための方法であって、
所与のソフトウェアライセンスに関する公開情報及び非公開情報を記憶する情報記憶工程と、
公開情報のうちの少なくとも一部へのアクセスを提供するアクセス提供工程と、
非公開情報のうちの少なくとも一部へのアクセスのリクエストを受信するリクエスト受信工程と、
リクエストに応答して、非公開情報へのアクセスの認可のベリファイを実行するベリファイ実行工程と、
ベリファイに応答して、非公開情報のうちの一部へのアクセスを選択的に提供する選択的アクセス提供工程と、からなる方法。
【請求項１２】
ベリファイ実行工程は認可情報を取得する工程を含む請求項１１に記載の方法。
【請求項１３】
ソフトウェアプロジェクトへのアクセス又はソフトウェアプロジェクトの使用を制御するための方法であって、
ソフトウェアプロジェクトへのアクセス及びソフトウェアプロジェクトの使用のうちの一方に関するフィルタ基準を定義するフィルタ基準定義工程と、フィルタ基準は同ソフトウェアプロジェクトのプロバイダによって付与される権利から独立してリクエスト者に影響を与えるポリシー又はそのポリシーの欠如を反映することと、
１つ以上のソフトウェアプロジェクトへのアクセス及び同１つ以上のソフトウェアプロ
ジェクトの使用のうちの一方に対するリクエストを受信するリクエスト受信工程と、
コンピュータベースツールを操作してフィルタ基準に従いリクエストを処理し、同リクエストに応答して出力を提供する操作工程と、からなる方法。
【請求項１４】
フィルタ基準は特定のプロジェクトを識別することと、
操作工程はリクエストをフィルタ基準の特定のプロジェクトと比較する工程を含むことと、を含む請求項１３に記載の方法。
【請求項１５】
フィルタ基準はプロジェクトのタイプを識別することと、
操作工程はリクエストをプロジェクトのタイプと比較する工程を含むことと、を含む請求項１３に記載の方法。
【請求項１６】
フィルタ基準は前記ソフトウェアプロジェクトに関連付けられるライセンス情報に関することと、
操作工程はリクエストをライセンス情報と比較する工程を含むことと、を含む請求項１３に記載の方法。
【請求項１７】
前記ソフトウェアプロジェクトのセットに関する情報を記憶する工程と、
操作工程は記憶した情報にアクセスする工程を含むことと、を含む請求項１３に記載の方法。
【請求項１８】
記憶した情報はオープンソースプロジェクトのライセンスのタイプを含む請求項１３に記載の方法。
【請求項１９】
フィルタ基準はユーザに従属することと、
操作工程はリクエストに関連するユーザを判定する工程を含むことと、を含む請求項１３に記載の方法。
【請求項２０】
フィルタ基準は使用に従属することと、
操作工程はリクエストに関連する意図される使用を判定する工程を含むことと、を含む請求項１３に記載の方法。
【請求項２１】
コンピュータベースツールはアプリケーションをインストールするように動作することと、
操作工程はフィルタ基準に基づき識別されるソフトウェアプロジェクトを選択的にインストールする工程を含むことと、を含む請求項１３に記載の方法。
【請求項２２】
リクエストは識別されるソフトウェアプロジェクトに関連する公開ネットワークノードへのアクセスを探すことと、
操作工程は公開ネットワークノードとリクエストに関連するノードとの間の通信を制御する工程を含むことと、を含む請求項１３に記載の方法。
【請求項２３】
出力を提供する工程はフィルタ基準を反映する表示を可能とする工程を含む請求項１３に記載の方法。
【請求項２４】
ソフトウェアプロジェクトの一覧と、ソフトウェアプロジェクトへのアクセス及びソフトウェアプロジェクトの使用のうちの一方に関するフィルタ基準とを記憶するための記憶装置と、
ソフトウェアプロジェクトに関するリクエストを受信するためのインタフェース構造と、
フィルタ基準に基づきリクエストに応答するためのソフトウェアプロジェクトのサブセットを判定するためのプロセッサと、からなるソフトウェアプロジェクトフィルタシステム。
【請求項２５】
フィルタ基準は特定のプロジェクトを識別することと、
プロセッサはリクエストを同プロジェクトと比較するように動作することと、を含む請求項２４に記載のシステム。
【請求項２６】
フィルタ基準はプロジェクトのタイプを識別することと、
プロセッサはリクエストをプロジェクトのタイプと比較するように動作することと、を含む請求項２４に記載のシステム。
【請求項２７】
フィルタ基準は前記ソフトウェアプロジェクトに関連付けられるライセンス情報に関することと、
プロセッサはリクエストをライセンス情報と比較するように動作することと、を含む請求項２４に記載のシステム。
【請求項２８】
フィルタ基準はユーザに従属することと、
プロセッサはリクエストに関連するユーザを判定するように動作することと、を含む請求項２４に記載のシステム。
【請求項２９】
フィルタ基準は使用に従属することと、
プロセッサはリクエストに関連する意図される使用を判定するように動作することと、を含む請求項２４に記載のシステム。
【請求項３０】
プロセッサは前記サブセットを反映する表示出力を提供するように動作する請求項２４に記載のシステム。
【請求項３１】
定義されたポリシーに従ってソフトウェアプロジェクトにアクセスし、同ソフトウェアプロジェクトを使用するための方法であって、
１つ以上のオープンソースプロジェクトを含むプロジェクトのセットへのアクセス及び同プロジェクトのセットの使用に関するポリシーを実装するためにフィルタモジュールにアクセスするフィルタモジュールアクセス工程と、
同フィルタモジュールを使用して同プロジェクトのセットへのアクセス及び同プロジェクトのセットの使用のうちの一方を管理するプロジェクト管理工程と、からなる方法。
【請求項３２】
フィルタモジュールアクセス工程はワイドエリアネットワークを介してフィルタモジュールへのリクエストを配信する工程を含む請求項３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はオープンソースプロジェクトなどスタックさせて利用可能なプロジェクトを含む、ソフトウェアプロジェクトに関する。より詳細には、本発明はソフトウェアスタックをアセンブル、インストール及びサポートする、即ち、ソフトウェアスタックのサービスを提供するためのツールに関する。
【背景技術】
【０００２】
従来、ソフトウェア・パッケージはプロプライエタリな（ｐｒｏｐｒｉｅｔａｒｙ）アプリケーションから形成されていた。それらのアプリケーションは一般に単一のソースによって又は産業パートナによって提供されており、そうしたパッケージ化を容易にするために協調手法により開発されている。しかしながら、そうしたパッケージのアセンブリ及び使用は、関連するライセンスによって一般に制限されている。さらに最近では、オープンソースソフトウェアの重要性及び利用可能性が急速に成長している。一般には、オープンソースソフトウェアではソースコードの複製及び改変が可能であるとともに、任意の目的でソフトウェアを使用することに加え、ソフトウェアを改変及び再頒布することの自由がユーザに一般に与えられている。これに関して、プロプライエタリソフトウェアのソースコードはエンドユーザには一般に利用可能でなく、またプロプライエタリソフトウェアのライセンスでは使用、複製、改変及び再頒布に対し厳しい制限が一般に設けられている点で、オープンソースソフトウェアはプロプライエタリソフトウェアから区別される。これに加えて、オープンソースソフトウェアは一般に無料又は妥当な複製料で利用可能とされるのに対し、多くの場合、プロプライエタリソフトウェアは利益目的で提供される。
【０００３】
オープンソースソフトウェアにはエンドユーザに対する幾つかの潜在的な利点が存在する。まず、エンドユーザがソースコードを利用可能であり、ライセンスにより実質的に自由な使用及び改変が許されているため、エンドユーザは特定の利用（ｅｎｄｅａｖｏｒ）に対しコードを適合及び最適化するための大きな柔軟性を有する。これに関して、エンドユーザは特定のプロプライエタリシステムに束縛されない。これに加えて、オープンソースソフトウェアは非常に高品質であるとの傾向が研究により示されている。即ち、ソフトウェアのオープン性のため及び事実上ピアレビューの機会が無制限であるため、オープンソースソフトウェアでは一般に継続的に品質が改善される。さらに、オープンソースソフトウェアは一般に無料又はわずかなコストで利用可能であり、オープンソースソフトウェアをコスト効果的に使用する大きな可能性が存在する。これらの理由及び他の理由のため、多くの政府その他の団体は自身の制御下にあるシステムにおいて、プロプライエタリソフトウェアからオープンソースソフトウェアへの移行を必須とするか又は推奨している。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、オープンソースソフトウェアその他の独立に開発されるソフトウェア、即ち、非協調ソフトウェアの潜在的な利点を完全に実現することに関して、現時点では大きな障害が存在する。そうした課題の１つはソフトウェアスタックをアセンブルすることである。通常、ソフトウェアシステム、アプリケーション又はツール（「プロジェクト」）は単独では機能しない。そればかりか、特定のプロジェクトがその適正な動作の前提要件として別のプロジェクト（例えば、オープンソースプロジェクト又はプロプライエタリプロジェクト）を必要とし、インストールされ、他のプロジェクトによって使用される場合がある。これらの垂直的な従属関係のため、複数のプロジェクトを含むソフトウェアスタックをエンドユーザが必要とする又は所望することが多くある。そのようなスタックのアセンブルには、利用に必要な個々のプロジェクトの識別や、従属関係の対処が含まれる
。これには、相当な専門技術及び時間が必要とされる場合がある。一部のオープンソースプロバイダは協調プロジェクト又はスタックを提供しているが、オープンソースソフトウェアは非協調である傾向がある。
【０００５】
一定のオープンソースソフトウェアなどの非協調ソフトウェアの使用に関連する別の困難は、インストールに関する。インストールには、種々の機械構成の問題点（ｉｓｓｕｅ）の対処、ソフトウェアプロジェクトの統合、競合の解決及び個々のプロジェクトの適正な相互動作やプロジェクト及び機械コンポーネント間の相互動作のテストが含まれる。インストールにおいても、相当な専門技術及び時間が必要とされる場合が多い。
【０００６】
これに加えて、そうした非協調ソフトウェアの使用に関して、幾つかのインストール後の問題点が存在する。例えば、ソフトウェアの使用には、ユーザマニュアルその他の文書を時々参照することが必要な場合がある。複数の非協調（例えば、オープンソース）プロジェクトを含むスタックにおいては、そのような文書が容易に利用可能でない場合がある。個々のプロジェクトにおいて文書が利用可能なときであっても、そのような文書は特定のソフトウェアスタックの環境に適合されていない場合がある。同様に、ソフトウェアスタック環境において、チュートリアルなどの訓練教材が利用可能でない場合や、最適化されていない場合がある。他のインストール後の問題点は、プロジェクトをアンインストールすること又はインストールされたプロジェクト又はスタックを改変することに関する。
【課題を解決するための手段】
【０００７】
本発明は、非協調プロジェクトを含む複数のプロジェクトからなるソフトウェアスタックをアセンブル、インストール及びサポートすること、即ち、ソフトウェアスタックのサービスを提供することに関する。プロジェクトは、プロプライエタリソフトウェアアプリケーション及びオープンソースプロジェクトなど、特定のアプリケーション用のソフトウェアコンポーネントである。スタックは、プロジェクトが機能ライブラリなど１つ以上のロジックリソースを共有するか、又は協調的かつ従属的に動作するよう構成されるように、２つ以上のプロジェクトを処理環境（単一の機械又は分散型）にインストールすることによって定義される。即ち、２つのプロジェクトは、プロジェクトのうちの第１のプロジェクトが第１のプロジェクトのアプリケーションの実質的な部分を定義する機能を実行するために、他の（第２の）プロジェクトなどのプロジェクトを必要とする、という従属関係を有する。したがって、それらのプロジェクトは垂直的に統合されている。これに関して、非協調プロジェクトは、スタックにおいてそのように協調的かつ従属的に動作するように特に事前に構成されていない。例えば、そうしたプロジェクトは独立に作業する複数の者によって、即ち、オープンソース開発者によって開発される。
【０００８】
詳細には、本発明は、複数の非協調コンポーネントを含むソフトウェアスタックに関する幾つかの上述の問題点に対処するためのツールに関する。このツールは、個々のプロジェクトを識別し、従属関係を管理して、直感的なグラフィカルインタフェースを提供してユーザを補助することによって、スタックアセンブリを容易とする。これに加えて、このツールは機械構成の問題点に対処し、競合を解決して、少なくとも部分的に自動化されたテストを実行することによって、インストールを容易とする。また、このツールは適切な文書及び訓練ツールの生成を含むインストール後の幾つかの問題点に対処するほか、プロジェクトのデインストール（ｄｅ−ｉｎｓｔａｌｌａｔｉｏｎ）を容易とすることにより、プロジェクト及びソフトウェアスタックの置換の変更にも対処する。
【０００９】
本発明の一態様では、非協調ソフトウェアプロジェクトのスタックへの便利なアクセスを可能とするための方法及び装置（集合的には「ユーティリティ」）を提供する。詳細には、このユーティリティは対象のスタックに関する入力を受信する工程と、可能なスタックに関する情報にアクセスする工程と、入力に応答してスタック情報を出力する工程とを
含む。ユーザ又はユーザシステムの観点からは、このユーティリティは非協調ソフトウェアプロジェクトの（から形成される）スタックに関するスタック情報を提供するためにシステムにアクセスする工程と、対象のスタックに関する入力（例えば、ローカルプロセッサ又はリモートプロセッサへの）を送出する（ｓｕｂｍｉｔ）工程と、入力に応答してスタック情報を受信する工程とを含む。スタック情報には、例えば、１つ以上の可能なスタックのプロジェクト内容の識別と、１つ以上のスタックとしてのインストール用のプロジェクトと、１つ以上の可能なスタックのインストール情報とのうちの１つ以上が含まれてよい。これに関して、例えば、スタック又はスタックを定義する情報は入力に応答するプロジェクト又はプロジェクト情報からアセンブルされてもよく、そうしたスタック又はスタックを定義する情報が予め決定され、記憶されてもよい。即ち、スタック情報は種々の時及び種々の手法においてアセンブル可能である。いずれの場合においても、例えば、１つ以上のオープンソースプロジェクトを含む非協調ソフトウェアプロジェクトから形成されるスタックを、アセンブルする際、インストールする際、又はその両方の際に有用な情報に対し便利なアクセスが提供される。
【００１０】
本発明の別の態様では、ソフトウェアプロジェクトのスタックをアセンブルするためのユーティリティを提供する。即ち、このユーティリティはスタックのプロジェクト内容を判定する際に有用である。さらに、このユーティリティがスタックのアセンブリに関する競合、依存性特性その他の問題点を識別する際、解決する際、又はその両方の際に有用であり得ることは認められるであろう。このユーティリティは、コンピュータベースツールを操作して対象のスタックに関する入力情報を受信し、スタックの第１のプロジェクトの少なくとも第１の特性を判定し、スタックの第２のプロジェクトに関する情報を提供する工程を含む。入力情報により、例えば、このスタックの機能が識別されてよく、スタックに含まれる第１のプロジェクトが識別されてよく、又はその他、スタックをアセンブルするために初期情報が提供されてよい。
【００１１】
この入力情報に基づき、コンピュータベースツールは第１のプロジェクトの第１の特性を判定するように動作する。第１の特性は、例えば、第１のプロジェクトの従属関係又はリソース要件に関連してよい。これに関して、コンピュータベースツールは第１のプロジェクトの従属する１つ以上のプロジェクトを識別してもよく、第１のプロジェクトによって満たされる従属性を有する１つ以上のプロジェクトを識別してもよく、ポートその他のリソース要件に関連してもよい。この特性は、このスタックの第２のプロジェクトに関する情報を提供するために用いられる。したがって、例えば、従属関係、競合などがユーザへの出力において識別されるか、スタックアセンブリを補助するために解決されてよい。例えば、１つ以上のグラフィカルユーザインタフェースにより、所望のスタックアセンブリを完了するために解決する従属性及び競合が識別される。
【００１２】
このユーティリティを用いて、非協調プロジェクトのアセンブリを行うことが可能である。これに関して、第１及び第２のプロジェクトが非協調プロジェクトであってもよく、オープンソースプロジェクト、プロプライエタリプロジェクト、他のプロジェクト又はそれらの組み合わせであってもよい。好適には、スタックのうちの１つ以上のプロジェクトはツール、即ち、スタックのオペレーティングシステムレベルより上のスタックのアプリケーションレイヤにて動作する。
【００１３】
本発明の別の態様では、サポートされるプロジェクトのセットに関する情報及び従属性情報を含む知識ベースに対する参照によってスタックをアセンブルするためのユーティリティを提供する。詳細には、このユーティリティはソフトウェアプロジェクトのセットを識別する工程と、そのソフトウェアプロジェクトのセットにおいて、ソフトウェアプロジェクトの相互動作に関する従属関係のセットを判定する工程とを含む。コントローラは、従属関係を反映し、かつ、従属関係に基づくソフトウェアプロジェクトのうちの特定の１
つに関する情報にアクセスするための論理を含む。動作中、コントローラはプロジェクトのスタックをアセンブルする際に対象を示し、かつ、少なくともタイプによって、このスタックに含まれる少なくとも第１のプロジェクトを識別する、ユーザ入力を受信する。このユーザ入力及び従属関係に基づき、コントローラはスタックに含まれる少なくとも第２のプロジェクトを識別する。例えば、ユーザはスタックによって実行される特定の機能を指示してもよく、ユーザが使用の興味を有する特定のプロジェクトを指示してもよい。識別される機能の場合、コントローラはユーザが所望のプロジェクトを選択可能な機能に関連付けられているプロジェクトオプションを識別してもよい。いずれの場合においても、プロジェクトが識別されると、記憶済みの従属関係を用いて、前提要件プロジェクト、第１のプロジェクトによって使用されるプロジェクト及びさらなる関連する従属性を識別することが可能である。第１のプログラムグループと第２のプログラムグループとの間に、そうした従属関係が存在し得ることは認められるであろう。その場合、各グループはプロジェクト、及びスタックを定義するグループのアセンブリとして効果的に機能する。このようにして、ユーザは従属関係の満たされるスタック間でスタックを効率的にアセンブルすることが可能である。
【００１４】
本発明のさらなる態様では、プロジェクトのアクセス又は使用のリクエストに関するプロジェクトをフィルタリングするための方法を提供する。外部的に開発されたプロジェクトが容易に利用可能であることが多くのエンティティに対し問題であることは認識されている。特に、オープンソースプロジェクトのようなプロジェクトは、無料又はわずかなコストで利用可能である。結果として、ライセンス条項又は企業ポリシーのコンプライアンスを考慮することなく、そうしたプロジェクトがアクセスされる場合がある。さらに、上述のように、オープンソースのライセンスには、種々の条項及びオープンソースソフトウェアの再作成又は使用に関する義務が含まれ得る。多くの場合、エンティティは所望されない結果が発生するまで、そうしたオープンソースプロジェクトが使用されていることを認識しない。したがって、これに関するエンティティによって開発されるポリシーによるコンプライアンスを実行する際、そうしたエンティティを補助するためにツールを提供することが所望される。
【００１５】
本発明による関連するユーティリティはソフトウェアプロジェクトへのアクセス又はソフトウェアプロジェクトの使用に関するフィルタ基準を定義する工程と、１つ以上のソフトウェアプロジェクトへのアクセス又は１つ以上のソフトウェアプロジェクトの使用に対するリクエストを受信する工程と、コンピュータベースツールを操作してフィルタ基準に従いリクエストを処理し、リクエストに応答して出力を提供する工程とを含む。フィルタ基準はソフトウェアプロジェクトのプロバイダによって付与される権利から独立してリクエスト者に影響を与えるポリシー又はそのポリシーの欠如を反映する。したがって、例えば、フィルタ基準によって、どのプロジェクトがアクセスされるか、誰にアクセスされるか、及び何の目的でアクセスされるかが定義される。例えば、異なる人（例えば、ソフトウェア開発者、ＩＴ職員、経理担当など）に対し、及び異なる目的（厳密な内部使用か、製品への組み込みか）に対し、異なる基準が適用される。フィルタはスタックアセンブリ及びインストールツールに関連して実装されてよい。これに関して、グラフィカルユーザインタフェースは問題点における人又は目的に対し適切なプロジェクトオプションのみを提示してもよく、そうしたユーザインタフェースに関する選択において、フィルタ済みのプロジェクトが利用不可能とされてもよい。このようにして、プロジェクトに関するエンティティのポリシーの遵守が実施されてよい。プロジェクトは、例えば、プロジェクト毎にフィルタされてもよく、プロジェクトのタイプ又はカテゴリに基づきフィルタされてもよく、プロジェクトに関係するライセンスに基づきフィルタされてもよい。
【００１６】
本発明のさらなる態様では、非協調ソフトウェアをインストールするためのユーティリティを提供する。関連するシステムは、幾つかの非協調ソフトウェアプロジェクトをスタ
ックへと構成するための構成モジュールと、スタックをコンピュータ上にインストールするためのインストーラとを含む。例えば、構成モジュールはユーザ又はユーザシステムからのリクエストに応答してプロジェクトをスタックへ構成する。これに関して、そうしたスタックは上述のアセンブリツールの補助により識別されてよい。これに代えて、特定のリクエストを処理するより前に、プロジェクトがスタックへと構成されてもよい。好適には、スタックは、含まれるプロジェクトに関する従属性の問題点を解決するように構成される。これに加えて、そうした依存性の問題点の考慮又は潜在的な競合の解決に関してスタックがインストールされる機械の状態を、構成モジュールが考慮に含めてもよい。ユーザ又はユーザシステムの観点からは、このユーティリティは対象のスタックに関する入力情報を構成モジュールに送出する工程と、インストール情報を受信する工程とを含む。そうしたインストール情報には、例えば、インストール手続に関する情報、スタックにおける使用のための構成を反映するプロジェクト、及びインストールツールのうちの１つ以上が含まれる。したがって、このユーティリティは、非協調プロジェクトから形成されるスタックのインストールに関する幾つかの問題点に対処する。
【００１７】
本発明のさらなる態様では、機械その他、ユーザによって指定される他のシステム上に非協調プロジェクトのスタックをインストールするためのユーティリティを提供する。関連するインストーラは指定のシステムに実装されてもよく、ＬＡＮ若しくはＷＡＮを介してシステムへ相互接続されてもよい。これに加えて、インストーラは上述のようにアセンブリユーティリティと動作可能に関連付けられてもよく、独立に動作してもよい。インストーラユーティリティは対象のスタックに関する入力情報を受信し、少なくともスタックの第１のプロジェクトの第１の特性を判定し、スタックの第２のプロジェクトに関する情報を提供するように動作する。入力情報によって、例えば、スタックの機能が識別されてもよく、第１のプロジェクトが少なくともタイプ毎に識別されてもよい。この情報に応答して、ユーティリティは第１のプロジェクトとの従属関係又は第１のプロジェクトのリソース要件を有する１つ以上のプロジェクトを識別する。従属関係を解決するため又はソース競合を回避するために、そうした情報が第２のプロジェクトを識別するために用いられてよい。このユーティリティは、プロジェクトのうちの１つ以上がツール、即ち、オペレーティングシステムレベルより上のスタックのアプリケーションレイヤにて動作する非協調プロジェクト（例えば、オープンソースプロジェクト）を含むスタックのインストールにおいて有用である。
【００１８】
本発明の別の態様では、非協調プロジェクトのインストール済みスタックに関するインストール後サポートを補助するためのユーティリティを提供する。このサポートユーティリティは、上述のようにアセンブリ及びインストールユーティリティのうちの１つ以上に関して提供されてもよく、独立に提供されてもよい。さらに、サポートユーティリティはローカルシステムに関して動作してもよく、ネットワーク、例えば、インターネットを介してアクセスされてもよい。サポートユーティリティは、幾つかの非協調ソフトウェアプロジェクトを含むスタックの識別を受信する工程と、記憶装置に選択的にアクセスし、そのスタックに対する特定のサポート情報を取得する工程と、ユーザにサポート情報を出力する工程とを含む。サポート情報には、例えば、パッケージに対し詳細に調整されるチュートリアル又は文書が含まれる。サポート情報はスタックに対し予めアセンブルされインデックス化されてもよく、リクエストに応答してアセンブルされる別個の大量の情報として記憶されてもよい。これに関して、文書は、例えば、特定のプロジェクトとの関係など、データのコンテキスト又は関係を識別する、例えば、ＸＭＬタグなどのメタデータと関連付けられ、構造化コンテンツとして記憶されてよい。テキスト及びグラフィックのうちの一方又は両方が、これに関してアセンブルされてよい。これに加えて、サポート情報はユーザの機械又はユーザのオペレーティングシステムに関する情報など、スタックの動作環境情報に基づき選択されてよい。
【００１９】
本発明のさらに別の態様では、非協調プロジェクトのインストール済みスタックに関する更新を管理するためのユーティリティを提供する。プロジェクト更新、従属性更新及びサポート情報更新など、スタックに関する更新が時間毎に利用可能となり得ることは認められるであろう。特に、非協調ソフトウェアプロジェクトのスタックにおいては、そうした更新の管理が問題となり得る。本発明のユーティリティは、スタックに関する更新の利用可能性に関する情報を受信する工程と、更新により影響を受ける可能性を有するスタックを識別する工程と、ユーザ又はユーザシステムに更新情報を提供する工程とを含む。更新情報には、例えば、更新が利用可能であることのユーザへの通知、更新されるソフトウェア、及びインストール情報のうちの１つ以上が含まれる。これに関して更新は自動的にインストールされてもよく、更新が所望されることの指示をユーザから受信するとインストールされてもよい。好適には、例えば、スタックの１つ以上のプロジェクトをアンインストールすることなく、以前にインストール済みのスタックのうちの少なくとも一部をインストール済み状態としたまま、更新インストールが行われる。関連する更新インストール処理には、インストール順序を決定する工程と、依存性又はリソース競合を解決する工程と、決定したインストール手続に従い更新のインストールを実行する工程と、インストール時に更新をテストする工程とが含まれる。また、関連するサポート教材は、更新に関連して利用可能とされてもよい。
【００２０】
本発明のさらなる態様では、ソフトウェアプロジェクトのスタック内のプロジェクトを置換することを可能とするためのユーティリティを提供する。このユーティリティは、複数のソフトウェアプロジェクトを含むインストール済みスタックに関する入力を受信する工程と、入力に応答して、ほぼ等しい機能を有する置換プロジェクトで第１のプロジェクトを置き換える工程とが含まれる。このユーティリティが、排他的ではないが、スタックを構成する際に大きな柔軟性を提供するライセンス条項を有する場合の多いオープンソースプロジェクトに関して特に有用であることは、認められるであろう。例えば、このユーティリティを用いて、所与のスタックの第１のデータベースプロジェクトを第２のデータベースプロジェクトで置き換えてもよい。このようにして、ユーザは所与の利用において最適な性能を有するスタックを構築（ビルド）するように、異なるプロジェクトを用いて実験することが可能である。
【００２１】
本発明のさらに別の態様では、ライセンス情報を管理するためのユーティリティを提供する。このユーティリティは、所与のソフトウェアライセンスに関する公開情報及び非公開情報を記憶する工程と、公開情報のうちの少なくとも一部へのアクセスを提供する工程と、非公開情報へのアクセスのリクエストを受信する工程と、リクエストに応答して、非公開情報へのアクセスの認可のベリファイを実行する工程と、ベリファイに基づき、非公開情報へのアクセスを選択的に提供する工程とを含む。例えば、非公開情報へのアクセスのリクエストに関して、ユーザはパスワードその他の認可情報を入力するよう促される。そうした情報への非認可アクセスを禁止するため、そうした認可情報を用いて非公開情報を暗号化及び解読してよい。
【発明を実施するための最良の形態】
【００２２】
以下の記載では、本発明をスタックのアセンブリ、インストール及びサポート機能を含むグラフィカルインストーラシステムにおいて述べる。上述のように、本発明においては、そうした機能が統合型システムの部分としてではなく、独立に提供されてもよいことが認められるであろう。さらに、本発明の種々の態様は以下に記載の特定の文脈を超える用途を有することが認められるであろう。したがって、本記載は本発明の限定としてではなく例示として理解されるものである。
【００２３】
以下の記載では、最初に、オープンソースソフトウェア運動に関連してアプリケーション開発環境について記載する。この記載では、非協調プロジェクトをスタックさせること
の例示的な用途を示す。その後、本発明によるシステムアーキテクチャについて記載する。最後に、スタックのアセンブリ、インストール及びインストール後のサポートのための特定機能について、詳細に記載する。
【００２４】
１．オープンソースアプリケーション開発環境
本発明は、ソフトウェアスタック、例えば、１つ以上のオープンソースプロジェクトを含むスタックを、アセンブル、インストール及びサポートするためのツールに関する。上述のように、通常、オープンソースプロジェクトは非協調的であるとともに、カスタムスタックの構成の大きな自由を提供するライセンスに関連付けられているので、オープンソースプロジェクトを含むスタックは、本発明の種々の態様を示すのに特に適切である。実際、そうしたプロジェクトを所望通りに改変する及び組み合わせることの柔軟性が、オープンソフトウェア運動の主たる動機である。しかしながら、ライセンスの許可する場合、スタックがプロプライエタリアプリケーションや、又はオープンソースプロジェクト、プロプライエタリアプリケーション及び他の非協調プロジェクトの組み合わせから形成されてよいことは認められるであろう。実際、そのような組み合わせは次第に一般化するであろうことが予想される。いずれの場合においても、本発明は非協調ソフトウェアコンポーネント、即ち、機能ライブラリなどのロジックリソースを共有するように予め構成されていない、或いは、スタックにおいて協調的かつ従属的に動作するように特に構成されていないプロジェクト又はアプリケーションからなるスタックの形成において、特別な利点を有する。
【００２５】
以下の例では、アプリケーション開発環境に関連して、そうしたスタックについて記載する。これに関して、アプリケーション開発環境は、１つ以上のプロジェクト、即ち、オペレーティングシステムレベル又はハードウェアレベルより上で動作する、アプリケーション又は開発環境を含むスタックを表す。このことは、図１を参照することによって理解される。図１に示すように、一般に、完全なソフトウェア開発環境１００はアプリケーションレイヤ１０２、開発環境ツールレイヤ１０４、オペレーティングシステムレイヤ１０６及びハードウェアレイヤ１０８を備える。一般に、選択されるハードウェア１０８上で機能する、選択されるソフトウェアオペレーティングシステム１０６に基づく作業開発環境において、開発ツール１０４を用いて、アプリケーション１０２が作成される。
【００２６】
従来、オペレーティングシステムソフトウェア及び開発ツールは競合する商業ベンダによって販売されており、ソフトウェアはプロプライエタリである。図２には、各レイヤのプロプライエタリ製品の例と共に、プロプライエタリソフトウェア開発環境２００を示す。示すように、アプリケーションレイヤ２０２は種々の市販のウェブベースアプリケーション、ビジネスアプリケーションその他のアプリケーションを含む。開発環境ツールレイヤ２０４においては、Ｏｒａｃｌｅ、ＢＥＡ、Ｒａｔｉｏｎａｌその他によって市販のツールが提供される。オペレーティングシステムレイヤ２０６において支配的なシステムはＷｉｎｄｏｗｓ及びＵｎｉｘであるが、他のシステムも利用可能である。ハードウェアレイヤ２０８の製造者の例には、ＩＢＭ、Ａｐｐｌｅ、Ｓｕｎ、ＨＰ／Ｃｏｍｐａｃｔ及びＩｎｔｅｌが含まれる。
【００２７】
一般にソフトウェア開発環境におけるスタックの統合に関する柔軟性が限定されていることは認められるであろう。より詳細には、既存のオペレーティングシステムでは、特定の製品が充分な程度まで特定のハードウェア環境から独立して動作することが可能なオープンプラットフォームが提供される。さらに、多くの製品は複数のオペレーティングシステムに渡って動作することが可能である。しかしながら、アプリケーションレイヤ２０２及び開発環境ツールレイヤ２０４においては、オプションはこれより相当に限定されている。一部の商業ソフトウェア開発者は複数のプロプライエタリ製品の統合されたスタックの提供や、容易にスタックへ統合可能な個々の製品の提供を行っている。同様に、一部の
ソフトウェア開発によって、統合されたオープンソーススタック又は協調オープンソースプロジェクトが提供されている。これらの製品は対応するプロプライエタリ製品とよく似たように開発されているが、プロプライエタリなライセンス関係ではなくオープンソースのライセンス関係を有する。しかしながら、一般に、これらの商業開発者は競合する商業開発者の製品に関する相互動作に対応する動機をほとんど有しない。したがって、そうしたスタックは特定の商業開発者又は開発者及び産業パートナの製品に限定され得る。したがって、エンドユーザの有する柔軟性は限定的なものであり、特定製品の必要により、エンドユーザが全スタック環境に固定される場合がある。
【００２８】
オープンソースソフトウェア、詳細にはＬｉｎｕｘは、オペレーティングシステムレイヤにおいて広範に適合されるようになった。これに加えて、オープンソース開発ツール及びアプリケーションが出現している。図３には、オープンソースアプリケーション開発環境３００を示す。即ち、オープンソースアプリケーション開発環境３００は、アプリケーションレイヤ３０２及び開発環境ツールレイヤ３０４のうちの一方又は両方において、１つ以上のオープンソースプロジェクトを含む。また、プロプライエタリアプリケーションも利用可能であり、この開発環境３００のそれらのレイヤにおいて利用されてよい。示すように、アプリケーションレイヤ３０２におけるオープンソースアプリケーションの一例は、ＯｐｅｎＯｆｆｉｃｅである。開発環境ツールレイヤ３０４におけるオープンソースツールの例には、Ｅｃｌｉｐｓｅ、ＭｙＳＱＬ及びＡｐａｃｈｅが含まれる。示した開発環境３００には、オペレーティングシステムレイヤ３０６において、オープンソースオペレーティングシステムの一例（Ｌｉｎｕｘ）及びプロプライエタリオペレーティングシステムの一例（Ｕｎｉｘ）が含まれる。ハードウェアレイヤ３０８においては、幾つかのプロプライエタリＯＥＭ（相手先ブランド製造）業者が識別される。したがって、完全なオープンソースアプリケーション開発環境がオペレーティングシステムレイヤ及びハードウェアレイヤ３０６，３０８において、また開発環境レイヤ及びアプリケーションレイヤ３０２，３０４において、プロプライエタリな要素を含む又はサポートする、即ち、許可することは認められるであろう。
【００２９】
上述のように、多くの高品質なオープンソースプロジェクトが利用可能であるが、複数のオープンソースプロジェクトをスタックさせ（単独で又はプロプライエタリ製品と共に）完全なアプリケーション開発環境を可能とすることに関連する、幾つかの困難が存在する。このことを図４に示す。図４には、幾つかのオープンソースプロジェクト及びプロプライエタリ製品を示す。種々のコンポーネントを結ぶ線及び矢印は、前提要件など必須の及び条件的な従属関係や、インストールされて別のプロジェクトによって使用され得るプロジェクトを表す。特定の利用に適切なスタックをアセンブルするには、多くの場合、これらの従属関係や機械状態についての徹底した理解が必要である。
【００３０】
さらに、アセンブルされたスタックのインストールには、相当な専門技術及び時間が必要とされる場合がある。例えば、インストールの問題点には、適正なインストール順序の決定、種々のハードウェアの問題点の対処、競合の解決及びインストールされたスタックのテスト、例えば、必要なファイルがアクセス可能であるかの判定、が含まれる。インストール後の問題点には、適切な訓練ツール及び文書の提供や、特定のプロジェクト及びスタックのインストール並びに改変の実行が含まれる。以下に述べるように、これらの問題点は本発明によるシステムによって対処される。
【００３１】
２．システムアーキテクチャ
図５には、本発明によるソフトウェアスタックのアセンブリ、インストール及びサポートシステム５００を示す。システム５００はパーソナルコンピュータその他のプロセッサ又は処理ネットワークなどのユーザ機械５０２を操作するユーザが、スタックへアセンブリするオープンソースソフトウェアプロジェクト（及び他のソフトウェアプロジェクトの
うちの一方又は両方）を識別すること、そのプロジェクトをユーザ機械５０２に統合及びインストールすること、並びにそのスタックに特に関連する文書及び訓練教材を生成することを可能とするように動作する。システム５００は、例えば、特定の利用において最適な性能を得るために、データベースその他、スタック内のツールの切換など、一定の追加の機能を提供する。特定のソフトウェア製品の商品化の際に通常、統合エンティティが既得権を有するプロプライエタリその他の協調ソフトウェアにおいてはそうした機能が一般にサポートされていないことや、一般にカスタマイズされた利用毎にスタックのアセンブリ、統合及びインストールが実行される現在の非協調オープンソースにおいてもそうした機能がサポートされていないことは、認められるであろう。
【００３２】
示したシステム５００は、記載のオープンソーススタック機能に必要な知識を記憶及び提供する知識ベース５０４と、そうした機能を実行するためのロジックを提供するエンジン５０６とを備える。知識ベース５０４及びエンジン５０６はユーザ機械５０２上に実装されてもよく、ＷＡＮ、例えば、インターネットなどのネットワークを介し、少なくとも部分的にユーザ機械５０２へアクセス可能であってもよい。さらに、知識ベース５０４及びエンジン５０６が単一の処理プラットフォーム上に実装されてもよく、分散型アーキテクチャが採用されてもよい。
【００３３】
示した知識ベース５０４には、サポートされる各プロジェクトに対し、識別情報及び法的情報、動作情報並びにカテゴリ情報など、プロジェクト情報５０４Ａが含まれる。また、知識ベースには、ユーザ機械５０２に関する一定の機械状態情報５０４Ｂも含まれる。これに加えて、知識ベースには、テスト情報など、スタックレベルにて機能を実行する際に用いられる一定のスタック情報５０４Ｃが含まれる。
【００３４】
プロジェクト情報５０４Ａに関して、所与のプロジェクトを識別するために知識ベース５０４に含まれる情報には、プロジェクトの名前、バージョン、タイプ、ホームＵＲＬ、カテゴリ、説明（比較及び推薦と共に）及び完全なプロジェクト詳細へのリンクが含まれてよい。法的情報には一般に、完全なライセンス文を含む任意のライセンス及びそのライセンスへのリンクが含まれる。そうしたライセンス情報はユーザに重要な法的情報を提供し、さらに以下に述べるようなライセンスフィルタ機能をサポートする。プロジェクトはローカルに記憶されてもよく、インストール時にダウンロードその他によってアクセスされてもよい。
【００３５】
動作情報には、従属関係情報その他のリソース情報が含まれてよい。例えば、従属関係情報には、各プロジェクトに対する前提要件の一覧と共に、その従属性の存在する理由と従属プロジェクトの使用法との説明が含まれる。従属関係情報にはさらに、各プロジェクトを使用する他のプロジェクトの一覧と共に、その従属性の存在する理由と従属プロジェクトの使用法との説明が含まれてよい。以下の記載から理解されるように、そうした情報はスタックを適正にアセンブルするためや、ユーザにスタック説明情報を提供するために用いられる。従属関係情報に加えて、動作情報には使用されるポートなど他のリソース情報が含まれてよい。
【００３６】
カテゴリ情報によって、プロジェクトのソート及びフィルタリングが可能となる。例えば、利用されるカテゴリには以下が含まれる：
・クライアント
・データベース
・文書
・インターネット
・Ｊ２ＥＥ
・プログラミング
・サンプル
・セキュリティ
・サーバ
・ソースコード管理
・テスト
・ＸＭＬ
このようにして、ユーザが所望のプロジェクト情報に便利にアクセスすることが可能である。
【００３７】
機械状態情報５０４Ｂには、プロジェクトその他、ユーザ機械５０２上で利用可能又は利用不可能なリソースに関する更新された情報が含まれてよい。例えば、データベースなど特定のツールが予めインストールされている場合、この情報は知識ベース５０４に記憶され、発生する競合を回避するために従属性に対処し、スタックをアセンブルする際に考慮される。同様に、インストールされるプロジェクトの統合及び適正な相互動作を容易とするために、ポート利用その他のリソースの問題点が考慮される。
【００３８】
示した知識ベース５０４には、さらにスタック情報５０４Ｃが含まれる。一定の情報は個々のプロジェクトに対してではなく、スタックの組み合わせに対しインデックス化されてよい。例えば、上述のプロジェクト情報に対応する情報は共通スタックに対し記憶される。これに加えて、テストパラメータなど一定のインストール情報は、スタックの組み合わせに関連して定義されてよい。
【００３９】
知識ベース５０４は、動作環境情報など、示されていない種々の他の種類の情報を記憶してもよい。例えば、複数のオペレーティングシステムにおいてインストールをサポートし、プロジェクト又はスタックの特定の使用を特定のオペレーティングシステムと関連付けるために情報が記憶されてもよい。例えば、Ｗｉｎｄｏｗｓ上で開発されることやＬｉｎｕｘ上で展開されることが所望される。
【００４０】
以下に詳細に述べるように、エンジン５０６は実行時に知識ベース５０４にアクセスして全ての必要な情報を取得し、スタックのアセンブリ、インストール及びインストール後のサポートのためのロジックを実行する。ユーザはグラフィカルユーザインタフェース５０８を用いてプロンプトその他の情報を受信し、この機能の実装を補助するとともに、関連する情報を入力することが可能である。プリンタ５１０はハードコピー文書を生成することが可能である。
【００４１】
示したアーキテクチャにより、便利なシステム実装及び保守が可能となることは認められるであろう。詳細には、プロジェクトその他の情報は、エンジン５０６その他のシステムコンポーネントを実質的に更新することなく、単に知識ベース５０４を更新することによって、追加又は変更されることが可能である。さらに、エンジン５０６によって、オペレーティングシステムその他の実装の差異を通じて一貫した外観及び操作感（ルックアンドフィール；ｌｏｏｋ  ａｎｄ  ｆｅｅｌ）を有するようにインタフェースをレンダリングすることが可能となる。
【００４２】
３．システム機能
上述のように、本発明によるシステムはアセンブリ、インストール及びインストール後のサポートに関するオープンソーススタック機能を提供する。
【００４３】
Ａ．アセンブリ
一般にスタックアセンブリは、幾つかのオープンソースプロジェクト及び他のプロジェクトのうちの一方又は両方を識別し、特定の利用に対処するためのスタックを形成するこ
とに関する。これに関して、本発明のシステムを使用して、幾つかの機能を実行することが可能である。例えば、特定のプロジェクトに関する情報は、プロジェクトの説明や従属性情報を取得するためにアクセスされ得る。これに加えて、電子コマースウェブサイト設計など、共通のタイプの利用に対するスタックに関する情報がアクセスされ得る。このようにして、利用可能なオープンソースその他のリソースに関して限定された知識しか有しないソフトウェア開発者が迅速にスタックをアセンブルすることが可能である。また以下で述べるように、このシステムは、エンジンを用いて従属関係に対処し、スタックアセンブリを実行することが可能であるように、機械状態情報、プロジェクト情報及びスタック情報にアクセスするための完全な機能を有する。
【００４４】
図６には、スタックアセンブリに関して利用され得るユーザインタフェーススクリーン６００を示す。示すように、ユーザインタフェース６００は、プロジェクト識別パネル６０２、プロジェクト説明パネル６０４、前提要件パネル６０６及び被使用パネル６０８を備える。以下で述べるように、一般にプロジェクト識別パネル６０２は、状態及び一定の従属性情報を示すように、強調表示、灰色表示及び他のグラフィカル要素を用い、サポートされるプロジェクトの一覧を表示する。プロジェクト説明パネル６０４には、示すように、パネル６０２において強調表示されているプロジェクトの推薦その他の補助を含め、一定のプロジェクト識別及び説明情報が含まれる。前提要件パネル６０６では識別されるプロジェクトの前提要件であるプロジェクトが識別され、被使用パネル６０８では強調表示されているプロジェクトを使用し得る他のプロジェクトが識別される。
【００４５】
より詳細には、パネル６０２において主要プロジェクトは太字で示される。従属プロジェクトは通常の書体で示される。必須プロジェクトはチェックされており、変更は不可能である。パネル６０２においてプロジェクトが強調表示されているとき、そのプロジェクト、この場合にはＴｏｍｃａｔに関する情報が、パネル６０４，６０６，６０８に対し提供される。示した例では、パネル６０４の頂部には、プロジェクトのタイトル及びバージョンと共に、例えば、必須プロジェクトであるかインストール済みプロジェクトであるかを示す括弧内の情報が識別される。次にプロジェクトのホームＵＲＬへのリンクが提供され、プロジェクトのライセンスを見るためのリンクが続く。また、プロジェクトのグループ化又はフィルタリングのために使用可能なプロジェクトに関連するカテゴリと、プロジェクトにより使用されるポートの識別とが示される。最後に、一部の場合、プロジェクトに関連する推薦又はティップス（ｔｉｐｓ）を含む、プロジェクトの説明が提供される。
【００４６】
被使用パネル６０８は、強調表示されているプロジェクトに従属する他のプロジェクトを表示する。反対に、前提要件パネル６０６は、強調表示されているプロジェクトをインストールするために必要な他のプロジェクトを示す。したがって、パネル６０６，６０８が集合的に対象プロジェクトの従属関係を定義することは認められるであろう。
【００４７】
この従属関係情報は知識ベースから導出され、スタックアセンブリに関連するグラフィカルフォームに補助を提供するためにエンジンによって使用される。これに関して、ユーザが関連するインストールボックスをチェックすることによってパネル６０２においてプロジェクトを選択し、そのプロジェクトが２以上の他のプロジェクトによって実行可能な前提要件を有する場合、或いは、未チェックの従属性が存在する場合、ユーザにそうした問題点の解決を促すようにインジケーション（オーディオ又は視覚的な）が提供される。これに関して、示した例ではプロジェクト名が赤く変化し、ユーザは従属性が解決されるまでスタックアセンブリを続行することが不可能となる。例えば、パネル６０２においてプロジェクトＪＢｏｓｓが選択される場合、ＪＢｏｓｓの文字は赤く変化し、前提要件が必要であることを示す。次にユーザは前提要件パネル６０６を調べ得る。この場合、前提要件パネル６０６は、続行するにはＪＢｏｓｓがＭｙＳＱＬ又はＰｏｓｔｇｒｅＳＱＬを必要とすることを示す。示した例では、従属性の問題点が解決されるまでＧＵＩ上の「次
へ」ボタンが無効化されるため、全ての要件が満たされるまでユーザが続行しないことが保証される。他の場合には、従属性が自動的に選択されてもよい。
【００４８】
示した例では、次にユーザは、ＪＢｏｓｓの従属性を満たすためにＭｙＳＱＬを選択することを決定する。この選択が行われると、もはやＪＢｏｓｓプロジェクトは赤で表示されておらず、それによって、従属性が満たされるとともに、スタックのアセンブリ及びインストールが進行されてよいことを示す。上述のように、プロジェクトのタイプは、パネル６０４の頂部のプロジェクトの名前及びバージョンに続く括弧に表示される。プロジェクトのタイプには、「必須」、「従属」、「主要」又は「インストール済み」が含まれる。プロジェクトのタイプはリンクであり、クリックされる場合、プロジェクトのタイプの各々の説明を与える。同様に、ライセンス識別はリンクであり、クリックされる場合、パネル６０４にライセンスの完全なテキストを提示する。各プロジェクトに関連付けられているカテゴリもリンクである。それらのリンクがクリックされる場合、パネル６０４にはカテゴリ内の他のプロジェクトが表示される。例えば、カテゴリ「サーバ」がクリックされる場合、パネル６０４では「サーバ又は開発者のワークステーションに通常見出されるツール。通常はエンドユーザ用ではない」のような初期説明によって、続いてＡＮＴＬＲ、Ａｐａｃｈｅ、Ｈｔｔｐ  Ｓｅｒｖｅｒなどを含む一覧によってプロジェクト説明ボックスが満たされる。この説明に表示されるプロジェクトはリンクであり、選択される場合、その選択されたプロジェクトのさらに詳細な説明を提供する。これに関して、例えば、サポートされるプロジェクトが別のプロジェクトの説明に表示されるときに、リンクがテキスト全体を通じて提供されてもよい。
【００４９】
プロジェクトはインストールされると、次にユーザがシステムを起動するとき、そのインストール済みのプロジェクトは暗く表示され、もはや選択可能でない。
また、インストールモードとアンインストールモードとを切り換えるために、ツールバーにボタン（図示せず）が提供される。このボタンを選択し、例えば、インストールモードからアンインストールモードへ切り換える場合、ポップアップボックスが出現し、選択されるプロジェクトがインストールされていないことを警告し、それがユーザの意図であることを確認する。この意図がユーザによって確認されると、システムはアンインストールモードに入る。このモードでは、インストール済みのプロジェクトがパネル６０２のプロジェクト一覧に示される。この場合にも、主要なプロジェクトは太字で示され、従属性プロジェクトは通常の書体で示される。
【００５０】
例として、インストールモードでは、ユーザはインストール用にＡｓｐｅｃｔ  Ｊ、Ｃａｓｔｏｒ、Ｅｃｌｉｐｓｅ及びＥｃｌｉｐｓｅのプラグインを選択する。なお、これに関して、Ｅｃｌｉｐｓｅプラグインが最初に選択される場合、Ｅｃｌｉｐｓｅプロジェクトは自動的に選択される。全ての所望のプロジェクトが選択されると、ユーザは「次へ」ボタン６１０を選択し進行する。選択されるプロジェクトのうちの任意のプロジェクトが適正にインストールされるためにさらなる情報を必要とする場合、この情報を収集するためにプロジェクトプロパティページが示される。所望の場合、ポート（及び潜在的な他のリソース要件）をチェックして選択されるプロジェクトと機械状態が互換性であることを確認するために、示したプロジェクト選択とプロジェクトプロパティスクリーンとの間にさらなるユーザインタフェーススクリーンが提供されてもよい。選択されるプロジェクト要件が満たされない場合、ユーザはそれらを訂正する方法について指示される。一部の場合、これに関する任意の問題が自動的に訂正される。いずれの場合においても、全ての要件が満たされるまでインストールが阻止されることによって、潜在的なインストールの複雑性が回避される。問題点を解決する一手法として、ユーザは戻ることを選択しプロジェクト選択を変更することが可能である。
【００５１】
図７には一例を示す。この場合、ユーザはプロジェクトプロパティパネル７０２におい
て、ＪＢｏｓｓ及びＭｙＳＱＬに対するパスワードの入力及び再入力を促される。パネル７０４には選択されるプロパティの説明が与えられ、ユーザが訂正情報を入力するのを補助する。全ての必要なインストール情報が入力されると、図８に示すようなインストール指示スクリーン８００が表示される。このスクリーンによって、インストールの妨げとなり得る共通の問題点を軽減する情報が提供される。このスクリーン８００には、有用であり得る任意の追加の指示及び要件を取得するためのリンクが提供されてよい。
【００５２】
ユーザは、インストール指示スクリーン８００を終了するとき、「次へ」ボタン８０２を選択し、図９に示すようなインストールスクリーン９００へ進むことが可能である。ユーザはスクリーン９００から「インストール開始」ボタン９０２を選択し、インストールを開始することが可能である。インストールの進行はウィンドウ９０４にてモニタ可能である。ポップアップウィンドウには、インストールが成功裏に完了する時が示され、インストール後の指示に関する情報が提供される。図１０に示すように、インストールが完了すると、ユーザは「報告」ボタン１０００を選択しインストール報告を生成すること、又は「完了」ボタン１００２を選択しインストール処理を完了させることが可能である。インストール報告の一例を図１１に示す。詳細には、報告１１００には、報告時にインストールされている全てのプロジェクトの状態が示される。
【００５３】
このようにしてインストールされるプロジェクトには、例えば、以下が含まれる：
【００５４】
【表１】
2007535770.tif 000003
【００５５】
【表２】
2007535770.tif 000004
なお、この代表的な一覧には、オープンソースプロジェクトに加え、１つ以上のプロプライエタリアプリケーションが含まれる。当然のことながら、他のオープンソースプロジェクト及びプロプライエタリアプリケーションもサポートされてよい。
【００５６】
また、ＧＵＩはフィルタ機能を実行し、例えば、クライアントエンティティ内の、個々のユーザによる特定のプロジェクトへのアクセスを選択的に使用可能又は禁止としてよい。例えば、企業は、例えば、どのプロジェクトがアクセスされるか、そのプロジェクトがどのように使用されるか、及び誰に使用されるかに関するポリシーの実装を補助するように、システムを構成する。これに関して、企業はそうしたプロジェクトをプロジェクト毎又はタイプ毎に定義してもよく、内部的に使用されるプロジェクトのセット、製品に組み込まれる（一般的又は製品毎に）プロジェクトの同じセット又は異なるセット、及び他の目的のための他のプロジェクトのセットを指定してもよく、例えば、ソフトウェア開発者、ＩＴ職員、経理担当など、個人又は個人からなる１以上のセットによってアクセスされるプロジェクトを指定してもよい。
【００５７】
フィルタ、基礎となるポリシー及び関連するフィルタパラメータは、クライアントエンティティによって選択されるため、クライアントエンティティの責任である。法的環境その他、クライアントエンティティによって適切であると見なされる因子の考慮により、クライアントエンティティによってポリシーが作成された後、フィルタによって、そうしたポリシーの内部実施を実装及び改良するための便利なツールが提供される。そうした問題点についての完全な考慮の代わりとして、或いはこれに代えて完全な内部教育及び実施様式としてフィルタが用いられることを意図するものではない。
【００５８】
上述のように、種々のパラメータを用いてフィルタを構成してよい。そうしたパラメータの１つはライセンスのタイプである。オープンソースプロジェクトにおいては、現在４５を超える異なる認識されるオープンソースライセンスが存在する。これらのライセンスには、例えば、一般公衆許諾契約書（ＧＰＬ）、劣等一般公衆許諾契約書（ＬＧＰＬ）、ＢＳＤ及びＡｐａｃｈｅのライセンスが含まれる。オープンソースライセンスは制限及び
義務が免除されているのではなく、これに関して、異なるライセンスには異なる制限及び義務が伴う。これらの制限及び義務は常に不明瞭でない訳ではなく、特定のライセンス条項は充分な注意を持って調べられる必要があるが、一定の特徴付けは可能である。例えば、一定のライセンスでは、ライセンスされているオープンソースソフトウェアと共に頒布される、プロプライエタリソフトウェアを含むソフトウェアのソースコードは、公開され利用可能とされることが必要である。一般にそうしたライセンスには、著作権表示に関する義務及びソフトウェアの複製に関する帰属が含まれる。したがって、一般にクライアントエンティティはコンプライアンスプログラムの一部として意図される使用に関連して、そうしたライセンスを注意深く考慮する必要がある。
【００５９】
これらのライセンスは示したフィルタのパラメータとして作用し得る。即ち、上述のように、ライセンス情報は示したシステムにおいてサポートされる各プロジェクトと関連付けられる。これらのライセンス表示は、例えば、フィルタのグラフィカルユーザインタフェースを用いてライセンス又はライセンスのタイプに基づきプロジェクトへのアクセスを使用可能又は不能として、クライアントエンティティ又はシステムオペレータによって選択又は選択取り消し（ｄｅｓｅｌｅｃｔ）されてよい。そうした構成は特定のユーザ、ユーザグループ、意図される使用などにおいて実行されてよい。そうした１つ以上のフィルタの定義によって、ＧＵＩは、一般には選択されるフィルタパラメータに従って、プロジェクトへのアクセスを禁止又は実行するように動作する。
【００６０】
フィルタは二値的に機能を許可するか又は許可しないことに必ずしも限定されない。例えば、ライセンスの制限又は義務のレベルに対応して「赤」、「黄」、「緑」など、３以上のレベルが定義されてもよい。したがって、特定のクライアントエンティティは自身の裁量において、また自身の内部ポリシーに従って、ＧＰＬライセンスのプロジェクトが黄のフィルタレベルに関連付けられ、ＢＳＤ及びＡｐａｃｈｅが緑のフィルタレベルに関連付けられることを決定してよい。
【００６１】
次にＧＵＩは各フィルタレベルに関して異なるフィルタ機能を実行するように構成されることが可能である。例えば、「赤」のプロジェクトはプロジェクト識別パネル６０２（図６）から除外されるか、又は「赤」のプロジェクトの選択は使用不能とされる。黄のプロジェクトの場合、使用に関する適切な警告又は使用における制限（例えば、「内部使用のみ」又は「使用前にコンプライアンス担当者に相談を」）が表示されるか、又はインストールの完了にはパスワードその他の認可が要求される。緑のプロジェクトは上述のようにフィルタ禁止から免除されてアクセスされる。本発明により他のフィルタレベル及び関連するフィルタ機能が可能であることは認められるであろう。そうした自動化フィルタリングはポリシーの目標と一致してポリシーの目標を実行するには不完全な場合があり、完全な教育及びコンプライアンスプログラムに置き換わるものではないが、オープンソースその他のプロジェクトの使用を考慮する企業において重大な関心となるコンプライアンスプログラムの遵守を奨励するための有用な機構を提供する。
【００６２】
なお、そうしたフィルタ機能は示したシステムとは別の相当な価値を有し得る。例えば、フィルタは従業員による使用において提案されるプロジェクトを選別するために、コンプライアンス担当者によって、任意のスタックアセンブリ、インストール及びサポート機能から完全に独立して用いられる。さらに、そうしたフィルタは、例えば、関連するＵＲＬに基づき、指定されるプロジェクトのダウンロードを禁止するために、インターネットゲートウェイフィルタ（例えば、企業ポリシーに従ってインターネットアクセスを制限するために用いられる）と共に実装される。本発明による他のフィルタの実行環境及び使用が可能である。
【００６３】
図１２は、本発明によるフィルタシステム１２００を示す概略図である。示したシステ
ム１２００は、１つ以上のフィルタ１２０２を実行するためのロジックを備える。例えば、クライアントエンティティ内の異なる複数のユーザ又はユーザグループに対し、異なる複数のフィルタ１２０２が定義される。
【００６４】
フィルタ１２０２は、ユーザインタフェース１２０４を介してユーザによって定義されてよい。これに関して、フィルタ識別情報、フィルタパラメータなどは、ユーザインタフェース１２０４上に表示されるテンプレート又は一連のメニューを介して入力されてよい。このようにして、ユーザはユーザパラメータ１２０８、使用パラメータ１２１０及びライセンスパラメータ１２１２など幾つかのフィルタパラメータを定義することが可能である。ユーザパラメータ１２０８によって、例えば、アプリケーション開発者、ＩＴ職員、経理担当など、特定のユーザ又はユーザグループが識別され得る。使用パラメータ１２１０によって、意図される使用又は許可される使用が定義される。したがって、例えば、プロジェクトのうちの１つのセットに内部使用を許可し、プロジェクトのうちの第２の（通常は、より限定された）セットに製品への組み込みを許可することが所望されてよい。ライセンスパラメータ１２１２によって、ライセンス関係に基づきプロジェクトのアクセス又は使用を制御することが可能となる。したがって、上述のように、一定のライセンスは緑のフィルタレベルと関連付けられ、他のライセンスは黄のフィルタレベルと関連付けられ、さらに他のライセンスは赤のフィルタレベルと関連付けられてよい。これらのフィルタレベルの各々に対し、適切なフィルタ規則が定義されてよい。
【００６５】
そうしたフィルタ構成情報に基づき、フィルタ１２０２はユーザシステム１２１４によるプロジェクト１２０６へのアクセス又はプロジェクト１２０６の使用を、選択的に許可する。例えば、フィルタ１２０２はプロジェクト１２０６のうちの選択的な１つへのアクセスを禁止してもよく、プロジェクト１２０６のうちの選択される１つのインストールを妨げてもよく、プロジェクト１２０６のうちの個別の１つへのアクセス又は個別の１つの使用に関して、一定の警告を提供するか又は一定の認可を要求してもよい。そうしたフィルタリング機能はユーザシステム１２１４の識別、ユーザシステム１２１４を介して入力されるユーザＩＤその他、ユーザの入力する意図される使用に応答して実行されてよい。プロジェクト１２０６は上述のようにスタックのアセンブリ、インストール及びサポートシステムに関しサポートされるプロジェクトの一覧、クライアントエンティティのコンプライアンスポリシーにより定義されるプロジェクトの一覧、又は、例えば、インターネットを介してプロジェクトをダウンロードするというリクエストに関して場合毎に識別される複数のプロジェクトによって定義されてよい。
【００６６】
図１３は、本発明によるプロジェクトフィルタを構成し動作させるための処理１３００を示すフローチャートである。示した処理１３００は、フィルタ構成ユーティリティへアクセスする（１３０２）ことによって開始される。そうした構成は、クライアントエンティティ、システムプロバイダ又は他のオペレータによって実装されてよい。ユーティリティを用いて、フィルタが選択される（１３０４）。これには、フィルタ識別を構成される特定のフィルタと関連付けることが含まれる。なお、これに関して、クライアントエンティティ、システムプロバイダ又は他のオペレータは複数のライセンスを定義及び管理してよい。
【００６７】
フィルタが選択されると、そのフィルタに対するフィルタレベルが定義され得る（１３０６）。上述のように、これに関してフィルタは二値的であってもよく、２より多くのフィルタレベルを備えてもよい。したがって、二値フィルタは特定のユーザが特定の目的において特定のプロジェクトにアクセスすることを選択的に許可するか、又は許可しないように動作してよい。２より多くのフィルタレベルを有するフィルタはアクセスを許可するか、アクセスを許可しないか、又は一定の制限若しくは認可によってアクセスを許可してよい。次に個々のユーザ又はユーザグループは、定義されるライセンスとの関係において
選択され得る（１３０８）。これにより、個々のユーザ毎に又はアプリケーション開発グループなどのユーザグループ毎に、特定のプロジェクト又はプロジェクトグループ（例えば、関連するライセンスのタイプによって定義される）へのアクセスに関する異なったレベルが可能となる。
【００６８】
示した処理１３００には、プロジェクトを定義されたフィルタレベルと関連付ける工程（１３１０）が含まれる。この場合にも、このことはプロジェクト毎に行われてもよく、又は例えば、上述のようにライセンスのタイプ又は別のカテゴリに基づきグループ化されているプロジェクトからなるグループによって行われてもよい。これに関して、例えば、有効期日及び複製又は頒布パラメータなど、他のフィルタパラメータが定義されてもよいことは認められるであろう。全ての所望のフィルタパラメータが定義されると、追加のフィルタの定義が必要であるか否かが判定される（１３１４）。追加のフィルタが定義される場合、この処理が繰り返される。追加のフィルタが定義されない場合、所望のプロジェクトフィルタ環境における使用のためにフィルタが有効化される（１３１６）。
【００６９】
使用中、フィルタは所与のフィルタ機能においてユーザを識別する（１３１８）ように動作する。ユーザはユーザの入力するユーザ識別情報に基づき、又はユーザ機械若しくはシステムのアイデンティティに基づき識別されてよい。また、意図される使用も識別されてよい（１３２０）。意図される使用はユーザによって入力されてもよく、ユーザグループその他の情報から推測されてもよい。これに関して、スタックのアセンブリ、インストール、デインストール及びサポート機能のうちの１つ以上に先立って、そうした情報をゲートウェイ機能として入力するようユーザを促すように動作してもよいことは認められるであろう。これに加えて、対象プロジェクトが識別される（１３２２）。特定の実装に応じて、バックグラウンドで又はスタックのアセンブリ、インストール及びサポート機能のうちの１つ以上の実行に先立って、そうした識別がインストールリクエストなどユーザの入力するリクエストに応答してもよく、ユーザ入力から独立して実行されてもよい。これに関して、フィルタはフィルタされたプロジェクトの表示を妨げるように動作してもよく、ユーザの入力から独立したフィルタされたプロジェクトの選択を妨げるように動作してもよい。最後に、フィルタはフィルタ機能を実行する（１３２４）ように動作する。そうした実行には、プロジェクトの識別されたセットへのアクセスを選択的に許可すること、プロジェクトの識別されたセットへのアクセス若しくはそのセットの特定の使用、又は制限情報／必要とされる適切な認可の表示を選択的に許可しないことが含まれる。
【００７０】
図１５には、代表的なインストール処理１５００を示す。示した処理は、スタックアセンブリに対する入力情報を受信する工程（１５０２）によって開始される。この処理が種々の手法によって開始されてよいことは認められるであろう。例えば、一部のユーザは、所与の利用に関連する特定のプロジェクトを含むパッケージをアセンブルすることに自身が興味を有することを認識する。この場合、そうしたユーザは、例えば、サポートされるプロジェクトの一覧をスクロールさせることによって、又は検索機能を用いることによって、そのプロジェクトを単に識別し、次に上述のように従属関係を通じて作用する。他の場合には、ユーザはプロプライエタリアプリケーションの名前を認識し、オープンソースの類似品を識別することに興味を有してもよい。そのような場合、そうした関係を識別するためのツールが提供されてよい。さらに他の場合、ユーザはプロジェクト名を認識せずに、対象の機能のみを認識する。それらの場合、ユーザが開始処理を開始させるのを補助するために、グラフィカルユーザインタフェースの形態で補助が提供される。例えば、プルダウンメニューなどのメニューが提供されることによって、ユーザが対象の機能を識別することが可能である。これに加えて又はこれに代えて、ユーザが対象のプロジェクトを識別するのを補助するために、例えば、プロジェクト説明情報へのリンクを用いて、サポートされるプロジェクトがグラフィカルに示されてもよい。さらなる代替として、幾つかのインタフェースを通じてユーザニーズを識別するインタビュー処理により、この処理が
開始されてもよい。これに関して、広範な種々のインタフェース機構が可能であることは認められるであろう。
【００７１】
いずれの場合においても、それによって入力情報が受信されると、示した処理１５００には、１つ以上のプロジェクトに対するオプションを提供する工程（１５０４）が含まれる。したがって、例えば、対象のスタックがウェブ設計に関連することを入力情報が示す場合、種々のウェブ設計プロジェクトのオプションが識別される。例えば、強調表示することその他、サポートされるプロジェクトの一覧においてそうしたプロジェクトに対する注意を喚起することによって、そうした識別が実行される。これに代えて、上述のように、プロジェクト情報を提供するユーザインタフェースへのリンクを用いて、関連のプロジェクトが単に表示されてもよい。一部の場合には、オプションの選択ではなく唯一のプロジェクトのみが利用可能であり得ることは認められるであろう。
【００７２】
次にアセンブリ下のスタックの第１のプロジェクトにおいて、選択が受信され得る（１５０６）。例えば、示したオプションの一覧からグラフィカルユーザインタフェースを介して１つのプロジェクトが選択される。そうした選択が行われると、システムはそのプロジェクトにおける従属関係を判定する（１５０８）。そうした従属関係には、例えば、選択されたプロジェクトが従属するプロジェクトや、選択されたプロジェクトによって使用される他のプロジェクトが含まれる。また、システムは機械状態も判定する（１５１０）。例えば、これにはユーザの機械に既にインストールされているプロジェクトを識別することが含まれる。また、この時点でプロジェクトフィルタが適用されてもよい（１５１２）。この全ての処理に基づき、システムはプロジェクトフィルタ、機械状態及び従属関係を反映する表示をコンストラクト（１５１４）する。したがって、選択又はインストールにおいて利用可能なプロジェクトのセットは、プロジェクトフィルタに基づき限定され得る。機械状態に基づき、予めインストールされているプロジェクトがインストールにつれて識別されてもよく、インストールされる選択が利用不可能となってもよい。上述のように、種々のグラフィカル要素及び文字に従属関係が反映されてよい。
【００７３】
この表示から、このシステムはプロジェクト選択を受信し得る（１５１６）。例えば、ユーザは第１のプロジェクトの従属するプロジェクトを選択する。そうした選択の後、システムは全ての従属性が解決されているか否かを判定し得る（１５１８）。従属性が解決されていない場合、ユーザはさらなるプロジェクト選択を行うように促される。従属性が解決されている場合、システムはアセンブリが完了したことを示す（１５２０）。そうしたインジケーションはポップアップボックスその他、アクティブな表示要素によって提供されてもよく、単に従属性が残っていないことによって（例えば、第１のプロジェクトの表示が赤から黒へ切り換わる）提供されてもよい。
【００７４】
実際にインストールを実行することなく、単にスタックをアセンブルするために本発明のシステムが用いられてよいことは認められるであろう。このことは本発明の重要な態様である。例えば、従属関係の問題点と、クライアントエンティティのライセンスコンプライアンスプログラムに関連するフィルタ機能とに対処する処理を実行するために、例えば、開発者はその開発者のシステムに実装されているロジックを用いて、又はウェブサイトにアクセスして上述の機能を実行する。次に、本発明のシステムから独立して、そのスタックの個々のプロジェクトが取得され、インストールされる。しかしながら以下に述べるように、本発明のインストーラはインストールに関する種々の有用な機能を実行する。
【００７５】
Ｂ．インストール
従属関係が内部的に満たされているプロジェクトのセットの識別が、インストールが問題なく成功することを意味しないことは理解されるであろう。一般に、競合の問題点を解決し、プロジェクトを統合して（例えば、所与のプロジェクトが正しいデータベースを指
し示すよう構成されるように）、インストールされたスタックをプロジェクトの適切なインストール及び相互動作のためにテストすることがさらに必要である。これに加えて、インストールには特定の順序が必要である。本発明では、ＧＵＩはこれに関する種々の機能を実行するように動作する。
【００７６】
そうした一機能は、インストール前チェックを実行することである。例えば、ＧＵＩによってポートの競合が識別及び解決される。上述のように、個々のプロジェクトに関連付けられるプロジェクト情報によって、そのプロジェクトの利用するポートが識別される。このポート情報は競合の識別及び解決のため比較され得る。さらにシステムは、プロジェクトの必要とする任意のファイルその他のリソースが利用可能であることをベリファイするため、及びユーザ機械又はシステムにおいてプロジェクトの全ての環境要件が満たされていることをベリファイするために、チェックを実行する。
【００７７】
別の機能は実際のインストール処理の制御である。これに関して、エンジンはスタックのプロジェクト一覧を取得し、従属関係その他、インストールの適切な順序を決定するために必要なプロジェクト情報を解析し、次にその順序によりインストールを実行する。このインストールの実行に先立って、コントローラはロジックを実行し、所望のインストールを実施するために必要とされるリソースを識別してよい。
【００７８】
インストールに関してＧＵＩの実行する別の機能は、データベースの統合である。これに関して、個々のプロジェクトが特定のデータベースを必要とし、異なるプロジェクトが異なるデータベースに関連付けられていてもよい。ＧＵＩはプロジェクトが所望のデータベースを指し示すよう、個々のプロジェクトを所望のデータベースと統合するように動作する。
【００７９】
インストール及びデータベースの統合が実行された後、インストールされたスタックの適正な動作をベリファイするために、インストールされたスタックに対しテストが実行されてよい。このことは、ユーザ機械上でスタックを実行し、次に特定のプロジェクト、プロジェクトの組み合わせ又はスタック全体に対し定義されるテスト手続を実行することによって実施される。例えば、そうしたテストには、特定のファイルを探すこと、ポートをチェックすること、サーバをピンすること（ｐｉｎｇｉｎｇ）が含まれる。特定のテストが経験的に判定されてよいこと、即ち、共通のインストールエラーを識別する高い尤度を提供する獲得された専門技術に基づき判定されてよいことは認められるであろう。
【００８０】
次に、インストールされたスタックは選択されたサンプルを用いて実行される。即ち、インストールされたスタック用に特に設計されているチュートリアルは、ＧＵＩによって提供されてよい。ユーザは、このチュートリアルを実行し、インストール済みの統合されたスタックをどのように使用するかについて学習することが可能である。このスタックに関して、インストールされたスタックは一定のサンプルを実行する。これは、サンプルテストを提供するように動作する。即ち、サンプルの実行に関連してスタックの適正な動作がベリファイされる。これらのテストは上述のテストと同様であるが、先のテストより多くのソフトウェアスタックのレイヤに関係し、実行環境において動作する。これらのテストの結果としてエラーが識別される場合、エラーの解決又はインストール処理の一部を繰り返す指示に関する情報と共に、エラーメッセージが提供される。
【００８１】
プロジェクト更新の対処に関して同様の問題点が提示される。独立のリソース、例えば、複数のサードパーティ又はオープンソース開発者によるプロジェクトからなるスタックの動作においては、一般に更新が協調的でないことは認められるであろう。即ち、更新が異なる時に発生する場合や、互換性に対する影響を有する場合、有しない場合がある。上述のインストール処理は初期インストールに関して実施されるのみならず、更新インスト
ールに関して実施されることも可能である。即ち、所与の更新において、適切なチェック、インストールの順序決定、テストなどが設計及び実行されることが可能である。
【００８２】
これに関して、更新が手動で読み出されると更新のインストールが自動的に実施されてもよく、更新が利用可能であることがクライアントエンティティのユーザ又は管理者に示されてもよい。例えば、システムオペレータはサポートされるプロジェクトの更新の利用可能性をモニタし、適切な情報をユーザ又はクライアントエンティティにダウンロードする。次にユーザ又はクライアントエンティティがネットワークにログインすると、更新が利用可能であることが通知され、ユーザ又はクライアントエンティティはスタックのアセンブリ、インストール及びサポートのシステム又は影響を受けるプロジェクトの選択をロードする。そうした更新は更新されるプロジェクトオプション及びサポート教材に加え、更新されるソフトウェア更新に関連してもよい。次にユーザ又はクライアントエンティティは、更新をインストールすることを選択するか、更新をインストールしないことを選択する。これに関して、全てのユーザ／クライアントエンティティが全ての更新をインストールすることを望まない場合があることは認められるであろう。
【００８３】
したがって、示したシステムがインストール及び更新の処理に関して幾つかの利点を提供すること、また、スタックのアセンブリ又はインストール後のサポートから独立していると考えられるこのインストール処理が本発明の重要な態様を構成することは認められるであろう。即ち、このインストール処理の種々の要素は本発明から独立して開発されるスタックアセンブリにおいてさえ利点を提供する。しかしながら、複数のオープンソースプロジェクトのスタックのアセンブリ及びインストールに対してさえも、インストール後の一定のサポートが所望される場合がある。以下に述べるように、これに関して本発明は有意な利点を提供する。
【００８４】
Ｃ．インストール後サポート
オープンソースソフトウェアスタックをアセンブリ及びインストールすると、エンドユーザによるスタックの使用の用意が整う。しかしながら、スタックの最適な性能を可能とするには、種々のインストール後機能が有用な場合がある。以下で述べるように、本発明ではこれに関する種々の機能が提供される。インストールされたスタックの適正な使用及び性能についてエンドユーザを教育するためのチュートリアルから、多くのユーザは利益を得る。上述のように、一部のオープンソースソフトウェアプロジェクトにおいては、チュートリアルが利用可能である。しかしながら、一般にそうしたチュートリアルは、アセンブルされる特定のスタックにおいて指示を提供するように特に適合されている。本発明では、そうしたスタックにおいてチュートリアルが提供される。上述のシステムはオープンソースその他のプロジェクトの選択されたセットをサポートする。大きいが有限のソフトウェアスタックのセットを定義するように、それらのプロジェクトを組み合わせることが可能である。知識ベースは、それらのスタックの多く若しくは全部又はその一部に対するチュートリアル情報を記憶する。スタックがインストールされると、関連する１つ以上のチュートリアルがユーザによって実行されるように利用可能となる。
【００８５】
別の重要なインストール後機能は、ユーザマニュアルその他のサポート文書に関する。上述のように、個々のオープンソースプロジェクトに関してはサポート文書が利用可能な場合がある。しかしながら、従来、特定のスタックに関するサポート文書を取得する便利な機構は一般に存在しない。この問題は、本発明により、サポート文書を構造化されたＸＭＬ文書として記憶することによって対処される。即ち、大量のサポート文書のテキストは、特定のプロジェクト、プロジェクトの組み合わせ及び全スタックに対しテキストをリンクさせるタグシステムにより関連付けられる。例えば、プロジェクト及びスタックは、親、子、その他の階層的タグ構造によって関連付けられる。特定のスタックがインストールされるとき、このタグシステムを用いて、カスタマイズされたサポート文書をコンパイ
ルし、関連するサポート文書を容易に読み出すことが可能である。また、関連するグラフィックがカスタムベースでアセンブルされてもよい。詳細には、サポート文書はＬｉｎｕｘ、Ｗｉｎｄｏｗｓ及びユーザによって指定される又は知識ベースに記憶されるユーザ機械情報により示される他の基準のうちの１つ以上において提供されてよく、これに関する適切な文書はメタデータ（例えば、タグ）関係に基づき読み出されてもよい。
【００８６】
オープンソースプロジェクト、プロジェクトの組み合わせ又は全スタックに対するカスタムチュートリアル及びサポート文書を提供する性能が、上述のスタックアセンブリ及びインストールツールから独立して利用され得る本発明の重要な利点であることは認められるであろう。例えば、上述のツールから独立してカスタムスタックインストールを実行した開発者は、本発明を利用してサポートのチュートリアル又は文書を取得することを望んでよい。例えば、これは開発者のシステムに実装されているロジックを実行することによって、又はそうしたチュートリアル又は文書を使用料ベースで提供するように動作するウェブサイトにアクセスすることによって実施される。
【００８７】
オープンソースソフトウェアの柔軟性と、本発明により提供されるアセンブリ及びインストールの容易性との組み合わせによって、プロプライエタリシステムにおいて又は本発明のツールの存在しない場合のオープンソースソフトウェアにおいて容易には実現不可能な幾つかの利点が得られる。例えば、ユーザは種々のスタックのオプションを試し、特定の利用に対していずれのオプションが最適であるかを判定することを望み得る。例えば、ユーザは特定のオープンソースソフトウェアスタックに関して異なる利用可能なデータベースツールを切り換えることを望み得る。本発明では、データベース切換機（スイッチャ）又は他のソフトウェアコンポーネントに対する切換機が提供されてよい。このようにして、ユーザは１つのデータベースと別のデータベースとの間でデータベースを切り換えさせるよう、システムに促すことが可能である。上述のように、このシステムはスタックの関連するプロジェクトが新たに選択されたデータベースを指し示すよう、スタックの関連するプロジェクトを統合するように動作する。次にユーザはスタックの性能を１つのデータベースツール（又は他のリソース）及び別のデータベースツール（又は他のリソース）と比較することが可能である。このようにして、特定の利用に対する性能の最適化が便利に実施されることが可能である。プロプライエタリシステムでは競合するプロバイダのツール間などの比較が一般に行われないことは認められるであろう。理論的には、オープンソースシステムではそうした比較が可能であるが、実際問題としては、ツール及び関連する統合の切換に関連する非常な複雑性のため、これは実行不可能である。
【００８８】
上述のシステムは幾つかの手法により実装されることが可能である。例えば、関連するロジックは定期的に提供される更新によって、物理的な形態でクライアントに流布される。これに代えて、関連するロジックはクライアントエンティティによってオペレータのウェブサイトからダウンロードされてよく、同様の手法により定期的に更新がダウンロードされてもよい。さらなる代替として、システムはホストされているアプリケーションとして動作されてもよい。いずれの場合においても、システムの使用は、例えば、ユーザ毎、年毎に、ライセンスされてよい。これに関して、非認可の改変に対してライセンス情報を保護しながら、そうしたライセンスに関する情報をライセンス取得者に利用可能とすることが所望される場合がある。
【００８９】
図１４は、そうしたライセンス情報を管理するためのシステム１４００を示す概略図である。示したシステムは、ユーザインタフェース１４１０を介してユーザに利用可能な情報を管理するためのライセンスマネージャ１４０２を備える。システム１４００はシステムプロバイダのクライアント装置に実装されてもよく、別のロケーションに実装されてもよく、複数のプラットフォームに渡って分散されてもよい。ライセンスマネージャ１４０２は、ユーザインタフェース１４１０を介して入力されるライセンス情報のリクエストを
受信し、１４０４のライセンス情報へのアクセスを管理するように動作する。これに関して、ライセンス情報１４０４には、個々のライセンスに対するライセンスファイル１４０６が含まれる。ライセンスファイル１４０６は公開部分１４０６ａ及び非公開部分１４０６ｂを含む。公開部分１４０６ａ及び非公開部分１４０６ｂにて利用可能な情報は、ある程度まで重複する場合があるが、一般に非公開部分１４０６ｂは追加の情報を含む。示した実施例では、公開部分は、例えば、ライセンス識別及び有効期日を含む。そうした情報は、例えば、ユーザが問題点にあたるライセンスを識別し、クライアントエンティティに対する合法的な使用の情報を取得することを可能とするように用いられる。
【００９０】
非公開部分１４０６ｂは、ライセンス条項を定義する情報など、アクセスの制限についての追加の情報を含んでよい。１４０６ｂの非公開部分は、例えば、有効期日を更新するため又はライセンスされたシートを追加するために、認可された個人によってアクセスされることが可能である。これは、ユーザインタフェース１４１０を介してライセンス識別情報を入力し、制限されたアクセスフィールドへのアクセスをリクエストすることによって実行される。そうしたアクセスリクエストに応答して、ユーザはパスワードその他のセキュリティ情報の入力を促される。このパスワード情報は、１４０６の非公開部分に入力される情報を暗号化するため、又は非公開部分１４０６ｂから情報を解読するために用いられる。このようにして、ライセンス条項の実施に対する基本的情報などの情報の制限されたアクセスを保護しながら、適切なライセンス情報が利用可能となる。
【図面の簡単な説明】
【００９１】
【図１】アプリケーション開発環境のレイヤを示す図。
【図２】アプリケーション開発環境の種々のレイヤにおけるプロプライエタリアプリケーションの例を示す図。
【図３】オープンソースオプションを含むアプリケーション開発環境のレイヤを示す図。
【図４】アプリケーション開発環境におけるプロジェクトの一定の従属関係を示す図。
【図５】本発明によるソフトウェアスタックのアセンブリ、インストール及びサポートシステムの概略図。
【図６】図５のシステムの動作に関して提供され得るユーザインタフェーススクリーンの例の図。
【図７】図５のシステムの動作に関して提供され得るユーザインタフェーススクリーンの例の図。
【図８】図５のシステムの動作に関して提供され得るユーザインタフェーススクリーンの例の図。
【図９】図５のシステムの動作に関して提供され得るユーザインタフェーススクリーンの例の図。
【図１０】図５のシステムの動作に関して提供され得るユーザインタフェーススクリーンの例の図。
【図１１】図５のシステムの動作に関して提供され得るユーザインタフェーススクリーンの例の図。
【図１２】本発明によるプロジェクトフィルタシステムを示す概略図。
【図１３】図１２のプロジェクトフィルタシステムの動作を示すフローチャート。
【図１４】本発明によるライセンス管理システムの概略図。
【図１５】本発明によるスタックアセンブリ処理を示すフローチャート。
【図１】
2007535770.tif 000005
【図２】
2007535770.tif 000006
【図３】
2007535770.tif 000007
【図４】
2007535770.tif 000008
【図５】
2007535770.tif 000009
【図６】
2007535770.tif 000010
【図７】
2007535770.tif 000011
【図８】
2007535770.tif 000012
【図９】
2007535770.tif 000013
【図１０】
2007535770.tif 000014
【図１１】
2007535770.tif 000015
【図１２】
2007535770.tif 000016
【図１３】
2007535770.tif 000017
【図１４】
2007535770.tif 000018
【図１５】
2007535770.tif 000019
【国際調査報告】
2007535770.tif 000020
2007535770.tif 000021