1 điểm bởi GN⁺ 2025-09-24 | 2 bình luận | Chia sẻ qua WhatsApp
  • Ruby Central đã tiếp quản các dự án mã nguồn mở như Bundler và RubyGems mà không có sự đồng ý của các maintainer hiện hữu
  • Bối cảnh chính gồm áp lực tài chính từ Shopify và khó khăn tài chính của Ruby Central, trong quá trình đó một số maintainer cụ thể bị loại khỏi dự án
  • Quá trình ép chuyển giao kho GitHub và quyền sở hữu gem được tiến hành kín đáo, gây hỗn loạn và phản ứng dữ dội trong cộng đồng
  • Ruby Central và Shopify biện minh bằng việc nhấn mạnh trách nhiệm về bảo mật và hạ tầng, nhưng bản chất vấn đề là quyền sở hữu thực tế và khủng hoảng niềm tin của cộng đồng
  • Một số maintainer cũ đang tập trung vào dự án cạnh tranh Spinel và rv, đồng thời tìm kiếm hướng đi mới cho hệ sinh thái Ruby

Tổng quan

Ruby Central gần đây đã đơn phương tiếp quản quyền sở hữu và quyền quản lý các dự án mã nguồn mở quan trọng như Bundler và RubyGems mà không có sự đồng ý của các maintainer hiện hữu. Quá trình này đan xen giữa áp lực tài chính từ Shopify, khó khăn tài chính của Ruby Central, việc loại trừ các maintainer chủ chốt và sự hỗn loạn trong cộng đồng.

Tóm tắt các sự kiện chính

  • Ruby Central đang gặp khó khăn tài chính, và Sidekiq đã rút khoản tài trợ thường niên $250,000 khỏi RailsConf vì lý do mời DHH
  • Kết quả là Ruby Central trở nên phụ thuộc rất lớn vào Shopify
  • Shopify gây áp lực lên Ruby Central, yêu cầu tiếp quản toàn bộ kho GitHub cũng như quyền sở hữu Bundler và gem rubygems-update, nếu không sẽ rút tài trợ
  • Trong quá trình tiếp quản, các maintainer chủ chốt, đặc biệt là André Arko, đã bị loại ra ngoài, và việc chuyển đổi cưỡng ép được thực hiện mà không có sự đồng thuận của cộng đồng
  • Diễn biến sự việc và quá trình thảo luận nội bộ được xử lý nhanh chóng và kín đáo với bên ngoài, khiến nhiều thành viên quan trọng của cộng đồng bị gạt ra ngoài

Chi tiết quá trình tiếp quản Bundler và RubyGems

Tình hình ban đầu

  • Ngày 9 tháng 9, Hiroshi Shibata (HSBT) đổi tên RubyGems GitHub Enterprise thành 'Ruby Central', thêm Marty Haught làm owner mới và tước một phần quyền của các maintainer hiện hữu
  • Khi hành động này bị nêu vấn đề, một số quyền đã được khôi phục, nhưng việc thêm Marty làm owner không bị đảo ngược

Thảo luận về việc phân biệt quyền sở hữu và dịch vụ

  • Kho mã nguồn RubyGems là tài sản thuộc sở hữu và được quản lý bởi cộng đồng
  • RubyGems Service là dịch vụ hạ tầng được Ruby Central vận hành riêng
  • Dù lẽ ra cần phân biệt rõ hai khái niệm này, Ruby Central lại dùng lẫn lộn chúng làm cơ sở cho tuyên bố quyền sở hữu
Quảng cáo

Tước quyền và thực thi việc tiếp quản

  • Khoảng ngày 18 tháng 9, các maintainer hiện hữu снова mất quyền truy cập và bị loại khỏi các tài khoản GitHub, Fastly và rubygems.org
  • Hội đồng quản trị Ruby Central biểu quyết cưỡng ép tiếp quản kho GitHub và quyền sở hữu gem, rồi Marty tự mình thực hiện

