Skip to content

Split View: 오픈소스 거버넌스가 무너질 때 — 루비 센트럴 사태와 세 개의 축

✨ Learn with Quiz
|

오픈소스 거버넌스가 무너질 때 — 루비 센트럴 사태와 세 개의 축

들어가며 — 열 달이 지나도 끝나지 않은 분쟁

2026년 7월 30일, Bundler를 만든 André Arko가 Ruby Central's Destructive Legacy를 발표했습니다. 다음 날 Hacker News에 올라 43포인트에 댓글 23개를 받았습니다.

2025년 10월에 마츠모토 유키히로(Matz)와 루비 코어 팀이 RubyGems와 Bundler 저장소의 관리를 넘겨받았을 때, 여러 매체가 이 분쟁이 종결됐다고 보도했습니다. 그 보도는 절반만 맞았습니다. 코드 관리권은 정리됐지만 분쟁 자체는 정리되지 않았습니다. Arko의 진술에 따르면 2026년 3월에 루비 센트럴의 변호사가 그를 FBI에 신고했고, 4월에 그가 제시한 합의안에는 30일이 지나도록 실질적인 답이 오지 않았습니다.

이 글은 누가 옳은지를 판정하려는 글이 아닙니다. 양쪽 다 1차 진술을 공개했고, 사실관계 자체가 갈리는 지점이 명확히 있습니다. 대신 이 사건에서 구조를 읽으려고 합니다. 같은 형태의 위기가 core-js에서, event-stream에서, xz-utils에서, Nix에서, Redis와 Terraform에서 반복되는 이유가 있기 때문입니다. 그 이유는 세 개의 축이 서로 다른 주체에게 흩어져 있다는 데 있습니다.

루비 센트럴 — 확인 가능한 타임라인

먼저 양쪽 진술이 대체로 일치하는 사실관계입니다. 출처는 루비 센트럴의 2025년 9월 25일 성명, 2026년 3월 말에 나온 자체 사후 보고서, 그리고 Arko의 2025년 10월 9일 반박문입니다.

배경부터 봅니다. 루비 센트럴은 RubyConf와 RailsConf를 운영하고 rubygems.org 인프라를 운영해 온 비영리 단체이고, 2021년에 Bundler와 RubyGems 개발에 자금을 대던 Ruby Together를 흡수했습니다. 2025년에 들어서면서 Sidekiq의 연간 후원(약 25만 달러 규모로 보도됨)이 끊겼고, 재정적으로 Shopify 의존도가 높아진 상태였습니다.

  • 2025년 6월 3일 — Arko가 루비 센트럴 자문 역할에서 사임합니다. 오픈소스 쪽 자문은 계속하되 단체를 대표하지는 않겠다는 취지였습니다.
  • 2025년 8월 18일 — 루비 센트럴이 전임으로 채용했던 보안 담당 Samuel Giddins가 2주 전 통보로 사직합니다.
  • 2025년 8월 25일에서 26일 — Arko가 Ruby 버전 관리 도구 rv와 Spinel 조직을 공개합니다. 루비 센트럴은 자체 보고서에서 이 시점을 촉발 사건으로 명시합니다.
  • 2025년 9월 9일에서 10일 — GitHub의 RubyGems 엔터프라이즈 계정 이름이 "Ruby Central"로 변경되고, Arko(indirect), Giddins(segiddins), Martin Emde(martinemde)의 관리자 권한이 제거됩니다.
  • 2025년 9월 15일 — 이 조치가 대외적으로 "실수"라고 설명되고 일부 접근이 잠시 복구됩니다. 같은 주에 npm 생태계를 겨냥한 대규모 피싱 공급망 공격이 발생했고, 루비 센트럴은 이후 이를 보안 근거의 정황으로 인용합니다.
  • 2025년 9월 18일 — 위 세 명과 Ellen Dash(duckinator)가 GitHub 조직에서 완전히 제거됩니다. 같은 날 이사회가 프로덕션 접근과 커밋 권한 회수를 정식 의결합니다.
  • 2025년 9월 18일에서 19일 — 여섯 명이 항의 사퇴합니다. Arko, David Rodríguez, Ellen Dash, Josef Šimánek, Martin Emde, Samuel Giddins입니다.
  • 2025년 9월 30일 — Arko가 자신에게 여전히 rubygems.org 프로덕션의 AWS 루트 접근 권한이 남아 있다는 사실을 발견하고 루비 센트럴에 이메일로 알립니다.
  • 2025년 10월 5일 — Martin Emde가 gem.coop을 발표합니다. Homebrew의 거버넌스를 참고한 협동조합 형태의 gem 호스트로, 초기에는 rubygems.org의 실시간 미러로 동작합니다.
  • 2025년 10월 17일ruby-lang.org 공지로 Matz와 루비 코어 팀이 RubyGems와 Bundler 저장소의 관리를 맡고, rubygems.org 인프라 운영은 루비 센트럴이 계속하는 분리가 확정됩니다.
  • 2026년 3월 말 — 루비 센트럴이 Richard Schneeman이 작성한 사후 보고서를 공개합니다.
  • 2026년 4월 19일 — 루비 센트럴의 사무총장이 해임되고, 단체가 재정 위기를 이유로 홍보 대행사 계약과 CFO 직위, 외부 계약자를 정리하고 이사회를 무보수 실무 이사회로 전환합니다.
  • 2026년 7월 30일 — Arko의 최신 글이 나옵니다.

