GitRoot(깃루트)는 단일 바이너리(binary)로 Git 저장소와 접근 권한을 관리하며, 이슈, 보드, 브랜치 병합, 웹 인터페이스 같은 추가 기능은 독립형 플러그인(plugin)으로 조합하는 소형 Git 포지(forge)입니다. 기존의 복잡한 Git 호스팅 솔루션과 달리, 코드뿐 아니라 이슈, 병합 요청, 보드 등 모든 데이터를 일반 파일로 Git 저장소에 직접 저장하여 별도의 데이터베이스나 숨겨진 저장소에 의존하지 않는 것이 특징입니다.
GitRoot는 저장소 생성과 접근 권한 관리를 기본 기능으로 제한하고, 나머지 기능은 플러그인으로 제공하여 사용자가 필요한 기능만 선택적으로 설치할 수 있도록 합니다. 예를 들어, 웹 인터페이스 없이 보드 기능만 사용하거나, 프로젝트에 특화된 기능을 직접 플러그인으로 개발하여 추가할 수 있습니다. 권한 관리는 각 저장소의 `.gitroot/users.yml` 파일과 브랜치(branch)별 쓰기 권한을 통해 이루어지며, 기본 브랜치에는 허용된 사용자만 푸시(push)할 수 있습니다. 현재 알파 버전으로 저장소, 사용자, 플러그인, SSH Git 명령, HTTP 조회를 지원하지만, 프로덕션(production) 용도로는 아직 적합하지 않습니다. 1.0 버전까지 파일 단위 권한, HTTP Git 명령, 그룹 관리, 플러그인 API 안정화 등을 목표로 개발 중입니다.
GitRoot의 가장 큰 의미는 개발자가 프로젝트의 특성과 작업 방식에 맞춰 '나만의 Git 포지'를 자유롭게 구축하고 수정할 수 있는 유연성을 제공한다는 점입니다. 이는 기존의 거대 Git 호스팅 서비스들이 제공하는 고정된 워크플로우(workflow)에서 벗어나, 개발팀이 원하는 방식으로 개발 환경을 최적화할 수 있는 기회를 줍니다. 또한, 모든 데이터를 Git 저장소 내 일반 파일로 관리함으로써, 데이터 주권(data sovereignty)을 확보하고 특정 서비스 제공업체에 대한 종속성을 줄일 수 있습니다. 이는 장기적으로 개발 생태계의 다양성과 혁신을 촉진할 잠재력을 가지고 있습니다.