기여할 오픈소스 고르는 방법

작가 허락을 받고 번역한 글입니다.(원문)

오픈소스 커뮤니티와 프로젝트에 기여하는 것은 초보자, 경험있는 개발자 모두에게 두려울 수 있는 일입니다. 흥미있는 분야, 배우고 싶은 기술이 일치하는 프로젝트를 찾는 것이 어렵기 때문입니다. 이 문제는 저도 개발자를 시작한지 얼마 안됐을 때부터 큰 골치거리였습니다.

하지만 결국 저는 답을 찾게 되었고, 이제 막 오픈소스 기여에 도전해보려는 초보자들에게 도움이 되고자 합니다.

목표 설정

처음에는 오픈소스 기여로 얻고자 하는 것이 무엇인지 목표를 몇개 적는 것이 좋습니다. 목표가 분명하지 않은게 있다면, 좀 더 뚜렷하고, 행동가능한 것으로 수정해야 합니다. 목표가 구체적이면 구체적일 수록 실제로 가능한 목표인지 아닌지 판단하기가 더 쉽기 때문입니다.

목표가 대회나 경쟁 혹은 네트워킹 등 뭔가 대가로 받는 게 되어선 안됩니다.

그리고 목표를 정할 때 꼭 소스코드 기여만 해야한다고 생각할 필요는 없습니다. 사실 오픈소스는 문서작업, 그래픽 디자인, QA, 테스팅, 프로젝트 관리와 같은 능력도 기여할 수 있습니다.

아래는 그 외 오픈소스 기여를 계획하고 있을 때 고려할 수 있는 체크리스트입니다.

  • [ ] 나는 프로젝트에 기여할 수 있는 기술을 소유하고 있는가?
  • [ ] 나는 프로젝트에 어떤 기술을 사용하고 싶은가?
  • [ ] 내 취미는 무엇인가?
  • [ ] 나는 프로젝트에 얼마나 많은 시간을 할애할 계획인가?

저 같은 경우에는 익숙한 프론트엔드 기술을 사용하고 싶었고, 그 중에서도 리액트나 뷰의 새로운 기능을 활용해보고 싶었습니다. 그래서 리액트 네이티브와 어도비 독스를 선택했습니다.

잠재력있는 프로젝트 찾기

잠재력있는 프로젝트를 찾는 건 그리 어렵지 않습니다. 계속 찾아보고 제대로 된 곳을 보는 방법만 배우면 됩니다.

사용 기술

  • Up for Grabs: 이름, 라벨, 태그로 검색할 수 있습니다. 태그로 프로젝트에서 사용하는 언어를 검색할 수도 있습니다.
  • Good First Issues: 언어로 검색할 수 있습니다.
  • First Timers Only: 초보자를 위한 자료
  • Awesome For Beginners: 초보자 친화적인 프로젝트를 모아둔 곳으로 언어로 정렬할 수 있습니다.

오픈소스 프로그램

오픈소스 프로그램에 참여하는 것은 오픈소스 커뮤니티와 프로젝트에 익숙해지는데 가장 빠르고 쉬운 방법입니다.

관심사로 찾기

흥미에 따라 프로젝트를 검색할 수도 있습니다. 먼저 자신에게 흥미있는게 뭔지 결정하고, 관심사와 관계된 프로젝트를 인터넷에서 찾아보면 됩니다. 때때로 장고걸스와 같은 관련 오픈소스 그룹을 발견할 수도 있습니다.

프로젝트 거르기

기여할만한 프로젝트 들을 고르고 나면, 선택권을 줄여나갈 차례입니다. 여러분의 목표와 맞고, 아래 기준에 적합한 것이 좋은 후보가 될 것입니다.

  • [ ] 무료이며, 오픈소스 라이센스를 가지고 있는가?
  • [ ] 오랜 기간 비활성화되어 있지 않은 진행 중인 프로젝트이다.
  • [ ] 기여자 가이드라인이나 Code of Conduct, wiki 등이 지속적으로 업데이트 되고 있다.

가장 좋은 옵션을 선택하기 위해 기준에 대해 좀 더 자세히 알아보도록 하겠습니다.

오픈소스 라이센스 들에 대한 이해

