|
オープンソース開発者のセス・ヴァーゴ氏は、Chef Inc.が最近ICE(米国移民関税執行局)と契約を結んだことを知り、Chef DevOpsから自身のオープンソースプロジェクト「Chef Sugar」を削除することで抗議しました。Chef Inc.はその後、来年契約を更新しないと表明しました。しかし、問題はそこで終わらず、オープンソースの倫理に関する懸念が高まっています。活動家たちは「#NoTechForICE」というスローガンを掲げ、オープンソースライセンスに倫理条項を追加するよう求める「ヒポクラテス・ライセンス」を起草しました。 ヒポクラテス・ライセンスはMITライセンスの修正に基づいて構築されています。著者のコラライン・エイダ・エムケ氏は、このライセンスは「オープンソースソフトウェアを他者に危害を加える目的で使用することを明確に禁止している」と説明しています。また、彼女はオープンソース定義の「非差別」条項の第5条と第6条の改正を求めています。 エムケ氏は、ソフトウェア開発者は長らく自分が書いたコードの影響から距離を置いてきたが、実際には「私たちが作るソフトウェアは、私たちが住む世界に現実的かつ永続的な影響を与える」と主張している。政治とソフトウェアは密接に結びついており、すべてのテクノロジーは本質的に政治的であり、中立など存在しないと彼女は考えている。もしこうした状況が他者に害を及ぼすなら、私たちはどうすれば良いのだろうか?だからこそ、彼女はオープンソースライセンスを通じてこれらを規制したいと考えている。 オープンソース・イニシアティブ(OSI)は、エムケ氏の主張を即座に反駁しました。彼らはツイートで、「ヒポクラテス・ライセンスの説明を読むと、このライセンスがオープンソースライセンスであり、ヒポクラテス・ライセンスに基づいて配布されるソフトウェアもオープンソースソフトウェアであると考える人がいるかもしれません。しかし、どちらも真実ではありません。混乱を避けるため、文言を修正することを強く求めます。」と述べました。 エムケ氏は、「OSIとFSF(フリーソフトウェア財団)は、『オープンソースとは何か』『フリーソフトウェアとは何か』の真の裁定者ではない。そうであるのは我々だ」と反論した。さらに彼女は、現在のオープンソースの構造では、ICEのような組織による成果物の利用を阻止することはできないと付け加えた。これはオープンソースライセンスの問題ではなく、オープンソースそのものの問題である。 Twitter での議論はさておき、オープンソース ライセンスに倫理ガイドラインを組み込むことができるかどうかについて話しましょう。 これは目新しいことではありません。例えば、2009年のException General Public License(eGPL)はGPLv2を基盤として、軍事ユーザーなどの「例外」によるコードの使用を阻止しようと試みましたが、最終的には失敗に終わりました。 JSONライセンスのような他のライセンスもあまり知られていません。このライセンスは「ソフトウェアは善のために作られており、悪のために作られているわけではない」と謳っていますが、それを強制する人はいません。 今年、996.ICU運動と並行して登場したAnti-996ライセンスも、倫理的な観点から検討の余地がある。オープンソースソフトウェアライセンスを専門とする弁護士、ヘザー・ミーカー氏は、「この問題への注目を集めるという重要な目的は達成された」と考えている。しかし、オープンソースライセンスとしては依然として問題が残る。「ライセンス内の倫理条項はライセンシーに強制力を与えるものではない。法的観点から見ると、倫理条項はライセンシーの行動を統制するための効果的な法的手段というよりは、むしろ意見表明に近い」からだ。 オープンソースライセンスに関して、オープンソース法の専門家であり、コロンビア大学法学教授でもあるエベン・モグレン氏は、FSFのフリーソフトウェアの定義によれば、倫理的配慮を求めるライセンスは「ゼロの自由」に関する規定に違反すると指摘しています。「ゼロの自由」とは、プログラムをあらゆる目的で実行する権利であり、4つの自由権のうち最初のものです。 有力なテクノロジー法律事務所であり、オープンソース法の専門家でもあるゲスマー・アップデグローブの創設パートナー、アンドリュー氏は、「一般的に言えば、ライセンサーはライセンスにどのような条件も含めることができます。しかし、OSIのオープンソース定義に準拠していると主張する文書には、そのような制限を含めることはできません」と付け加えました。 具体的には、これはオープンソース定義の第 6 条に戻ります。「ドメインにおける差別の禁止」—ライセンスは、特定のドメインでプログラムを使用することを制限してはなりません。 アンドリュー氏は、その理由について「『オープンソースソフトウェアの商用利用を禁止する』という慣行を禁止するためです。私たちは商用ユーザーがコミュニティに参加して欲しいのであって、排除して欲しいのではありません」と説明した。ちなみに、これはフリーソフトウェアとオープンソースソフトウェアの根本的な違いの一つである。 「『使用禁止』条項を作成し、ライセンシーに下流のライセンスにも同様の条項を含めるよう要求することは可能です」とアンドリューは述べていますが、実際にはこれを強制するのは困難です。「コードが通常のオープンソースの方法でリリースされた場合、多くのコピーが瞬く間に出現し、それらすべてを追跡することはほぼ不可能になります。もしそのコードが、あなたが有害だと考える商用製品にバンドルされていたら、それを知る術はありません。」 ソフトウェア自由保護協会(Software Freedom Conservancy)の事務局長であるカレン・M・サンドラー氏も自身の見解を述べ、ソフトウェアの自由を限定的に保護することは不適切であり、そのような倫理的なライセンスは執行上の問題を引き起こすと主張しました。さらに重要なのは、サンドラー氏は同じ目標は他の手段でも達成できると考えていることです。サンドラー氏は、開発者のための倫理的な社会を構築すること、あるいは違法行為を禁止するための政治プロセスに参加することを提案しています。 ソフトウェアライセンスに倫理条項を組み込むことに関して、サンドラー氏は「ハンマーは建設工具としても殺人兵器としても使用できる」ことを踏まえ、現実的ではないと改めて強調した。 |
オープンソース ライセンスに倫理条項を含めることはできますか?
関連するおすすめ記事
-
React の状態管理: Redux とは何ですか?
-
Scribus 1.6.0 リリース: 新機能を含むメジャーアップグレード
-
Istio は Gateway API を使用してトラフィック管理を実装します。
-
Facebook のオープンソース開発フレームワーク Hydra は、プログラム構成を簡素化し、動的に実現します。
-
-
89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">resource ( s )
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 検出キャッシュをクリアしています
2022/07/02 13:17:33 タイムアウト1 分で4つのリソースの待機を開始
2022/07/02 13:17:39 43個のリソースを作成しています( s )
2022/07/02 13:17:39 5分0 秒のタイムアウトで43のリソースの待機を開始
2022/07/02 13:17:40 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:17:42 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
……
2022/07/02 13:19:44 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:38:27 デプロイメントの準備ができていません: argocd / argocd - dex - server 。 1 個のポッドのうち0 個が準備完了です
2022/07/02 13:38:30 リリースインストールに成功しました: argocd / argo - cd - 4.9.11
2022-07-02 13:38:30 ✔ [ 成功] ツール( argocd / default ) の作成が完了しました。
2022 - 07 - 02 13 : 38 : 30 ℹ [ 情報] -------------------------- [ 処理の進行状況: 4/4 。 ] --------------------------
2022 - 07 - 02 13 : 38 : 30 ℹ [ INFO ] 処理中: ( argocdapp / default ) -> 作成...
2022-07-02 13:38:31 ℹ [ INFO ] application . argoproj . io / dtm - test - go が作成されました
2022-07-02 13:38:31 ✔ [ 成功] ツール( argocdapp / default ) の作成が完了しました。
2022-07-02 13:38:31 ℹ [ 情報] -------------------- [ 処理が完了しました。 ] --------------------
2022-07-02 13:38:31 ✔ [ 成功] すべてのプラグインが正常に適用されました。
2022-07-02 13:38:31 ✔ [ 成功] 申請が完了しました。適用プロセス中、実行状態は定義された状態バックエンドストレージに保存されます。例えば、ローカルストレージを使用している場合、実行状態はルートディレクトリのdevstream.stateファイルに保存されます。合計4つのツールチェーンがあり、最初の2つが完了し、最後の2つが認識された場合、最初の2つのプラグインの状態がこのファイルに保存されます。次回の再適用時には、最後の2つのツールチェーンのみを実行する必要があります。
上記で定義したツールチェーンは、最終的に GitHub 上に Golang Web 用のスキャフォールディングされたアプリケーション コード リポジトリを作成します。
GitHub Actions は、CI 操作と Docker イメージの構築に使用されます。
CI プロセスは最終的にイメージを Docker Hub にプッシュします。
その後、ArgoCD が Kubernetes にデプロイされます。
$ kubectl get pods -n argocd
名前準備完了ステータス再起動年齢
argocd - アプリケーション- コントローラー- 0 1 / 1 実行中0 5 分55秒
argocd - アプリケーションセット- コントローラー- 64 d8c477f4 - 2 wrg6 1 / 1 実行中0 5 分55秒
argocd - dex - サーバー- dbdbf5499 - krmfz 1 / 1 実行中0 5 分35秒
argocd - 通知- コントローラー- b67c4bdb4 - 22 t9l 1 / 1 実行中0 5 分55秒
argocd - redis - df9db799b - 8 gbpv 1 / 1 実行中0 5 分55秒
argocd - リポジトリ- サーバー- 56769 cdd47 - zs65j 1 / 1 実行中0 5 分55秒
argocd - サーバー- 7 d4745f689 - w5pp7 1 / 1 実行中0 5 分55秒最後に、ArgoCDを使用してCD操作を実行し、サンプルアプリケーションをKubernetesクラスターにデプロイします。基本的には、ArgoCDアプリケーションオブジェクトを作成します。
$ kubectl アプリケーションを取得- n argocd
名前同期ステータスヘルスステータス
dtm - テスト- go 不明健康ArgoCD を通じて、デプロイされたアプリケーションの詳細を表示することもできます。
最後に、ツールチェーン全体を削除する場合は、`dtm delete` コマンドを実行するだけです。
プロセス全体は非常にスムーズでした(ただし、何らかの理由でGitHubへのアクセスが非常に遅かった点を除けば)。必要なプラグインを設定ファイルで定義するだけで済みます。プラグインの設定方法の詳細については、公式ドキュメント(https://docs.devstream.io/en/latest/plugins/plugins-list/)をご覧ください。
YAML設定ファイルに必要なDevOpsツールを定義するだけで、たった1つのコマンドでDevOpsツールチェーンとSDLCワークフロー全体を構築できます。DevStreamはまさに魔法のツールと言っても過言ではありません。
Git リポジトリ: https://github.com/devstream-io/devstream。