여기까지가 날짜와 함께 확인되는 사실입니다.

양쪽의 주장 — 무엇이 사실이고 무엇이 성격 규정인가

루비 센트럴의 설명은 대략 이렇습니다. 두 명(Arko, Giddins)이 이미 조직을 떠난 상태에서 프로덕션 인프라의 관리자 권한을 유지하는 것은 공급망 공격 표면이 커지는 상황에서 받아들이기 어려웠고, 이사회의 수탁 책임상 최소 권한 원칙에 맞는 접근 모델로 옮기는 것이 목표였다는 것입니다. 자체 보고서에서 인정하는 실패는 실행 쪽에 몰려 있습니다 — 문서화된 오프보딩 절차나 체크리스트가 없었고, 접근 변경 사실과 이유가 당사자들에게 제대로 전달되지 않았으며, 의사 결정자들이 GitHub 권한과 프로덕션 서버 접근이 어떻게 연결되는지 서로 다른 수준으로 알고 있었다는 것입니다. 보고서는 "이것은 우리 모두의 실수"라는 취지로 마무리됩니다. 다만 9월의 권한 제거에 대해서는, 외부에서 단순 실수로 규정된 것과 달리 실제 문제는 타이밍과 내부 소통이었다는 쪽으로 다시 설명합니다.

떠난 유지보수자들의 설명은 다릅니다. Arko는 이것을 적대적 인수로 규정하고, 자신을 겨냥한 표적 조치였다고 봅니다. 근거로 드는 것은 루비 센트럴 자체 보고서가 rv와 Spinel 공개를 촉발 사건으로 명시했다는 점입니다. 그는 AWS 루트 권한 잔존을 발견해 책임 있게 신고했는데 오히려 "해킹" 혐의로 소송 위협을 받았고, 세 차례의 감사에서 아무 피해가 없었음이 확인됐다고 적습니다. 그가 요구하는 것은 소송 위협 철회, 피해가 없었다는 공개 확인, 변호사 비용 보전, 그리고 증거 없이 이루어진 공개 비난에 대한 사과입니다.

여기서 정직하게 구분해 둘 것들이 있습니다.

양쪽이 사실상 일치하는 것. 루비 센트럴의 9월 25일 성명 자체가 rubygems.org 데이터가 무단으로 복사되거나 보관된 정황은 없다고 밝혔습니다. 이건 Arko의 감사 결과 주장과 방향이 같습니다.

한쪽 진술에만 존재하는 것. FBI 신고, 합의 협상의 내용과 진행 상황은 전적으로 Arko의 진술입니다. 루비 센트럴이 이를 확인하거나 부인한 공개 자료를 찾지 못했습니다.

입증되지 않은 정황. Shopify가 자금을 지렛대로 삼아 Arko의 배제를 요구했다는 서사는 여러 2차 보도와 커뮤니티 인사들의 글에 반복해서 등장하지만, 루비 센트럴이나 Shopify가 공식적으로 확인하거나 부인한 기록을 찾지 못했습니다. 루비 센트럴의 공개 문서는 이사회의 수탁 책임과 공급망 보안을 근거로 들 뿐 특정 후원사를 언급하지 않습니다. 이 부분은 주장으로 읽어야 합니다.

해석이 갈리는 것. 2021년 Ruby Together 흡수로 루비 센트럴이 Bundler와 RubyGems에 대해 어떤 권리를 확보했는가입니다. 루비 센트럴의 서술은 스튜어드십을 전제하고, 반대편은 그 자산이 애초에 Ruby Together의 것이 아니었으므로 이전된 바 없다고 봅니다. 이건 감정의 문제가 아니라 법적 소유의 문제이고, 이 글의 다음 절이 다루는 지점이기도 합니다.

Artichoke Ruby의 종료 — 같은 시기, 다른 이유