Ruby Central ngày càng phụ thuộc vào Shopify

  • Sau khi mời DHH tới RailsConf, Ruby Central mất nhà tài trợ cũ là Sidekiq, khiến cấu trúc tài chính tập trung mạnh vào Shopify
  • Trong thời gian diễn ra Rails World, các điều kiện tài trợ dài hạn đã được thảo luận giữa Ruby Central, Rails Core, Shopify, Github và các nhân vật, doanh nghiệp chủ chốt; trong đó có yêu cầu loại trừ một số maintainer cụ thể và chuyển giao quyền sở hữu
  • Ngay trong nội bộ hội đồng quản trị cũng có nhận thức rằng "lựa chọn khác chẳng khác nào bắt đầu đóng cửa Ruby Central"

Thực thi việc tiếp quản và phản ứng của cộng đồng

  • Hội đồng quản trị Ruby Central trao ngay cho Marty quyền thực hiện việc tiếp quản, còn Shopify nhanh chóng điều kỹ sư vào để chuyển đổi hệ thống on-call
  • Sau khi Ellen là người đầu tiên công khai sự việc, Ruby Central đưa ra tuyên bố chính thức với lý do "tăng cường bảo mật chuỗi cung ứng"
  • Dù nội bộ nhấn mạnh các vấn đề bảo mật và độ tin cậy về con người, bản chất thực sự lại nằm ở quy trình chuyển giao quyền sở hữu chính đáng và sự thiếu đồng thuận trong cộng đồng

Phát biểu của các nhân vật chính và các điểm tranh cãi

  • DHH đã đăng tweet ủng hộ việc tiếp quản Bundler/Gems, nhưng trước đây lại phản đối vụ WordPress cưỡng ép tiếp quản plugin, nên bị chỉ ra là thiếu nhất quán
  • Hội đồng quản trị Ruby Central và một số bên liên quan gây thêm nhầm lẫn khi phát biểu lẫn lộn giữa việc vận hành hạ tầng RubyGems.org và quyền sở hữu kho mã nguồn
  • Shun Cureton và những người khác cho biết do không thể hoàn tất trao đổi với các maintainer trong thời hạn nên việc hạn chế quyền chỉ mang tính tạm thời. Tuy vậy, khả năng loại bỏ vĩnh viễn một số maintainer cũ vẫn là rất cao
Quảng cáo

Sự xuất hiện của Spinel và rv

  • André Arko, Samuel Giddins và các cựu maintainer của Bundler, RubyGems đã thành lập hợp tác xã mới Spinel và bắt tay vào phát triển công cụ quản lý Ruby mới là rv
  • rv hướng tới tích hợp phạm vi quản lý rộng, bao gồm gems, phiên bản Ruby, dependency và đóng gói sẵn nhị phân, nhằm thay thế nhiều công cụ hiện có như rvm, rbenv, bundler và rubygems
  • Một bộ phận trong Shopify và Rails Core xem Spinel và rv là mối đe dọa tiềm tàng đối với hệ sinh thái Ruby tập trung hóa

Kết luận và lo ngại

  • Hiện chưa rõ liệu Ruby Central sau này có trả lại quyền sở hữu Bundler và RubyGems cho cộng đồng hay không
  • Việc hội đồng quản trị Ruby Central tiến hành cưỡng ép tiếp quản không có sự đồng ý, dù đã nhận thức đầy đủ về hệ quả và các phương án thay thế, đã giáng đòn nặng nề vào niềm tin của cộng đồng
  • Sự việc cũng làm nổi bật cấu trúc quản trị dễ tổn thương trước áp lực từ doanh nghiệp như Shopify, đồng thời đặt ra nhu cầu về các lựa chọn cộng đồng mới như Spinel

Disclosure

  • Tác giả từng làm việc tại Shopify từ năm 2017 đến 2022

Disclaimer

  • Bản tóm tắt này là ý kiến không chuyên, được viết dựa trên phỏng vấn nhiều bên liên quan và biên bản họp. Có thể có thiếu sót hoặc sai sót.

Changelog

  • Ngày 23 tháng 9 năm 2025: Xóa tên một số người tham dự Rails World, bổ sung trích dẫn của DHH liên quan tới WordPress

