개요
개발자라면 한 번쯤은 들어보거나 혹은 지금 개발하는 중에도 사용하고 있을 오픈 소스는 무엇일까?
오픈 소스란 공개적으로 기술의 소스에 접근할 수 있고 수정하여 공유할 수 있는 소프트웨어를 의미합니다. 더 넓은 의미에서는 단지 소프트웨어에 국한되지 않고, 모델이 될 수도 있고 하드웨어가 될 수도 있습니다.
개발 커뮤니티가 현재처럼 크게 성장할 수 있었던 이유는 개발에 사용되는 많은 기술들이 오픈소스로 존재하고 필요에 따른 기술 수정 및 2차 창작을 허용한 상태로 존재하기 때문이라고도 여겨질 만큼, 개발 생태계에서 오픈소스의 영향력은 막강합니다. 그러면 이런 오픈 소스들은 어떤 식으로 유지되고 개발될까?
국내에서 많이 사용되는 자바 기반의 프레임워크인 스프링은 오픈소스 기반의 프레임워크로써 개발자들의 꾸준한 기여를 통해서 성장해왔고 커뮤니티의 참여와 피드백을 받아서 여전히 현재 진행형으로 개선되고 있다.
위 사진은 블로그 글이 올라온 24년 3월 31일에 촬영된 스크린 샷이다. 여전히 수많은 스프링 사용자들이 활발하게 Pull request를 올리고 본인들이 사용하는 기술에서 생기는 버그나 수정이 필요한 사항들을 추가하고 있다. 여기서 흔하게 생기는 오해가 있는데..
그러면 오픈 소스에 기여하기 위해서는 엄청난 실력이 있어야 하는 것일까? 꼭 내부 소스 코드를 수정해야만 오픈 소스에 기여했다고 할 수 있는 것일까? 버그를 찾아서 이슈를 열고 해당 이슈에 맞게끔 수정하는 Pull Request를 올리고 하는 과정을 찾아서 오픈소스에 기여할 수도 있지만 사실 오픈소스에 기여할 수 있는 방법은 여러가지가 있다.
오픈소스에 기여할 수 있는 여러 가지 방법..
네이버에서 제공하는 오픈소스 가이드에서는 소스 코드 수정 뿐만 아니라 다양한 방법으로 오픈 소스에 기여할 수 있는 방법을 소개하고 있다. 그러한 방법들에는...
https://naver.github.io/OpenSourceGuide/book/index.html
- 오타 수정
- 프로젝트에 필요한 문서 번역
- 가이드 문서 작성
- 디자인 작업
- 의견 제시
- 그 이외의 형식을 제한하지 않고 해당 오픈소스를 발전 및 개선 시킬 수 있는 모든 방법..
글에 따르면 오픈소스의 컨트리뷰션의 30% 이상이 소스 코드 수정 이외의 영역에서 이루어졌다는 글에서도 유추할 수 있듯이 실제로 소스코드 수정 보다 다른 형식의 기여가 훨씬 높다는 것을 알 수 있다. 그러면 오픈소스 프로젝트에 기여하기 전에 고려해야할 점들은 없을까? 어떤 방식이건 기여만 하면 되는걸까?
오픈소스 프로젝트는 프로젝트 마다 구조가 다르고 해당 커뮤니티에서 사용하고 있는 규범 및 어휘가 다르다. 오픈소스에 기여하기 전에는 프로젝트의 기본 문서들 (README, LICENSE, CONTRIBUTING)등을 잘 확인하고 어떠한 방식으로 기여하면 되는지를 꼭 확인하여야 한다. 또한, 동일한 이슈가 올라와 있지는 않은지, 나와 비슷한 PR이 올라와 있는게 없는지, 커뮤니티에서 꼭 지켜야하는 의사소통 규칙들이 있는지를 확인하여 본인이 이 프로젝트에 기여하려고 하는 방식이 올바른지 확인할 필요가 있다.
그러면 어떠한 방식으로 기여가 진행되는지 살펴보자. 다음은 네이버에서 발표한 테스트 객체 생성용 오픈소스 라이브러리 fixture-monkey이다. 최근에 공식 문서 번역을 진행하면서 컨트리뷰터를 찾는 이슈가 다음과 같이 올라왔었는데 이렇게 각 챕터별로 번역할 사람을 찾고 있었다.
https://github.com/naver/fixture-monkey/issues/864
Call for Korean translators for document! · Issue #864 · naver/fixture-monkey
For New Translators The official documentation for Fixture Monkey can be found here: https://naver.github.io/fixture-monkey/docs/introduction/overview/ If this is your first time contributing to an...
github.com
이에 따라서 해당 페이지를 번역하여 Pull Request를 올렸었고 다음과 같이 Merge된 모습을 확인할 수 있었다.
https://github.com/naver/fixture-monkey/pull/941
Translate cheat-sheet faq section title and contents by fingersdanny · Pull Request #941 · naver/fixture-monkey
Summary Translated FAQ page of cheat-sheet section this pull request is related to #864 How Has This Been Tested? Tested with npm start to check translations of docs and links. Is the Document upda...
github.com
마치며..
오픈소스는 개발자 커뮤니티가 방대한 양의 소스 코드를 공유하며 성장할 수 있도록 원동력이 되어왔다. 다양한 방법으로 오픈소스에 기여하면서 본인이 사용하는 라이브러리나 프레임워크가 발전할 수 있는 모습을 볼 수 있는 것또한 개발자라는 직업의 매력적인 부분 중 하나라고 생각한다. 앞서 소개한 다양한 방법을 비롯하여 관심있는 오픈 소스 프로젝트에 기여해보는 것은 어떨까?