내 첫 번째 오픈 소스 기여는 이전 유료 프로젝트에서 이전에 사용 했었고 크게 고통받지 않은 라이브러리에 대한 것이 었습니다. 처음 사용하는 동안 코드에서 버그를 발견하여 패치를 작성하고 프로젝트에 참여한 후 검토를 위해 제출했습니다.
약 8 개월 후 자유 시간을 보냈을 때 나는 프로젝트에 더 많은 기여를함으로써 환원하고 개발 기술을 연구하기로 결정했습니다. 그래서 저장소를 복제하고 코드베이스에 익숙해지기 시작했습니다. 몇 주 동안 코드베이스에 작은 패치 수정 사항을 제출하고 기능 요청을 모니터링 한 후 프로젝트에 상당히 상당한 모듈을 추가하기 위해 기능 요청을 선택했습니다.
많은 개별 패치 수정을 생성하는 것은 중요한 개발에 지루한 작업이므로 저장소를 git hub의 분기에 복제하고 코드 펀치를 시작했습니다. 몇 주 후 수천 줄의 코드가 프로젝트 리더와 나에게 나머지 코드베이스와 일관되게 작동하는 방식으로 수정 프로그램을 라이브러리에 통합하고 테스트하는 작업을했습니다.
내가 많은 것을 배운 것은 귀중한 과정이었습니다.
- 시작했을 때 Git 사용법을 몰랐습니다. 결국 원격 추적 지점을 능숙하게 만들고 땀을 흘리지 않고 마스터 지점으로 병합하거나 리베이스 할 수있었습니다.
- VS 2008에서 시작하여 Linux 및 Monodevelop로 마이그레이션하여 코드 작성 작업을 끝냈습니다 (VS가 유니 코드 지연되고 줄 끝이 git에 너무 고통 스럽기 때문에). 그것은 당신이 * dows에서 할 수있는 일이 많지 않다는 것이 밝혀졌습니다.
- 나는 단위 테스트를 한 번도 해본 적이 없었습니다. Nunit은 사용할 케이크 조각이며 단위 테스트 작성은 매우 기초적인 것입니다.
- 나는 혀를 삼키고 인내하는 연습뿐만 아니라 듣는 법을 배워야했습니다. 관련된 모든 사람이 지식이 많고 (아마도 자신보다 더 많음) 전달이 아닌 물질을 기반으로 아이디어를 수용 / 거부 할 수 있기 때문에 오픈 소스 프로젝트에서 자신의 입장을 확고히 세우는 데 아무런 소용이 없습니다. 동시에 매우 겸손하고 보람이 있습니다.
- 내 코드의 큰 기초에 다른 숙련 된 개발자의 눈을 가진 것은 이전에는 고려하지 않은 내 스타일의 결함을 지적했습니다 (그리고 그의 코드에서 결함을 지적했습니다). 나를 위해, 자세한 설명과 함께 마법의 숫자를 사용하는 것보다 상수를 정의하는 것이 더 쉽고 더 쉽다는 것을 배웠습니다.
이 특정 프로젝트는 모든 수준의 네트워킹 프로토콜에서 네트워킹 패킷을 생성하고 디코딩하는 데 중점을 두었습니다. 저수준 네트워킹에 개인적인 관심이 있으므로 도메인에 대한 관심과 지식을 공유하는 다른 개발자와 토론하는 것이 좋았습니다.
발을 젖게하려면 이미 사용중인 프로젝트를 찾으십시오. 저장소를 복제하십시오. 버그를 수정하거나 단위 테스트를 추가 할 수 있는지 확인하십시오. 신선한 눈으로 다른 사람의 코드베이스를 보는 것은 위협적인 것처럼 보이지만 배우는 데 매우 귀중한 기술입니다. 패치를 제출하십시오. 처음에는 코드를 면밀히 조사해야합니다. 걱정하지 마십시오. 프로젝트 관리자의 신뢰를 얻는 것은 프로세스의 정상적인 부분입니다.
프로젝트와 함께 유능한 기준을 확립 한 후 관리자는 새로운 기능 제안, 기능 요청 구현과 같은 더 많은 책임 추구를 시작합니다.
주 오픈 소스 리포지토리 네트워크 (github, sourceforge, google code) 중 하나에서 이미 존재하는 프로젝트를 찾을 수 없다면 아직 사용하고 싶지 않은 앱을 생각하고 직접 시작하십시오.
겸손해질 준비를하고 추가 개정을 위해 일을 거절 할 것을 기대하십시오. 누구나 오픈 소스 프로젝트에 코드를 추가 할 수 있다는 신화는 완전히 잘못된 것입니다. 당신과 푸시 액세스 사이에는 항상 게이트 키퍼가 있습니다. 코드가 좋을수록 프로젝트 관리자의 신뢰를 얻음에 따라 장기적으로 코드가 자세히 조사되지 않습니다. 그것이 당신의 프로젝트라면, 당신은 그 게이트 키퍼가 될 것입니다.
최신 정보:
방금 그것에 대해 생각하고 많은 대답이 참조하는 프로젝트를 언급하지 않겠다는 것을 깨달았습니다. 알고 싶은 사람들은 SharpPcap 입니다. 수석 개발자 인 Chris Morgan은 매우 전문적이고 정통합니다. 그는 프로젝트를 관리하는 일을 끝내고 OSS 프로젝트를 성숙시키는 데 필요한 것에 대해 많은 것을 가르쳐주었습니다.
개인 시간 제약으로 인해 1 년 이상 코드를 제공 할 수 없었지만 여전히 스택 오버플로를 숨기고 SharpPcap에 대한 질문에 대답하여 여전히 포기하려고합니다.