4 điểm bởi GN⁺ 2025-05-14 | 1 bình luận | Chia sẻ qua WhatsApp
  • Firefox gần đây đã chuyển kho lưu trữ chính từ Mercurial sang GitHub
  • Vẫn tiếp tục sử dụng Bugzilla để theo dõi lỗi, Phabricator để review mã, Taskcluster cho CI
  • Hiện tại GitHub là kho trung tâm, nhưng máy chủ Mercurial vẫn được duy trì bằng cách đồng bộ từ GitHub, và các hệ thống tự động hóa hiện có cũng sẽ dần được chuyển sang Git
  • Kho try dùng cho kiểm thử CI vẫn dựa trên Mercurial, nhưng đang dần được ẩn sau lớp trừu tượng hóa và dự kiến sẽ được chuyển sang Git trong tương lai
  • Khi có thể dùng Git làm mặc định, các cộng tác viên mới không còn cần học riêng Mercurial mà chỉ cần nắm Git
    • Trước đây phải cài tiện ích mở rộng git cinnabar, nhưng giờ chỉ cần dùng Git mặc định là đủ
  • mozilla-central của Mercurial hiện được đổi thành nhánh main trong Git, còn nhánh autoland vẫn giữ nguyên là autoland trong Git
  • Workflow dựa trên PR của GitHub hiện chưa được áp dụng và không nằm trong thay đổi lần này. Vẫn để ngỏ khả năng trong tương lai nhưng chưa có kế hoạch chính thức
  • Mozilla có thể giảm gánh nặng vận hành hạ tầng VCS tự quản khi chuyển sang GitHub
  • Mục tiêu chính là giảm chi phí và độ phức tạp khi phải tự cung cấp hiệu năng, độ ổn định và tính sẵn sàng cần thiết cho một dự án quy mô lớn

Lịch sử chi tiết và phần giải thích do Glandium, tác giả của git-cinnabar, viết: How I (kind of) killed Mercurial at Mozilla

> Mozilla khép lại thời kỳ Mercurial khi chuyển kho mã Firefox sang GitHub

  • Mozilla đã quyết định chuyển VCS trung tâm cho việc phát triển Firefox từ Mercurial sang Git và chọn GitHub làm kho lưu trữ chính thức
  • Nền tảng của quyết định này là quá trình phát triển và phổ biến lâu dài của công cụ mở rộng git-cinnabar, cho phép người dùng Git truy cập kho Mercurial một cách trơn tru
  • Các vấn đề về cấu trúc nhánh của Mercurial, quy mô kho ngày càng lớn, cùng gánh nặng vận hành máy chủ riêng đã cộng hưởng, khiến khó khăn trong việc duy trì hạ tầng tự quản ngày càng chồng chất
  • Dù việc chọn GitHub cũng gây tranh cãi, đây vẫn là lựa chọn gần như tất yếu xét về tính thân thiện với cộng tác viên và tính thực dụng, khi hàng nghìn repository nội bộ của Mozilla đã tồn tại trên GitHub
  • git-cinnabar ban đầu là một dự án side project cá nhân xuất phát từ nhu cầu nội bộ của Mozilla, nhưng nhiều khả năng sẽ tiếp tục được duy trì như một công cụ quan trọng trong giai đoạn chuyển đổi
    > “Tôi không phải người châm lửa, nhưng đúng là tôi đã đổ thêm dầu vào ngọn lửa đó.”