이 사태와 함께 자주 언급되는 것이 Artichoke Ruby의 종료입니다. Rust로 작성된 Ruby 구현으로, Ryan Lopopolo가 2019년 RubyConf에서 처음 공개한 프로젝트입니다.

확인해 본 결과를 그대로 적습니다. 종료 글은 Winding Down Artichoke Ruby이고 2026년 2월 15일에 나왔으며, 저장소는 그보다 앞선 2025년 11월 3일에 아카이브됐습니다. 그리고 이 글에는 루비 센트럴이나 RubyGems 분쟁에 대한 언급이 전혀 없습니다. 저자가 드는 이유는 전부 개인적이고 프로젝트 내적입니다 — 나이가 들면서 일과 가족으로 우선순위가 옮겨 갔고, 현재 직장(OpenAI)의 일이 충분히 몰입할 만하며, 언어 런타임을 유지하는 기회비용이 크고, MRI Ruby와의 호환성을 계속 추적하는 부담이 끝없으며, 그 부담을 정당화할 사용자 기반이 없다는 것입니다.

Hacker News 노출도 크지 않았습니다. 제가 확인한 제출은 2026년 7월 25일자 하나이고 5포인트에 댓글 0개였습니다. 두 사건은 시기가 겹칠 뿐 인과 관계가 없습니다. 이걸 굳이 적는 이유는, 거버넌스 위기 서사에 인접한 사건들이 사후적으로 엮이는 일이 흔하기 때문입니다.

다만 Artichoke 종료문에는 이 글의 주제와 이어지는 대목이 하나 있습니다. 유지보수를 지속하게 만드는 것은 자금만이 아니라 사용자 기반과 개인적 동기라는 점입니다. 뒤에서 다시 나옵니다.

세 개의 축 — 상표, 패키지 인프라, 자금

오픈소스 프로젝트에서 실제로 힘이 되는 자산은 코드가 아닙니다. 코드는 라이선스가 허용하는 한 언제든 포크할 수 있습니다. 포크로 복제되지 않는 것이 세 가지 있습니다.

  1. 상표. 이름을 법적으로 누가 갖고 있는가. 포크가 원래 이름을 쓸 수 있는지가 여기서 결정됩니다.
  2. 패키지 레지스트리. 실제 배포가 일어나는 인프라를 누가 운영하는가. 저장소를 포크해도 사용자가 gem install이나 npm install로 받는 것은 여전히 원래 레지스트리에서 옵니다.
  3. 자금. 유지보수자에게 실제로 돈을 주는 주체가 누구인가.

이 셋이 한 주체에 모여 있으면 그 주체의 성격이 프로젝트의 성격이 되고, 흩어져 있으면 조정 비용이 생깁니다. 위기는 흩어진 상태에서 셋 중 하나가 다른 하나를 지렛대로 쓰려 할 때 발생합니다.

생태계상표레지스트리 운영저장소 관리
RubyRuby Association이 스튜어드십 역할(단일 등록 상표 소유자는 확인하지 못함)rubygems.org: Ruby Central루비 코어 팀(2025-10 이후)
BundlerAndré Arko 개인 보유(본인 주장)위와 동일위와 동일
PythonPython Software FoundationPyPI: Python Software Foundation코어 개발자 + PSF
JavaScript해당 없음npm: GitHub, 즉 Microsoft패키지별로 분산
RustRust Foundationcrates.io: crates.io 팀 + Rust FoundationRust 프로젝트
Java해당 없음Maven Central: Sonatype(영리 기업)패키지별로 분산

루비의 줄을 보면 문제가 그대로 보입니다. 상표, 레지스트리, 저장소 관리가 세 개의 다른 주체에 걸쳐 있고, 그중 하나(Bundler 상표)는 개인이 갖고 있습니다. Python의 줄과 비교하면 대비가 분명합니다. PSF는 상표와 PyPI를 함께 보유하고 있어서, 최소한 "누가 결정할 수 있는가"라는 질문에 답이 있습니다.

세 번째 축인 자금 쪽 데이터도 붙여 두겠습니다. Tidelift의 2024년 유지보수자 조사는 응답자 437명 기준으로 60퍼센트가 무보수이고, 약 60퍼센트가 자신이 유지보수하는 프로젝트를 그만두었거나 진지하게 고민한 적이 있으며, 그 이유로 번아웃을 꼽은 비율이 44퍼센트였습니다. 같은 조사는 보수를 받는 유지보수자가 보안에 더 많은 시간을 쓰고 취약점을 더 빨리 고친다는 결과도 냈습니다. 반대편에는 GitHub Sponsors가 2026년 7월 21일 기준 누적 1억 달러를 넘겼고 7만 명 이상의 유지보수자와 조직을 지원했다는 발표가 있습니다. 두 숫자를 나란히 놓으면 상황이 보입니다 — 자금은 늘고 있지만 분배는 여전히 소수 프로젝트에 몰려 있고, 대다수 유지보수자에게 자금 축은 사실상 존재하지 않습니다.

