제 66호

Ruby on Rails 66번째 소식

Rails 8.0.3 릴리스와 다양한 기능 업데이트가 이어지는 한편, Rails 8.2에서는 패스키(passkeys) 네이티브 지원까지 예고되며 인증 경험에도 변화가 기대되더라구요. 하지만 커뮤니티 이야기도 기술만큼이나 중요해요. 최근 Ruby Central과 RubyGems 프로젝트를 둘러싼 거버넌스 논쟁은 오픈소스 생태계가 직면한 과제를 잘 보여주고 있어요. 동시에, Euruko와 Rails World 같은 국제 컨퍼런스에서는 Matz와 DHH의 키노트, 새로운 툴과 프레임워크, 그리고 개발자 행복과 다양성을 둘러싼 논의가 활발히 이어졌어요. 이번 소식에서는 주요 릴리스와 기능 업데이트, 커뮤니티 논의, 그리고 컨퍼런스 현장의 생생한 후기를 함께 담아봤어요.

Rails 생태계는 여전히 빠르게 움직이고 있어요.

Rails 8.0.3 릴리스와 다양한 기능 업데이트가 이어지는 한편, Rails 8.2에서는 패스키(passkeys) 네이티브 지원까지 예고되며 인증 경험에도 변화가 기대되더라구요.

하지만 커뮤니티 이야기도 기술만큼이나 중요해요. 최근 Ruby Central과 RubyGems 프로젝트를 둘러싼 거버넌스 논쟁은 오픈소스 생태계가 직면한 과제를 잘 보여주고 있어요. 동시에, Euruko와 Rails World 같은 국제 컨퍼런스에서는 Matz와 DHH의 키노트, 새로운 툴과 프레임워크, 그리고 개발자 행복과 다양성을 둘러싼 논의가 활발히 이어졌어요.

이번 소식에서는 주요 릴리스와 기능 업데이트, 커뮤니티 논의, 그리고 컨퍼런스 현장의 생생한 후기를 함께 담아봤어요.

🎧 10분 요약 오디오로 들어보시겠어요? → YouTube로 듣기

새로운 소식

Rails ERD Generator 출시

Emmanuel HayfordRails ERD Generator 를 공개했어요.

이 도구는 Rails 애플리케이션의 Entity Relationship Diagram(ERD) 을 자동으로 생성해, 데이터베이스 스키마를 시각적으로 이해하고 공유하기 쉽게 만들어줘요.

개인 프로젝트의 아담한 사이즈는 빠르게 잘 표현하는데, 오래된 레거시 앞에서는 어떤 성능을 보여줄지 테스트 해봐야겠어요.

Ruby Central and Ruby Gems 상황

루비 커뮤니티 내 Ruby Central (RC)과 RubyGems/Bundler 프로젝트 유지보수 담당자들 사이의 분쟁은 프로젝트의 소유권과 거버넌스, 그리고 주요 기업 스폰서의 영향력이라는 세 가지 핵심 쟁점을 중심으로 발생했어요. 관련 내용을 ShortRuby에서 소개한 자료들을 기반으로 NotebookLM을 통해 요약해봤어요.

이 모든 상황은 RC가 RubyGems GitHub 조직의 관리 접근 권한을 유지보수 담당자들의 동의 없이 일방적으로 제거하고 통제하면서 시작되었으며, 이는 "적대적인 인수(hostile takeover)"로 간주되고 있어요.

1. 서비스 통제권 대 오픈 소스 코드 소유권 충돌

