정도가 되겠네요.
CodePlex는 이미 많은 유용한 프로젝트들을 배출했는데요, 대표적으로 ASP.NET AJAX에 정식으로 추가된 AJAX Control Toolkit 프로젝트가 있죠.

기본적으로 CodePlex는 오픈 소스 프로젝트를 지원하기 위한 사이트이지만 소규모 IT 기업이라면 선뜻 접근하기 어려웠던 TFS를 미리 경험할 수 있다는 점에서 작은 프로젝트를 CodePlex를 활용하여 진행한다면 많은 경험과 관리적인 이점을 얻을 수 있을거라고 생각해요.
1. 계정 생성
먼저 http://codeplex.com에 가서 새 계정을 발급합니다.
계정을 등록하면 입력한 E-mail 주소로 확인 메일이 한통 날라오니 꼭 확인해 주세요.
2. 새 프로젝트 생성
다음, CodePlex홈페이지에 가서 다음과 같이 새 프로젝트를 생성합니다.
제목과 URL은 나중에라도 바꿀 수 있지만 신중하게 선택하는게 좋겠죠? Description은 추후 프로젝트를 공개하고 많은 사람들을 끌어들일 때 중요한 요소가 되니 프로젝트의 목적, 목표 등을 명확하게 적어줘야해요. 만약 세계의 개발자들과 함께 하고 싶다면 당연히 영어로 설명을 적어야 겠고, 만약 한국어만 사용한다면 간단하게 한국어 전용이라는 안내를 붙여주는게 좋을 거에요.
Dr.Evil의 EvilPlan 프로젝트에 오신것을 환영합니다. :D
여기에서 프로젝트의 상세한 정보를 수정하고 프로젝트의 라이선스 정책을 설정할 수 있죠.
※프로젝트 공개에 대하여
CodePlex에서 만든 프로젝트는 기본적으로 모든 사람에게 공개할 것을 전제로 이 모든 서비스를 제공하고 있어요. 처음 프로젝트를 만들면 프로젝트의 기반 사항을 작성하기 위한 30일의 시간이 주어지는데요, 만약 30일이 경과되었는데도 [Publish This Project]를 선택하여 프로젝트를 공개하지 않으면 프로젝트는 자동으로 삭제되므로 주의하세요.
참고로 CodePlex가 제공하는 서비스의 조건은 아주 심플해요. 정확한 내용은 여기를 확인.
간단하죠? :)
3. 멤버 관리
다음과 같이 People->Manage Team 메뉴에서 함께 작업할 멤버를 추가할 수 있어요.
여기에서 추가되는 멤버는 Contributor(우리말로 뭐가 좋을까요? 기여자? 공헌자? 공동작성자?)로 개발의 핵심 인력이 되죠. 각 멤버는 Developer(개발자)와 Coordinator(관리자?)로 구분되는데 최초 프로젝트 생성자만이 프로젝트 삭제나 라이선스 정책등을 편집할 수 있죠. 여튼 멤버는 사용자 이름만으로 추가가 가능하고 추가된 사용자는 자신이 참여하고 있는 프로젝트 목록에 이 프로젝트가 보이게 되죠.
4. 이슈 트래킹
TFS에서의 개발은 일반적인 개발과는 약간 다른 순서로 이루어지는데요, 멤버 중 한 사람이 작업(Work Item)이라고 하는 어떤 이슈(개발, 기능, 버그, 작업)을 제안(Propose)하면 다른 멤버들이 이 제안에 찬성(Vote)하고 관리자(Coordinator)는 이 제안을 승인하고 작업할 사람을 할당(Assign)하게 되며, 작업을 할당 받은 개발자(Developer)는 해당 이슈를 처리하게 되죠.
저도 TFS에 대한 전문가는 아니므로 좀 더 큰 규모의 개발을 원한다면 웹이나 마이크로소프트를 통해서 공부를 할 필요가 있을거에요.
이슈 트래킹은 Issue Tracker메뉴에서 가능하고 Create New Item메뉴를 사용하여 웹에서 직접 이슈를 추가할 수 있어요. Work Item 정보를 주요 정보를 좀 더 자세히 알아보자면,
Status : 작업의 진행 상태를 나타냅니다.
- Proposed : 제안됨. 문제점, 기능, 작업 등을 제안한 상태로 아직 시작되지 않은 상태
- Activate : 진행중. 제안된 작업이 작업자에게 할당되어 처리중인 상태
- Fixed : 제안된 작업을 수정하였지만 아직 완료되지 않은 상태
- Closed : 제안된 작업이 완전히 처리되어 완료된 상태
Type : 작업의 종류를 나타냅니다.
- Feature : 더 추가하고 싶은 기능
- Issue : 버그, 문제점, 개선 사항에 대한 작업
- Task : 프로젝트에서 꼭 진행해야 할 작업
Impact : 중요도를 말합니다. Low, Medium, High로 구분됩니다.
Release : 이것을 완료한 멤버를 말합니다. 아직 프로젝트가 Release되지 않았으므로 나오지 않습니다.
Assigned To : 이 작업을 처리할 멤버를 지정합니다. 특별히 지정하지 않을 수도 있습니다.
Component : 프로젝트 소스코드 내의 컴포넌트를 지정합니다.
이렇게 제안된 이슈는 멤버들의 투표를 통해 우선 순위나 중요도를 결정할 수 있고 충분히 필요성이 있다고 생각되는 이슈는 개발자들에게 할당되거나 혹은 자신이 작업을 선택하여 진행할 수 있죠.
5. Visual Studio 2008 에서 Team Explorer 2008 사용하여 소스 제어하기
이제 VS 2008로 TFS에 접속하고 작업할 소스 코드를 만들어야 하겠죠. 먼저 VS에서 접속할 TFS의 정보를 알아야죠.
Source Code->Visual Studio Team Explorer에 보면 Visual Studio에서 접속해야 하는 TFS의 정보가 나와 있어요.
다음, VS에서 Tools->Connect To Team Foundation Server... 메뉴를 선택하고,
CodePlex에서 알려준 정보대로 입력하면 TFS 서버가 추가돼요. CodePlex에 접속할 때 주의점은 사용자 이름이 snd\사용자이름_cp 라는 점인데요, 처음에 이게 헤깔려서 접속을 실패할 때가 한두번이 아니었죠.
서버에 접속하면 자신이 참여하고 있는 프로젝트 목록이 보이죠? 선택하고 OK
서버에 접속하여 프로젝트 선택까지 완료되면 Team Explorer에 접속된 TFS 및 프로젝트의 목록과 프로젝트에서 할 수 있는 것들이 보이죠. 혹시 Team Explorer가 보이지 않는다면 View->Team Explorer 메뉴를 선택하거나 Ctrl+\,M을 누르면 보일거에요. Team Explorer에서 먼저, Source Control을 더블클릭해보면,
현재 프로젝트에 추가되어 있는 소스 코드를 볼 수 있는데요, 당연히 지금은 아무것도 추가되어 있지 않겠죠? 여기에서 만약 프로젝트에 뭔가 추가가 되어 있었다면 Get Lastest Version으로 마지막 소스 버전을 가져올 수 있어요. 일단 한번 해보죠.
그러면 TFS에서 받아올 소스코드를 저장할 경로를 묻는데요, 선택하면...
위와 같이 진행 화면이 나오고 아무 것도 바뀐건 없을거에요. 다음으로 새 프로젝트를 만들어보죠.
프로젝트를 만들었으면 해당 프로젝트를 소스 코드 컨트롤(소스 트리라고도 부르죠)에 추가해야 하죠.
위와 같이 Add Files 버튼을 선택하고 추가할 폴더를 선택한 후
확인하면 소스 코드 컨트롤에 해당 소스들이 추가가 되는 걸 볼 수 있죠.
소스 컨트롤에서 추가된 새 소스의 솔루션 파일을 열어 보면 이미 열려있는 솔루션과 소스 컨트롤의 소스를 통합하겠냐고 묻는데, Yes를 누르고,
위와 같이 솔루션을 선택하고 Bind 버튼을 누르면
Solution Explorer에서 보이는 소스들의 옆에 + 아이콘이 붙어있는 것을 확인할 수 있어요. 소스코드 컨트롤에 새로 추가되었다는 의미죠.
Pending Changes 탭을 보면 현재 소스 컨트롤에서 변경된 파일들의 목록을 볼 수 있고 Comment에 메시지를 남긴 후 Check In 하여 TFS에 변경 사항을 저장할 수 있어요.
Check-In 하면 위와 같이 Solution Explorer의 아이콘도 바뀌고 Changes 목록도 비워지죠.
소스 컨트롤에서 제어되고 있는 소스에 무언가 변경이 생기면 위와 같이 자동으로 Check Out되어 편집 모드로 들어가게 되는데, 기본적으로 Share 모드로 편집하게 되므로 동시에 다른 사용자도 이 소스를 편집할 수도 있게 되죠.
만약 그런 상황을 방지하고 싶다면 위와 같이 Lock을 선택하여 해당 소스를 나만 편집할 수 있는 상태로 변경할 수 있어요.

