GitHub がどのようにしてソフトウェア自動化の中心となったのか

  • Sep 04, 2023

ある日、Linux の作成者は、Linux カーネルへのすべての貢献を追跡する Git というユーティリティを作成しました。 これが一連の出来事を引き起こし、単なるオープンソースではなく、ソフトウェアの事実上の自動化されたサプライ チェーンとして GitHub が確立されるに至りました。

ビデオ: GitHub がソフトウェアの事実上の自動サプライ チェーンになった経緯

特徴

  • Windows 10 は人気がありすぎるのでしょうか?
  • キャリアを始めるのに最適な場所を見つける 5 つの方法
  • これが、生成 AI がギグエコノミーをより良い方向に変える方法です
  • 私が Google の Pixel 6a よりもこの 300 ドルの Android を好む 3 つの理由

電話をかけるには GitHub ウェブサイトではイタリアを食事の場所と呼んでいます。 GitHub は新興マーケットプレイスの主要な実践者です。確かに、GitHub は収益を生み出しているため、合法的に「マーケット」と呼ぶことができます。 いくつかの推定によると、2017 年には 2 億ドル以上の収益があり、Microsoft にとってそれを促すのに十分な価値があったことは明らかです。 GitHub を完全に購入するには、昨年6月に75億ドルの全株式取引を行った。

こちらもお読みください: Microsoft が GitHub を買収する理由: すべては開発者のためです

こう言うのは正確かつ公平だ GitHub ~の供給市場を創出した オープンソースソフトウェア、およびその展開の自動化。 この市場には他にも競合他社が存在します。 GitLab そしてアトラシアンの ビットバケット. この市場を正当化するのは、こうしたプレーヤーの存在です。

GitHub は、業界のサプライ チェーン全体の機能を吸収する Web サービスのこれまでで最も効果的な例となりました。 オープンソースソフトウェア は過去にオンラインで共有されており、SourceForge は最も効果的な実践者の 1 つです。 しかし、SourceForge やそれに類するサイトを通じたソフトウェアの配布は、コンテンツ管理システム (Web ブラウザを使用するユーザーに最適なプラットフォーム) を使用して行われます。

Git を実行中

GitHub は使用するように設計されています

Linux 用に作成されたツール ギット、Linux自体を作成した男、Linus Torvaldsによるものです。 これは、オープンソース ソフトウェアを開発者と使用者の間で配布するための自動化されたサプライ チェーンです。 その自動化により、配布チャネルはユーザーに利用可能な最新かつ最も安全なバージョンを確実に提供すると同時に、安定性の低い進行中の作品を開発者に配布します。 また、共有コード要素が依存する可能性がある他のコンポーネントの最も安定したバージョンも提供します。

こちらもお読みください: リーナス・トーバルズが Linux、人生、バスローブについて語る

「開発者にとってクラウドはますます最優先事項となっています。 そして GitHub では、私たちが行うすべてのことは、開発者の仕事とライフサイクルのあらゆる段階で開発者の生活をより良くすることを目的とすべきです」とナット・フリードマン氏は述べています。 次期 GitHub CEO、6月のマイクロソフトとの共同記者会見で。 「これには、クラウドでの構築を容易にする支援も含まれます。

「GitHub はオープン プラットフォームです」とフリードマン氏は続けました。 「そのため、誰でもクラウド サービスを GitHub に接続できるようになり、コードからクラウドへの移行が容易になります。 そしてそれはクラウドを超えて、コードからモバイル、コードからエッジデバイス、そしてコードからIoTにも広がります。 開発者が追求したいあらゆるワークフローを私たちはサポートします。」

ライナス・トーバルズの意図

他で読んだ内容とは異なり、git ツールは Linux の独占的な部分ではありません。 確かに、 Windows および Mac OS X 用のバージョンは無料で配布されています. 技術的には、git (これも特定の何かを表す頭字語ではありません) が分散バージョン管理システムとして導入されています。 元々は Linux コマンド ライン用に作成されたもので、コンピュータ自体のファイル システムとは別に、進化するファイルの複数のバージョンを保存および取得できるファイル システムを確立します。 これらのバージョンが交換されるデータベースはリポジトリ (または略して「リポ」) と呼ばれます。 リポジトリに置かれたファイルのどのバージョンでも、同じ条件でリポジトリから抽出できます。 git の観点から見ると、これはソフトウェアである必要はありません。 それは本の原稿であったり、進化する機械の別のバージョンの取扱説明書であったり、あるいは人の日記であったりします。

