CUBRID 오픈 소스 프로젝트(이하 프로젝트)에 코드를 기여하고 싶다고 문의하는 개발자가 줄을 잇는 사태에 대비하여 블로깅을 미리 해 본다.
프로젝트에서 할 수 있는 일은 아래와 같이 6가지이다. CUBRID 프로젝트 홈페이지에서 제공하는 메뉴와 일을 분류해 보면 다음과 같다.
1. 포럼 메뉴: 신규 개발 제안 이슈, 문서 등의 이슈, 토론 등 자유 게시 성격
- 관련 기능: 새로운 기능 제안하기, 사용자 문서 작성하기
2. 이슈 메뉴: 코드리뷰가 예상되는 이슈
- 관련 기능: 버그리포트하기, 코드리뷰하기
3. 코드 메뉴
- 관련 기능: 코드 기여하기
4. 다운로드 메뉴
이 중 많은 개발자들이 관심을 가지는 코드 기여하기에 대해서 살펴 보자.
프로젝트 멤버의 권한
프로젝트에 참여하기 위해서 꼭 멤버로 가입해야 하는가? 그렇지 않다. 2009년 4월 15일 현재 프로젝트 멤버와 비멤버는 권한의 차이는 없다. 가입을 하지 않더라도 프로젝트에 기여한 사람이 누군지 확인할 수 있도록 Nickname을 사용하면 좋겠다. Nobody 상태이면 기여한 사람이 누군지를 알 수도 없고, 해결한 이슈에 대해서 결과를 알려줄 수도 없기 때문이다.
프로젝트 멤버의 권한은 운영의 편의성을 고려하여 바뀔 수 있다. 이미 프로젝트를 시작하였을 당시의 멤버의 권한은 바뀌었다. 프로젝트에 참여하는 개발자 수와 성향에 따라 멤버의 권한도 편의성을 고려하어 바뀔 것이다.
멤버가 아니라도 이슈를 해결하고 코드 리뷰를 요청할 수 있다. 코드 리뷰가 끝나면 커미터가 소스 코드를 커밋하고 그 결과를 이슈 게시판에 알려 준다.
참여할 꺼리 찾기
관심이 있는 사람들이 꺼리를 찾기 위해서 헤매지 않도록 TODO List를 제공하고 있다. TODO List에는 현재 6가지 카테고리로 나누어져 있다.
1) 서스테이닝 이슈: 지금 개발되는 것 중 해결할 수 있는 것
2) 인터페이스 개발: 프로그래머들이 쉽게 사용할 수 있는 인터페이스 개발
3) 응용 포팅 및 개발: CUBRID를 기반으로 하는 시스템 개발
4) 설치 및 패키징 개선: 설치/제거하기 쉽게 개선
5) QA 테스트 개선: QA 할동을 개선(아직 공개되지 않았으니까 할 수 있는 것은 아님)
6) 기술문서 작성: 작업한 내용 혹은 공부한 내용을 문서로 정리
설명의 편의성을 위해서 서스테이닝 이슈였던 1389번 이슈를 해결해 보겠다. 해결하기로 결정한 이슈의 담당자를 본인의 아이디로 바꾼다. (예: 일동차렷?) 참고로, 지금은 이 이슈가 해결 상태이다. 또한 Windows에서는 실행할 수 없는 유틸리티이다.
수정할 부분 찾기
이슈를 읽고 수정할 포인트를 찾아야 한다. 이 이슈는 cubrid repl_agent/repl_server 유틸리티의 메시지를 바꾸는 것이 수정할 포인트이다.
프롬프트에서 "grep database-name . -r"을 사용해서 수정할 부분을 찾는다. (다른 방법들이 많이 있을 수 있지만, 가장 쉽게 쓸 수 있는 방법이다.) 이 결과에서 아래 내용을 알 수 있다.
1) msg/en_US/utils.msg 파일을 수정해야 함.
2) msg 디렉토리에 en_US, ko_KR.euckr, ko_KR.utf8 서브 디렉토리가 있으므로 수정할 파일이 3개임. (CUBRID는 언어의 확장성을 위해서 언어별로 메시지 파일을 분리시켜 두었다.)
먼저 msg/en_US/utils.msg 파일을 열어서 해당하는 부분을 수정한다. repl_agent 패턴을 검색해 보면 아래와 같이 바꿀 usage 로 보이는 부분을 찾을 수 있다.
29 cubrid utility, version %s usage: %s repl_agent <command> [args] Available command: start database-name [dba-password] stop database-name status |
이 부분을 이슈에서 요청한 대로 수정한다. repl_server 부분도 같은 방법으로 수정한다.
다른 로캘(locale)을 위한 msg 파일을 수정하고 파일을 열어서 수정해야 한다. 로캘을 같이 맞추지 않으면 한글이 제대로 보이지 않기 때문에, 수정하기 전에 LC_ALL 환경 변수를 적절하게 바꾼다. 나머지 2개의 파일은 수정할 부분을 영문으로 표기하지 않았으므로, msg/en_US/utils.msg 파일에서 해당하는 메시지 번호(위 출력한 내용을 보면 29가 보일 것이다. -> 28, 29)를 잘 적어 두었다가 한글 파일에서 찾는다.
빌드하기
수정을 다 했으면 빌드하고 제대로 수정이 되었는지 확인해 보자.
소스 다운로드 및 빌드 방법를 참고.
export CUBRID=/home/idjung/cubrid export CUBRID_DATABASES=$CUBRID/databases export CUBRID_LANG=en_US export PATH=$CUBRID/bin:$PATH |