Epiq: Git 기반의 로컬 우선 이슈 트래킹을 터미널로 가져오다

프로젝트 관리는 종종 번거로운 일처럼 느껴집니다. IDE와 무거운 웹 기반 SaaS 도구 사이를 끊임없이 전환해야 하기 때문입니다. 터미널에서 생활하는 개발자들에게, 티켓을 업데이트하거나 칸반 보드의 카드를 옮기기 위해 커맨드 라인을 떠나야 하는 마찰은 딥 워크(deep work)의 흐름을 깨뜨릴 수 있습니다.

Epiq를 소개합니다. 이는 버전 관리와 동일한 엄격함과 효율성을 프로젝트 관리에 적용하도록 설계된 터미널 네이티브 이슈 트래커입니다. Vim에서 영감을 받은 인터페이스와 분산형 Git 백엔드를 결합함으로써, Epiq은 이슈 트래킹 영역에 "개발자 경험(devX)"을 가져오는 것을 목표로 합니다.

핵심 철학: 로컬 우선 및 레포지토리 네이티브

Epiq은 이슈가 작업이 일어나는 곳에 존재해야 한다는 전제 위에 구축되었습니다. 중앙 집중식 서버에 의존하는 대신, Epiq은 repo-native입니다. 즉, 이슈가 Git 레포지토리 내에 직접 저장된다는 의미입니다. 이 아키텍처는 다음과 같은 즉각적인 이점을 제공합니다:

  • Zero SaaS Ceremony: 계정을 생성할 필요도, 구독을 관리할 필요도, 브라우저 탭을 계속 열어둘 필요도 없습니다.
  • Instant Interaction: 데이터가 로컬에 있기 때문에 편집, 필터링, 탐색이 커맨드 라인 속도로 이루어집니다.
  • Distributed Collaboration: 팀은 이미 코드에 사용하고 있는 동일한 Git 워크플로우를 사용하여 이슈 상태를 동기화하며, 메인 코드베이스에 간섭하지 않도록 격리된 worktree와 상태 브랜치를 활용합니다.

기술 아키텍처: 이벤트 소싱 및 충돌 해결

분산형 이슈 트래킹의 주요 과제 중 하나는 "머지 충돌(merge conflict)"입니다. 두 명의 개발자가 동시에 동일한 이슈를 업데이트하면, 전통적인 파일 기반 방식은 수동 해결이 필요한 Git 충돌을 일으킵니다.

Epiq은 event-sourced model을 채택하여 이 문제를 해결합니다. 이슈의 현재 상태를 단일 파일로 저장하는 대신, Epiq은 변경 사항을 불변의 이벤트 로그로 저장합니다.

"User-scoped append-only event logs prevents merge pain and converge in memory."

사용자가 상태를 동기화할 때, Epiq은 이러한 이벤트들을 결정론적으로 재생(replay)하여 보드의 현재 상태에 도달합니다. 이 방식은 시스템의 추적 가능성을 보장합니다. 즉, 일주일 전이나 일 년 전의 작업에 정확히 어떤 일이 일어났는지 검사할 수 있으며, 분산 상태와 관련된 수렴(convergence)의 고통을 크게 줄여줍니다.

사용자 경험: Vim에서 영감을 받은 흐름

"터미널 거주자"들을 위해, Epiq은 고밀도 ASCII 칸반 보드를 제공합니다. 인터페이스는 키보드 중심의 탐색을 위해 설계되었으며, 보드, 이슈, 스윔레인(swimlanes)을 탐색할 때 hjkl 이동을 사용합니다.

이 도구는 Vim과 유사한 커맨드 라인 인터페이스를 통해 작동하며, 사용자가 키보드를 떠나지 않고 작업을 수행할 수 있게 합니다:

  • :new issue [title]를 사용하여 작업을 생성합니다.
  • :filter [tag]를 사용하여 보드 뷰를 좁힙니다.
  • :sync를 사용하여 팀 전체의 분산 상태를 동기화합니다.

확장성 및 AI 통합

인간의 상호작용을 넘어, Epiq은 현대적인 에이전트 워크플로우를 위해 설계되었습니다. MCP (Model Context Protocol) server를 포함하고 있어, AI 에이전트가 예측 가능하고 구조화된 방식으로 이슈 트래커와 상상호작용할 수 있게 합니다. 이를 통해 AI 도구들이 커용 프로젝트 관리 도구마다 별도의 커스텀 API 통합을 필요로 하지 않고도 현재 작업을 읽거나, 상태를 업데이트하거나, 백로그를 조회할 수 있습니다.

커뮤니티의 관점 및 과제

출시와 함께 "분산형 이슈 상태 문제에 대한 우아한 해결책"이라는 찬사를 받았지만, 커뮤니티에서는 더 넓은 조직적 맥락에서의 생용 가능성에 대해 몇 가지 비판적인 지점을 제기했습니다:

The "Devs for Devs" Gap

여러 사용자는 TUI가 개발자에게는 꿈과 같지만, 제품 관리자(PM)나 디자이너에게는 악몽이라는 점을 지적했습니다. 한 댓글 작성자는 다음과 같이 언급했습니다: "a TUI isn’t gonna cut it... I don’t think it’s organizationally viable to force everyone else in the terminal.

Data Coupling

이슈가 코드와 결합되어야 하는지에 대한 논쟁이 있습니다. 일부는 이슈가 코드와는 다른 속도로 진화한다는 점을 논로합니다. 이슈의 요구사항을 업데이트하는 것이 반드시 작업 진행 중(WIP)인 코드의 커밋과 푸시를 필요로 하지 않아야 합니다.

Tooling and Distribution

npm을 통해 설치하는 Node.js 기반 도구인 Epiq은, 단일 바이너리 배포를 선호하거나 Node 생태계를 완전히 피하고 싶어 하는 개발자들로부터 일부 반발을 받았습니다. 또한, 일부 사용자는 로컬 웹 서버 UI를 제공하는 것이 이상적인 절충안이 될 것이라고 제안했습니다. 즉, 로컬 우선 도구의 속도와 브라우저의 접근성을 모두 제공하는 방식입니다.

결론

Epiq은 프로젝트 관리를 개발 환경의 일급 시민으로 취급하려는 대大胆한 시보입니다. Git을 데이터베이스로 활용하고 이벤트 소싱을 채택함으로써, 중앙 집중식 트래커의 오버헤드를 제거하는 동시에 터미널을 선호하는 이들을 위한 고속 인터페이스를를 제공합니다.

Sources