오픈소스를 통한 글로벌 개발자 양성 및 소프트웨어 개발 문화 개선
한국전자통신연구원 손석호 (선임연구원/오픈소스전문위원, 공학박사)
본 기고에서는 오픈소스 커뮤니티를 통해 글로벌 수준의 개발자 양성하고, 궁극적으로는 우리나라 소프트웨어 개발 문화를 개선하기 위한 방안을 모색한다.
오픈소스 커뮤니티의 현황
바야흐로 오픈소스 전성시대가 되었다. 전 세계적으로 많은 사람들이 오픈소스 소프트웨어를 활용 중이며 개발에도 기여하고 있다. GitHub는 Git 기반의 소스 코드 저장소를 호스팅하고 개발 협업 도구를 서비스하는 플랫폼으로, 오늘날 많은 오픈소스 소프트웨어가 GitHub를 통해서 개발되고 있다. 2021년 현재, GitHub에는 5천만 명이 넘는 사용자가 가입되어 있으며, 2억 개가 넘는 저장소가 등록되어 있다[1, 2]. 2억 개의 저장소는 2010년에 비해 약 200배 증가한 것으로[3], 지난 10년간 오픈소스의 엄청난 성장세를 짐작할 수 있다. 뿐만 아니라, 4차 산업의 핵심으로 이야기되는 ICT 분야의 대표적 소프트웨어들(클라우드는 Kubernetes, 머신러닝은 TensorFlow, 블록체인은 Bitcoin 등)이 오픈소스로 개발된 것을 보면, 이미 오픈소스가 최신 기술을 구현하는 일반적인 방법으로 정착되었다는 것을 알 수 있다.
주요 오픈소스 프로젝트는 조직적인 체계 구축 및 기여 활성화를 통해 거대 커뮤니티로 성장하고 있으며, 그 규모는 거대 기업에 필적한다. 예를 들어, 클라우드 컴퓨팅 분야의 오픈소스 소프트웨어인 쿠버네티스(Kubernetes)의 기여자는 4만 명이 넘고[4], 머신러닝 플랫폼인 텐서플로우(TensorFlow)의 기여자도 1,800 명이 넘는 것으로 알려져 있다[5]. 이러한 오픈소스 커뮤니티들은 다양한 기여자들이 효과적으로 협업할 수 있도록 조직을 구성 및 운영하고 있다. 쿠버네티스 커뮤니티의 경우, 위원회(Committees)를 구성하여 운영 전반적인 사항에 대해 논의 및 의결하고 있으며, SIG(Special Interest Group)라는 24개의 활동 그룹을 구성하여 특정 주제에 대해서 집중적으로 운영 및 기여할 수 있도록 하였다[6]. 쿠버네티스는 기능 개발을 위한 SIG 뿐만 아니라, 문서화, 기능 테스트, 보안, 소스 코드 릴리스 등에 관련된 SIG도 운영하여, 체계적으로 소프트웨어의 품질을 향상시키고 있다. 또한 주요 기여자에게 소스 코드의 검토와 승인 권한을 부여하여 제안된 모든 소스 코드에 대한 검증 과정을 거치도록 하였다. 쿠버네티스는 이렇게 간결한 조직 및 협업 체계를 통해서도 상용 수준의 소프트웨어로 인정받고 널리 사용되고 있다[7]. 그 밖에도, 쿠버네티스 커뮤니티는 컨퍼런스, 밋업(meetup), 온라인 세미나 등 다양한 방법을 통해서 기여자 및 전문가들의 활동을 세상에 적극적으로 홍보하고 있다. 지금은 쿠버네티스에 기여하는 개발자 뿐만 아니라, 활용하는 기업 및 담당자도 전세계적으로 명성을 얻고 있다.
이와 같이, 오늘날 오픈소스 소프트웨어와 커뮤니티는 기여의 형태와 규모, 협업을 위한 조직 체계, 소프트웨어의 품질, 커뮤니티 활성화 방식 등 다양한 측면에서의 성장 및 고도화를 이루었다. 앞으로 오픈소스 커뮤니티의 규모는 더 커질 것이며, 다양한 최신 기술들이 오픈소스를 통해 개발될 것이다. 따라서 개발자들에게 오픈소스 커뮤니티는 기업 및 국가의 경계를 뛰어 넘는 활동의 무대가 될 뿐만 아니라 최신 기술 습득을 위한 최적의 공간이 될 것이다.
오픈소스 활동을 통한 개발 역량 향상
글로벌 소프트웨어 개발자로 성장하기 위해서는 단순히 프로그래밍 능력뿐만 아니라, 협업을 통해 소프트웨어를 함께 만들어 갈 수 있는 능력이 필수적이다. 개발자는 일반적으로 소속된 기업이나 기관을 통해서 이러한 능력을 키우게 된다. 그러나 모든 개발자들이 좋은 기업에 입사하여 체계적인 소프트웨어 개발 경험을 쌓을 수는 없으며, 글로벌 기업에서 경험을 쌓기는 더 쉽지 않다. 반면, 오픈소스 커뮤니티는 개방되어 있고 기여를 환영하므로, 누구든지 참여할 수 있다. 앞서 살펴본 바와 같이 오픈소스 커뮤니티들은 개방된 소프트웨어 개발 체계와 협업 문화를 구축하여 성공적으로 성장하였다. 따라서, 개발자들은 오픈소스 활동을 통해서 다양한 경험과 성장의 기회를 얻을 수 있을 것이다.
첫번째로, 오픈소스 기여자는 개발 워크플로우와 코딩 컨벤션 등의 좋은 협업 방식을 경험할 수 있다. 오픈소스 프로젝트는 공개된 협업을 위해서 개발 워크플로우를 표준화하여 제공한다. 표준화된 개발 워크플로우에 익숙해지면 Git 등의 코드 버전 관리 시스템과 다양한 자동화 도구에 대한 이해도 높아지며 협업에도 능숙해질 수 있다. 오픈소스에서 소스 코드의 제안은 리뷰 및 수정 과정을 면밀히 거치게 된다. 리뷰어는 경험이 많은 전문가이므로, 리뷰 및 수정 과정을 거치면, 자연스럽게 효율적인 소프트웨어 개발과 코딩 컨벤션 등에 대한 학습 효과가 일어난다. 또한 개발자가 리뷰어 권한을 가지게 되면 다양한 기여자의 코드를 검토하게 되므로, 협업을 위한 표준적인 코드를 체득하고 스스로의 코딩 역량도 향상시킬 수 있다.
두번째로, 오픈소스 기여자는 소프트웨어 문서화 및 커뮤니케이션 능력을 향상시킬 수 있다. 오픈소스에서는 기여자가 개발한 코드의 목적과 동작 방식 등을 리뷰어 및 승인자에게 설명해야 한다. 이 의사소통은 주로 글을 통해 이뤄지므로, 오픈소스 개발에 익숙해지면 문서화 능력이 자연스레 향상될 수 있다. 또한, 오픈소스 프로젝트에서 사용하는 문서 자동화 도구들을 활용해보면, 문서화가 생각보다 쉽고 효율적이라는 사실도 알게 된다. 예를 들어 Swagger[8]라는 도구를 사용하면 소스 코드의 주석을 통해 API 문서를 쉽게 자동으로 생성할 수 있다. 그 밖에도 기여자는 커뮤니티의 행동 강령(Code of Conduct)[9]을 준수하며 여러 국가의 사람들과 대화하게 되므로, 글로벌 기업에서 자주 사용하는 용어를 익힐 수 있을 뿐만 아니라 편견 없이 상호 존중하는 소통 방식도 체득할 수 있다.
마지막으로, 오픈소스 기여자는 오픈소스 활동을 글로벌 기업에 참여하기 위한 경력으로 활용할 수 있다. 작은 기여부터 시작하여 책임지고 완수하는 과정을 반복하다 보면 오픈소스 커뮤니티의 신뢰를 얻을 수 있으며 더 중요한 역할을 맡을 수도 있다. 오픈소스 커뮤니티에서 전문가로 인정받으면, 글로벌 기업에 리쿠르팅 될 수 있는 기회도 많아진다. 최근 리눅스 재단에서 글로벌 기업을 대상으로 이뤄진 2020 Open Source Jobs Report[10]를 보면, 채용 담당 응답자 81%가 오픈소스 전문가 채용에 높은 우선순위를 두고 있다고 응답하였고, 향후 6개월 이내에 오픈소스 전문가 채용을 늘릴 예정이라고 응답하였다. 이렇게 전세계적으로 오픈소스 전문가에 대한 수요가 늘고 있으므로, 우리나라 개발자들도 오픈소스 활동을 통해 글로벌 기업에 참여 기회를 높일 수 있을 것이다.
오픈소스 활동의 개발 문화 개선 효과
오픈소스 커뮤니티의 문화를 경험하고 글로벌 개발 표준을 따르는 개발자들이 많아지면, 우리나라 소프트웨어 개발 문화의 개선으로도 이어질 것이다. 오픈소스 활동은 수직적인 소프트웨어 개발 문화를 개선할 것이다. 오픈소스 커뮤니티의 개발 문화는 권위적이지 않다. 절차만 준수한다면 그 종류와 크기에 무관하게 어떠한 기여도 환영 받을 수 있으며 가치 있게 여겨진다. 기여에 관련된 모든 제안과 논의는 상시 기록 및 공개되기 때문에, 관리자라 하더라도 합리적이지 않은 의견을 독선적으로 주장하기 어렵다. 우리나라 소프트웨어 기업에는 아직도 상명하달식의 문화가 많이 남아 있는데, 이러한 문화는 자발적인 아이디어 제시와 효율적인 업무 수행을 저해할 수 있다. 앞으로 오픈소스 활동을 하는 개발자들과 관리자들이 기업 내에 많아질수록 수평적이고 자발적인 소프트웨어 개발 문화가 정착되는 데 일조할 수 있을 것이다.
또한 오픈소스 프로젝트에서 활동하는 개발자가 많아지면 소프트웨어의 문서화를 어려워하고 불편해하는 문화를 개선할 수 있을 것이다. 오픈소스 활동을 경험한 개발자들은, 문서를 통하면 기록 및 공유가 쉽고 더 명확한 의사소통이 가능하다는 것을 알고 있다. 따라서, 이들은 문서화를 통한 협업 방식을 주변에도 장려하게 될 것이며, 편리한 문서화를 위한 다양한 자동화 도구도 도입할 것이다. 개발자들이 문서를 통해 논의하는 것이 습관화되면 불필요한 논쟁도 대폭 줄일 수 있을 것이다.
마지막으로 오픈소스 활동은 효과적인 회의 문화 정착에 일조할 것이다. 오픈소스 커뮤니티에는 많은 사람들이 참여하므로 개방성과 효율성을 중시한다. 특히 오픈소스 커뮤니티의 회의는, 효과적인 운영을 위해서 회의 이전에 공동으로 명확한 안건을 설정하고, 회의록을 작성하여 토론 내용과 결정을 명확히 기록한다. 또한 기여자들의 시간을 존중하기 위해서 토론에 대한 완급을 조절하고 작은 이슈에 대한 논쟁으로 회의가 늘어지지 않도록 노력한다. 그리고 모든 회의록과 회의 영상을 공개함으로써 회의에서도 상호 존중과 합리적인 대화를 이끌어 낼 수 있다. 이러한 오픈소스 커뮤니티의 회의 문화도 우리나라 개발 문화에서 개선할 수 있는 부분일 것이다.
오픈소스 활동 활성화를 위한 제언
앞서 살펴본 바와 같이, 오픈소스 활동은 글로벌 개발자 양성 뿐만 아니라 우리나라의 소프트웨어 개발 문화 개선에도 도움을 줄 것이다. 우리나라에서도 이미 오픈소스 프로젝트 및 커뮤니티를 활성화하기 위한 다양한 시도가 이뤄지고 있으나, 아직 오픈소스에 기여하는 개발자가 많지는 않은 실정이다. 그 현실적인 이유를 간략히 살펴보면 다음과 같다. 오픈소스 활동을 처음 시작할 때 여러 가지 진입 장벽이 존재한다. 주요 진입 장벽으로는 Git와 같은 협업 개발 시스템의 사용의 어려움, 기여 워크플로우에 대한 개념 이해의 어려움, 실수에 대한 두려움, 언어에 의한 의사소통의 어려움 등을 꼽을 수 있다. 오픈소스 기여를 위한 기본적인 개념과 방법들은 교육을 통해 일부 해소가 가능하지만, 실제로 기여 활동까지 이어주는 데는 한계가 있다. 또한 오픈소스 활동에 들어가는 노력에 비해서 큰 인정을 받지 못한다는 것도, 활동을 포기하게 되는 요소 중 하나이다. 이에 오픈소스 기여 활동 활성화 방안을 논의하며 본 기고를 마무리하고자 한다.
첫째, 국가와 기업은 국내 오픈소스 프로젝트와 커뮤니티를 정책적으로 장려하고 활성화할 필요가 있다. 기여 프로세스에 익숙하지 않은 개발자가 글로벌 오픈소스에 먼저 참여하게 되면, 문화와 언어의 차이에서도 어려움을 느끼고 활동을 포기하게 될 수 있다. 이러한 어려움을 경감하기 위해서는 친근하고 접근성이 높은 오픈소스 커뮤니티가 필요하다. 그런 의미에서 우리나라 태생의 오픈소스 프로젝트 및 커뮤니티를 활용할 수 있다. 국내에서도 Cloud-Barista와 같은 다양한 오픈소스 커뮤니티가 활성화되고 있다[11]. 이러한 오픈소스에는 국내 개발진이 많이 참여하므로 활용 및 기여 과정에서 한국어로 의사소통 할 수 있다는 장점이 있다. 처음 오픈소스 활동을 시작하는 개발자들은 국내 오픈소스 프로젝트를 통해서 기여 방법도 익히고, 앞으로 글로벌 오픈소스 프로젝트에 참여하기 위한 다양한 경험과 지식을 미리 함양할 수 있을 것이다.
둘째, 기업들은 개발자들의 오픈소스 활동을 지속할 수 있도록 적극 장려할 필요가 있다. 일반적으로 국내 기업에서는 오픈소스 활동을 업무 이외의 활동으로 여긴다. 오픈소스 활동은 시간과 노력이 많이 소모되므로, 업무로 인정받지 못하면 활동을 지속하지 못하는 경우가 많다. 해외 기업의 경우 오픈소스 활동을 업무의 범위로 대하고 또 장려하여, 오픈소스 기여 활동을 기업의 기술력 향상 및 홍보에 활용하는 성공적인 사례가 많다. 우리나라 기업들도 이를 벤치마킹하여 오픈소스 가치를 인정하고 활동을 장려한다면, 소프트웨어 개발 문화 개선뿐만 아니라 기술력 향상도 함께 이룰 수 있을 것이다.
마지막으로, 오픈소스 활동을 통해 성장한 전문가들의 경험이 다시 공유될 수 있도록 돕고, 성공 사례를 발굴하여 대중에게 지속적으로 노출시킴으로써, 새로운 오픈소스 전문가들이 탄생할 수 있도록 선순환 체계를 만들어야 한다.
결어
오픈소스 커뮤니티는 기업 및 국가의 경계를 뛰어 넘어 최신 기술과 개발 문화를 공유할 수 있는 공간이 되었다. 다양한 오픈소스 활동 장려 방안을 통해 우수한 개발자들이 많이 양성되면, 우리나라의 소프트웨어 개발 문화 개선뿐 아니라 기술력 향상에도 크게 이바지할 것이며, 결과적으로 소프트웨어 강국에 한 발 더 다가설 것이라 기대해본다.
참고문헌
[1] “GitHub 검색(사용자)”, https://github.com/search?q=type:user&type=Users
[2] “GitHub 검색(저장소)”, https://github.com/search
[3] “One Million Repositories”, https://github.blog/2010-07-25-one-million-repositories
[4] “How Kubernetes contributors are building a better communication process”, https://kubernetes.io/blog/2020/04/21/contributor-communication
[5] “Contributing To TensorFlow: SIGs, RFCs, Testing, and Docs”, https://medium.com/tensorflow/contributing-to-tensorflow-sigs-rfcs-testing-and-docs-1c0f8240166c
[6] “Kubernetes Community Groups”, https://github.com/kubernetes/community/blob/master/sig-list.md
[7] “내년 클라우드 시장은 쿠버네티스가 대세”, https://zdnet.co.kr/view/?no=20181218134731
[8] “Swagger API Documentation”, https://swagger.io
[9] “Contributor Covenant”, https://www.contributor-covenant.org
[10] “2020 Open Source Jobs Report”, https://training.linuxfoundation.org/resources/2020-open-source-jobs-report
[11] “ETRI, 오픈소스 테크데이 개최 인공지능, 빅데이터, 클라우드 관련 핵심 연구성과 전면 공개한다”, http://www.aitimes.kr/news/articleView.html?idxno=18446