오픈소스 라이센스들은 무시되는 경향이 있습니다. 하지만 라이센스는 해당 프로젝트를 가지고 무엇을 할 수 있는지 없는지를 결정하기 때문에 중요한 구성요소 입니다. 기여를 시작하기 전에 해당 프로젝트의 라이센스를 확인하는 것은 중요합니다.

오픈소스 라이센스들은 여러가지 종류가 있지만, 크게 두가지로 나누면 copyleft와 permissive 카테고리가 있습니다. 둘다 읽고, 변경하고, 공유하는 것에 관련되어 있지만, 두 라이센스는 후속작의 라이센스 부분에 있어 조금 차이가 있습니다.

  • Copyleft License: copyleft 라이센스는 후속작이 더 강한 라이센스를 사용하는 것을 제한합니다. 예를 들면 GPL, LGPL, Mozilla Public License가 있습니다.

  • Permissive License: permissive 라이센스는 후속작의 제작자가 후속작의 라이센스를 변경하는 것을 제한하지 않습니다. 또한 이 라이센스가 적용된 공개 작품은 회사에서 상업적으로 사용이 가능합니다. 또한 후속작의 제작자에게 라이센스를 적용해야 하는 의무를 지게 하지 않습니다.

활동적인 개발의 결정적인 신호

후보 프로젝트가 지금도 활동적인지 보려면 discussion과 개발 활동 기록을 보면 됩니다. 활동 수준을 대략적으로 파악하려면 아래 체크리스트를 확인해보셔도 좋습니다.

  • [ ] 질문을 하는 사람이 답변을 받습니까?
  • [ ] 컨트리뷰터를 환영합니까?
  • [ ] 관계자의 어조는 어떻습니까?

컨트리뷰터 가이드라인

마지막으로 후보 프로젝트가 컨트리뷰터를 위한 가이드라인이 존재하는지 확인하시기 바랍니다. 이건 불필요하지만, 프로젝트가 다른 기여자를 고려하고 있는지 알 수 있는 항목입니다. 그리고 가이드라인은 첫 기여의 성패를 판단하기에 좋은 지표가 될 수 있습니다.

아래는 좋은 컨트리뷰터 가이드라인에 대한 체크리스트입니다.

  • [ ] 리드미나 위키에 프로젝트를 시작하는 방법에 대한 정보가 있습니까?
  • [ ] 열린 이슈들을 보면 여러분이 돕기 시작할만한 일이 있습니까?

결론

이제는 소개해드린 체크리스트를 기반으로 프로젝트를 분석한 후 우선순위를 정할 시간입니다. 최종 후보를 몇가지 골랐다면 아주 간단한 이슈를 선택해 각각 풀 리퀘스트를 생성해보시기 바랍니다.

그리고 가장 의미있고 효과적인 기여를 하시기 바랍니다. Open Source Best Practice라는 글을 참고하셔도 됩니다.

이 글로 여러분이 오픈소스 프로젝트를 찾는데 도움이 되었으면 합니다. 위 체크리스트들은 여러분의 상황에 맞게 적절히 수정해서 적용하셔도 좋습니다.

제 경험으로 효과적인 오픈소스 기여를 시작하시기 바랍니다.

좋았다면, 댓글을 남겨주세요. 어떤 종류의 피드백도 환영입니다. 연락을 원하시면 아래 링크를 확인해보시기 바랍니다.

LinkedIn | GitHub | Twitter | Medium

가장 많이 쓰이는 git 명령어 cheat sheet

작가 허락을 받고 번역한 글입니다.(원문)

안녕하세요👋🏻

이번 포스팅에서는 모든 개발자가 반드시 알아야할 필수 Git 명령어에 대해 정리해보겠습니다.

소개

Alt Text

Git은 무료 분산 버전 컨트롤 시스템으로 오픈소스입니다. 아주 작은 프로젝트부터 엄청 큰 프로젝트까지 크기에 상관 없이 처리할 수 있고, 빠른 속도와 높은 효율성을 가지고 있습니다.

Git은 배우기 쉽습니다. 그런데도 매우 작은 용량으로 엄청난 성능을 보유하고 있습니다. Git은 로컬 브랜치, 편리한 staging 기능, 많은 워크플로우 등을 지원하는 다른 SCM 툴을 압도하고 있습니다.

저장소 초기화

