Git 커밋으로 풀어낸 Fizzy 개발 다큐멘터리: '바람막이 유리의 얼룩'에서 오픈 소스 프로젝트 관리 도구까지

The Making of Fizzy, Told by Git

작성자
발행일
2025년 12월 02일

핵심 요약

  • 1 Fizzy는 18개월간 8,152개 커밋을 통해 'Splat'에서 'Kanban 보드'로 진화한 Basecamp의 프로젝트 관리 도구입니다.
  • 2 DHH는 Rails 8 업그레이드 및 '빈혈성 코드' 제거를 통해 아키텍처를 강화하며 개발 철학을 반영했습니다.
  • 3 제품명과 기능이 반복적인 디자인 및 개발 과정을 통해 발견되었으며, 최종적으로 오픈 소스로 전환되었습니다.

도입

Fizzy는 Basecamp에서 18개월에 걸쳐 개발된 프로젝트 관리 도구로, 그 개발 역사가 8,152개의 Git 커밋을 통해 공개되었습니다. 본 문서는 '바람막이 유리의 얼룩(Splats on a Windshield)'이라는 초기 개념에서 시작하여 정교한 오픈 소스 프로젝트 관리 도구로 진화하기까지의 과정을 Git 커밋 기록을 기반으로 상세히 추적합니다. 이는 제품의 정체성이 구축 과정을 통해 어떻게 발견되는지를 보여주는 흥미로운 사례입니다.

Fizzy의 개발 여정은 초기 아이디어부터 최종 제품에 이르기까지 끊임없는 탐색과 변화의 연속이었습니다.

1. 초기 착수: ‘Splat’의 탄생 (2024년 6월-7월)

  • 2024년 6월 21일: Kevin McConnell의 “New Rails app” 커밋으로 프로젝트가 시작되었습니다. 몇 시간 만에 Gemfile 업데이트, Rubocop 설정, 최소한의 인증 흐름, CSS 기본 스타일, Brakeman 보안 스캐닝이 추가되며 Rails 애플리케이션의 골격이 빠르게 구축되었습니다.

  • 2024년 7월 23일: Jason Zimdars는 ‘Splat’ 모델을 도입하며 애플리케이션의 첫 정체성을 부여했습니다. ‘Splat’은 제목, 본문, 색상을 포함하는 간단한 데이터 모델로, ‘바람막이 유리’ 배경에 표시되는 시각적 메타포와 함께 초기의 혼란스러우면서도 눈길을 끄는 정보 조각을 의미했습니다.

2. 개념적 전환: ‘Bubble’과 ‘Fizzy’로의 진화 (2024년 7월-9월)

  • 2024년 7월 31일: Zimdars는 “Let’s try bubbles” 커밋을 통해 ‘Splat’을 ‘Bubble’로 전환하며, 혼란스러운 ‘얼룩’ 대신 부드럽게 떠오르는 ‘거품’이라는 보다 온화한 시각적 메타포를 도입했습니다. 이는 애니메이션 변화로 이어졌습니다.

  • 2024년 8월 19-22일: ‘Boost’ 기능이 추가되면서 사용자가 거품을 ‘부스트’하면 위로 떠오르는 애니메이션이 구현되었습니다. 이는 샴페인 거품이 솟아오르는 듯한 ‘Fizzy’라는 최종 제품명에 대한 강력한 암시가 되었습니다.

  • 2024년 9월 4일: ‘Splat’이 ‘Bubble’로, 그리고 몇 시간 후 ‘Fizzy’로 최종 명명되면서, 시각적 디자인이 제품명 결정에 중요한 역할을 했음을 보여주었습니다.

