2 điểm bởi GN⁺ 12 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Năm 2008, Emacs đã cân nhắc GitBazaar làm ứng viên thay thế sau CVS, và trong các bài benchmark thì Git nhanh vượt trội
  • Richard Stallman chốt chọn Bazaar vì đây là một gói GNU, và các thảo luận kỹ thuật không thể thay đổi quyết định đó
  • Trong giai đoạn 2008~2012 khi GitHub phát triển, các cộng tác viên Emacs phải học Bazaar, một công cụ họ không dùng ở nơi khác, và đến năm 2012 Canonical đã sa thải đội phát triển này
  • Năm 2013, tình trạng bảo trì trì trệ của Bazaar và lỗi nhánh ELPA đã khơi lại tranh luận, và ELPA cuối cùng được chuyển sang Git
  • Năm 2014, sau công việc chuyển đổi của Eric S. Raymond, Emacs đã di chuyển sang Git, nhưng ngay sau đó bộc lộ vấn đề các cộng tác viên cốt lõi cũng phải học Git từ đầu

Năm 2008: Git nhanh hơn nhưng Bazaar được chọn

  • Tháng 3 năm 2008, Emacs muốn chuyển từ CVS sang một công cụ quản lý phiên bản hiện đại hơn, và các ứng viên được thu hẹp còn GitBazaar
    • Git là công cụ do Linus Torvalds tạo ra cho nhân Linux
    • Bazaar là một dự án GNU do Canonical bảo trì
  • Trên emacs-devel đã diễn ra một cuộc thảo luận gồm 236 thông điệp, và nhiều nhà phát triển đã benchmark hai công cụ
    • Andreas Schwab đánh giá bzr log mất hơn 1 phút để khởi động nên “chậm đến mức hoàn toàn không dùng được”
    • David Kastrup cho rằng trong khi git log chạy gần như ngay lập tức, Bazaar lẽ ra phải trông nhanh hơn vì nó nhận tường minh thông tin về sao chép, di chuyển và đổi tên tệp
  • Ở các con số thực tế, Git áp đảo rất rõ ràng
    • git log | head -1 mất 0,012 giây, còn thao tác tương đương trên Bazaar mất 21,5 giây
    • Commit thay đổi một tệp duy nhất mất 0,08 giây với Git, và 17 giây với Bazaar
  • Stefan Monnier, người bảo trì chính khi đó, cho rằng việc Bazaar nhanh hơn hay chậm hơn Git không phải điểm cốt lõi, nhưng để Emacs chuyển sang thì nó phải “đủ nhanh”, và ít nhất bzr diff không được mất quá vài giây
  • Nhà phát triển Bazaar của Canonical là Jonathan Lange đã đề xuất một quy trình kết hợp wget, tar, bzr init-repo, bzr branch, bzr pull --remember để checkout ban đầu
    • Quy trình này dài dòng và thủ công đến mức tương phản rõ rệt với git clone

Quyết định rằng phải dùng công cụ GNU

  • Có người hỏi các bảo trì viên và người ra quyết định của Emacs rằng “cần thêm thông tin gì để thuyết phục rằng ở thời điểm hiện tại bzr không phải công cụ phù hợp”
  • Richard Stallman trả lời rằng đây không phải quyết định cho thời điểm hiện tại mà là một quyết định dài hạn, và thay vì đưa ra một quyết định tạm thời khó đảo ngược thì tốt hơn là chờ vài tháng để các nhà phát triển Bazaar cải thiện nó
  • Trong một thông điệp khác, Stallman khẳng định: “Câu hỏi này đã kết thúc và đã được quyết định. Chúng ta sẽ dùng GNU Bzr. Bởi vì nó là một gói GNU”
  • Trước vấn đề rằng các lập luận kỹ thuật đang bị xóa bỏ bởi một quyết định mang tính chính trị, Stallman trả lời rằng quy tắc các gói GNU hỗ trợ lẫn nhau giúp toàn bộ hệ thống GNU hoạt động tốt hơn
  • Với câu hỏi “vậy tại sao không biến Git thành một phần của hệ thống GNU”, ông cho rằng có thể đưa Git vào hệ thống GNU, nhưng các nhà phát triển Git khó có khả năng muốn biến Git thành một gói GNU
  • Bất chấp benchmark năm 2008, 236 thông điệp thảo luận, và cả quy trình vòng vo do nhân viên Canonical đưa ra, kết quả vẫn không thay đổi, và Emacs đã chọn Bazaar vì nó là một gói GNU