명령어 설명
git init 저장소 초기화하기

파일 Staging: 커밋할 준비 된 상태로 만들기

명령어 설명
git add filename 파일 한개 staging 하기
git add . 현재 위치한 디렉토리의 모든 내용을 staging 하기

상태 확인

명령어 설명
git status 현재 위치한 디렉토리와 staging 영역의 상태 보기

staged 파일 커밋: 커밋할 준비 된 상태의 파일 커밋

명령어 설명
git commit -m "your message" 한줄 설명과 함께 커밋하기

파일 삭제

명령어 설명
git rm filename staging 영역과 현재 작업 중인 디렉토리에서 해당 파일 삭제하기
git rm --cached filename staging 영역에서 해당 파일 삭제 하기

파일 이름 옮기거나 이름 변경

명령어 설명
git mv filename_one filename_two 파일 옮기거나 이름 변경하기

staged 되거나 unstaged 된 변화 확인

명령어 설명
git diff unstaged된 파일들의 변화 확인하기
git diff --staged staged된 파일들의 변화 확인하기
git diff --cached staged된 것과 이전 커밋 사이의 차이 확인하기

Unstaging된 변화

명령어 설명
git restore --staged filename 저장소에서 staging 영역으로 지정한 파일 최신 버전 복원하기

이전 기록 확인

명령어 설명
git log --stat 변경된 파일들의 목록 확인하기
git log --patch 발생했던 실제 변화를 확인하기

커밋 확인

명령어 설명
git checkout <commit_id> 주어진 커밋을 확인하기 위해 해당 시점으로 이동하기
git checkout master 마스터 브랜치 확인하기 위해 해당 시점으로 이동하기

커밋들 비교

명령어 설명
git diff HEAD~2 HEAD 두 커밋 간의 변화 확인하기

버그 발생 커밋 조사

명령어 설명
git bisect start 버그 발생한 커밋 찾아내기
git bisect bad 현재 커밋을 버그 있음(bad)으로 마킹하기
git bisect good <commti_id> 해당 커밋을 버그 없음(good)으로 마킹하기
git bisect reset 버그 발생한 커밋 조사 종료

브랜치 관리

명령어 설명
git branch payment payment라 불리는 새로운 브랜치 생성하기
git checkout payment payment 브랜치로 변경하기
git branch -d payment payment 브랜치 삭제하기

Stashing: 다른 작업을 하기 위해서 현재 상태 저장하기

명령어 설명
git stash push -m "new stash" "new stash"라는 새로운 stash 만들기
git stash list 모든 stash 확인하기
git show stash@{1} 주어진 stash 확인하기

병합

명령어 설명
git merge a 현재 브랜치를 a 브랜치에 병합하기
git merge --squash a 병합되어 없어지는 브랜치의 커밋 내용을 하나로 합치고 병합하기
git merge ---abort 병합 취소하기

Rebasing: 커밋 로그 정리하기 & Cherry Picking: 커밋 하나만 테스트로 적용해보기

명령어 설명
git rebase master 현재 브랜치의 베이스를 마스터로 바꾸기
git cherry-pick <commit_id> 주어진 커밋을 현재 브랜치에 적용한다.

준비된 건 여기까지입니다. 읽어주셔서 감사합니다. ** 내용이 좋았다면 좋아요 버튼을 잊지 마시고 친구와 동료에게 공유해보시기 바랍니다..**

Alt Text

추신 - 웹 개발을 배우고 싶다면, 제가 엄선한 무료 코스가 제 유튜브 채널에 있습니다. 아래 포스팅을 확인해보시기 바랍니다. :

(2021) - Web Developer Full Course : HTML, CSS, JavaScript, Node.js and MongoDB

React.js를 프로젝트로 배우고 싶다면 , 아래 링크를 확인해보시기 바랍니다. :

Learn React with one BIG Project [NOTES included] - Demo and Video Link

👉🏻 트위터 팔로우 : https://twitter.com/The_Nerdy_Dev 👉🏻 디스코드 서버 : https://discord.gg/fgbtN2a

활동적인 컨트리뷰터가 되는 법

작가 허락을 받고 번역한 글입니다.(원문)

도입