3. DHH의 아키텍처 강화 및 리팩토링 (2024년 10월-2025년 4월)

  • 2024년 10월 17일: Rails 창시자 DHH(David Heinemeier Hansson)가 “No longer used” 커밋으로 합류하며 불필요한 파일 제거를 시작했습니다.

  • 2024년 10월 19일: DHH는 Rails 8 RC1으로 전체 애플리케이션을 업그레이드하고, HTTP 캐싱을 체계적으로 추가하며 성능을 최적화했습니다.

  • ‘빈혈성 코드’ 제거: DHH는 “anemic”이라는 용어를 15번 사용하며 설명 가치나 구현 복잡성을 숨기는 역할 없이 불필요한 간접 계층만 추가하는 코드를 제거하는 데 주력했습니다.

  • 2025년 4월: DHH는 한 달 동안 323개의 커밋을 수행하며 대규모 리팩토링을 단행했습니다. 이는 불필요한 Jobs, 팩토리 메서드, 기능 등을 제거하여 코드베이스를 극적으로 단순화하는 작업이었습니다.

4. 최종 변환: ‘Card’와 칸반 시스템 (2025년 4월-11월)

  • 2025년 4월 9일: 10개월간 ‘Bubble’로 불리던 요소가 “Rename bubbles => cards” 커밋을 통해 ‘Card’로 변경되었습니다. ‘Pop’ (거품 완료)은 ‘Closure’ (카드 닫기)가 되며, 놀이 같은 메타포에서 실제 작업 관리 용어로 전환되었습니다.

  • 2025년 9월-11월: ‘Column’ 모델이 추가되면서 Fizzy는 칸반 보드 형태로 완성되었습니다. ‘Project’는 ‘Bucket’을 거쳐 ‘Collection’이 되고, 최종적으로 ‘Board’로 명칭이 확정되었습니다. 최종 데이터 모델은 Cards → Columns → Boards → Accounts 계층 구조를 갖게 되었습니다.

5. 제거된 기능 및 실험

  • Fizzy Ask: Claude 기반의 AI 비서 기능은 추가되었다가 결국 제거되었습니다. 이는 아마도 MCP(Model Context Protocol)를 통한 보다 근본적인 AI 통합 방식으로 대체된 것으로 보입니다.

  • Reactions: 카드 및 댓글에 대한 이모지 반응 기능은 추가-제거-재추가 과정을 거치며 개발팀 내의 건강한 논쟁을 보여주었습니다.

  • Custom Views & Workflows: 복잡성을 줄이고 단순성을 추구하기 위해 제거되었습니다.

  • MCP Branch, Mobile Column View, SQLite Support: AI-native 통합, 모바일 컬럼 탐색, 데이터베이스 유연성 등 다양한 실험적 시도가 있었습니다.

6. 오픈 소스 전환

  • 2025년 11월 28일: 18개월간의 개발 끝에, 독점적인 SAAS 기능이 별도의 Gem으로 분리되고, Fizzy는 “Initial README and LICENSE” 커밋과 함께 오픈 소스로 공개되었습니다.

결론

Fizzy의 개발 스토리는 '구축을 통한 발견'의 전형적인 사례를 보여줍니다. 팀은 처음부터 칸반 보드를 만들 계획이 아니었지만, '바람막이 유리의 얼룩'에서 시작하여 반복적인 개발 과정을 통해 제품의 진정한 정체성을 찾아냈습니다. 이는 이름이 진화하고(Splat → Bubble → Card), 삭제가 중요한 기능이며, 아키텍처가 끊임없이 적응하고, DHH의 철학(빈혈성 코드 제거, 최신 Rails 사용)이 코드에 반영되는 과정을 명확히 보여줍니다. 궁극적으로 디자인이 브랜딩과 명명에 영향을 미쳤으며, 오픈 소스 전환을 위해 SAAS 기능 분리가 필수적이었음을 시사합니다. Fizzy의 Git 히스토리는 8,152개의 커밋과 25명 이상의 기여자가 참여한 18개월간의 여정을 통해, 창작 행위 자체가 제품의 정체성을 형성하는 마스터클래스임을 입증합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!