회사에서 RoundUp을 잠시 쓴 적이 있습니다. 이게 제법 유명한 것이기는 하지만, 생각보다 너무 상태가 좀 그렇습니다;; 기본 기능에 너무 충실하다보니.. 이슈 트래커 외의 기능을 전혀 갖추고 있지 않고, 이슈 트래커 기능 자체가 단순한 듯 하면서도 복잡한데 속도가 또 엄청 느려서.. 오래 쓰기는 좀 그렇더군요.
그래서, 대체품으로 요즘 잘 나가는 오픈소스 프로젝트 관리 환경인 trac을 설치한지 이제 2주가 조금 넘어서고 있습니다. 2주동안 trac으로 프로젝트를 하면서 아주 즐거웠던 것을 생각해 보면, 사람을 기분 좋게 만들 수 있는 소프트웨어 중 하나임에는 분명한 것 같아서, 다른 분들도 써 보시라고 기능을 소개해 드립니다. 🙂
Trac
Trac은 subversion과 연계된 프로젝트 관리 도구입니다. 기본 이념이 minimalist를 표방하고 있기 때문에, 대부분의 기능이 돌아가기 위한 최소 스펙으로 구현이 되어 있습니다. 사실 디자인도 minimalist였으면 좀 거부감이 있었을텐데, 디자인은 아주 깔끔한 편입니다. 하여간 기본적으로 프로그램 전체가 파이썬으로 작성되어 있는데, CGI 모드와 tracd라는 전용 웹 서버 모드를 지원합니다. 저는 CGI 모드로 사용하고 있는데, 보통의 파이썬 CGI들이 엄청난 속도로 사용자들을 당혹케 하는 경향이 있지만, trac은 엄청나게 빠릅니다! 과연 이게 파이썬인가 믿기지 않을 정도입니다. 흐흐. 아무래도 C로 작성된 템플릿 라이브러리인 clearsilver를 깔고 있어서 그런게 아닌가 싶은데, 하여간 clearsilver외에도 sqlite를 DBMS로 사용하고, 저장소에 접근하기 위해서 python-subversion이 필요합니다.
문서 관리 및 대문 관리 – 위키
전체보기
trac은 텍스트가 들어갈 수 있는 모든 부분에 위키 포매팅을 사용하고 있습니다. 즉, 위키 페이지를 문서화를 위해서 쓸 수 있을 뿐만 아니라, 이슈 트래커의 본문이나 심지어 subversion 커밋 로그에서도 위키 포매팅이 지원됩니다. 문법은 모인모인과 매우 비슷하기 때문에, 많은 사람들이 어렵지 않게 익힐 수 있게 되어 있습니다. 그리고 [리비전]이나 #이슈번호같은 형식의 빠른 링크를 지원하기 때문에 커밋 로그와 이슈, 위키 간의 아주 긴밀한 상호 링크가 가능합니다.
물론 위키에는 첨부파일 올리는 것이 가능해서, 문서 및 리소스 관리용으로 아주 유용합니다.
변경 사항 한 눈에 살펴보기 – 타임 라인 (시간 순 이력)
전체보기
trac은 timeline이라는 독특한 페이지를 또 제공하고 있는데, 보통 위키에서는 RecentChanges로 페이지 이름이 붙는 것과 비슷한 역할을 합니다. timeline은 위키 페이지들의 변동사항 뿐만 아니라 커밋 로그나 이슈 트래커 변동사항까지 시간 순으로 볼 수 있도록 하고 있어서 전체의 변동 사항을 한 화면에 볼 수 있어서 흐름을 파악하기 아주 좋습니다.
진행 사항 단계별 파악! – 로드맵
전체보기
trac에서는 subversion 리비전과는 별도로 version과 milestone개념을 지원합니다. milestone을 따로 나눠 둠으로서 올라오는 이슈들 중에 각 마일스톤에서 해결되지 않은 것이 얼마나 남았는지, 얼마나 급한 것인지 한 눈에 알아볼 수 있도록 하고 있는데, 바로 그 상황을 볼 수 있는 곳이 Roadmap 메뉴입니다. Roadmap 메뉴는 컴포넌트별로 각 부분의 이슈들이 해결된 것이 얼마나 되는지 한 눈에 볼 수 있도록 예쁜 그래프로 표시해 줍니다.
버그 추적에는 필수~ 소스 둘러보기
전체보기
trac은 subversion과 아주 긴밀하게 연계가 되어 있기 때문에, 자체적으로 viewcvs같은 웹 인터페이스를 지원해 줍니다. 사실 이 기능은 trac의 주 기능도 아닌 편이긴 하지만, 오히려 viewcvs보다 기본적인 기능에는 아주 충실한 편이라서 거의 불편함이 없을 정도로 잘 만들어 두었습니다. annotate같은 기능이 빠진 것은 좀 아쉬운 편이지만, 리비전 지정한 채로 왔다갔다하기, 리비전 로그 보기, 소스 하이라이트 같은 것은 잘 지원되고 있으며 무엇보다 viewcvs보다 압도적으로 빠르다는 점이…. 흐흐
새로운 문제점 등록 – 티켓 올리기
전체보기
trac에서는 다른 곳에서"issue"나"problem report"라고 부르는 것을 자체적인 용어로"ticket"이라고 부릅니다. 그게 통상적으로 사용되는 용어인지는 모르겠지만.. trac에서는 일관적으로 통일해서 티켓이라고 합;; trac의 ticket 등록은 최상위 메뉴에 있을 만큼 주요된 기능 중의 하나인데, 버그 등록자는 꼭 trac 안의 인증된 사용자일 필요 없이 자기 메일 주소를 쓸 수도 있기 때문에, 아무나 등록하게 할 수도 있습니다.
티켓을 등록할 때에는 위키 포매팅을 쓴 본문도 가능하며, 치명도, 우선순위, 컴포넌트, 버전, 마일스톤 같은 것들을 명시해 줄 수 있습니다. 물론, 티켓 올린 다음에 답글을 달면서 상태를 바꾸는 것도 당연히 지원 됩니다. 흐흐
등록된 티켓들을 검색 – 리포트
전체보기
trac에서 report의 기본적인 용도는 등록된 티켓의 검색입니다. 티켓을 나열할 수 있는 갖가지 방법 들로 기본적으로 10개 정도를 제공해 주고 있습니다. (마일스톤별, 우선순위별, 담당자별, 해결되지 않은 문제들만 보기 등등..)
SQL이면 뭐든! – 사용자 지정 리포트
전체보기
trac의 기본 목표를 정말 완벽히 실현하고 있는 곳이라면 바로 사용자 지정 리포트 부분입니다. 사실 위에서 언급한 리포트도 모두 기본으로 세팅되어 있다 뿐이지, 사용자 지정 리포트와는 구분이 없습니다. 모든 리포트는 SQL 퀴어리와 제목으로 구성되어 있습니다.즉, SQL 퀴어리만 수정해 주면 페이지가 동적으로 마구 바뀐다는 말씀! 기본적인 trac의 데이터베이스 스키마만 파악을 하면 아름다운 리포트 페이지들을 번거로운 HTML 템플릿 작업 없이 SQL 만으로도 만들 수 있습니다. 위의 스크린샷은 제가 그냥 샤샤샥~ 해서 만든 커밋 로그에서의 사용자 이름 순위입니다. 흐흐 정말 간단!
이제 grep은 번거롭다! – 검색
전체보기
흐흐 또다른 trac의 진짜 매력 포인트. 바로 검색입니다. 이 검색은 위키 페이지나, 이슈 트래커 본문에서만 검색이 되는 것이 아니라, 커밋 로그나 각 수정사항(위키 페이지, 이슈 등)의 짧은 커멘트에서 까지도 검색이 되기 때문에, 사실상 프로젝트와 관련된 대부분의 곳에서 검색을 해 주기 때문에, 뭔가 특별한 함수가 언급된 모든 곳을 찾고 싶다~ 할 때 grep으로 찾으며 고생하지 않아도 됩니다.
피할 수 없다!
이미 오픈소스 커뮤니티 들을 둘러 보면 trac을 도입하고 있는 곳이 엄청난 속도로 불어나고 있으며 오픈소스가 아닌 부분에서도 굉장히 많이 사용되고 있는 것을 발견할 수 있습니다. 파이썬에는 전혀 관심 없었던 사람들이 갑자기 파이썬을 깔다가 패키지 패치를 올리기도 하고, bittorrent에 이어서 또 다른 파이썬의 프로모션 소프트웨어가 될 것 같은 예감..