같은 패턴의 반복

세 축의 관점에서 과거 사례들을 다시 보면 분류가 됩니다.

자금 축의 부재. core-js가 대표적입니다. 2023년 2월 14일, 사실상 단독 유지보수자였던 Denis Pushkarev가 "So, what's next?"를 올려 무료 오픈소스가 근본적으로 망가져 있다고 적었습니다. 주간 수천만 건의 다운로드를 감당하면서 후원금은 월 수백 달러 수준이었다는 것이 요지였고(구체적 금액은 출처마다 달라 신뢰도가 낮습니다), 그는 유료화를 검토한다고 밝혔습니다. 결과적으로 이 글이 확산되면서 후원이 늘었고, core-js는 여전히 그가 독립적으로 유지보수합니다. 자금 축의 부재는 폭발하지 않으면 그냥 조용히 마모됩니다.

유지보수자 축의 인수. event-stream(2018)과 xz-utils(2024)가 같은 형태입니다. event-stream에서는 원저자 Dominic Tarr가 유지보수를 놓은 상태에서 자원한 계정에게 커밋과 npm 배포 권한을 넘겼고, 그 계정이 flatmap-stream이라는 의존성을 추가해 Copay 비트코인 지갑을 표적으로 하는 악성 코드를 심었습니다. xz-utils에서는 2년 반에 걸친 사회공학이 있었습니다 — 여러 개의 가짜 신원이 메일링 리스트에서 번아웃 상태의 원 유지보수자 Lasse Collin에게 릴리스가 느리다고 압박했고, 그렇게 들어온 공동 유지보수자가 2024년 3월에 sshd를 겨냥한 백도어를 심었습니다. Microsoft의 Andres Freund가 SSH 로그인 지연이라는 우연한 관측에서 발견하지 않았다면 어디까지 갔을지 알 수 없습니다. 두 사건 모두 자금 축의 부재가 유지보수자 축의 취약점을 만들었다는 점에서 앞의 사례와 이어집니다.

거버넌스 축의 정통성 위기. Nix가 여기 해당합니다. 2024년 4월, 100명 이상이 서명한 공개 서한이 창시자 Eelco Dolstra의 사퇴를 요구했습니다. 쟁점은 커뮤니티 조정 절차를 훼손했다는 지적과, 그가 소속된 회사와의 이해충돌, 그리고 NixCon 후원사로 방위산업체 Anduril을 받아들이려 한 결정이었습니다. Dolstra는 NixOS 재단 이사회에서 물러났습니다. 코드에는 아무 문제가 없었고, 무너진 것은 누가 무엇을 결정할 권한이 있는가에 대한 합의였습니다.

소유권 축의 행사. Redis, Terraform, Elasticsearch는 모두 저작권자가 라이선스를 바꾼 사례이고, 모두 대형 포크로 이어졌습니다. Redis는 2024년 3월 BSD에서 RSAL과 SSPL 이중 라이선스로 바꿨고 리눅스 재단이 Valkey를 포크했습니다. HashiCorp는 2023년 8월 Terraform을 BUSL로 바꿨고 3주 만에 OpenTofu 포크가 조직되어 9월에 리눅스 재단에 들어갔습니다. Elastic은 2021년에 SSPL로 옮겼고 AWS가 OpenSearch를 포크했습니다.

흥미로운 것은 셋 다 상당 부분 되돌아왔다는 점입니다. Elastic은 2024년 8월에 AGPLv3을 추가했고, Redis는 2025년 5월 Redis 8.0에서 AGPLv3을 추가했습니다. 두 경우 모두 포크가 자리를 잡은 뒤에 나온 결정입니다. Terraform 쪽은 2024년 4월 HashiCorp가 OpenTofu에 코드 복제를 이유로 중지 요구서를 보냈지만, OpenTofu가 문제의 코드가 BUSL 이전의 MPL 라이선스 조상에서 왔음을 상세히 반박했고 소송으로 이어지지 않았습니다. HashiCorp는 2025년 2월 IBM에 인수되어 절차가 종료됐습니다.

여기서 나오는 관찰이 하나 있습니다. 라이선스 변경은 되돌릴 수 있지만, 신뢰와 사람은 되돌아오지 않습니다. Valkey와 OpenSearch와 OpenTofu는 원본이 라이선스를 되돌린 뒤에도 계속 살아 있습니다.