오픈소스 기여에 중요한 일 중 하나는 기여하기에 괜찮은 레포지토리를 찾는 것입니다. 특히, 레포지토리에 해결할만한 이슈가 있어야 합니다. 하지만 초보자라면 적절한 프로젝트를 찾는게 어려울 수 있습니다.

그래서 기여할만한 이슈 찾는걸 돕고자 괜찮은 웹사이트들과 팁들을 모아봤습니다. 여러분 능력에 맞는 좋은 이슈를 찾는데 도움이 될 겁니다.

시작해 봅시다.


GitHub Issue Tab

GitHub Issue Tab은 여러분에게 할당되었던 이슈를 추적하기 위해 사용하기도 하지만, 이슈를 찾는데도 쓰입니다. 이슈 검색에 활용할 수 있는 몇가지 검색 키워드를 알려드리겠습니다.:

is: 이슈 상태로 검색 할 수 있습니다. 이슈 상태는 open, closed, issues, pull request가 있습니다.

is:open is:issue

label: 이슈에 붙은 라벨로 검색할 수 있습니다. 예를 들면 help wanted, fronted, good first issue 등이 있습니다.

label:"good first issue"

language: 희망하는 언어로 검색할 수 있습니다. 예를 들면 javascript, java, dart 등이 있습니다.

language:java

다 합치면 이렇게 보입니다.

is:open is:issue label:"good first issue" language:java

Issue search

또 다른 키워드로 이슈를 검색하고 싶다면 여기 를 클릭하세요


Good First Issue

이 웹사이트는 초보자들도 기여 할 수 있는 유명 오픈소스 프로젝트들이 모여 있습니다. 프로젝트들은 다양한 언어로 필터링 할 수 있으며, 필터링에는 20개가 넘는 언어를 지원한다고 합니다.

Good First Issue_ Issues for your first open-source contribution

모든 프로젝트는 최근 활동이나, star의 수, 언어, 설명들을 확인할 수 있습니다.


Code Triage

Code triage는 여러분의 선호에 따라 적절한 이슈를 추천해주는 서비스입니다. 여러분은 프로젝트들을 클릭해서 분류하기만 하면 됩니다 여기도 마찬가지로 초보자들이 기여하기 좋은 레포지토리 목록을 제공합니다

Code Triage

목록은 언어로 필터링할 수 있으며, 필터링에는 90개가 넘는 언어를 지원합니다. 레포지토리의 이슈들과 설명도 확인할 수 있습니다.


Awesome Open Source

이 웹사이트는 친구인 Rishabh Singh이 추천해준 겁니다. Awesome Open Source에서는 371,159개의 프로젝트와 59개의 카테고리를 7000개의 주제를 조합하여 검색할 수 있습니다.

Find Open Source By Searching, Browsing and Combining 7,000 Topics

모든 프로젝트들은 보안, 네트워킹, 프레임워크, 그래픽과 같이 분류되어 있습니다.


🔗 Connect with me:

현재, 트위터에서 "How to write and grow blog?"에 대한 글을 작성하고 있습니다. 더 효율적으로 블로그를 운영하길 원한다면 아래 트위터 팔로우 버튼을 확인해보시기 바랍니다.

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8">

Twitter

마지막으로 하고 싶은 말

여러분의 관심사에 맞는 좋은 오픈소스 프로젝트 찾는데 도움이 되셨길 바랍니다.

읽어 주셔서 감사합니다.

오픈소스 커뮤니티 컨트리뷰터가 되는 법

작가 허락을 받고 번역한 글입니다.(원문)

최근 오픈소스 개발은 전세계적인 기술 혁신을 일으키고 있습니다. 이에 따라 오픈소스 커뮤니티도 급격하게 성장하고 있습니다.

Linus Torvalds

오픈소스는 라이센스를 기반으로 모두가 열람, 사용, 수정, 배포할 수 있도록 만들어진 소스코드입니다.

오픈소스 커뮤니티는 오픈소스 프로젝트 개발과 운영을 합니다.

오픈소스 커뮤니티에 참여하면 개발 능력과 커뮤니케이션이나 피드백 주고 받기와 같은 대인 관계 기술을 향상 시킬 수 있습니다. 하지만 컨트리뷰터가 되는 것이 어렵고 복잡해 보입니다. 오늘은 "오픈소스 시작"에서 더 나아가 어떻게 하면 컨트리뷰터가 될 수 있는지 정리해보고자 합니다.

