-
오픈소스를 이용하는 방법 ~ feat. GitHubStudy/etc 2021. 5. 21. 17:47
오픈소스란,
누구나 자유롭게 확인, 수정, 배포할 수 있는 코드를 일컫는다. 옛날처럼 0부터 1까지 손수 코딩하지 않고 인터넷이 배포되어있는 방대한 양의 코드들을 사용할 수 있는 세상에서, 오픈소스를 잘 이용하는 능력은 개발자의 필수 덕목 중 하나라고 볼 수 있다.
많은 오픈소스들은 GitHub를 통해 배포된다.
깃허브를 다루는 기초적인 방법에 대해서는 이미 포스팅 한 적이 있으니 참고 바란다.
GItHub에서 가져오면 되는 것 까지는 알았는데, 내가 원하는 코드를 어떻게 찾을까?
내가 원하는 기능 뿐만 아니라 내가 사용하고자 하는 언어로 작성된 코드를 검색해서 찾아내기란 쉽지 않다. 거기에다 언어의 장벽까지...
원하는 오픈소스를 찾아내기 어려울 때에는 이 사이트를 이용하면 좋다.
Get Started Contributing to Open Source Projects | CodeTriage
www.codetriage.com
CodeTriage 사이트에서는 자신이 원하는 언어로 작성된 오픈소스들을 손쉽게 검색해볼 수 있는 사이트이다. 언어들마다 각자 최근 활발하게 교류되고 있는 오픈소스를 정렬해서 볼 수 있어 편리하다.
원하는 오픈소스를 찾았다면...
이제 그 오픈소스에 컨트리뷰션 할 수 있다. 버그를 발견하였다면 고치고, 기능을 개선하고, 추가할 수 있다. 직접적으로 코드에 손 대지 않고도 기여할 수 있다. 코드 주석이나 README 문서의 간단한 오타를 수정하고 번역하거나, 디자인 작업을 하거나 기타 의견을 제시하는 것 역시 컨트리뷰션이다.
우선 저장소를 Fork한다.
GitHub는 특성상 프로젝트의 원본 저장소에 수정을 하는 것이 아니라, 원본 저장소의 복사본을 내 것으로 만들어 수정해야 한다. Fork를 하면 자동으로 내 GitHub 계정에 동일한 저장소가 생성(복사)된다. Fork 버튼은 저장소 메인 화면의 오른쪽 상단에 있다.
그리고 저장소를 Clone한다.
Clone은 GitHub에 있는 저장소(원격 저장소)를 그대로 복제해 나의 컴퓨터(로컬 저장소)에 저장하는 것이며, 혼자 프로젝트를 할 때에도 원본이 소실되었거나 이전 버전으로 되돌리고 싶을 때 유용하다. Clone or Download 버튼을 눌러 나오는 주소를 복사하고, 터미널에서 git clone (주소) 명령어를 사용하여 가져오면 된다. 단순 파일로만 다운로드 받기를 원한다면, Download ZIP을 선택할 수도 있다.
이제는 마음대로 수정!
원하는 대로 코드나 문서를 수정해 실행하여도 좋다. 수정한 코드를 원격 저장소에 반영하기 위해서는 add/commit/push가 필요한데, 이전 포스팅에서 언급했으므로 넘어간다.
여기까지 마쳤다면 나의 원격 저장소에 변경 사항이 반영되었을 것이다. 그러나 원본 저장소에는 어떠한 내용도 반영되지 않았다. 컨트리뷰션을 위해서는 원본 저장소에 Pull Request가 필요하다.
마지막으로 Pull Request를 보낸다.
Pull Request란, 내가 수정한 변경 사항을 원본 저장소에 반영해달라고 요청하는 것이다. Pull Request를 보내면 프로젝트를 주관하는 개발자가 작업 내용을 검토하고, 원본 프로젝트에 반영할지를 결정할 것이다.
오픈소스를 열람하는 것 조차 힘들었던 초보 개발자가 오픈소스에 기여하는 방법은?
가장 쉽고 재미있는 방법은 가지고 노는 것이다. 작은 기능을 지닌 라이브러리를 사용해 간단한 프로젝트를 해보아도 좋고, 틀이 완성된 프레임워크를 실행시키고 여러 몹쓸 짓들을 해봐도 좋다. 특정 부분에서 에러가 발견하면 개발자에게 보고를 하고, 추가되었으면 하는 기능이 있다면 제안을 하고 자신이 어설프게나마 작성해보아도 좋다.
자신의 실력에 겁먹지 않고, 남이 만든 코드를 과감하게 사용, 변경해보는 것이 첫걸음이라고 할 수 있다.
'Study > etc' 카테고리의 다른 글
[GitHub] .gitignore (0) 2021.06.05 Github 사용법 (가상 저장소 연동 및 코드 업로드) (0) 2021.05.16 운영체제의 종류 (0) 2021.05.13 API와 프레임워크와 라이브러리의 차이점 (0) 2021.05.10 컴퓨터 바이러스에 대해 (0) 2021.05.06