오픈소스 SW 프로젝트 커뮤니티의 개념 및 개요
- 성공적인 OSS 프로젝트에는 폭넓은 사람들이 참여하는 커뮤니티가 형성되어 있음.
- OSS 커뮤니티는 다양한 역할, 능력, 참여 정도, 책임감을 가진 구성원으로 조직됨.
- 주요 구조와 요소, 특성을 포함.
오픈소스 SW 프로젝트의 이해당사자들
양파 모델 (Onion Model)
오픈소스 소프트웨어 프로젝트는 주로 애드혹 형태로 구성되며, 대부분의 커뮤니티는 '양파 모델'을 따른다. 이 모델에서는 프로젝트 개발 팀이 중심부에 위치하며 다음과 같은 구조를 가진다:
- 핵심 개발자 (Core Developers): 프로젝트의 관리와 리더십을 담당하며, 모든 중요한 의사 결정을 주도한다.
- 역할 상승의 프로모션 전략: 커뮤니티 내에서 역할을 맡은 사람들의 책임과 역할이 세분화되어, 엄격한 계층적 조직처럼 보일 수 있으나, OSS 커뮤니티에서는 이를 분업의 확장으로 인식한다.
커뮤니티 구성
OSS 프로젝트 커뮤니티는 다음과 같이 구성된다:
- 코어 멤버 (Core Members): 프로젝트의 핵심 멤버로서 주요 전략적 의사 결정 권한을 가진다.
- 액티브 멤버 (Active Members): 프로젝트의 주요 활동 멤버로서 정기적으로 프로젝트에 기여하며 버그 수정, 기능 개발 등을 담당한다.
- 페리페럴 멤버 (Peripheral Members): 프로젝트에 주변적으로 참여하는 멤버로서, 때때로 기여하며 커뮤니티의 일원으로서 프로젝트의 일부 역할을 수행한다.
코어 멤버 (Core Members)
- 프로젝트 소유자 (Project Owner):
- 프로젝트는 주로 소유자의 아이디어에서 시작되며, 이들이 OSS 프로젝트의 비전을 확립한다.
- 프로젝트의 기술적 및 비기술적 방향에 대한 의사결정을 수행한다.
- 라이선스 체계를 관리하고, 프로젝트의 지속 가능한 비즈니스 모델을 수립한다.
- 프로젝트에 대한 대부분의 역할과 책임을 담당한다.
- 코어 개발자 (Core Developers):
- 주요 전략적 의사 결정 권한을 가지며, 프로젝트 결과물에 대한 책임을 진다.
- 프로젝트 진행에 따라 수가 변할 수 있으며, 코드 승인 권한을 가진다.
- 각종 위원회를 구성하여 프로젝트의 기능 결정 등을 담당한다.
액티브 멤버 (Active Members)
- 액티브 개발자 (Active Developers):
- 정기적으로 버그를 수정하고 새 기능을 개발한다.
- 프로젝트의 아키텍처와 소스코드에 대한 폭넓은 이해가 필요하다.
- 버그 수정자 (Bug Fixers):
- 보고된 버그를 수정하며, 프로젝트의 소스 코드 이해가 필요하다.
- 특별한 권한은 없지만, 액티브 개발자에게 패치를 제출할 수 있다.
페리페럴 멤버 (Peripheral Members)
- 페리페럴 개발자 (Peripheral Developers):
- 프로젝트에 산발적으로 참여하며, 때때로 중요하지 않은 버그 수정이나 새 기능을 개발하여 기여한다.
- 버그 및 문제 보고자 (Bug and Problem Reporters):
- 버그나 문제점을 확인하고 보고한다.
- 코드 리더 (Code Readers):
- OSS의 사용자로서 소스코드에 관심을 가지고 이를 학습하며, 검토와 논평을 수행할 수 있다.
- 액티브 유저 (Active Users):
- OSS 프로젝트 관련 포럼에 참여하며, 버그 보고자 역할을 수행하고 요구사항 도출 및 테스팅에 참여한다.
- 제휴 단체나 기업 (Affiliated Organizations or Businesses):
- 재정적 후원, 비즈니스 개발, 프로모션 등의 다양한 지원을 제공한다.
리더십 모델
- 군주제 (Monarchical): 한 명 또는 소수의 리더가 중심이 되어 프로젝트를 이끔.
- 연방제 (Federal): 책임과 권한이 프로젝트의 코어 멤버들 사이에 보다 평등하게 분산됨.
거버넌스 프로세스
- OSS 프로젝트의 거버넌스는 주체적인 행위자들이 협의와 합의 과정을 통해 정책을 결정하고 집행하는 시스템.
- 거버넌스 프로세스의 종류: 멤버십 승인, 멤버쉽 프로모션, 분업, 기술적 의사 결정
오픈소스 SW 프로젝트의 당면 문제점
지리적으로 분산된 개발
- 다문화적 팀 구성의 어려움:
- OSS 프로젝트 커뮤니티는 광범위하고, 다양하며, 분산된 특성을 가지고 있어 직접적인 상호작용이 어렵다.
- 언어, 관습, 시간대의 차이로 인한 의사소통 문제가 발생한다.
모듈화된 코드 개발
- 고도의 모듈화:
- 분산되고 자발적인 OSS 개발 환경에서 높은 수준의 모듈화된 형태로 개발이 진행된다.
의견과 목적의 이질성에 따른 분기(Forking)
- 분기의 가능성:
- 협력과 의사소통의 어려움으로 인해 의견과 주장의 차이가 커지면 서로 다른 프로젝트로 분기할 수 있다.
- 예: NetBSD와 FreeBSD의 분기는 버클리 4.3BSD로부터 파생되었다.
무임승차 (Free-Riding)
- 기여 없는 이득:
- 개인이 OSS 프로젝트로부터 도출된 코드, 문제 해결 방법, 알고리즘, 디자인 등에서 경험을 쌓고 이득을 보지만, 실제로는 아무런 기여를 하지 않는 문제가 있다.
코드의 복잡성
- 유지보수의 어려움:
- 다수의 개발자에 의해 권장되지 않는 코딩 스타일로 인해 베이스 코드의 디버깅 및 유지 보수가 점차 어려워진다.
- 코드 리팩토링이 필요하다.
문제 해결을 위한 방법들
- 자유 형식의 논의 및 토론:
- 이메일 등을 활용한다.
- 이슈 트래킹 시스템:
- 예: Redmine, Mantis, Bugzilla
- 메일링 리스트:
- 내용을 여러 명에게 보낼 목적으로 사용되는 전통적인 방법.
- 뉴스 그룹:
- 유즈넷 시스템을 활용한 뉴스그룹 사용.
- 채팅방:
- 직접적인 의사소통을 위해 활용한다.
- 위키:
- 문서화와 정보 공유를 위해 사용된다.
오픈소스 SW 프로젝트 커뮤니티의 확대 방안
일반적인 이점
- 참여자 증가의 이점: OSS 프로젝트에 참여자의 수가 많다는 것은 프로젝트에 다양한 기술과 아이디어가 투입되고, 더 많은 혁신과 문제 해결이 가능해진다는 이점을 제공한다.
커뮤니티 확대를 위한 구체적인 전략
- 마케팅 및 홍보를 통한 신규 멤버 영입
- 프로젝트의 가치와 이점을 널리 알려 지속적으로 신규 멤버를 유치한다.
- 기여에 대한 인정과 상벌제도(Reward & Penalty) 활용
- 멤버들의 기여를 명확히 인정하고, 그에 따른 보상 및 필요시 제재를 적용하여 활동을 장려한다.
- 공유된 코드 저장소 사용
- 예를 들어, GitHub과 같은 공유된 코드 저장소를 사용하여 코드의 접근성과 협업을 용이하게 한다.
- 코드 정제
- 새로운 개발자들이 보다 쉽게 프로젝트에 적응할 수 있도록 코드를 정제하고, 이해하기 쉽게 만든다.
- 문서화의 중요성
- 프로젝트 관련 문서를 체계적으로 관리하여 새로운 참여자가 필요한 정보를 쉽게 찾을 수 있도록 한다.
- 모듈화된 구조
- 작업을 쉽게 분담하고 관리할 수 있도록 프로젝트를 모듈화된 구조로 설계한다.
이러한 전략들은 오픈소스 프로젝트의 성장과 발전을 촉진하는 데 중요한 역할을 하며, 커뮤니티의 지속적인 확장과 활성화에 기여한다.
'오픈소스SW' 카테고리의 다른 글
오픈소스SW와 사유SW 프로젝트 (0) | 2024.04.27 |
---|---|
오픈소스SW 개요 (1) | 2024.04.21 |