기여할 만한 프로젝트 찾기

오픈소스 컨트리뷰터가 되는데 가장 중요한 요소 중 하나는 기여할 프로젝트를 선택하는 것 입니다. 익숙하고 어느정도 알고 있는 프로젝트를 선택하시기 바랍니다. 경험이나 배경지식이 있다면, 프로그램에 새로운 기능을 제안하거나 불편한 점들에 대해 논의를 하는 등 좀 더 쉽게 기여할 수 있습니다.

GitHub

취향에 맞는 프로젝트는 GitHub의 explore 페이지를 이용해 쉽게 찾을 수 있습니다. good-first-issue, beginner-friendly,easy 등 기여 관련 태그로 적절한 프로젝트르 검색할 수도 있습니다.

오픈소스에 기여하는 방법

오픈소스 기여가 코드 작성만 의미 하는 것은 아닙니다. 그 외에 많은 방법으로도 프로젝트에 기여할 수 있습니다. 실제 코드나 API에 댓글을 작성할 수도 있고, 문서를 작성하여 기여할 수도 있습니다. 코딩을 좋아한다면 풀 리퀘스트를 열어 코드를 제공해도 되고, 이슈를 열어 새로운 기능이나 문제에 대한 논의를 시작해도 됩니다. 만약 기여하고 싶은 프로젝트가 없다면, 유료 프로그램과 유사한 기능을 가진 프로젝트를 만들어 배포해도 됩니다.

오픈소스에 기여하는 방법

성공적인 오픈소스 기여 팁!

프로젝트들은 보통 초보자가 할 수 있을 만한 가장 작고 쉬운 일들을 따로 정리해 놓습니다. 해야할 일이 무엇인지 이해하기 위해서는 관련 문서를 읽어 보는게 좋습니다. 만약 도움을 요청하고 싶거나 추가 설명이 필요하면 부담없이 커뮤니티에 연락해 보시기 바랍니다. 일에 충분한 자신감을 얻게 되고, 어떻게 시작해야 할지 알게 되면 코드를 작성하고 풀리퀘스트를 제출해도 좋습니다. 업무 성과를 기여 가이드라인에 따라 제출하다 보면 순식간에 오픈소스 컨트리뷰터가 되어 있을 것입니다. GitHub 풀리퀘스트

시작

오픈소스 프로젝트 기여는 기술 능력 개발에 많은 도움이 됩니다. 지금 바로 기여할 프로젝트를 고르고 신규 기여자들을 도와주는 커뮤니티에서 여러분의 첫 기여를 시작하시기 바랍니다.

읽어 주셔서 감사합니다.

자유롭게 댓글을 달거나 공유하셔도 됩니다. 작가 연락처: 트위터, 링크드인

[TIL] Prose.io와 블로그 이전

hexo 블로그에서 Jekyll 블로그로

지난 29일부터 시작해서 블로그 static generator를 바꿨습니다. 테마도 변경하고, 커스텀도 조금 하고, 기존 블로그 글들을 옮기다 보니 꽤나 많은 시행착오가 있었습니다. 그로 인해 시간이 많이 소요 된 것이기도 합니다. 블로그를 이전한 이유는 여러가지가 있습니다.

  1. 귀찮게 TIL 작성만 하는데 컴퓨터를 켜야 한다.
  2. TIL 작성 과정이 너무 복잡하고 번거롭다. hexo 명령어도 쳐야 하고,,..

해결방안을 강구해보니, 그냥 github pages에서 지원해주는 build가 있었습니다. 이를 이용하면 따로 명령어를 칠 필요가 사라지고, 컴퓨터도 맨날 켤 필요 없이 TIL 적당히 써서 푸시만 제대로 해 주면 블로그 글이 그럴싸하게 만들어집니다.

하지만, github pages만으로는 안타까운점이 하나 발생합니다. 바로 적절한 에디터가 없다는 것. 글을 수정한다던가 할때 귀찮게 푸시하고, 깃헙 사이트들어가서 어떤 부분이 수정되었는지 확인하는데 어려움이 있다. 하지만 prose.io는 웹이라서 접근성이 굉장히 좋고, diff를 한눈에 알아볼 수 있어서 좋다.

PROSE.IO