3 điểm bởi GN⁺ 2025-12-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Mô tả cụ thể quá trình và kết quả chuyển các dự án cá nhân và website từ GitHub sang Codeberg
  • Dùng tính năng “migrate from GitHub” của Forgejo để chuyển đầy đủ kho lưu trữ, issue, PR, wiki và release
  • Thực hiện đổi hướng liên kết và xử lý stub cho kho GitHub bằng script tự động để hiển thị rõ việc đã chuyển đi
  • Trong chuyển CI/CD, tận dụng Forgejo Actions của Codeberg và xây dựng workflow gọn nhẹ phù hợp với các ràng buộc của môi trường
  • Website được chuyển bằng git-pages và Grebedoc mà không bị gián đoạn, toàn bộ quá trình migration hoàn tất trong cuối tuần

Tổng quan migration

  • Chuyển website đang host trên GitHub Pages và 45 kho lưu trữ sang Codeberg
    • Không chỉ là vài cú nhấp chuột mà còn cần nhiều bước làm thủ công
    • Toàn bộ quá trình được hoàn tất trong cuối tuần và diễn ra suôn sẻ, không gây bất tiện
  • Mục đích là cho thấy các lập trình viên khác cũng có thể chuyển đi dễ dàng

Bước 1: Chuyển kho lưu trữ

  • Codeberg dựa trên Forgejo và cung cấp tính năng “migrate from GitHub”
    • Có thể tạo Personal Access Token (PAT) trên GitHub để mang cả metadata như issue sang cùng
    • Do rate limit của GitHub API, nếu nhập nhiều kho cùng lúc thì có thể bị lỗi
  • Issue, PR, wiki và release được chuyển hoàn chỉnh nên không còn cần tham chiếu GitHub

Bước 2: Đổi hướng liên kết

  • Chuyển hàng loạt các liên kết GitHub trong kho cục bộ sang địa chỉ Codeberg
    • Dùng lệnh sedfind để tự động thay thế ở mức văn bản
  • URL git remote của từng kho cũng được đổi sang Codeberg rồi push lên tất cả các kho

Bước 3: Xử lý stub cho kho GitHub

  • Thêm README thông báo đã chuyển vào các kho GitHub, đồng thời sửa phần mô tả và liên kết trang chủ sang Codeberg
    • Viết script tự động để áp dụng hàng loạt cho nhiều kho
    • Dùng lệnh gh repo archive để chuyển kho sang trạng thái lưu trữ

Bước 4: Chuyển CI/CD

  • Tài liệu CI của Codeberg nhấn mạnh nguyên tắc giảm thiểu tiêu thụ năng lượng
    • Vì vậy chỉ giữ CI cho những dự án thực sự cần thiết như website, build tài liệu, v.v.
  • Codeberg cung cấp hai lựa chọn CI là WoodpeckerForgejo Actions
    • Tác giả chọn Forgejo Actions vì tương tự GitHub Actions
  • Những khác biệt chính
    • Phần lớn Actions vẫn hoạt động nguyên trạng
    • Chỉ có runner dành cho Linux, không có macOS hay Windows
    • Phần mềm cài sẵn ít hơn và tài nguyên bị giới hạn hơn
    • Dùng lazy runners có thể giúp phân tán tải và vận hành thân thiện hơn với môi trường
  • Để cải thiện hiệu năng CI, tác giả từng dùng Docker image cài sẵn LaTeX, nhưng do vấn đề phiên bản nên quay lại image Ubuntu mặc định

Bước 5: Host lại website

  • Tác giả định chuyển site đang chạy trên GitHub Pages sang Codeberg Pages, nhưng tính năng này hiện ở chế độ bảo trì
    • Việc cập nhật đang bị trì hoãn vì độ phức tạp và vấn đề hiệu năng
  • Thay vào đó, tác giả tìm thấy và sử dụng git-pages cùng Grebedoc
    • Hỗ trợ upload trước khi đổi DNS, cho phép chuyển đổi không gián đoạn
    • Hỗ trợ redirect phía máy chủcustom header
    • Việc chuyển hoàn tất mà vẫn giữ nguyên liên kết cũ (eldred.fr/fortISSimO)
  • Codeberg dự kiến trong tương lai sẽ chuyển dần sang git-pages
  • Tác giả hài lòng hơn so với GitHub Pages nên đã ủng hộ Patreon cho nhà phát triển git-pages

Thời gian thực hiện

  • Chuyển kho lưu trữ (bước 1~3): nửa ngày
  • Chuyển CI (bước 4): nửa ngày
  • Chuyển website (bước 5): mất vài ngày, bao gồm cả xử lý technical debt
  • Nhìn chung hoàn tất trong cuối tuần, công việc đơn giản hơn dự kiến

