3 ポイント 投稿者 GN⁺ 2025-12-02 | 1件のコメント | WhatsAppで共有
  • 個人プロジェクトとウェブサイトをGitHubからCodebergへ移行した過程と結果を具体的に説明
  • Forgejoの「migrate from GitHub」機能を使って、リポジトリ、Issue、PR、Wiki、リリースを完全に移行
  • リンク再割り当てとGitHubリポジトリのスタブ処理を自動化スクリプトで実施し、移行済みであることを明確に表示
  • CI/CDの移行ではCodebergのForgejo Actionsを活用し、環境制約に合わせて軽量化したワークフローを構成
  • ウェブサイトはgit-pagesとGrebedocを使って無停止で移行し、全体のマイグレーションを週末内に完了

マイグレーション概要

  • GitHub Pagesでホスティングしていたサイトと45のリポジトリをCodebergへ移行
    • 単純なクリック操作で終わるわけではなく、複数段階の手作業が必要だった
    • 全体のプロセスは週末の間で完了し、支障なく進められた
  • このプロセスで、他の開発者も簡単に移行できることを示すことを目的とした

1段階: リポジトリの移行

  • CodebergはForgejoベースで、「migrate from GitHub」機能を提供している
    • GitHubで**Personal Access Token(PAT)**を発行し、Issueなどのメタデータをまとめて取得可能
    • GitHub APIのrate limitのため、同時に複数のリポジトリを取り込むと失敗することがあった
  • Issue、PR、Wiki、リリースが完全に移行され、GitHub参照が不要になった

2段階: リンク再割り当て

  • ローカルリポジトリ内のGitHubリンクをCodebergのアドレスへ一括変換
    • sedfindコマンドを使ってテキストベースで自動置換
  • 各リポジトリのgit remote URLもCodebergに変更したうえで、すべてのリポジトリへプッシュ

3段階: GitHubリポジトリのスタブ処理

  • GitHubリポジトリに移行告知用READMEを追加し、説明文とホームページリンクをCodebergに修正
    • 自動化スクリプトを作成して複数リポジトリに一括適用
    • gh repo archiveコマンドでリポジトリをアーカイブ処理

4段階: CI/CDの移行

  • CodebergのCIドキュメントではエネルギー消費を最小化する原則が強調されている
    • そのためCIが本当に必要なプロジェクト(ウェブサイト、ドキュメントビルドなど)のみを残す
  • CodebergはWoodpeckerForgejo Actionsの2種類のCIを提供
    • GitHub Actionsに近いForgejo Actionsを選択
  • 主な違い
    • ほとんどのActionsはそのまま動作
    • Linux専用ランナーのみ提供され、macOS・Windowsは未提供
    • インストール済みソフトウェアが少なく、リソースが制限的
    • lazy runnersを使うことで負荷分散と省エネ実行が可能
  • CI性能向上のためLaTeX事前インストール済みのDockerイメージを使用したが、バージョン問題で標準のUbuntuイメージに戻した

5段階: ウェブサイト再ホスティング

  • GitHub Pagesで運用していたサイトをCodeberg Pagesへ移行しようとしたが、当該機能はメンテナンスモード
    • 複雑性とパフォーマンス問題により更新が遅れている
  • 代替としてgit-pagesとGrebedocを見つけて利用
    • DNS変更前のアップロード対応により無停止切り替えが可能
    • サーバー側リダイレクトカスタムヘッダに対応
    • 既存リンク(eldred.fr/fortISSimO)を維持したまま移行完了
  • Codebergは今後git-pagesへの段階的移行を計画
  • GitHub Pagesより満足度が高く、git-pages開発者のPatreon支援に参加

時間

  • リポジトリ移行(1〜3段階):半日
  • CI移行(4段階):半日
  • ウェブサイト移行(5段階):技術的負債の整理を含めて数日かかった
  • 全体として週末内に完了、想定より簡単な作業だった

マイグレーション後

  • ウェブサイトの機能に異常なし。GitHubのmasterブランチのみ残した
    • 永久リンク(permalink)は引き続き機能
  • GitHubリポジトリ削除はリダイレクト欠如のため保留
  • GitHubアカウントは他プロジェクトへの貢献のため保持
  • Codebergへ移行するとコントリビューター数が減る可能性はあるが、すでにCodebergアカウントを作成して継続的に貢献しているユーザーもいる

謝辞

  • Catherine ‘whitequark’: git-pagesおよびGrebedocの運営
  • SERVFAIL networkチーム:DNS提供
  • CodebergおよびForgejoのコントリビューター:移行基盤の提供

1件のコメント

 
GN⁺ 2025-12-02
Hacker Newsの意見
  • 今回の移行の話で目立つのは技術的な部分ではなく、feature parityが本当の障害ではないという点
    Codebergは日常的なワークフローには十分だが、GitHubが積み上げてきたネットワーク効果と慣性が足りない

    • Tangled.org のようなプロジェクトがこの問題を一部解決しようとしている
      Blueskyのようなプロトコルをベースに、Gitがどこでホスティングされていてもアイデンティティと接続性が保たれるよう設計されている
    • Codebergで私が感じた最大の不便は、Issue検索機能が弱いこと
      前に確かに見たIssueを見つけ直すのが難しい。性能は最近かなり良くなったが、数百件のIssueがあるプロジェクトならテスト移行を先に試したほうがいい
    • GitHubには膨大なドキュメントと実例があるので、新しく参加した人でも簡単に慣れられる
      CI/CDのようなものはチーム全員が理解する必要はなく、1人が詳しければ十分
  • CodebergはGiteaのフォークで、GiteaはGogsのフォーク
    どちらのフォークも技術的理由より思想的理由で始まり、Gogsを作ったJoe Chenの功績は大きい

    • 実際にはCodebergはForgejoベースのWebサイト
      Giteaは1人の開発者がリポジトリ権限を独占したことでフォークされ、ForgejoはGiteaの商標権を取り戻すために作られたフォーク
    • 冗談だが、いつかCodebergコミュニティも些細なイデオロギーの違いで分裂するかもしれないという話も出ている
  • CodebergとF-Droidを一緒に使ったことがある人がいるのか気になる
    GitHubのように自動でリリースを検出できるのか知りたい

    • F-Droidではないが、Codeberg対応を追加するプロジェクトは増えている
      いまや**臨界点(threshold effect)**に達したようだ
  • ここ数日で複数のプロジェクトがGitHubから離脱するのを見た
    何か出来事やトレンドがあるのか気になる

    • GitHubの可用性の問題、MicrosoftによるAIの強制統合、Azure移行への注力で機能改善が後回しになっていることなどが原因かもしれない
    • Zigの移行発表 が良い参考になる
    • GitHubは信頼崩壊(trust thermocline)の現象を起こしているように見える
      オープンソースコミュニティの不満が積み重なり、限界点に達したようだ
      Microsoft全体の
      AI・広告化をめぐる論争
      やWindows 10のサポート終了も影響していそうだ
      関連する概念は このTwitterスレッド で最初に提示された
    • 個人的にはGitHubのAI乱用にうんざりしている
      以前のRailsベースだった頃のほうが良かった気がする
    • これは一種のSummer of the Shark現象のようにも見える
      実際以上に注目されている一時的な現象かもしれない
  • GitHub代替の中で、小規模チームや個人開発者に向いたものがあるのか気になる
    CodebergはFOSS中心なので商用用途には向いていないように見える

    • Codebergの基盤であるForgejoは自分でホスティングできる
      GitLabは高機能だが保守が重い
      そのほかにもGitea、Gogs、PhorgeなどさまざまなFOSS forgeがある
    • GitHubの本質は技術ではなくソーシャルネットワーク
    • 私はsourcehutを好む
      GitHub UIをコピーせず、ローカルのように速い即応的なインターフェースが気に入っている
    • 特別な理由がないならGitHubを使い続けるのが合理的
      「Microsoftが嫌い」という理由だけで移る必要はない
    • 個人用にはMigaduのような低コストのプライベートホスティングを探していたが、ちょうどいいものはなかった
      結局Codebergに新しいプロジェクトを置き、一部はGCPでプライベートミラーとして維持している
      関連して Ask HNスレッド を立てたが反応はなかった
  • eldred.frのブログ記事 を見ると著者の理由はもっともだが、ユーザーの立場では体感できる改善がほとんどない
    Codebergを使ってみると

    • 「ボットではないことを確認中」というアニメーション付き検証画面が頻繁に出る
    • GitHubログインボタンが小さく隠されている
    • UIはGitHubとほぼ同じで、READMEが下のほうにあって使いにくい
      例: https://codeberg.org/dnkl/foot
      READMEをメインページにしたほうがよさそう
    • 結局、差別化のない複製戦略は魅力的ではない
    • 「ボット検証」には Anubis というオープンソリューションが使われている
      有料版では画像のカスタマイズも可能
    • GitHubをそのままなぞるのはユーザーの慣れを重視した選択
      あまりに違うものにすると、かえって反発が大きい
      GitHubログインボタンを隠したのはコミュニティ主導の判断で、望むならPRで提案することもできる
    • こうした問題はむしろサービスの根深い問題を示すサインかもしれない
    • 私はGitHubのAI学習をめぐる論争と中央集権化にうんざりしてCodebergへ移った
      GitHubと同じ機能を持ちつつ、倫理的な代替を求めていた
  • GitHubでのAIスキャンが問題でないなら、政治的でない理由で移る必要があるのか気になる

    • 最近GitHubの可用性低下はあったが、不便さの程度は人によって変わる
  • Codebergが無料CIランナーを提供しているのか気になる
    GitHubは年間1億ドル以上をCIに使っていると推定される

    • Codebergのドキュメント(docs.codeberg.org/ci)によると、容量制限があり、申請して承認を受ける必要がある
    • 個人的にはWoodpeckerインスタンスをCodebergと一緒に使っていて、うまく動いている
    • CodebergはCI/CDのエネルギーコストを強調している
      ただ、環境コストを持ち出すのは、むしろユーザー参加をためらわせるかもしれない
      技術者には性能最適化の問題として語るほうが効果的だ
    • こうしたCIインフラこそがGitHubの**参入障壁(moat)**だと思う
  • Codebergが以前、スパム事件を「極右のヘイトキャンペーン」として大げさに扱い、自画自賛していたのを見て失望した
    単に予防に失敗したと認めればよかったのに、政治的フレームで包んでいた
    関連リンク: Issue, HN議論, ブログ記事

    • こうした態度は過剰な自己美化に見える
    • ただし人種差別的な語を使ったスパムだったのなら、Codebergの対応は正当だったと思う
      そのことで敬意を失ったのなら、問題はプロジェクトではなくその見方のほうにある
  • 私も以前、Codebergにリポジトリを移したあとで再びGitHubに戻ったことがある
    GitHubのさまざまな機能が気に入っているわけではないが、Codebergには協業を引き寄せる力が足りない
    単独メンテナーとしては可視性とネットワーク効果がどうしても重要だ