가장 핵심적인 쟁점은 RC가 루비 개발자들이 수십 년간 유지해 온 코드 프로젝트의 소유권을 주장하는 것과, RC가 운영하는 프로덕션 서비스의 안정성을 확보하려는 노력이 충돌했다는 점이에요.

  • RC의 주장 (서비스의 안정성):

    • RC는 비영리 관리자로서 공급망을 보호하고 생태계의 장기적인 안정성을 지켜야 할 수탁 의무(fiduciary duty) 가 있다고 주장해요.
    • RC는 RubyGems.org가 단순한 코드가 아니라, 법적 책임(legal liability), 재정적 노출(financial exposure), 운영 위험(operational risk)을 수반하며 수십억 건의 다운로드를 처리하는 프로덕션 서비스라고 강조해요.
    • RC는 보안 강화와 책임 연결을 위해, 유지보수 담당자들에게 접근 권한에 대한 운영자 계약(Operator Agreements) 을 요구하며, 이 계약들이 준비될 때까지 임시적으로 관리 권한을 제거했다고 밝혔어요.
  • 유지보수 담당자들의 반론 (커뮤니티 소유):

    • RubyGems와 Bundler는 수십 년 동안 커뮤니티가 소유하고 유지해 온 코드 저장소이며, RC가 운영하는 별도의 RubyGems.org 서비스와 혼동되어서는 안 된다고 지적해요.
    • 장기 유지보수 담당자 André Arko는 Bundler 프로젝트 이름이 커뮤니티에 속한다는 것을 명확히 하기 위해 상표권을 등록했어요.
    • RC가 주장하는 Ruby Together와의 합병을 통해 Bundler와 RubyGems가 RC의 책임 하에 들어왔다는 주장은 사실이 아니며, 해당 프로젝트들은 Ruby Together가 소유한 적이 없다는 반박이 있어요.

2. 기업 후원(Shopify)으로 인한 재정적 압력과 영향력

이번 사태는 주요 기업 후원자, 특히 Shopify의 강력한 영향력과 재정적 압박 때문에 발생했다는 주장이 핵심 쟁점이에요.

  • 재정적 위협: RC는 인프라 안전 및 안정성을 보장하기 위한 통제 조치를 시행하지 않으면, 운영에 필요한 자금을 잃을 수 있다는 마감 시한(deadline) 압박에 직면했다고 RC 이사회 멤버가 언급해요.
  • Shopify의 통제 요구: Shopify는 RC에게 RubyGems GitHub 저장소의 완전한 통제권을 요구했고, RC가 이에 응하지 않을 경우 자금 지원을 철회하겠다고 위협했다는 주장이 제기되었어요. RC 이사회 멤버는 자신이 다른 방식으로 투표했다면 Ruby Central의 폐쇄 과정을 시작하는 것에 투표하는 것이라고 느꼈다고 말해요.
  • 특정 인물 배제: Shopify는 최소한 André Arko를 포함한 특정 장기 유지보수 담당자를 프로젝트에서 배제하도록 특별히 요구했으며, 이는 조치가 중립적인 보안 강화가 아니라 특정 개인을 겨냥한 것임을 시사해요.
  • 경쟁 도구에 대한 우려: Shopify/Rails Core 관계자 중 일부는 유지보수 담당자들이 개발하는 새로운 Ruby 관리 도구인 rv를 RC의 서비스에 대한 위협으로 간주하며, 이들이 시스템에 대한 관리 접근 권한을 계속 보유하는 것에 의문을 제기했어요.
  • 이사회 구성의 문제: RC 이사회에는 Shopify와 관련된 인물(Shopify-affiliated people)이 포함되어 있으며, 이사회가 커뮤니티에 대한 깊은 이해나 오픈 소스 거버넌스 이해가 부족하다는 비판이 있어요.

3. 일방적인 실행 방식과 커뮤니티 신뢰 상실

RC가 보안 강화를 주장했음에도 불구하고, 실행 방식(How) 때문에 커뮤니티의 신뢰를 완전히 잃었다는 점이 큰 쟁점이에요.

  • 소통 부재 및 일방적 조치: RC는 소통이 "더 좋고, 더 명확하고, 더 빨라야 했다"고 인정했어요. 하지만 유지보수 담당자들은 사전 경고나 협의 없이 GitHub 알림을 통해 접근 권한 박탈 사실을 알게 되었고, 이는 일방적인 조치였다고 간주되었어요.
  • 운영 위험 초래: RC는 보안 강화를 주장했지만, 시스템에 대해 깊은 지식을 가진 장기 운영자들(on-call team)을 갑자기 제거함으로써 오히려 운영 위험을 증가시켰다는 지적이 있어요.
  • 영구적인 배제 의혹: RC는 접근 권한 제거가 일시적인 조치라고 주장했지만, 내부 소스에 따르면 최소한 André Arko와 Samuel Giddins에게는 이 조치가 영구적일 의도였으며, 이는 RC의 주장과 상반된다는 의혹이 제기되었어요.
  • 비판에 대한 부실 대응: RC의 공식 성명은 "AI가 생성한 듯한 기업체 용어"를 사용했다는 비판을 받았고, 이는 커뮤니티의 분노를 잠재우기는커녕 상황을 더욱 악화시키는 데 일조했어요. Mike McQuaid는 RC가 상황을 "예외적으로 서투르게(exceptionally poorly)" 관리했다고 평가해요.

