- 2019年半ばの転職活動中、Google GoteamとSourcegraphのどちらを選ぶか迷っていた
- Sourcegraphを選んだ理由は、あらゆるものを公開の場で構築できる文化があったからだった
- すべてのドキュメントはデフォルトで公開され、技術および製品のRFC、PR/FAQなどが公開Google Driveフォルダに保存されていた
- すべての製品実装は公開GitHubリポジトリで行われていた
- 現在、
sourcegraph/sourcegraph リポジトリは非公開化された
- これはSourcegraphの魅力的な文化を壊す決定だった
- Sourcegraphは
sourcegraph/sourcegraph-public-snapshot という公開スナップショットを残している
参照の維持
- Sourcegraphで勤務していた間、エンジニアリングブログに多くの記事を書いた
- 多くの記事では、関連する公開コードへのリンクを参照として使っていた
- 今ではそれらのリンクがすべて壊れてしまった
- 「クールなURIは変わらない」という言葉がある
- リンクが突然切れないよう、できる限り情報を保存しようと努めている
sourcegraph/sourcegraph を efritz/sourcegraph にフォークした
- フォークはプルリクエストを継承せず、ブランチで直接参照されていないコミットは見えない
- GitHubのドキュメントによれば、公開リポジトリが非公開化されてもフォークは存続する
- ただし元のリポジトリが非公開化されると、
main ブランチ以外のコミットは消える可能性がある
関連コミットのスクレイピング
- すべてのコミットを見つけるためにGoプログラムを実行した
- このプログラムは2,645件のプルリクエストのメタデータファイルを生成した
jq を使ってJSONペイロードを読み、データを抽出した
pr_ids.txt、commits.txt、replace_pairs.txt ファイルを生成した
- 各プルリクエストの未マージコミットを列挙するため、2本目のプログラムを実行した
- このプログラムは
commits.txt ファイルにコミットを追加した
新しいリポジトリネットワークへコミットを取り込む
- 各関連SHAを含むブランチを作成し、フォークに取り込んだ
- Bashスクリプトを使ってgit操作を順次実行した
参照の書き換え
- これで各参照をフォーク内の対象へリンクできるようになった
xargs を使って自動化プロセスを実装した
- 直接のコミット参照はフォークへ書き換え、プルリクエスト参照はマージコミットへ書き換えた
GN⁺の要約
- Sourcegraphの非公開化はオープンソース文化に大きな影響を与えた
- エンジニアリングブログ内の多くの参照リンクが壊れ、それを保存するために大きな努力が必要だった
- GitHubのフォークとスクリプトを使って参照を書き換え、コミットを保全した
- この記事は、オープンソースプロジェクトの持続可能性と参照リンクの重要性を強調している
1件のコメント
Hacker Newsの意見
Sourcegraph CEOの意見:
別のユーザーの意見:
また別のユーザーの意見:
別のユーザーの意見:
また別のユーザーの意見:
また別のユーザーの意見:
別のユーザーの意見:
別のユーザーの意見:
また別のユーザーの意見:
別のユーザーの意見: