본문 바로가기

IT/Hot Issue, Services

MetaBBS 프로젝트의 역사

약 1년여 전―그러니까 아마 작년 8월 정도였을 거다―부터 시작한 웹프로그램 프로젝트가 바로 MetaBBS다. 원래 디토군님이 RubyBBS라는 이름으로 ruby 언어를 사용, MVC 패턴을 적용한 게시판을 하나 만들다가 그만두었던 것을 알게 되어, 보다 많은 사람들이 손쉽게 접근할 수 있는 PHP로 가는 게 어떻겠냐고 제의하여 프로젝트가 시작되었다. 프로젝트 이름을 그대로 RubyBBS로 갈까 하다가, 실제 사용되지 않은 언어 이름이 들어간 것은 좋지 않다고 생각했다. 그래서 마침 Semantic Web이니 Meta 정보니 하는 얘기들이 많이 나오던 걸 감안해 MetaBBS로 이름을 지었는데, 지금 와서 생각해보면 상당히 맘에 드는 이름이다. (우선 Google 검색 결과에서 겹치는 이름이 거의 없다!)

처음에는 내 개인 서버(비슷한 시기에 운영하기 시작했다)에 subversion 저장소만 하나 만들어서 썼었다. 그러다가 올해 초 Tattertools 1.0이 오픈소스화되고 trac을 사용한 dev.tattertools.com이 오픈하면서 TNF에 본격적으로 참여하게 되었는데, 이때 trac을 보고 굉장히 편리한 툴임을 알 수 있었다. 바로 MetaBBS 프로젝트에도 도입하였고, 처음엔 dev.daybreaker.info/metabbs라는 주소로 운영하였다.

사실 MetaBBS에만 집중해서 며칠 붙잡고 프로그래밍하면 굉장히 빨리 업그레이드가 되었겠지만, 프로젝트가 너무 느슨하게 진행된 탓도 있고, 나를 포함해 개발자들이 일상에 쫓기다보니 어떤 때는 거의 방치 상태에 가까워지기도 했었다. 그러다가 한 차례 전환기(?)를 맞게 된 건 KLDP CodeFest였다. 6월 초쯤이었나, 5월 말이었나.. 정확한 기억은 안 나지만 그때 MetaBBS라는 이름으로 팀을 만들어 참가했고, CN님, lacovnk님, 서상현 선배 등과 함께 하루 날밤을 새면서 집중적으로(특히 서상현 선배의 도움이 컸다) 개발할 수 있었다. (이날 하루 동안 svn 저장소에 커밋된 게 그 전까지 커밋된 양과 비슷할 정도? -_-)

그러다가 한 차례 위기(..)를 맞게 되는데, 지난 여름방학 때 내가 유럽여행 출발하기 이틀 전(.....)에 개인 서버가 뻑나면서 2주간의 유럽 여행 내내 서버 복구가 안 되고, 그 후로도 내가 학교에 다시 내려오기까지 며칠 동안 접속 불능 사태에 빠진 적이 있었다. 안 그래도 시험기간만 되면 폭주하는 도서관(서버를 둔 동아리방이 도서관에 있었음) 컴퓨터 이용자들로 인해 잦은 IP 충돌이 발생해왔던 터였고, 이 사건을 계기로 IDC에 전용 서버를 마련하게 되었다. (물론 MetaBBS 전용은 아니고.. 이것저것 다양한 용도로 쓰는 개인 서버이나, 현재 서버 사양에 비해서 돌아가는 것이 적은 편이라 여유있는 상태.) 그후로는 아주 안정적으로 프로젝트가 운영되고 있다.

10월부터는 좀더 개발에 박차를 가하기 위해 릴리즈 주기를 정했다. 그런다고 해도 개발 속도가 특별히 빨라지진 않았지만, 당면한 해결 과제와 그렇지 않은 것들을 좀더 명확히 구분하고 프로젝트의 효율성을 높이는 데에는 도움이 되었다.

사실 올해 초쯤 GRBoard라는 프로젝트를 알게 되어 관심을 가지고 지켜봤었는데(실제로 홈페이지 알바 때 써보기도 했다), 아무래도 맘에 안 드는 부분들이 있었다. 웹표준을 준수하고 있었지만, 최신 서버 환경과의 호환성도 좋았지만, 뭔가 확장성이 뛰어나지 않은 듯한 느낌. 사실 MetaBBS의 코어가 한창 개발 중이었을 때 내가 개발에 직접 참여한 부분은 매우 적었다. 오히려 배운 게 더 많다고 해야 될 것이다. 그러나 나중에 필요에 의해, 또 의무감에 의해 소스를 들여다보았을 때, 굉장히 쉽게 추적해들어갈 수 있었고 상당히 깔끔한 구조를 유지하고 있었다. 물론 아직도 개선할 여지는 많지만, MetaBBS 개발 과정의 80%가 refactoring이라고 볼 수 있을 정도니 말이다.

한편, TNF에 참여하면서 접한 Tattertools 소스는 그야말로 방대했다. inureyes님의 말에 의하면, 하루에 30분씩 code reading을 했을 때 두 달(....)이면 소스 전체를 다 볼 수 있다고 한다. 게다가 소스가 매일 변경되고 계속 늘어나고 있다. 물론 Tattertools가 그렇게 방대한 소스를 가지게 된 건 거의 만능에 가까운 블로깅 툴이기 때문이다. 하지만 그만큼 버그가 많고 QA 과정이 어렵다는 단점이 있다. MetaBBS는 단순성·유연함을 모토로 하고 있고, 코드도 계속 그런 방향으로 개발되어왔기 때문인지 버그가 있어도 상당히 쉽게 추적할 수 있는 편이다. (다만 MVC 패턴에 익숙하지 않으면 안드로메다에 빠질지도. -_-)

그러는 사이, MetaBBS가 서서히 알려지기 시작하면서 의외의 곳에서 MetaBBS를 사용하기 시작했다. 특히 에이콘 출판사의 홈페이지(각 도서별 토론방)에서 사용된 것은 이례적이었다. 사용 방식도 Ajax를 통해 게시판 html을 통째로 가져오는 방식으로 독특했다. (개발자인 우리도 미처 생각지 못했던 방식의 응용이었다) 이 외에도 몇 군데에서 사용되고 있는데 그 목록은 MetaBBS 위키를 참고한다. 다만 대부분의 사이트에서 아직 제대로 된 documentation이나 manual이 없는 관계로 iframe으로 임베딩하는 방식을 쓰고 있다는 점이 다소 아쉽다. (노프레임 방식으로 만들 수 있도록 site_manager를 지원하고 있으나 사용법을 아는 분이 많지 않은 듯.)

어쨌거나, 어떤 프로그램의 개발자로써 그 프로그램이 점점 인정받고 널리 퍼지는 것은 기쁜 일이다. 내가 보기엔 아직 한참이나 모자란 것 같은데도 의외로 사람들의 평이 괜찮은 것 같다. (하지만 개발속도가 너무 느리다는 데는 자타가 동의함 -_-) 앞으로 멋진 프로그램으로 남을 수 있도록 계속 노력해야겠다.