2008~2012: Git lan rộng và gánh nặng dùng Bazaar

  • Trong khi GitHub ra mắt năm 2008 và tăng trưởng nhanh chóng, các cộng tác viên Emacs phải học Bazaar, một công cụ họ không dùng ở nơi khác, để gửi patch
  • Trên emacs-devel liên tục xuất hiện các thread xử lý vấn đề của Bazaar
    • “Help me unstick my bzr, please”
    • “Can NOT bzr the emacs repos (may be bzr has a memory leak)”
  • Năm 2012, Canonical đã sa thải đội phát triển Bazaar
  • Sau đó, tình trạng bảo trì của Bazaar trở thành một gánh nặng lớn hơn nữa trong quá trình phát triển Emacs

Năm 2013: Bảo trì đình trệ và tranh luận lại về Git

  • Tháng 3 năm 2013, một năm sau khi việc phát triển Bazaar gần như dừng hẳn, John Wiegley lại hỏi liệu Emacs có thể chuyển sang Git hay không
    • Việc phát triển Bazaar trên thực tế gần như đã đình trệ
    • Các lỗi quan trọng ảnh hưởng tới phát triển Emacs, như lỗi trong kho ELPA, đã nằm nhiều năm trên bug tracker mà không được giải quyết
  • Trong cuộc thảo luận này cũng có khoảng 200 thông điệp
  • Phản ứng đầu tiên của Stallman là người bảo trì Bazaar đang sửa một số lỗi, và vì chính ông vừa yêu cầu sửa lỗi nhánh ELPA vào ngày hôm trước nên ông muốn dành cho họ một khoảng thời gian hợp lý
  • Dmitry Gutov hỏi rằng lỗi đó đã là một lỗi 1,5 năm tuổi, vậy có phải đã quá muộn rồi không
  • Stallman nói ông đang cố đánh giá liệu Bazaar có còn được bảo trì hiệu quả hay không, và cho biết ông muốn nhận được câu trả lời là “Yes”
  • Joakim Verona cho rằng cộng đồng Bazaar rất nhiệt tình hỗ trợ, nhưng có nhiều lỗi và bản vá đã được biết rõ, một số do chính nhà phát triển Emacs cung cấp, vậy mà nhiều năm vẫn chưa được đưa upstream
  • Stallman trả lời rằng ông không có thời gian đọc mailing list của Bazaar, và mailing list phát triển duy nhất ông đọc là emacs-devel
  • Với câu hỏi liệu người dùng Bazaar có nên có tiếng nói trong việc đánh giá mức độ bảo trì đầy đủ của Bazaar hay không, ông cho rằng thông tin liên quan thì có thể tham khảo, nhưng trao cho người dùng “quyền phát biểu” là không phù hợp

Chỉ trích của Karl Fogel và vấn đề ủy quyền

  • Karl Fogel, tác giả của Producing Open Source Software và là một trong những nhà phát triển Subversion đời đầu, đã chỉ trích cách Stallman đánh giá tình hình và việc không ủy quyền
  • Fogel cho rằng nếu Stallman không có thời gian xem xét kỹ tình hình phát triển của Bazaar, thì ông cũng khó có thể đánh giá một cách đủ năng lực liệu Bazaar còn là lựa chọn tốt cho Emacs hay không
  • Ông lập luận rằng nếu không có thời gian và năng lực tinh thần để thực hiện việc đánh giá như vậy thì nên ủy quyền cho các bảo trì viên Emacs
  • Fogel cho rằng cách hỏi một người duy nhất về một lỗi không thể là chỉ dấu đại diện cho sức khỏe của cả dự án, và những người khác trong thread đã thực hiện điều tra kỹ lưỡng hơn nhiều rồi
  • Stallman trả lời rằng lý do là “vì còn nhiều điều hơn cả Emacs đang bị đặt cược”
    • Vấn đề cốt lõi là nếu một dự án đại diện của GNU từ bỏ công cụ GNU, điều đó sẽ gửi đi tín hiệu gì tới các gói GNU khác
  • Fogel tiếp tục yêu cầu Stallman hoặc dành thời gian cần thiết để đánh giá đủ mức độ đáng tin cậy của tình trạng bảo trì Bazaar, hoặc ủy quyền cho người có thể làm việc đó
  • Stallman chỉ trả lời rằng ông đã có kế hoạch và đang thực hiện, nhưng không đưa ra nội dung cụ thể, lịch trình hay việc ủy quyền nào