トーバルズ 彼は、Linux カーネルへの個人的な貢献のために、ソース コード管理システムとしてオリジナルの git を作成しました。 彼のインスピレーションの一部は、Concurrent Versions System (CVS) と呼ばれる既存のリポジトリ ベースのバージョン管理管理システムでした。 ディスクベースのデータベースの古代の世界を思い出してください。ロックは、 2 つのクライアントが同じデータに対して異なるビューを持たないように、取得され、更新される可能性があります。 記録。 CVS には、木の枝のように互いに分岐するコンテンツ バージョンのリポジトリを使用する同様の概念がありました。 ブランチは、更新または変更を行おうとする誰かによって「チェックアウト」される可能性があります。 これらの変更が行われると、コンテンツの改訂版がトランクにマージされて戻されますが、 古いブランチを剪定する代わりに、タグで元の場所をマークし、次の場合に復元できるようにします。 必要。

こちらもお読みください: Linux 作成者 Linus Torvalds: これが私を狂わせる原因です

さらに言えば、トーバルズ氏は CVS を嫌っていました。 しかし、彼が Linux を維持するために選んだ代替手段は、と呼ばれる独自のソフトウェアでした。 ビットキーパー. これは、真にスケーラブルな最初のコンテンツ リポジトリ システムだったと考えられます。 しかし、それは独自の王国への鍵、特にリポジトリへの貢献の履歴を記述するメタデータを所有していました。 このメタデータはオペレーティング システム カーネルの構築にとって絶対に重要ですが、BitKeeper ライセンスを取得したユーザーのみが利用できました。 BitKeeper は、そのようなライセンスを読み取り専用ベースで Linux 貢献者に拡張しました。

別の Linux 貢献者が明らかに 自分自身のためにメタデータをリバースエンジニアリングしようとした -- という行為 トーバルズ氏は公に非難するだろう -- BitKeeper のパブリッシャーがライセンスを剥奪したため、Torvalds 氏は代わりに CVS と格闘するか、代替案を考案することになった。

集中型リポジトリから分散型リポジトリへ

その代替手段である git は、BitKeeper の集中型リポジトリを避け、代わりに分散モデルを選択します。 このモデルの結論の 1 つは、多数の寄稿者がブランチに独自の更新を提供できるということです。 恣意的に指定された上流階級の人物には「コミットアクセス」が与えられ、そのような貢献の1つを宣言する権利が与えられます。 「公式」のもの。

こちらもお読みください: Git: チートシート - TechRepublic

として トーバルズ氏は2007年5月にGoogle主催のカンファレンスで語った。、分散モデルは、BitKeeper での彼の努力を台無しにすることになった種類の政治を意図的に避けています。

(画像: Google LLC)

「ほとんどの人はバカなので、全員が中央リポジトリに書き込むことを望まないため、表向きはバカではないこのクラスの人々を作り出します。」と彼は聴衆に語った。 そして、ほとんどの場合、そのクラスを小さくしすぎることが起こります。なぜなら、その人が賢いかどうかを知るのは本当に難しいからです。そして、たとえ小さくしすぎたとしても、問題が発生するでしょう。 つまり、このコミット アクセスの問題全体 -- 一部の企業は全員にコミットを与えるだけで無視できます アクセス -- これは大きな心理的障壁であり、ほとんどのオープンソースでは際限なく政治的な問題が発生します。 プロジェクト。」

意図的か否かにかかわらず、Torvalds 氏のアーキテクチャ上の決定は、オープンソースを革命から確立へと変える運動の触媒となりました。 平均的な企業よりも難解な組織階層を持つコミュニティでは、「オープンさ」は決して意味がありません。 分散リポジトリ モデルの助けを借りて、誰でも (匿名であっても) 既存のプロジェクトのフォークを主張し、そのフォークを自分のものにするために必要な変更を提供できます。

サインイン