2 bình luận

 
click 2025-09-24

Vậy rốt cuộc nguyên nhân gốc rễ là DHH sao?

 
GN⁺ 2025-09-24
Ý kiến Hacker News
  • Tôi thực sự ngạc nhiên khi nghe tin Sidekiq đã rút khoản tài trợ hằng năm $250,000 cho Ruby Central, bởi vì Sidekiq (thực ra là ContribSys) là công ty một người do chính Mike Perham vận hành, trong một cuộc phỏng vấn vài năm trước Mike nói rằng anh ấy kiếm được $1M mỗi năm mà không có nhân viên nào, và mô hình đó cũng không cần vận hành máy chủ riêng, theo podcast năm 2023 gần đây thì hiện anh ấy nói đang một mình tạo ra doanh thu gần $10M mỗi năm, và tôi nghĩ đó là một cuộc sống cực kỳ tuyệt vời cho một nhà sáng lập kiêm lập trình viên solo
    • Mike thực sự là một người tuyệt vời, cộng đồng rất may mắn chỉ nhờ có anh ấy ở đó, tôi không biết số tiền tài trợ là bao nhiêu, nhưng ngay cả việc không quảng bá riêng chuyện quyên góp và rút tài trợ cũng cho thấy anh ấy là người giữ nguyên tắc
  • Bối cảnh đã được giải thích khá rõ, nhưng tôi vẫn chưa thật sự hiểu “vì sao” chuyện này lại xảy ra, Shopify từ trước đến nay luôn đóng góp và tài trợ rất nhiều cho Ruby và Rails nên trước đây tôi không nhìn họ theo hướng tiêu cực
    • Đọc các bình luận thì tôi không hiểu vì sao mọi người lại sợ Shopify nắm vai trò lớn hơn, họ đã là bên đóng góp cốt lõi cho Ruby từ lâu, và dù tôi không đồng ý với hành động của họ trong vụ này, cũng khó tìm ra ác ý từ bài viết này
    • Có vẻ đây là sự kết hợp của ý định tốt, hiểu lầm và thiếu giao tiếp, Shopify muốn kiểm soát truy cập tốt hơn để giảm rủi ro tấn công chuỗi cung ứng và cải thiện quản trị nên đã đặt ra hạn chót, các maintainer bán thời gian thì trì hoãn đến phút chót, rồi cuối cùng dùng ảnh hưởng để giành quyền bảo trì mà không giao tiếp đúng mức cũng như không đạt được đồng thuận phù hợp, khiến các maintainer hiện tại bị bất ngờ và làm tình hình thêm hỗn loạn, các vấn đề về công cụ cạnh tranh và tranh cãi xoay quanh DHH có thể đã ảnh hưởng đến một số hành động cứng rắn, nhưng không phải nguyên nhân trực tiếp của sự việc này
    • Đọc nhiều dòng rồi tự suy đoán thì có vẻ diễn biến là thế này: 1) những người có một phần quyền kiểm soát RubyGems đã cố loại DHH ra ngoài 2) phe gần với DHH đã đẩy những người đó ra khỏi RubyGems 3) ai cũng đang biện minh cho hành động của mình bằng danh nghĩa 'kỹ thuật tốt', rốt cuộc đây là tình huống kiểu Game of Thrones, "thắng hoặc thua"
    • Tôi nghe nói một số tổ chức đã rút tài trợ vì vấn đề thái độ của DHH và lo ngại về bảo mật chuỗi cung ứng, còn Shopify thì trực tiếp bước vào để giành quyền chủ động đối với một phụ thuộc cốt lõi của họ
  • Họ nói sẽ quản lý an toàn quyền truy cập quản trị vào RubyGems.org, RubyGems và Bundler dưới danh nghĩa tăng cường bảo mật chuỗi cung ứng, nhưng trên thực tế đây lại là một tình huống không mong muốn khi sự chia rẽ nội bộ gần như dẫn tới cả một cuộc tấn công chuỗi cung ứng mang tính ác ý
    • Tôi muốn biết cụ thể đã có hành vi ác ý nào, chẳng hạn mã độc có thực sự bị chèn vào hay không, tôi tò mò về các dữ kiện thực tế
  • Tôi không ngờ lại có một bài tổng hợp tốt đến vậy, cộng đồng Ruby từ trước đã có xung đột nội bộ, nhưng điều đáng tiếc trong vụ này là sự phá hủy ngắn hạn làm sụp đổ niềm tin và sự gắn kết
    • Nếu Ruby hiện tại đang ở trong trạng thái “tự gặm nhấm chính mình”, thì tôi mong nó cứ tiếp tục tự gặm nhấm như vậy
    • Tôi tò mò vì sao lại rơi vào tình huống "tự gặm nhấm chính mình"
    • Tôi khó đồng ý với nhận định rằng cộng đồng Ruby đã có xung đột nội bộ dữ dội ngay từ đầu, cộng đồng Ruby thời kỳ đầu rất tuyệt
    • Nội dung bài viết quá lan man, có chỗ thì quá nhiều chi tiết, có chỗ lại thiếu những điểm quan trọng nên khó theo dõi được toàn bộ bối cảnh, tôi đồng ý rằng vụ Ruby Central là một mớ hỗn loạn lớn và các maintainer đáng ra phải được đối xử tốt hơn, nhưng thật tiếc là tác giả không tìm hiểu các vấn đề quan trọng như cuộc chiến văn hóa
  • Tôi muốn biết vì sao Samuel Giddins và André Arko lại bị nhắm tới để loại bỏ, đã có vấn đề gì xảy ra, đọc bài thì có vẻ như đó là điều Shopify muốn, nhưng tôi muốn biết lý do chính xác
    • Bài viết có giải thích phần liên quan ở đây
  • Tôi không hiểu đoạn nói Ruby Central cố kiểm soát repo mã RubyGems và các gem, Ruby Central đâu phải là cấu trúc có thể tùy ý thực thi quyền trên GitHub của tôi, hay là nó nằm dưới tài khoản Ruby Central hoặc tài khoản tổ chức của họ?
    • Như bài viết cũng nói rõ, một maintainer (HSBT) đã mời Marty làm owner của tài khoản GitHub, và điều này diễn ra mà không có đồng thuận trước đó
    • Ở đoạn "Ngày 9 tháng 9, HSBT...", một maintainer RubyGems hiện có đã thêm người dùng mới làm owner rồi sau đó hoàn tác phần lớn thay đổi, tuy nhiên một người dùng mới vẫn còn là owner của tổ chức GitHub RubyGems, và nhờ vậy Ruby Central sau đó mới có thể làm nhiều việc
    • Tôi nghe nói tổ chức RubyGems đã đổi tên thành Ruby Central
  • Nếu không muốn chấp nhận rủi ro ở cấp độ tổ chức GitHub thì ngay từ đầu tốt hơn là đừng đi vào cấu trúc như vậy, ngay cả khi maintainer tham gia một tổ chức, tôi cảm thấy GitHub thực sự cần có tính năng để repo của tôi cuối cùng vẫn nằm dưới quyền kiểm soát hoàn toàn của tôi và tôi có thể mang nó ra bất cứ lúc nào nếu cần
  • Cũng có các thảo luận gần đây liên quan
  • Theo tôi biết thì Ruby Central không sở hữu mã nguồn mà chỉ vận hành dịch vụ, vậy rốt cuộc ai sở hữu tài khoản GitHub hay repo đó, và ai là người tạo ra nó từ đầu?
    • Tôi nhớ là những người tạo ra Ruby Central cũng chính là những người tạo ra RubyGems thời kỳ đầu (David Black, Chad Fowler, v.v.), nhưng chuyện đã quá lâu nên có thể không còn liên quan nhiều đến tranh cãi hiện tại
  • Tôi mong mọi tranh cãi này sẽ được giải quyết ổn thỏa, nó khiến tôi nhớ đến ảnh hưởng mà việc Oracle mua lại Sun Microsystems đã gây ra cho cộng đồng và các maintainer