엔지니어가 실제로 점검할 것

이 분석이 실무로 이어지는 지점은 다음과 같습니다.

의존성을 볼 때 유지보수자 수를 세십시오. 다운로드 수나 GitHub 스타는 위험의 지표가 아닙니다. core-js와 event-stream과 xz-utils의 공통점은 다운로드가 많았다는 것이지 적었다는 게 아닙니다. 실제 지표는 최근 12개월간 커밋 권한을 실제로 쓴 사람의 수이고, 그게 하나면 그건 한 사람이 번아웃하거나 사회공학에 노출되는 순간 끊기는 의존성입니다.

레지스트리와 저장소를 분리해서 생각하십시오. 저장소가 포크되어도 배포 경로는 그대로일 수 있고, 반대로 저장소는 그대로인데 배포 경로가 바뀔 수도 있습니다. 사내 프록시나 미러를 두는 조직이라면, 상위 레지스트리가 하나뿐인지 확인해 둘 만합니다. gem.coop처럼 대안 호스트가 생기는 상황에서는 이 구분이 실질적인 의미를 갖습니다.

라이선스 변경 위험은 소유 구조에서 읽힙니다. 단일 기업이 저작권을 집중 보유하고 기여자 라이선스 동의서로 권리를 모으고 있다면, 라이선스 변경은 언제든 가능한 선택지입니다. 반대로 저작권이 다수 기여자에게 분산되어 있으면 변경이 사실상 불가능합니다. Redis, Elastic, HashiCorp는 모두 전자였습니다.

핵심 의존성에는 돈을 쓰십시오. Tidelift 조사 결과가 말해 주는 것은 감성적인 이야기가 아니라 위험 관리입니다. 보수를 받는 유지보수자가 취약점을 더 빨리 고칩니다. 조직이 매년 쓰는 클라우드 비용과, 그 위에서 도는 코드의 핵심 의존성에 지불하는 금액을 나란히 적어 보면 대개 비율이 우스꽝스럽습니다.

마치며 — 포크할 수 있는 것과 포크할 수 없는 것

정리하면 이렇습니다.

  • 루비 센트럴 사태는 2025년 9월의 권한 회수에서 시작해, 2025년 10월에 저장소 관리가 루비 코어 팀으로 넘어가면서 코드 층위는 정리됐지만, 2026년 7월 현재 당사자 간 분쟁은 미해결 상태입니다.
  • 양쪽 다 1차 진술을 공개했고, 실행 실패에 대해서는 루비 센트럴이 스스로 인정한 부분이 있습니다. Shopify의 개입 서사는 반복 보도되지만 당사자 확인이 없는 주장입니다.
  • 같은 시기의 Artichoke Ruby 종료는 이 사태와 무관합니다. 종료문의 이유는 전적으로 개인적이고 프로젝트 내적입니다.
  • 반복되는 위기의 구조는 상표, 패키지 인프라, 자금이라는 세 축이 서로 다른 주체에게 흩어져 있다는 데 있습니다.
  • 라이선스는 되돌릴 수 있지만 포크와 사람은 되돌아오지 않습니다.

오픈소스에서 코드는 언제나 포크할 수 있습니다. 포크할 수 없는 것은 이름, 배포 경로, 그리고 사람입니다. 거버넌스라는 단어가 추상적으로 들린다면, 그 셋을 각각 누가 쥐고 있는지 적어 보는 것으로 충분히 구체적이 됩니다. 자기 조직이 의존하는 프로젝트에 대해 그 표를 채울 수 없다면, 그건 아직 위기가 오지 않았다는 뜻이지 위험이 없다는 뜻이 아닙니다.

참고 자료

When Open Source Governance Breaks Down — The Ruby Central Dispute and Three Axes of Control

Introduction — A Dispute That Ten Months Have Not Settled

On July 30, 2026, André Arko, the creator of Bundler, published Ruby Central's Destructive Legacy. It reached Hacker News the next day, drawing 43 points and 23 comments.

When Yukihiro Matsumoto (Matz) and the Ruby core team took over management of the RubyGems and Bundler repositories in October 2025, several outlets reported that the dispute had ended. That reporting was only half right. Control of the code was settled, but the dispute itself was not. By Arko's account, Ruby Central's lawyer reported him to the FBI in March 2026, and a settlement proposal he put forward in April went without a substantive response for more than 30 days.