ELPA chuyển sang Git trước

  • Trong cuộc thảo luận năm 2013, Stefan Monnier nói rằng việc tiếp tục dùng Bazaar hay chuyển sang Git, Monotone, Darcs, Mercurial, OpenCM, Fossil... với ông không phải điều quá quan trọng
  • Điều cấp bách với Stefan khi đó là đưa nhánh ELPA ra khỏi Bazaar
    • Vì Bazaar không thể xử lý nhánh ELPA một cách đúng đắn
  • Leo Liu chỉ ra rằng phần lớn các dự án GNU không dùng Bazaar
  • Ông cho rằng việc sửa lỗi Bazaar có thể có lợi cho riêng Bazaar, nhưng lại là tổn thất cho toàn bộ GNU
    • Lập luận là nếu 20% thời gian rảnh của tình nguyện viên bị tiêu tốn vào việc vật lộn với Bazaar, cái giá đó đủ lớn để làm họ ngại tham gia vào các dự án GNU
  • Cuối năm đó, Stefan Monnier đã chuyển nhánh ELPA vốn bị hỏng trong Bazaar sang Git
    • Nhánh ELPA có một lỗi gây xung đột khi checkout, và không còn ai ở lại để sửa nó
    • Stefan cho rằng mình không thích mô hình hai công cụ, Git cho ELPA và Bzr cho trunk, nhưng không còn lối thoát nào khác
    • Ông cũng nói rõ không nên mở rộng thay đổi này thành một cuộc tranh luận về ưu nhược điểm của Git và Bazaar hay thành thảo luận về việc chuyển trunk sang Git
  • Khi ELPA đã chuyển sang Git, điều đó tạo nền cho cuộc tranh luận tiếp theo: “nếu Git đủ tốt cho ELPA thì chẳng phải cũng đủ tốt cho trunk sao?”

Năm 2014: Công việc chuyển đổi của Eric S. Raymond và việc di chuyển thực tế

  • Tháng 8 năm 2014, Eric S. Raymond đã chuẩn bị sẵn các script chuyển đổi kho Emacs
  • Ông cho biết mọi phần khó khăn đều đã xong, và chỉ cần báo trước khoảng 8 giờ trước khi bấm nút
  • Việc di chuyển thực tế diễn ra vào tháng 11 năm 2014
  • Ngày 13 tháng 11, ESR gửi một thông điệp vỏn vẹn sáu từ: “Commits are open. Have at it.”
  • Việc chuyển đổi này được một số người mô tả là heroic
  • Sau 236 thông điệp năm 2008, 200 thông điệp năm 2013, công sức bảo trì của Stefan, những vấn đề lặp đi lặp lại với Bazaar, và cả một hệ thống quản lý phiên bản đã chết, Emacs cuối cùng cũng chuyển sang Git

Sau khi chuyển: các cộng tác viên cốt lõi cũng phải học Git từ đầu

  • Trong vài ngày ngay sau khi chuyển, lộ ra rằng khá nhiều cộng tác viên cốt lõi chưa từng dùng Git
  • Trên emacs-devel liên tiếp xuất hiện các thread hỏi cách dùng Git
    • This Is The Git Help Mailing List
    • “git pull fails with merge conflicts. How can this possibly happen?”
    • “A simple git workflow for the rest of us”
    • “need help adjusting workflow to git”
    • “Good book on Git”
    • “Obscure error/warning/information message from git pull” kéo dài tới 124 thông điệp
  • Bối cảnh khiến những người đã phát triển một trình soạn thảo văn bản quan trọng trong thời gian dài lại phải đặt các câu hỏi Git rất cơ bản là việc Emacs đã ở lại với Bazaar trong suốt khoảng thời gian mà phần còn lại của thế giới đã chuyển sang Git