1 bình luận

 
GN⁺ 2025-05-14
Ý kiến trên Hacker News
  • Tôi làm ở Mozilla nhưng không liên quan đến công cụ VCS hay lần chuyển đổi này, chỉ muốn cung cấp thêm bối cảnh. Kho mã chính thức của Firefox gần đây đã được chuyển từ mercurial trên hg.mozilla.org sang GitHub. Việc này chỉ ảnh hưởng đến mã nguồn; theo dõi issue vẫn tiếp tục dùng bugzilla, review mã và landing vẫn dùng phabricator, còn CI vẫn dùng hệ thống taskcluster. Trong ngắn hạn, máy chủ mercurial vẫn được đồng bộ từ GitHub để các hệ thống tự động hóa có thể dần chuyển sang backend git. Mercurial vẫn còn được dùng cho kho “try” (nơi chạy CI cho các bản vá WIP), nhưng đang dần được ẩn sau một lớp trừu tượng hóa và cũng sẽ được di chuyển sau. Với những người quen kho cũ, “mozilla-central” được ánh xạ sang tên nhánh chuẩn của git là “main”, còn “autoland” được ánh xạ sang nhánh “autoland”. Trước đây vẫn có thể đóng góp cho Firefox chỉ bằng git, nhưng cần cài thêm tiện ích git cinnabar. Việc phải chọn giữa học hg hoặc dùng git+khoản mở rộng là một rào cản gia nhập với người đóng góp mới, và đa số biết git nhưng không biết mercurial. Giờ thì không còn phải băn khoăn nữa. Tác giả của git cinnabar là glandium đã viết một bài blog giải thích rất chi tiết bối cảnh và lý do vào thời điểm công bố việc di chuyển. Trong ngắn hạn, với người đóng góp thì gần như không có gì thay đổi. Dùng git thông thường trở thành quy trình mặc định, ngoài ra không đổi gì cả. Sau này có thể sẽ hỗ trợ workflow dựa trên GitHub PR, nhưng điều đó không nằm trong thay đổi lần này. Ở backend, khi việc di chuyển hoàn tất, Mozilla có thể giảm thời gian và công sức phải bỏ ra để vận hành hạ tầng VCS riêng, và việc đáp ứng hiệu năng cũng như độ sẵn sàng mà một dự án lớn như vậy yêu cầu là thử thách không nhỏ
    • Cá nhân tôi cho rằng quyết định chuyển sang một nền tảng đóng do Microsoft sở hữu là không đúng đắn
    • Tôi thắc mắc liệu có kế hoạch thay thế Phabricator hay không, vì nó đã bị ngừng phát triển; muốn hỏi xem họ có cân nhắc Phorge chẳng hạn không
    • Cảm ơn vì bối cảnh bổ sung. Tôi tò mò những vấn đề về quy mô chính mà họ gặp phải với giải pháp tự host là gì
    • Tôi muốn hỏi liệu GeckoView và Mozilla Android Components cũng sẽ được chuyển sang GitHub hay không
    • Tôi thấy đáng tiếc khi chỉ có mã được chuyển sang GitHub còn theo dõi issue vẫn ở lại bugzilla. Một lợi thế lớn của GitHub là rất nhiều người đã có sẵn tài khoản và quen với nền tảng này, nhưng nếu issue chỉ nhận trên bugzilla thì việc báo lỗi tự nó lại thành rào cản. Tôi từng dùng bugzilla và Firefox để báo một lỗi accessibility trên macOS; việc phải tìm trang, đăng ký rồi học cách dùng khá bất tiện. Cuối cùng lỗi đã được xác nhận nhưng không được sửa
  • Xét từ góc độ chiến lược của Mozilla, đây có vẻ là quyết định có thể hiểu được. Doanh thu từ Google giảm và có thể họ còn phải cắt giảm nhân sự, nhưng nếu muốn tiếp tục phát triển Firefox thì cần cộng đồng tham gia nhiều hơn, và GitHub là nền tảng quen thuộc nhất với lập trình viên nên sẽ hạ thấp rào cản gia nhập. Có thể không hài lòng vì họ không chọn GitLab hay giải pháp khác thay GitHub, nhưng việc Firefox tiếp tục được phát triển và thị trường vẫn có một engine cạnh tranh là điều có lợi cho tất cả mọi người
    • Tôi không nghĩ những người từ bỏ việc đóng góp chỉ vì không dùng được GitHub phần lớn sẽ là người đóng góp đặc biệt có giá trị. Có thể có ngoại lệ, nhưng tôi chưa thấy trong các dự án mã nguồn mở không tầm thường mà tôi từng trực tiếp tham gia. Thậm chí tôi còn nghĩ việc rào cản hơi cao hơn một chút có thể có tác dụng tích cực là lọc bớt những người đóng góp một lần với chất lượng thấp
    • Tôi hoàn toàn từ bỏ ý định đóng góp bản vá cho Firefox vì không hiểu tổ hợp gh và phabricator hoạt động thế nào. Tôi không hiểu hai thứ đó liên kết với nhau ra sao, cũng không biết phải cập nhật branch/PR kiểu gì, nên cuối cùng bỏ cuộc ngay từ đầu
    • Theo trải nghiệm cá nhân của tôi với GitLab, vài năm trước GitLab đã thể hiện rất rõ rằng họ không mấy quan tâm đến việc host các dự án mã nguồn mở lớn, và việc hỗ trợ FOSS chỉ có thể thực hiện thông qua chương trình mã nguồn mở của họ. Quá trình này phức tạp và có thêm nhiều yêu cầu, nên Mozilla khó mà chấp nhận được. Ví dụ, để dùng GitLab thì dự án mã nguồn mở đó phải từ bỏ quyền chỉnh sửa/sao chép phiên bản GitLab FOSS, và đây là vấn đề nghiêm trọng với mọi dự án. Có thể chỉ là luật sư thêm một điều khoản theo thói quen, nhưng chỉ riêng điều này cũng đủ chứng minh đó là vấn đề lớn. Vì vậy GitLab bị loại. Vẫn còn Codeberg và những lựa chọn khác, nhưng nếu muốn hạ thấp rào cản cho người đóng góp mới thì GitHub, nơi đa số đã có tài khoản, là phù hợp
    • Dù việc chuyển sang GitHub là một thay đổi kỹ thuật, cốt lõi thật sự là chuyển từ mercurial sang git, và tôi đoán các cân nhắc xã hội cũng đã ảnh hưởng đến quyết định kỹ thuật này
    • Tôi nghĩ những người không vượt qua nổi rào cản gia nhập thì thậm chí cũng không nên báo lỗi, chứ đừng nói đến sửa mã
  • Thật tốt khi việc đóng góp cho Firefox đã giải quyết được một món nợ kỹ thuật lớn. Vài năm trước khi tôi thử, mercurial mất hàng giờ để clone kho, lại không có hỗ trợ git chính thức nên phải dùng hỗ trợ git không chính thức mới làm việc cho ra hồn. Tài liệu lúc đó cũng rất tệ, khiến người ta build lại mọi thứ một cách vô ích
  • Tôi tò mò vì sao họ chọn org mozilla-firefox thay vì org mozilla hiện có
    • Có lẽ vì quy tắc truy cập khác nhau, hoặc họ muốn tách khỏi org hiện có để tránh việc tự động hóa ảnh hưởng sang các nơi khác
    • Tôi cũng nghĩ đây là một câu hỏi rất hay
  • Tôi tò mò nguồn của thông tin “Firefox Moves to GitHub” là gì. Có thể chỉ là mirror thôi. Linux cũng có mirror trên GitHub. (Chỉnh sửa sau: đã thêm nguồn)
    • Tôi cũng nghĩ vậy. Thực tế workflow được cấu hình trên GitHub chỉ là đóng PR với một câu trả lời mặc định
  • Firefox Mobile (Fenix) trước đây dùng GitHub rồi mới đây đã được chuyển sang kho mercurial mozilla-central của Mozilla, và giờ thì cả bản desktop lẫn mobile đều ở trên GitHub, còn issue vẫn ở lại Bugzilla. Điều này cho phép tận dụng khả năng tìm kiếm tốt, duyệt mã nguồn và sự quen thuộc của git trên GitHub. Với tư cách là cựu cộng tác viên Firefox và Thunderbird, tôi dùng tìm kiếm cục bộ nhiều hơn rất nhiều so với tìm kiếm trên site mozilla-central. Khi phát triển thì tôi tìm trong IDE, nhưng việc có tìm kiếm dễ dùng ngay trên site là điều người đóng góp mới sẽ hoan nghênh
    • Ngược lại, tôi thấy searchfox là công cụ điều hướng mã tốt nhất tôi từng dùng. Nó có rất nhiều tính năng như điều hướng xuyên ngôn ngữ, blame luôn bật, v.v. và nhanh, nhẹ hơn GitHub rất nhiều. Tôi ước gì nhiều dự án khác cũng dùng được công cụ như vậy, và sẽ rất tiếc nếu nó biến mất
    • Tôi cảm thấy chất lượng duyệt mã nguồn của GitHub gần đây xuống cấp nghiêm trọng. Tải bất đồng bộ (cần js), dễ lỗi khi mạng không ổn định, tìm kiếm trong trang cũng hỏng. Đợt làm mới issue/PR gần đây tôi cũng cho là một bước lùi, và nếu dùng uBlock Origin thì không thể tìm kiếm PR
  • Tôi nghĩ đây là thay đổi tốt, nhưng tôi tò mò vì sao họ tạo org mới thay vì dùng org github.com/mozilla hiện có
    • Tôi không biết lý do chi tiết, nhưng có những trường hợp phải tách theo org ở nhiều khía cạnh; ví dụ SSO chỉ áp dụng ở cấp toàn org, nên repo Firefox có thể cần cấu hình xác thực/người dùng hoàn toàn khác với các repo chính của Mozilla
    • Mozilla có nhiều org
    • Có lẽ là do Conway’s Law
    • GitHub chỉ có cấp org hoặc repo, không có cấp nào cao hơn. Nhiều thiết lập (SSO, quyền truy cập, cấu hình chung, v.v.) được áp dụng theo org, nên tạo org mới thường là cách giải quyết gọn nhất, dù cũng khá bất tiện (nếu là GitLab thì có thể tạo namespace như Firefox và các thứ khác bên trong cùng một instance hoặc org)
  • Thật kỳ lạ khi một tổ chức như Mozilla lại dùng dịch vụ host bên ngoài như GitHub. Với dự án nhỏ một người thì tôi hiểu, nhưng bắt người đóng góp phải có tài khoản ở dịch vụ bên ngoài thì không thân thiện lắm
    • Tôi nghĩ với một dự án mã nguồn mở thì đây là điều tích cực vì nó cung cấp môi trường cởi mở, dễ đóng góp và có độ hiển thị cao cho mọi người
  • Theo tôi nhớ thì nhánh “master” chính là mozilla-central. Giờ có “main” và “autoland”, tôi không rõ chúng là gì và nhánh nào tương đương với mozilla-central trước đây
    • Tôi không phải lập trình viên Firefox, nhưng “main” là tương đương mozilla-central, còn “autoland” là nhánh đã tồn tại từ trước, nơi các commit được đẩy lên trước tiên
  • Tôi hy vọng bugzilla vẫn được giữ lại, dù chỉ ở chế độ chỉ đọc. Web là một nền tảng được chắp vá theo kiểu “ad-hoc”, nên nhiều lý do trong quá khứ chỉ còn lại trong bugzilla. Lý do vì sao những website hay trình duyệt đã biến mất trước đây lại có hành vi nhất định cũng chỉ có thể kiểm tra ở đây
    • bugzilla vẫn là trình theo dõi lỗi của Firefox. Không có kế hoạch thay đổi. (GitHub Issues không được dùng)
    • bugzilla từng rất tuyệt và đi trước thời đại. Tôi vẫn nghĩ đến giờ chưa có bug tracker tự host nào ngang tầm như vậy