This post is not an attempt to rule on who is right. Both sides have published primary statements, and there are clear points where the facts themselves diverge. Instead, the aim here is to read the structure of the episode, because the same shape of crisis keeps recurring — in core-js, in event-stream, in xz-utils, in Nix, in Redis and Terraform. The reason is that three axes of control end up scattered across different parties.

The Ruby Central Affair — A Verifiable Timeline

Let us start with the facts both sides largely agree on. Sources are Ruby Central's September 25, 2025 statement, its own post-incident report from late March 2026, and Arko's October 9, 2025 rebuttal.

Some background first. Ruby Central is the nonprofit that runs RubyConf and RailsConf and operates the rubygems.org infrastructure; in 2021 it absorbed Ruby Together, which had funded Bundler and RubyGems development. Heading into 2025, Sidekiq's annual sponsorship (reported at roughly $250,000) had lapsed, and the organization had grown financially dependent on Shopify.

  • June 3, 2025 — Arko resigns from his advisory role at Ruby Central. The intent was to continue advising on the open-source side without representing the organization.
  • August 18, 2025 — Samuel Giddins, whom Ruby Central had hired full-time as its security lead, resigns with two weeks' notice.
  • August 25–26, 2025 — Arko publishes the Ruby version manager rv and the Spinel organization. Ruby Central's own report explicitly names this moment the triggering incident.
  • September 9–10, 2025 — GitHub's RubyGems enterprise account is renamed "Ruby Central," and admin access is removed for Arko (indirect), Giddins (segiddins), and Martin Emde (martinemde).
  • September 15, 2025 — The move is publicly described as a "mistake," and some access is briefly restored. That same week, a large-scale phishing supply-chain attack targeting the npm ecosystem occurs; Ruby Central later cites it as context for its security rationale.
  • September 18, 2025 — The three people above, plus Ellen Dash (duckinator), are removed entirely from the GitHub organization. The same day, the board formally votes to revoke production access and commit privileges.
  • September 18–19, 2025 — Six people resign in protest: Arko, David Rodríguez, Ellen Dash, Josef Šimánek, Martin Emde, and Samuel Giddins.
  • September 30, 2025 — Arko discovers that he still has AWS root access to rubygems.org production and emails Ruby Central to report it.
  • October 5, 2025 — Martin Emde announces gem.coop, a cooperatively governed gem host modeled on Homebrew's governance, initially operating as a live mirror of rubygems.org.
  • October 17, 2025 — A ruby-lang.org announcement confirms the split: Matz and the Ruby core team take over management of the RubyGems and Bundler repositories, while Ruby Central continues to operate the rubygems.org infrastructure.
  • Late March 2026 — Ruby Central publishes a post-incident report written by Richard Schneeman.
  • April 19, 2026 — Ruby Central's executive director is removed, and the organization, citing a financial crisis, cancels its PR agency contract and CFO position, lets go of outside contractors, and converts its board into an unpaid working board.
  • July 30, 2026 — Arko's latest post appears.

That covers what is confirmed, with dates attached.

What Both Sides Claim — Fact Versus Characterization

Ruby Central's account runs roughly as follows: with two people (Arko and Giddins) already having left the organization, retaining their admin access to production infrastructure was hard to accept given a growing supply-chain attack surface, and the goal was to move to an access model consistent with least privilege under the board's fiduciary duty. The failures its own report admits cluster on execution — there was no documented offboarding process or checklist, the fact and reasoning behind the access changes were not properly communicated to the people affected, and decision-makers understood the link between GitHub permissions and production server access to differing degrees. The report closes on a note of "this was a mistake we all share." That said, on the September access removal specifically — which outside observers framed as simple error — Ruby Central's report reframes it once more: the real problem was timing and internal communication.

The account from the maintainers who left differs. Arko frames this as a hostile takeover and sees it as action targeted specifically at him. His evidence is that Ruby Central's own report names the rv and Spinel launch as the triggering incident. He writes that he discovered and responsibly reported the leftover AWS root access, only to be threatened with legal action over a "hacking" allegation, and that three separate audits confirmed no harm occurred. What he is asking for: withdrawal of the legal threat, a public confirmation that no harm occurred, reimbursement of his legal costs, and an apology for public accusations made without evidence.

There are distinctions worth drawing honestly here.

Where the two sides substantially agree. Ruby Central's own September 25 statement said there was no indication that rubygems.org data had been copied or retained without authorization. This lines up with the direction of Arko's own audit claims.

What exists only in one statement. The FBI report, and the content and progress of settlement negotiations, are entirely Arko's account. I could not find public material from Ruby Central confirming or denying them.