GitHub がこの状況に貢献しているのは、次の重要なコンポーネントです。

  • 複数のユーザー間で Git を調整するためのソーシャル フレームワーク。
  • (雇用主やプロジェクトとは対照的に)個々の貢献者のアイデンティティの基本システム。
  • ソフトウェア (またはその他のコンテンツ) を外部の世界に提示および説明するための基本的な Web サイト。
  • プロジェクトを継続的インテグレーション (CI) パイプライン プラットフォームと統合するためのコンテキスト。 トラヴィスCI, サークルCI、 そして ジェンキンス.

オープンソース コミュニティがその形成期を通じて直面した主な課題の 1 つは次のとおりです。 非常に皮肉なことに、そのすべてにまたがる共通のプログラム可能なインフラストラクチャが欠如しているのです。 貢献者。 はい、コンテンツ管理システムはありましたが、それらは真のクラウドではなく、ソフトウェアの配布と展開を目的としたシステム設計でもありませんでした。

こちらもお読みください: Google幹部、MicrosoftがGitHubを摘発しても大丈夫と発言 - CNET

これは Torvalds 氏の当初の意図ではなかったかもしれませんが、開発者の PC 上の git と Web 上の GitHub を組み合わせる結果となりました。 簡単に自動化されたシステムで、誰でも大規模な共同プロジェクトに参加できます。 招待。 GitHub メンバーは誰でもオープンソース リポジトリをフォークできます。 その後、彼女はそれを自分の PC にローカルでクローン作成することを選択する場合があります (一部のチュートリアルではこのように表現されていますが、フォークはクローン作成と同じではありません)。

次に、 GitHub ユーザーが gi を構成するt はそのリポジトリを指します。 彼女が加えた変更により、リポジトリの新しいバージョンが作成されます。 このような変更は、リポジトリ全体を物理的に複製するわけではありませんが、変更を元のイメージと効果的にマージする新しいイメージを作成します。 彼女は、特に結果を達成するための多くの方法をテストするために、分岐、つまり互いに分岐する進化の経路を作成して実験することができます。

プルリクエスト

貢献行為 -- 変更または (おそらく) 改善をコミットまたはマージするよう要求する行為 上流または他の人のリポジトリへ -- 聞いたことがあるかもしれないプロセスはプルと呼ばれます リクエスト。 これはシステム全体の中で最も重要な社会プロセスです。 これは、コントリビュータが別のリポジトリの所有者 (通常はプロジェクトのメンテナ) に次のことを依頼する手段です。 彼女が行った変更を評価し、それらを受け入れて自分のリポジトリにマージするか、自分の変更として拒否するかを選択します。 ぴったりだと思います。

こちらもお読みください: GitHub ラーニング ラボで GitHub の使い方を学びましょう

GitHub がプル リクエストを指すのに「PR」という略語を使用しているのは偶然ではないかもしれません (私たちジャーナリストはすぐにそれが「プレス リリース」を意味すると思います)。 社会的エチケットは、プル リクエストをコミュニティに導入するための適切な方法、特にプル リクエストをより魅力的なものにするために形成されてきました。 LinkedIn での連絡リクエスト. ユーザーは、自分たちが行おうとしている変更の意図について、よりフレンドリーに、より説得力を持って、もっと――造語なら――「オープン」になるようアドバイスされている。 これは、人々が普通の自動化でも同様に問題ないと考えるのではなく、オープンソース プロセスの人的要素を維持するための取り組みです。

(画像:GitHub株式会社)

「プル リクエストは、コード ベースに変更を組み込む必要があるときはいつでも、使用するワークフローで発生する可能性があります。」 GitHub トレーナーの Eric Hollenberry 氏はこう説明しました (上の写真右) 2016 年の社内カンファレンス中に、プル リクエストの存在を知らなかった参加者と GitHub メンバーに対して。 「プルリクエストは、定義上、変更に関する会話です。 ワークフロー内で使用する任意の時点でその会話を作成すると、最終的に変更がマージされます。」

ドッカー要因

コンテナ化の導入により、広く多様な貢献者の集まりを活性化する GitHub の力はクリティカルマスに達しました。 Docker によるコンテナの標準化以前は、コードをオンラインで共有する主な手段は、TAR や ZIP などの一般的な圧縮形式を使用することでした。 自動化されたスクリプトがいたるところにありました ステージングとの間でコントリビューションを取得および配置するため。 しかし、「どこでも」というのは巡回して管理するのが難しい場所です。 一部の SourceForge ユーザーは、それぞれの開発環境 (IDE) にプラグインを採用しました。 エクリプスなど. そして、それらのプラグインはやがて標準化されることになりますが、それは IDE に関してのみでした。

