Skip to content

Guide 3.2 Contributing For Company

Haksung Jang edited this page Feb 1, 2021 · 1 revision

기업을 위한 오픈소스 기여 가이드

이 장에서는 오픈소스 프로젝트로의 기여를 고려하는 기업의 오픈소스 책임자가 알아야 할 내용에 대해 설명한다.

기업은 올바른 오픈소스 기여 문화 조성과 예기치 않은 법적 리스크를 최소화 하기 위해 오픈소스 기여에 대한 정책과 프로세스를 구축해야 한다. 

오픈소스 기여 전략 수립

기업은 오픈소스 기여 전략을 수립하여 (1) 오픈소스 프로젝트에 기여하려는 구성원에게 회사의 방침을 안내할 뿐만 아니라 (2) 오픈소스 기여 활동을 기업의 비즈니스 전략과 연계하여 경영진이 오픈소스 기여의 필요성과 정당성을 이해하는데 도움을 줄 수 있다.

오픈소스 기여 실행 계획 수립 시 고려 사항

비즈니스 목표와 연계된 오픈소스 기여의 목표와 전략을 수립한 후에는 이를 실행하기 위한 계획을 수립해야 한다. 이떄 고려해야 할 사항들은 다음과 같다. (https://todogroup.org/guides/participating/)

1. 기업에게 오픈소스 기여가 중요한 이유가 무엇인가?

오픈소스 기여가 기업의 비즈니스에 왜 중요한지에 대한 설득력 있는 주장을 준비해야 한다. 그래야 경영진을 설득하고, 적극적인 지원을 받을 수 있다. 이러한 준비 없이 기업이 오픈소스 커뮤니티에 참여하여 기여하는 문화를 만들어가는 것은 시작하기 조차 어려울 수 있다.

2. 기업이 전략적으로 사용하는 오픈소스 프로젝트가 무엇인가?

기업에서 비즈니스에 전략적으로 사용하는 오픈소스 프로젝트가 무엇인지 확인하라. 중요한 비즈니스 인프라일 수도 있고, 제품 릴리스 기능에 영향을 미치는 개발 및 배포도구, 제품 및 서비스에 중요한 기능을 제공하는 소프트웨어일 수도 있다.

3. 어떤 프로젝트를 주요 기여 대상으로 해야 하는가?

기업이 사용하는 모든 오픈소스에 기여를 고려하기 보다는 중요한 프로젝트에 집중하도록 하는 것이 필요하다. 물론, 중요한 프로젝트가 아니라고 해서 다른 프로젝트에 기여할 수 없다는 것은 아니다. 다만, 중요한 프로젝트에 기여 역량을 집중하는 것이 기업에 도움이 된다는 의미이다. 기업의 비즈니스와 제품 및 서비스에에 중요한 영향을 미치는 프로젝트를 주요 기여 대상으로 지정하라.

4. 이미 기여하고 있는 현황을 파악하라.

이미 구성원들이 자발적으로 오픈소스 프로젝트에 기여하고 있을 수 있다. 내부적으로 유지보수를 위해 생성한 패치를 업스트림에 기여하였을 수 있다. 이렇게 기업 내 오픈소스 기여에 관심과 역량이 있는 구성원을 파악하여 우선적으로 집중할 오픈소스를 결정한다.

5. 이미 전문가를 보유하고 있는가? 아니면 추가로 채용해야 하는가?

오픈소스 기여 역량을 갖춘 인재를 찾는 것은 중요하다. 기업 내 구성원 중에서 찾을 수도 있지만, 그렇지 않다면 기업이 주요 기여 대상으로 선택한 오픈소스 프로젝트에 이미 활발하게 기여하고 있는 외부 인원의 채용을 고려해야 한다. 이를 위해 필요한 자원과 예산을 확보해야 한다.

6. 오픈소스 프로젝트 후원 / 기업 멤버쉽 가입을 위한 자금은 필요한가?

기업이 선택한 오픈소스 프로젝트의 거버넌스 모델을 확인하여 프로젝트에 대한 기업 멤버쉽 자격 또는 후원을 위한 방법이 있는지, 또는 이를 담당하는 비영리 재단이 있는지 확인하라. 프로젝트가 성공할 수 있도록 자금을 지원할 수 있으며, 경우에 따라 기업이 자문 역할에 참여하여 프로젝트에 어느정도 영향을 줄 수 있다. 프로젝트에 직접 자금을 지원하는 방법 이외에도 관련 컨퍼런스를 후원하는 것도 좋은 방법이다. 이를 통해 기업의 오픈소스 전략과 비전을 커뮤니티에 홍보할 수 있다.

7. 기업의 오픈소스 활동을 어떻게 홍보할 것인가?

기업의 오픈소스 기여 활동을 홍보하기 위해 오픈소스 프로젝트의 컨퍼런스나 이벤트를 후원하고, 세션 발표를 하는 것은 좋은 방법이 될 수 있다. 특히, 오픈소스에 기여하는 기업 내 구성원들이 오픈소스 프로젝트의 로컬 그룹 등의 활동에 참여하는 것을 권장하라. 그렇게 함으로써 중요한 오픈소스 프로젝트 내에 기업의 적극적인 활동이 홍보되고, 열정적인 외부 개발자들을 채용할 수 있는 기회가 증가한다.

8. 기업의 오픈소스 기여 가이드와 프로세스는 준비했는가?

강제적인 정책과 규정보다는 기업의 구성원들이 오픈소스 프로젝트에 성공적으로 기여할 수 있도록 지원하는 것이 더 중요하다. 물론, 라이선스 침해, 영업비밀 누수 등의 문제 없이 기여하기 위한 정책과 가이드를 제공하여 오픈소스 기여 시 발생할 리스크를 최소화해야 한다. 특히, 신규 기여자를 위해 기여하기 전에 법적, 기술적 피드백을 받을 있는 내부 검토 프로세스를 제공한다.

9. 충분한 교육은 제공하는가?

기업이 구성원들에게 오픈소스 라이선스, 거버넌스 및 오픈소스 커뮤니티 참여, 오픈소스 기여 모범 사례 등에 대한 교육을 제공한다면 오픈소스 기여 문호 확산에 매우 유용하다. 신규 기여자 양성을 위해 숙련된 기여자를 멘토로 지원하는 멘토링 프로그램도 큰 도움이 된다.

10. 성공 여부 판단은 어떻게 측정할 것인가?

모든 계획에는 성공 기준과 목표 달성 여부를 측정하기 위한 계획이 포함된다. 오픈소스 프로젝트 성공을 측정하기 위해 오픈소스인 GrimoireLab 프로젝트를 활용할 수 있다.

11. 위의 사항을 관리하기 위해 기업 내 오픈소스 조직이 필요한가?

위의 계획을 담당하는 오픈소스 프로그램 사무소 (OSPO : Open Source Program Office)와 오픈소스 책임자가 있다면 기업의 오픈소스 활동에 큰 도움이 된다. 최소한의 프로세스와 교육 및 라이선스 가이드를 제공하고, 경영진 또는 기여자의 문의에 대응하며, 기업 전체에 오픈소스 관련 책임을 지는 담당자가 필요하다. (OSPO에 대한 자세한 사항은 OO장을 참고하라.)

오픈소스 기여 환경 조성 방법

위의 고려 사항에 더하여 결국 기업 내 올바른 오픈소스 기여 환경을 조성하기 위해서는 다음 사항을 수행해야 한다.

  1. 오픈소스 기여를 안내하는 정책 및 프로세스를 수립한다.
  2. 오픈소스 기여에 대한 승인을 감독할 팀을 구성한다.
  3. 기업의 비즈니스 전략과 연계된 오픈소스 프로젝트를 선택해 기여 활동을 집중한다.
  4. 기여자에게 필요한 IT인프라 및 도구를 제공한다.
  5. 구성원에게 오픈소스 기여에 대한 교육 및 모범 사례를 제공한다.
  6. 구성원의 기여 현황을 취합한다.
  7. 경험이 부족한 개발자를 교육하기 위한 멘토링 프로그램을 구축한다.
  8. 기업의 오픈소스 기여 가이드, 방법, 주의 사항에 대한 안내를 제공한다.
  9. 필요 시 개발자가 법률 지원을 이용할 수 있게 한다.
  10. 기업의 비즈니스 전략에 중요한 오픈소스 프로젝트에서 우수한 기여자를 채용한다.
  11. 각 프로젝트 별 프로세스 및 거버넌스 가이드를 항상 준수한다.

기여 정책 방향 설정

기업의 소프트웨어 개발 상황에 따라 오픈소스 기여 정책은 개방적일수도 있고 보수적일 수도 있다. 오픈소스 기여에 개방적인 기업이라면 다음과 같이 구성원의 기여를 독려하는 정책을 마련할 수 있다.

우리는 [기업] 외부의 오픈소스 (및 유사) 프로젝트에 참여할 것을 권장한다. 프로젝트에 참여하고 싶은 경우 자세한 내용은 오픈소스 컴플라이언스 책임자에게 문의할 수 있다. [기업]이 관여하는 프로젝트 외에도 자신의 시간에 다른 프로젝트에 자유롭게 기여할 수 있다. 그러나 [기업]의 영업 비밀 및 지적 재산에 대한 의무가 있음에 유의해야 한다. 따라서 [기업]에서의 업무와 관련이 있을 수 있는 오픈소스 프로젝트에 기여하기 전에 오픈소스 컴플라이언스 책임자와 문제될 만한 여지를 모두 제거해야 한다.

반면에, 영업비밀 노출 최소화를 위해 구성원의 기여를 세밀하게 관리하고자 한다면 다음과 같이 정책을 수립할 수 있다.

일반적으로 [기업] 외부의 오픈소스 (및 유사) 프로젝트에 참여하는 것을 권장하지 않는다. [기업] 외부 프로젝트에 참여하고 싶다면 오픈소스 연락 담당자에게 명시적인 허가를 요청해야 한다. 이것은 [기업]에 대한 영업 비밀 및 지적 재산에 대한 의무를 감안할 때 필요하다.

기여 정책 수립

기업의 기여 정책의 방향을 설정한 후에는 세부 정책을 수립하기 위해 몇가지 고려해야 할 사항이 있다.

CLA

어떤 오픈소스 프로젝트는 모든 기여자에게 CLA (Contributor License Agreement)에 서명할 것을 요구한다. 기업은 오픈소스 프로젝트에서 기여자에게 서명을 요구하는 CLA에 대해 검토하여 기업의 지식 재산이 예기치 않게 노출되는 상황이 발생하지 않도록 주의해야 한다.

따라서 기업은 구성원에게 오픈소스에 기여하기 전에 CLA 서명을 요구 받을 시, 반드시 서명 전에 오픈소스 책임자에 의한 리뷰 과정을 거칠 수 있도록 의무화해야 한다.

(위험을 초래할 수 있는 CLA 예시 추가...)

저작권 표시

구성원이 재직 기간에 생성한 저작물에 대한 지식재산은 기본적으로 기업이 소유하게 된다. 따라서, 기업은 구성원이 외부 오픈소스 프로젝트에 코드를 기여할 때 기업의 저작권을 표기할 수 있도록 안내한다.

하나 이상의 파일을 기여할 때, 다음과 같이 저작권과 라이선스를 표기하는 정책을 마련한다.

Copyright 2021 SK TELECOM CO., LTD.
SPDX-License-Identifier: {$SPDX_license_name}

여기서 $SPDX_license_name은 해당 오픈소스 프로젝트의 라이선스 정책에 따라 작성한다.

버그 수정 등의 목적으로 코드의 기여가 기존 코드를 수정하는 경우라면 해당 코드 수정에 대해 기업이 저작권을 주장하는 것이 쉽지 않기 때문에 저작권 표기도 강제화 하지 않는다.

이메일 설정

기업은 오픈소스에 기여하는 구성원이 자신의 개인 이메일이 아닌 회사의 이메일을 사용하도록 의무화 할 수 있다. 이를 통해 기업은 (1) 오픈소스에 기여하는 구성원이 회사를 대표하여 커뮤니티와 커뮤니케이션한다는 책임감을 부여하고, (2) 오픈소스 커뮤니티에 기여 활동을 활발히 하는 기업으로 인지도를 개선시킬 수 있다.

GitHub에서 회사의 이메일을 사용하기 위해 설정하는 방법은 다음 Link를 참고할 수 있다. : https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address

OSPO 승인 범위

기업의 오픈소스 책임자가 구성원의 외부 오픈소스 기여에 대해 모두 점검할 것인지, 아니면 구성원의 판단하에 자율적으로 기여하게 할 것인지에 대한 정책을 갖고 있어야 한다.

예를 들어, 오픈소스 기여에 친화적인 기업이라면 다음과 같이 일정 부분은 별도의 리뷰 절차 없이 구성원이 자율적으로 기여할 수 있게 할 수 있다.

  1. 100 라인 이하의 작은 코드 조각
  2. Stack Overflow 문의/ 답변
  3. Bug Report
  4. GitHub 활동 : Pull Request 수락, Comment 대응, 버전 릴리즈 등

또한, 다음과 같은 사항에 대해서는 기업의 리뷰와 승인 없이는 외부 오픈소스 프로젝트에 구성원이 기여하는 것을 제한할 수도 있다.

  1. 상당한 양의 기여
  2. 라이선스 정책으로 인해 기업이 사용할 수 없는 프로젝트에 대한 기여 (에: AGPL, CC BY-NC*, 상업적 사용을 제한하는 프로젝트 등)
  3. Private Repository (단, 기업과 별도의 서면 약정이 체결된 경우는 예외)

다만, OSPO가 모든 기여 코드의 Commit를 리뷰하고 승인된 코드만 기여하는 정책을 가져가는 것은 OSPO와 구성원 모두에게 큰 버든이 될 수 있다. 따라서, 오픈소스 프로젝트에 기여를 원하는 구성원들에게 가능한 자율권을 부여하되 다음과 같은 기준을 정해서 모호한 경우 반드시 기여 전에 OSPO에 문의하도록 정책을 가져가는 것이 좋다.

  • 기여할 권리가 있는 코드만 기여하라. 즉, 직접 작성한 코드를 기여하라.
  • 민감한 정보, 특허 등 기업의 지식재산 노출이 우려되는 코드, 문서 기여하지 마라.
  • 수준 이하의 코드는 기여하지 마라. 가능한 프로젝트의 기여 프로세스 (CONTRIBUTING.md)에서 요구하는 바를 준수하라. 이는 기업의 평판에도 영향을 미칠 수 있다.
  • 이외 어느것이라도 무언가 바람직하지 않아 보이는 상황이 있다면 주저하지 말고 OSPO에 문의하라.

기여자 목록 확보

기업에서 다수의 오픈소스 프로젝트에 기여하고 있다면, 이에 대한 기여자 목록을 확보하는 것이 귀중한 자산이다.
여기에는 (1) 기여 대상 오픈소스 프로젝트, (2) 기여 형태, (3) 기여자 이름/조직 등의 정보를 포함시킨다. 이러한 목록을 확보하여 사내 공유한다면 다음과 같은 유익을 기대할 수 있다.

  1. 같은 오픈소스 프로젝트에 기여하고 있는 여러 조직 및 구성원이 기업내 커뮤니티를 구성하여 기술 세미나, 밋업 등의 방식으로 기술 공유 및 상호 발전을 도모할 수 있다.
  2. 특정 오픈소스 프로젝트에서 이슈가 발생했을떄, 사내 오픈소스 기여자 목록에 해당하는 오픈소스 프로젝트 기여자가 있다면 이슈 해결을 위한 컨설팅을 요청할 수 있다. 물론 기여자에게는 기업 차원의 보상 제공 등으로 지원한다면 고품질의 사내 컨설팅이 지속될 수 있을 것이다.

행동강령 이슈

대부분의 주요 오픈소스 프로젝트는 참여자에게 행동강령(Code of Conduct)의 준수를 요구한다. 행동강령은 프로젝트의 건강하고 건설적인 커뮤니티 성장을 위해 참여자 간의 존중과 신사적인 태도를 강조합니다. 오픈소스에 기여하려는 기업의 구성원에게 행동강령의 중요성을 알린다. 만약 기업의 구성원이 행동강령을 위반하여 오픈소스 프로젝트로부터 경고나 활동 제한 등의 조치를 받았을 경우, 즉시 OSPO에 알리도록 해야 한다. 그래서 개인이 오픈소스 프로젝트와 소모적인 논쟁이 발생하지 않도록 기업 차원에서 신속히 현황을 파악하고 이슈가 해결 될 수 있도록 조치한다. 불필요하게 이슈화를 시켜서 오픈소스 진영에서 기업의 평판을 잃을 필요가 없다.

개인 코드

어떤 개발자는 근로 외 시간에 업무와 전혀 상관없이 개인의 관심 분야에 작성한 코드를 회사 이메일이 아닌 개인 이메일로 기여하는 것을 원하기도 한다. 이 부분은 기업에서 코드의 업무 연관성 등을 판단하거나 무조건 제한하는 것도 쉽지 않다.

그래도 혹시 모를 지식재산 유출 사고를 방지하기 위해 정책적으로 기업의 구성원은 기업의 이메일 사용과 저작권 표시 기준을 따를 것으로 정하고, 이외 개인적으로 기여해야 하는 상황에 대해서는 해당 오픈소스 프로젝트에 최초 기여 시, OSPO의 리뷰와 승인을 한차례 받도록 하는 것이 좋다. 이를 통해 구성원은 한번 더 불필요한 지식재산 유출에 주의하게 되고, 기업도 기여자 Pool 관리 차원에서 의미가 있을 수 있다.

기여 주체

  • 개인의 기여를 허용할 것인가?
  • 회사 차원의 기여를 허용할 것인가?

기여 범위

  • 허용하는 라이선스 범위 정하기(CLA)
  • 특허/보안 등 유관부서에 미리 오픈소스 기여의 취지 설명하고 리뷰 프로세스 결정하기

추적/기록 방법 확인 (어떤 방식으로 개별 직원들의 기여를 추적하거나 기록할 것인지)

...

문서화

...

전파 (팀 리더를 포함한 전체 개발자를 대상으로 오픈소스 기여 프로세스를 설명하고 오픈소스 기여에 친화적인 분위기 조성)

...

Clone this wiki locally