Unproven context. The narrative that Shopify used its funding as leverage to demand Arko's removal recurs across multiple secondary reports and posts from community figures, but I could not find a record of Ruby Central or Shopify officially confirming or denying it. Ruby Central's public documents cite the board's fiduciary duty and supply-chain security as their basis and do not name any specific sponsor. This part should be read as a claim.

Where interpretations diverge. It is what rights Ruby Central actually secured over Bundler and RubyGems through the 2021 absorption of Ruby Together. Ruby Central's account presumes stewardship; the other side holds that those assets were never Ruby Together's to begin with, so nothing was transferred. This is not a matter of sentiment but a matter of legal ownership, and it is what the next section of this post takes up.

The Shutdown of Artichoke Ruby — Same Period, Different Reasons

Something frequently mentioned alongside this affair is the shutdown of Artichoke Ruby, a Ruby implementation written in Rust that Ryan Lopopolo first unveiled at RubyConf in 2019.

Here is what checking turned up, stated plainly. The shutdown post is Winding Down Artichoke Ruby, published February 15, 2026; the repository itself was archived earlier, on November 3, 2025. And this post contains no mention whatsoever of Ruby Central or the RubyGems dispute. Every reason the author gives is personal and internal to the project — priorities shifted toward work and family with age, his current job (OpenAI) is engaging enough to hold his focus, the opportunity cost of maintaining a language runtime is large, the burden of continually tracking MRI Ruby compatibility is endless, and there is no user base large enough to justify that burden.

Hacker News exposure was minimal too. The one submission I found, from July 25, 2026, had 5 points and zero comments. The two events merely overlap in timing; there is no causal link between them. The reason to spell this out is that events adjacent to a governance-crisis narrative commonly get woven together after the fact.

Still, there is one passage in the Artichoke shutdown post that connects to this post's theme: what keeps maintenance going is not funding alone but a user base and personal motivation. This comes back later.

Three Axes — Trademark, Package Infrastructure, and Funding

The asset that actually confers power in an open-source project is not the code. Code can be forked at any time the license permits. There are three things a fork does not replicate.

  1. Trademark. Who legally owns the name. This is what determines whether a fork can use the original name.
  2. Package registry. Who operates the infrastructure where distribution actually happens. Even after you fork the repository, what a user pulls down with gem install or npm install still comes from the original registry.
  3. Funding. Who actually pays the maintainers.

When these three sit with a single party, that party's character becomes the project's character; when they are scattered, coordination costs appear. A crisis happens when, in that scattered state, one of the three tries to use another as leverage.

EcosystemTrademarkRegistry operatorRepository management
RubyRuby Association plays a stewardship role (no single registered trademark owner confirmed)rubygems.org: Ruby CentralRuby core team (since 2025-10)
BundlerHeld personally by André Arko (by his own account)Same as aboveSame as above
PythonPython Software FoundationPyPI: Python Software FoundationCore developers + PSF
JavaScriptN/Anpm: GitHub, i.e., MicrosoftDistributed per package
RustRust Foundationcrates.io: crates.io team + Rust FoundationRust project
JavaN/AMaven Central: Sonatype (a for-profit company)Distributed per package

Looking at Ruby's row, the problem is right there. Trademark, registry, and repository management span three different parties, and one of them — the Bundler trademark — sits with an individual. The contrast with Python's row is stark. The PSF holds both the trademark and PyPI together, so there is at least an answer to the question of who gets to decide.

Let me attach data on the third axis, funding, too. Tidelift's 2024 maintainer survey, based on 437 respondents, found that 60 percent are unpaid, that roughly 60 percent have quit or seriously considered quitting a project they maintain, and that 44 percent cited burnout as the reason. The same survey also found that paid maintainers spend more time on security and fix vulnerabilities faster. On the other side of the ledger, GitHub Sponsors announced that as of July 21, 2026 it had passed $100 million in cumulative payouts, supporting more than 70,000 maintainers and organizations. Set the two numbers side by side and the situation becomes visible: funding is growing, but distribution still concentrates on a handful of projects, and for most maintainers the funding axis is effectively nonexistent.

The Same Pattern, Recurring

Looking back at past cases through the lens of the three axes, they sort themselves into categories.

Absence of the funding axis. core-js is the textbook case. On February 14, 2023, Denis Pushkarev, effectively its sole maintainer, posted "So, what's next?" arguing that free open source is fundamentally broken. The gist was that he was absorbing tens of millions of downloads a week while sponsorship ran a few hundred dollars a month (specific figures vary by source and should be treated with caution), and he said he was considering going paid. In the end, the post going viral drove a surge in sponsorship, and core-js is still maintained independently by him today. When the funding axis is absent, it does not necessarily explode — it can simply and quietly erode.