ファイル形式としては、Docker のコンテナは特に目新しいものでも新しいものでもありません。 これは、UNZIP ユーティリティが理解できるほど標準に近い ZIP 圧縮形式 (Lempel-Ziv に基づく) を使用します。 しかし、非常に革新的だったのはそのコンテナの中身であり、特に、 Dockerfile. これは、コンテナ内でソフトウェアを作成してデプロイする方法についての指示が記載された一種のマニフェストです。 これらの命令は、Docker 独自の Compose ユーティリティによって自動的に実行される可能性があり、取得方法に関する指示が含まれています。 ソフトウェアが依存する他のすべてのコンポーネントを、コンテナに含めることなく解凍してデプロイします。 パッケージ。 これらの命令にはリポジトリが含まれており、Docker Inc. 独自の命令は Docker Hub と呼ばれています。

こちらもお読みください: Docker とは何ですか? なぜこれほど人気が​​あるのでしょうか?

Dockerfile GitHub や Git に基づくその他のオンライン リポジトリ システムの自動化プロセスにおける大きなギャップを埋めました。 彼らが独自に考案したスクリプト (または、皮肉なことに、お互いに共有したスクリプト) に依存する代わりに、 ソフトウェアのステージングと展開は、SourceForge ユーザーが行う必要があったように、誰もが自由に実行できる手段を採用していました。 採用する。 これにより、プル リクエストを通じて取得されたソフトウェアは、他のプル リクエストを含む他のソフトウェアを中断しない独立したコンテキストで使用可能かつテスト可能になりました。

オープンソース プロジェクトの管理者が最終的に利用できるようになったのは、評価および承認できる手段でした。 他の人の作業を実際にプロセスについて考えることなく、上流で作業をコミットするプロセスを整理します。 多くの。

ビジネスケース

オープンソース

  • GitHub と GitLab: どちらのプログラムがあなたに適していますか?
  • 初心者に最適な Linux ディストリビューション
  • Feren OS は使いやすいだけでなく魅力的な Linux ディストリビューションです
  • Linux マシンに新しいユーザーを追加する方法

それでは、自由な個人間でソフトウェアを自由に共有するこのすべてを自動化する行為の中で、年間 2 億ドルの収益がどこに含まれるのでしょうか? GitHub が認識したのは、この場合はかなり意図的にですが、広範なオープンソースを統合するためにまったく同じメカニズムが使用されていたということでした。 共通プロジェクトのためのコミュニティは、民間企業が独自のソフトウェア、オープンソース、または ない。 実際、GitHub Enterprise は、オープンソース コミュニティのインフラストラクチャを、 オープンソース スタイルで協力しますが、必ずしもオープンソースを達成することを目的とするわけではありません。 ライセンス。

ここで、デプロイメント プラットフォームが産業になりました。 プライベート リポジトリは、企業開発者にとってのクラウド ベースの配布センターになりつつあり、企業はこれを利用するためにサブスクリプション料金を支払うことを厭いません。

こちらもお読みください: Docker はビジネス プランに悩まされています

そう、ここはオープンソース プロジェクトの場所です マイクロソフトの重要な利益の中心地の一つに直接食い込む. 長年にわたり、コラボレーションとバージョン管理は、Microsoft が Visual Studio Team Foundation Server に対して、そしてその後 Visual Studio Team Services に対してプレミアム料金を請求することを正当化する要素でした。 大昔の CVS と同様に、Visual Studio のネイティブ バージョン管理システムは一元化されていますが、 2013 年に分散型代替手段として git を採用しました。. それでも、VS は、コードの評価とコミットメントのための、洗練された非常にグラフィカルな管理システムを提供してきました。

redux を採用して拡張しますか?

Microsoft による GitHub の買収は確かに、少なくとも次のような点に似ています。 「受け入れて拡張する」経営方針 そう遠くない過去のこと。 10年半前、このような買収を誇った見出しが ZDNet または ベータニュース (私の昔のたまり場)何十人もの読者が「陰謀だ!」と叫ぶだろう。