Sau migration

  • Website hoạt động bình thường, chỉ có nhánh master trên GitHub bị thu gọn
    • Các permalink vẫn tiếp tục hoạt động
  • Việc xóa kho GitHub hiện vẫn được hoãn lại vì không có redirect
  • Tài khoản GitHub vẫn được giữ để đóng góp cho các dự án khác
  • Khi chuyển sang Codeberg, số lượng contributor có thể giảm, nhưng một số người dùng đã tạo tài khoản Codeberg và tiếp tục đóng góp

Lời cảm ơn

  • Catherine ‘whitequark’: vận hành git-pages và Grebedoc
  • Đội ngũ SERVFAIL network: cung cấp DNS
  • Những người đóng góp cho Codeberg và Forgejo: tạo nền tảng cho quá trình migration

1 bình luận

 
GN⁺ 2025-12-02
Ý kiến trên Hacker News
  • Điều nổi bật trong câu chuyện di chuyển này không phải là khía cạnh kỹ thuật, mà là việc ‘feature parity’ thực ra không phải rào cản lớn nhất
    Codeberg đủ dùng cho quy trình làm việc hằng ngày, nhưng thiếu hiệu ứng mạng lưới và quán tính mà GitHub đã tích lũy

    • Các dự án như Tangled.org đang cố giải quyết một phần vấn đề này
      Dựa trên các giao thức như Bluesky, nó được thiết kế để danh tính và tính kết nối vẫn được giữ nguyên dù Git được host ở đâu
    • Bất tiện lớn nhất tôi gặp ở Codeberg là tính năng tìm kiếm issue còn yếu
      Rất khó tìm lại một issue mà tôi chắc chắn đã từng thấy trước đó. Hiệu năng gần đây đã ổn hơn, nhưng nếu là dự án có hàng trăm issue thì nên thử di chuyển trước
    • GitHub có lượng tài liệu và ví dụ rất lớn, nên người mới tham gia cũng có thể nhanh chóng bắt nhịp
      Những thứ như CI/CD không nhất thiết cả nhóm đều phải biết, chỉ cần một người nắm rõ là đủ
  • Codeberg là một fork của Gitea, còn Gitea là fork của Gogs
    Cả hai fork này đều bắt đầu vì lý do triết lý hơn là lý do kỹ thuật, và Joe Chen, người tạo ra Gogs, có công rất lớn

    • Trên thực tế, Codeberg là một website dựa trên Forgejo
      Gitea bị fork vì một nhà phát triển độc chiếm quyền với kho lưu trữ, còn Forgejo là fork được tạo ra để lấy lại quyền kiểm soát thương hiệu của Gitea
    • Chỉ là đùa thôi, nhưng cũng có người nói rằng một ngày nào đó cộng đồng Codeberg có thể lại chia rẽ vì khác biệt hệ tư tưởng nhỏ nhặt
  • Tôi tò mò không biết có ai đã dùng Codeberg cùng với F-Droid chưa
    Muốn biết liệu nó có thể tự động phát hiện bản phát hành như GitHub không

    • Không phải F-Droid, nhưng ngày càng có nhiều dự án bổ sung hỗ trợ Codeberg
      Có vẻ giờ đã đạt tới hiệu ứng ngưỡng (threshold effect)
  • Trong vài ngày gần đây tôi thấy nhiều dự án rời khỏi GitHub
    Không rõ có sự kiện hay xu hướng gì đang diễn ra không

    • Nguyên nhân có thể là vấn đề về độ sẵn sàng của GitHub, việc Microsoft ép tích hợp AI, và chuyện cải tiến tính năng bị chậm lại vì tập trung chuyển sang Azure
    • Thông báo di chuyển của Zig là tài liệu tham khảo rất tốt
    • Có vẻ GitHub đang trải qua hiện tượng trust thermocline
      Sự bất mãn trong cộng đồng mã nguồn mở đã tích tụ và dường như chạm ngưỡng
      Tranh cãi về AI và quảng cáo trên toàn bộ hệ sinh thái Microsoft, cùng với việc Windows 10 kết thúc hỗ trợ, có vẻ cũng ảnh hưởng
      Khái niệm liên quan được nêu ra lần đầu trong chuỗi Twitter này
    • Cá nhân tôi đã quá mệt với chuyện GitHub lạm dụng AI
      Tôi thấy thời còn chạy trên Rails còn tốt hơn
    • Trông nó giống một kiểu hiện tượng Summer of the Shark
      Có thể chỉ là hiện tượng nhất thời bị chú ý quá mức so với thực tế
  • Tôi muốn biết trong các lựa chọn thay thế GitHub, đâu là thứ phù hợp cho nhóm nhỏ hoặc lập trình viên cá nhân
    Codeberg có vẻ tập trung vào FOSS nên không hợp lắm cho mục đích thương mại

    • Có thể tự host Forgejo, nền tảng đứng sau Codeberg
      GitLab có nhiều tính năng nhưng rất nặng để vận hành
      Ngoài ra còn có nhiều forge FOSS khác như Gitea, Gogs, Phorge
    • Cốt lõi của GitHub không phải công nghệ mà là mạng xã hội
    • Tôi thích sourcehut hơn
      Nó không cố sao chép UI GitHub, và tôi thích giao diện tức thời nhanh như làm việc cục bộ
    • Nếu không có lý do đặc biệt thì tiếp tục dùng GitHub vẫn là lựa chọn hợp lý
      Không nhất thiết phải chuyển chỉ vì “ghét Microsoft”
    • Với nhu cầu cá nhân, tôi từng tìm hosting riêng tư giá rẻ kiểu Migadu nhưng không thấy lựa chọn nào phù hợp
      Cuối cùng tôi đưa dự án mới lên Codeberg, còn một phần vẫn duy trì private mirror trên GCP
      Tôi cũng đã đăng chuỗi Ask HN về chuyện này nhưng không có phản hồi
  • Xem bài blog trên eldred.fr, lý do của tác giả là hợp lý, nhưng từ góc nhìn người dùng thì hầu như không có cải thiện cảm nhận được
    Sau khi dùng thử Codeberg thì

    • Màn hình xác minh động kiểu “đang kiểm tra bạn có phải bot không” hiện lên khá thường xuyên
    • Nút đăng nhập GitHub bị giấu nhỏ ở một góc
    • UI gần như giống hệt GitHub, và README nằm ở phía dưới nên khá bất tiện
      Ví dụ: https://codeberg.org/dnkl/foot
      Có lẽ để README làm trang chính sẽ tốt hơn
    • Cuối cùng thì chiến lược sao chép không tạo khác biệt không mấy hấp dẫn
    • Phần “xác minh bot” dùng giải pháp mở tên là Anubis
      Bản trả phí còn có thể tùy biến hình ảnh
    • Việc đi theo GitHub gần như nguyên bản là lựa chọn nhằm giữ sự quen thuộc của người dùng
      Nếu làm khác quá thì ngược lại còn dễ bị phản ứng
      Việc giấu nút đăng nhập GitHub là quyết định mang tính cộng đồng, và nếu muốn thì có thể đề xuất bằng PR
    • Những vấn đề như vậy đôi khi lại là dấu hiệu cho thấy các vấn đề sâu hơn của dịch vụ
    • Tôi chuyển sang Codeberg vì đã mệt mỏi với tranh cãi quanh việc dùng dữ liệu cho huấn luyện AI của GitHub và sự tập trung hóa
      Mục tiêu là tìm một giải pháp thay thế có đạo đức nhưng vẫn có bộ tính năng tương đương GitHub
  • Nếu việc GitHub quét cho AI không phải vấn đề, tôi muốn biết liệu có lý do phi chính trị nào để chuyển đi không

    • Gần đây GitHub có suy giảm độ sẵn sàng, nhưng mức độ bất tiện đến đâu còn tùy mỗi người đánh giá
  • Tôi muốn biết Codeberg có cung cấp CI runner miễn phí không
    GitHub được cho là chi hơn 100 triệu USD mỗi năm cho CI

    • Theo tài liệu của Codeberg (docs.codeberg.org/ci), dung lượng bị giới hạn và phải gửi yêu cầu rồi chờ phê duyệt
    • Cá nhân tôi đang dùng instance Woodpecker cùng với Codeberg và thấy hoạt động tốt
    • Codeberg nhấn mạnh chi phí năng lượng của CI/CD
      Nhưng việc nhắc đến chi phí môi trường có thể lại khiến người dùng ngại tham gia
      Với dân kỹ thuật, tiếp cận như một bài toán tối ưu hiệu năng có lẽ hiệu quả hơn
    • Tôi nghĩ chính hạ tầng CI kiểu này mới là hào nước bảo vệ (moat) của GitHub
  • Tôi từng thất vọng khi thấy Codeberg thổi phồng một sự cố spam trước đây thành “chiến dịch thù ghét cực hữu” rồi tự ca ngợi mình
    Chỉ cần thừa nhận là đã thất bại trong khâu phòng ngừa là đủ, nhưng họ lại đóng khung nó theo hướng chính trị
    Liên kết liên quan: issue, thảo luận HN, bài blog

    • Thái độ như vậy trông giống tự mỹ miều hóa quá mức
    • Nhưng nếu đó là spam dùng từ ngữ phân biệt chủng tộc, thì tôi cho rằng phản ứng của Codeberg là chính đáng
      Nếu vì vậy mà bạn mất đi sự tôn trọng, thì vấn đề không nằm ở dự án mà ở góc nhìn đó
  • Tôi cũng từng chuyển kho lưu trữ sang Codeberg rồi quay lại GitHub
    Tôi không thích nhiều tính năng của GitHub, nhưng Codeberg thiếu sức hút để kéo cộng tác
    Với một người bảo trì đơn lẻ, độ hiển thị và hiệu ứng mạng lưới là cực kỳ quan trọng