Capture of the maintainer axis. event-stream (2018) and xz-utils (2024) share the same shape. In event-stream, original author Dominic Tarr, having stepped back from maintenance, handed commit and npm publish access to a volunteer account, and that account added a dependency called flatmap-stream that planted malicious code targeting the Copay bitcoin wallet. In xz-utils, there was two and a half years of social engineering — multiple fake identities pressured burned-out original maintainer Lasse Collin on the mailing list over slow releases, and the co-maintainer who was let in that way planted a backdoor targeting sshd in March 2024. There is no telling how far it would have gone had Microsoft's Andres Freund not caught it through the incidental observation of delayed SSH logins. Both cases connect to the previous one in that the absence of the funding axis is what created the vulnerability on the maintainer axis.

A legitimacy crisis on the governance axis. Nix belongs here. In April 2024, an open letter signed by more than 100 people called for founder Eelco Dolstra's resignation. The issues raised were that he had undermined community moderation procedures, a conflict of interest with the company he worked for, and a decision to accept defense contractor Anduril as a NixCon sponsor. Dolstra stepped down from the NixOS Foundation board. Nothing was wrong with the code; what collapsed was the consensus over who has the authority to decide what.

Exercise of the ownership axis. Redis, Terraform, and Elasticsearch are all cases where the copyright holder changed the license, and all led to major forks. Redis moved from BSD to a dual RSAL/SSPL license in March 2024, and the Linux Foundation forked Valkey. HashiCorp switched Terraform to BUSL in August 2023, and within three weeks the OpenTofu fork was organized, joining the Linux Foundation in September. Elastic moved to SSPL in 2021, and AWS forked OpenSearch.

What is interesting is that all three walked a good distance back. Elastic added AGPLv3 in August 2024, and Redis added AGPLv3 with Redis 8.0 in May 2025. In both cases, the decision came after the fork had already taken root. On the Terraform side, HashiCorp sent OpenTofu a cease-and-desist in April 2024 alleging code duplication, but OpenTofu rebutted it in detail, showing that the code in question descended from a pre-BUSL MPL-licensed ancestor, and it never went to litigation. HashiCorp was acquired by IBM in February 2025, and the matter ended there.

One observation follows from this. A license change can be reversed, but trust and people do not come back. Valkey, OpenSearch, and OpenTofu all remain alive today even after the originals reversed their licenses.

What Engineers Should Actually Check

Here is where this analysis connects to practice.

Count the maintainers when you look at a dependency. Download counts and GitHub stars are not indicators of risk. What core-js, event-stream, and xz-utils have in common is that downloads were high, not that they were low. The real metric is the number of people who have actually used commit access in the last 12 months, and if that number is one, it is a dependency that snaps the moment that one person burns out or is socially engineered.

Think of the registry and the repository as separate. A repository can be forked while the distribution path stays the same, and conversely the repository can stay the same while the distribution path changes. If your organization runs an internal proxy or mirror, it is worth confirming whether there is really only one upstream registry. As alternative hosts like gem.coop emerge, this distinction starts to carry real weight.

Relicensing risk can be read off the ownership structure. If a single company concentrates copyright and gathers rights through contributor license agreements, relicensing is an option available at any time. Conversely, when copyright is spread across many contributors, a change becomes practically impossible. Redis, Elastic, and HashiCorp were all the former.

Spend money on your core dependencies. What the Tidelift survey results say is not a sentimental story but risk management. Paid maintainers fix vulnerabilities faster. Line up what your organization spends on cloud costs every year against what it pays toward the core dependencies that code runs on, and the ratio is usually absurd.

Conclusion — What Can Be Forked and What Cannot

To summarize:

  • The Ruby Central affair started with the September 2025 access revocation; the code layer was settled once repository management passed to the Ruby core team in October 2025, but as of July 2026 the dispute between the parties remains unresolved.
  • Both sides have published primary statements, and Ruby Central has itself acknowledged some execution failures. The narrative of Shopify's involvement is repeated across coverage but remains a claim without confirmation from either party.
  • The Artichoke Ruby shutdown in the same period is unrelated to this affair. The reasons given in its shutdown post are entirely personal and internal to the project.
  • The structure behind recurring crises is that the three axes — trademark, package infrastructure, and funding — end up scattered across different parties.
  • A license can be reversed, but forks and people do not come back.

In open source, code can always be forked. What cannot be forked are the name, the distribution path, and the people. If the word governance sounds abstract, writing down who holds each of those three things is concrete enough. If you cannot fill in that table for a project your own organization depends on, that means the crisis has not arrived yet — not that there is no risk.

References