今日でも、いくつかの叫び声が聞こえますが、あなたはそれらを追い詰めなければなりません。 「これを読んだとき、素晴らしいと思いました。今度は全員のダウンロードを追跡することになります。」 あるRedditユーザーはこう書いた. 「今後、彼らは全員のダウンロード情報を追跡し、宣伝し、販売することになると思います。」

こちらもお読みください: GitHub: EU 著作権法の変更により、オープンソースが頓挫する可能性がある

しかし、そのコメントは他のいくつかのコメントの下に埋もれており、その多くは無関心を認めており、そのうちのいくつかはマイクロソフトの動きを完全に支持していた。 同社はすでに Linux と Kubernetes の両方に対する主要な貢献者となっており、また、 オープンソースの貢献者との関係は GitHub によってより親密になりましたが、Microsoft も同様に彼らの一員です。 Red Hatとして生きています。

「GitHubを買収したということは、MicrosoftがGitHub上の7000万以上のオープンソースプロジェクトを所有しようとする邪悪な陰謀に関与したことを意味するものではない」 Linux Foundation 事務局長 Jim Zemlin はこう書いています。 昨年の6月。 「GitHub 上の重要なプロジェクトのほとんどは、知的財産の所有権に対処するオープンソース ライセンスに基づいてライセンスされています。 商標およびその他の知的財産資産は、多くの場合、Linux Foundation などの非営利団体によって所有されています。 そして、はっきり言っておきますが、開発者の心は買うものではなく、稼ぐものなのです。」

アイデアを守る

GitHub リポジトリに信頼されているプロジェクトに関するオープンソース ライセンスは、すでにプロジェクトの所有権を主張する組織やその他の個人エンティティからプロジェクトを保護しています。 2006 年に Google が YouTube を買収したのと同じように、YouTube の所有権は移転されませんでした。 ポッサム・チェイス・リスのビデオ、Microsoft による GitHub の監督は、GitHub の法的地位を変えることはない ホストするプロジェクト。

こちらもお読みください: GitHub: チートシート - TechRepublic

しかし、時間が経つにつれてさらに精査する価値があるのは、この取引がどのようにして、 トップレベルの産業としてのオープンソース デリバリー パイプラインは、オープンソースの性格を変えるでしょう 動き。 それがかつて真のカウンターカルチャーだったとしても、今は間違いなくそうではありません。 GitHub の収益性は、コード共有の人気が直接の原因ではないかもしれませんが、オープンソースが生み出した自動化されたパイプライン化されたサプライ チェーンと確かに結びついています。 そのモデルがオープンソース支持者が主張するほど本当に影響力があるのであれば、Microsoft が何らかの形でモデルを変更しても、長期的には目立った影響を与えるはずはありません。

2018 年のトップ オープンソース ルーキー、プロジェクト

さらに詳しく -- CBS インタラクティブ ネットワークより

  • Microsoft による GitHub 買収がオープンソース ソフトウェア開発にとって何を意味するか スティーブン・J. ヴォーン・ニコルズ、Linux とオープンソース
  • GitHub: EU 著作権法の変更により、オープンソースの配布が妨げられる可能性がある スコット M. フルトン三世、オープンソース
  • Microsoft の「GitHub の将来の CEO」が Atom について発言、GitHub の独立性維持など Mary Jo Foley著、All About Microsoft
  • Linux Foundation: Microsoft の GitHub 買収はオープンソースにとって勝利 エンタープライズ ソフトウェア、Liam Tung 著

他の場所

  • Microsoftによる保留中のGitHub乗っ取りを警戒するオープンソース開発者、「プランB」を検討 スコット M. フルトン三世、ニュースタック
  • Microsoft は Windows 開発をより適切に管理するためにスケーラブルな Git をどのように構築したか ジョーブ・ジャクソン著『ニュー・スタック』
  • GitHub: アカウントのセットアップと構成 -- Scott Chacon と Ben Straub による『Pro Git』の第 6.1 章、Apress 発行だがオンラインで自由に公開

関連記事

  • GitHub に関する Microsoft の最大の課題: 過去の克服
  • GitHub: 依存関係スキャンで 400 万のセキュリティが検出されました
  • GitHubは、バグにより一部の平文パスワードが公開されたと発表