6. Visual Studio 2008 에서 Team Explorer 2008 사용하여 이슈 트래킹하기
Team Explorer는 이슈 트래커도 통합하고 있죠. 프로젝트를 만들었을 때 추가된 Work Item을 한번 볼까요?

위와 같이 Team Explorer에서 All Work Items를 더블클릭하면 현재 트래킹되고 있는 Work Item의 목록이 나오죠.
이 Work Item을 할당받아서 작업하려면 먼저 Status를 Active로 변경하고 작업을 시작했다는 코멘트를 남겨주고 저장하면 돼요. 물론 이 과정없이도 소스를 수정하거나 하는 게 가능하지만 팀끼리 협업을 하기 위해서는 반드시 이슈 트래커를 통해 확실히 자신의 작업에 대해 기록을 남기는게 좋겠죠. TFS에서는 어떤 소스를 수정할 때 반드시 작업 할당을 받아야만 수정할 수 있도록 할 수도 있다는데 아쉽게도 자세한 사용법까지는 모르겠네요.
여튼, 이렇게 트래킹된 정보는 웹에서도 실시간으로 확인할 수 있어서 개발자 뿐만 아니라 관리자들에게도 보여줄 수 있기 때문에 보다 투명한 프로젝트를 만들 수 있죠.
또한 Check-In 된 소스역시 마찬가지로 웹에서도 확인할 수 있고 다운로드 받아서 테스트해볼 수 있게 돼요.
저도 CodePlex를 통해 처음으로 TFS 팀시스템의 일부를 맛보고 있고 이걸 잘 활용한다면 멋진 오픈 소스 프로젝트 혹은 소규모 프로젝트를 진행할 수 있을 거란 생각이 들어요.
혹시 TFS에 대해 알기 쉽게 정리된 곳이 있다면 알려주시고 CodePlex로 실버라이트 프로젝트를 진행하고 싶은 분은 저에게도 알려주세요. 참고로 제 CodePlex아이디는 gongdo에요. ^^