1 bình luận

 
Ý kiến trên Lobste.rs
  • Làm việc trong một dự án do rms dẫn dắt chắc đúng là phát điên mất

    • À, giờ lại hiện về flashback why-cooperation-with-rms-is-impossible.au
  • Đúng là một giai đoạn lịch sử ghê gớm. Rất lâu trước đây tôi từng xem một bài thuyết trình ở một trường đại học, nơi Mark Shuttleworth giải thích về Bazaar nguyên bản, và ý tưởng về hệ thống quản lý phiên bản phân tán thực sự rất hấp dẫn
    Sau đó bản viết lại của bzr ra mắt, và tôi hoàn toàn bị cuốn vào nó. Tôi thấy nó hợp lý hơn Git rất nhiều, đã đổ vào dự án vài năm, hoạt động trên mailing list, viết plugin, thậm chí còn thử viết lại thuật toán so sánh khác biệt mã bằng C để làm nó nhanh hơn
    Cuối cùng thì rõ ràng Git là kẻ chiến thắng, nhưng tôi mất khá lâu mới chấp nhận được điều đó

  • Theo bản tóm tắt này thì Richard Stallman đã ngăn không cho dự án Emacs chuyển sang Git cho tới tận năm 2013. Sau đó có nói rằng vào cuối 2013 và cuối 2014, Emacs đã chuyển sang Git theo hai giai đoạn, nhưng sau đầu năm 2013 thì không còn nhắc tới Stallman nữa
    Ông ấy đã ủng hộ Bazaar suốt nhiều năm, vậy mà sau đó trong các thread mailing list lại thực sự không đăng bài phản đối nào sao? Hay là trong khoảng thời gian đó ông ấy đã mất quyền lực đối với dự án Emacs?
    Trong thread năm 2014 được liên kết trong bài tôi không thấy email nào có tên ông ấy, nhưng cũng có thể đã có thread khác không được dẫn link. Tôi từng nghĩ có phải đó là thời kỳ Stallman từ chức khỏi thứ gì đó vì tranh cãi không, nhưng hóa ra không phải, chắc tôi nhớ nhầm chuyện khác. Theo Wikipedia, Stallman rời Free Software Foundation vào năm 2019, và thậm chí cũng không rời GNU Project

  • Tôi không rõ chính xác điều gì khiến một dự án trở thành dự án GNU chính thức. Là vì giấy phép chăng? Git và Linux đều là GPLv2-only còn Bazaar là GPLv2+. Là vì chuyển nhượng bản quyền chăng? Hay là vì việc lưu trữ kho mã, trình theo dõi issue, mailing list và những thứ tương tự? Hay vì tiền tố tên “GNU” hoạt động như một kiểu bảo chứng?
    Có vẻ rõ ràng là ở đâu đó có một ranh giới quan trọng, nhưng tôi không biết nó là gì và vì sao nó lại quan trọng
    Và còn có lỗi lệch một đơn vị lặp đi lặp lại nữa:

    On November 13th, ESR posted a seven-word message:

    Commits are open. Have at it.

    [...]

    Six years of debate, [...] and it ended with seven words.
    Ái chà, bỏ lỡ một cơ hội vàng để tạo đối xứng rồi

  • Khoảng năm 2014 tôi từng định làm gì đó với mysql, nhưng đã mất cả ngày chỉ để thất bại trong việc clone kho và checkout nhánh phát hành, rồi bỏ cuộc; giờ nghĩ lại thấy đỡ xấu hổ hơn nhiều
    Trước đó tôi đã dùng CVS, Subversion và Mercurial mỗi thứ trong nhiều năm, nên tôi cứ nghĩ là do mạng hoặc máy tính của mình có vấn đề. Trước khi đọc bài này tôi không hề biết benchmark thực tế của bzr lại tệ đến vậy, hay việc Canonical dù dùng bzr nhiều như thế nhưng đã sa thải cả đội bzr từ trước
    Vài năm sau khi tôi quay lại mysql để làm một việc khác thì họ đã chuyển sang Git, và nhờ không còn bị chặn ngay từ lúc bắt đầu nên tôi đã làm được những công việc khá thú vị

    Since I had no interesting books to read today, nor interesting films to watch, I decided to scavenge for the most intriguing content one can find online. I ended up reading the Linux kernel mailing lists, but those discussions seemed to be 18+, so I settled for the comparatively civil emacs-devel.
    Đây là tuyên bố miễn trừ trách nhiệm kiểu “không, bài này không phải do AI viết” hay nhất mà tôi từng thấy

  • Bài viết rất hay. Tôi lúc nào cũng muốn xem những drama mailing list kiểu này diễn tiến ra sao, nhưng chưa bao giờ đủ can đảm để tự mình nhảy vào. Cách dựng câu chuyện và chọn đoạn trích thực sự rất tốt

  • Tóm lược một lịch sử rối rắm theo cách rất thú vị. Dù vậy, tôi cảm thấy tiêu đề nên là “The Most Bzr Emacs Saga” hơn là “The Most Emacs Bzr Saga”
    Dùng “Emacs” như một tính từ không phải là hoàn toàn chưa từng có, nhưng nghe vẫn hơi gượng

  • Bazaar là hệ thống quản lý phiên bản đầu tiên tôi từng dùng. Khi đó tôi đang làm quen với Linux thông qua Ubuntu, và Canonical dùng Launchpad để host mã nguồn
    Trước đó tôi chưa từng đưa code lên đâu cả, nên việc dùng Launchpad và Bazaar thấy khá ngầu. Tất nhiên các dự án của tôi quá nhỏ nên tôi chẳng hề cảm nhận được vấn đề hiệu năng nào