Rails 8.2, Passkeys 지원 예정

David Heinemeier HanssonRails 8.2에서 패스키(passkeys) 네이티브 지원 가능성을 발표했어요.

비밀번호 없는 로그인 흐름을 Rails 기본 기능으로 도입하려는 움직임으로, 인증 경험의 큰 변화가 기대되고, 이 변화를 통해 어떤 서비스적인 변화를 줄 수 있을지도 기대가 되네요.

Small Bets, 오픈소스로 공개

Daniel VassalloSmall Bets 커뮤니티 플랫폼이 오픈소스로 공개되었어요.

Small Bets는 신생 창업자와 예비 창업자를 위한 온라인 커뮤니티이며, 37signals의 Campfire(Ruby on Rails 기반 채팅 앱) 을 크게 수정해 운영되고 있다고 해요. Campfire를 Slack의 대체제라고만 생각하고 있었는데 이렇게 온라인 커뮤니티로도 발전시킬 수 있다는 점이 인상적이었어요.

Rails 업데이트 하이라이트

  • Rails 8.0.3 릴리스 – 안정성 패치 다수 포함

  • Active Job: 커스텀 serializer는 반드시 #klass 메서드 필요 (이전 방식 deprecated)

  • 엔진 라우트 개선: bin/rails routes에서 엔진별 필터링 및 포맷 향상

  • 테스트 변경: Rails 8.1부터 scaffold에 system test 기본 생성 X (원하면 --system-tests=true)

  • Structured event subscribers 도입 → 이벤트를 구조화된 방식으로 기록 가능

  • Active Record:

    • 샤드 키로 정수 지원

    • PostgreSQL 18+ 에서 가상 컬럼 지원 (t.virtual)

    • only_columns 추가 → legacy DB/점진적 마이그레이션 시 유용

  • 보안: action_on_open_redirect 설정 추가 → 외부 redirect 시 :log, :notifications, :raise 모드 선택 가능

  • 로깅 개선: action_dispatch.verbose_redirect_logs → redirect 호출 소스까지 로그 기록

전체 변경 내역 보기

Greg Molnar,  Ruby Triathlon 2025 후기 공개

Greg Molnar이 한 달간 세 컨퍼런스를 연속으로 참석한 경험을 공유했어요.

  • Rails World 2025 (암스테르담) → DHH의 Omarchy 데모, Aaron의 폐막 키노트, 2026 개최지 오스틴 발표

  • FriendlyRb (부쿠레슈티) → 비즈니스·AI 세션, 따뜻한 분위기의 소규모 커뮤니티

  • EuRuKo 2025 (비아나 두 카스텔로) → Matz 개막, _ReActionView_와 RubyLLM 발표, 루비 삼종경기 참가자 무대

Greg은 "힘들지만 보람찬 여정이었고, 다음에도 기회가 되면 또 도전하고 싶다"고 전했어요.

Sharon Rosner, My Thoughts on Euruko

Sharon Rosner가 첫 Euruko 참가 후기를 공유했어요.

  • 첫 경험의 감동 → 따뜻한 환영, 세심한 운영, 다양성 있는 참가자

  • 하이라이트 → Matz의 키노트(“개발자 행복”), Marco Roth의 HERB/ReActionView, Papercraft에 대한 본인의 라이트닝 토크, PicoRuby 워크숍

  • AI 논의 → RubyLLM 발표, AI 도구에 대한 기대와 회의 공존

  • 비판적 시각 → 대형 조직 주도의 "무거운" 접근(예: Shopify)과 커뮤니티 다양성 문제에 대한 우려

  • 메시지“Ruby는 Rails만이 아니다. 생태계 다양성이 곧 힘이다.”


🗓️ Ruby Meetup 일정

총 4개 이벤트

지난 일정

💡 전 세계 Ruby 커뮤니티의 다양한 Meetup에 참여해보세요

💼 Ruby on Rails 채용 공고

전체 보기 →

📋 최신 채용

최신 3개