번역체로 공유합니다.
from: https://dev.to/eoeboh/open-source-101-for-beginners-30af
===
여러 셰프가 주방에서 맛있는 식사를 조리하고 수석 셰프가 이 식사를 감독한다고 상상해 보세요. 누구나 더 많은 재료나 음식을 추가하고, 나쁜 맛을 바로잡고, 식사 요리에 대한 더 나은 아이디어를 제안함으로써 식사를 수정할 수 있습니다.
이 설정에서 누구든지 먼저 식사의 정확한 샘플을 채취하고 수정한 다음 감독 셰프에게 샘플을 제출하여 잠재적으로 실제 식사에 추가할 수 있도록 식사에 기여할 수 있습니다.
그러나 식사에 포함될 모든 샘플은 수석 셰프와 몇 명의 추가 감독 셰프의 승인을 받아야 합니다.
위 상황은 소프트웨어 개발에서 오픈 소스의 개념을 정의합니다.
- 식사는 구축 또는 유지 관리 중인 제품 또는 소프트웨어를 나타냅니다.
- 헤드 셰프는 프로젝트의 소유자 또는 작성자를 나타냅니다.
- 감독 셰프는 프로젝트의 관리자 입니다.
- 기여자는 당신과 나를 포함하여 누구나 될 수 있습니다.
이제 비교 가능한 실제 일러스트레이션이 있지만 실제로 오픈 소스 프로젝트란 무엇입니까?
오픈 소스 프로젝트란 무엇입니까?
간단히 말해서 오픈 소스 프로젝트는 대중에게 공개되어 누구나 검사, 사용, 수정 및 배포가 가능한 소스 코드가 포함된 소프트웨어로 정의할 수 있습니다.
이제 오픈 소스가 무엇인지 이해했습니다. 오픈 소스 환경에서 사용되는 용어와 그 의미를 살펴보겠습니다.
오픈 소스 용어
이 시점에서 할당된 역할과 일반적인 오픈 소스 프로젝트에서 사용되는 용어를 살펴보겠습니다.
오픈 소스 프로젝트에서의 역할
- 작성자: 프로젝트 작성자입니다. 프로젝트는 저자가 설정하고 감독합니다. 그들은 프로젝트 유지를 돕기 위해 다른 기여자에게 새로운 역할을 할당하는 것과 같은 작업을 수행할 수 있는 권한이 있습니다.
- 관리자: 프로젝트를 이끌고 프로젝트의 목표 또는 비전이 달성되도록 하는 책임이 있습니다.
그들은 일반적으로 검토, 풀 리퀘스트 승인/거부, 문제 할당, 프로젝트 행동 강령 유지, 잠재적인 개선에 대한 토론 주도 등의 권한을 가집니다. - 기여자: 이들은 오픈 소스 프로젝트에서 기능을 추가하거나 버그를 수정하고 열린 문제와 토론을 하는 사람들입니다. 그들은 이러한 작업을 수행할 때 규정된 지침을 따릅니다.
- 커뮤니티 회원: 오픈 소스 프로젝트를 사용하고 유지 관리하는 사람들입니다. 귀중한 피드백을 제공하고, 버그를 보고하고, 프로젝트에 기능을 제안합니다. 커뮤니티는 오픈 소스 프로젝트를 주도하는 것이며 기술 및 비기술 인력으로 구성됩니다.
오픈 소스 용어
- ReadMe 파일: 오픈 소스 프로젝트를 소개하고 설명하는 텍스트 파일입니다. readme 파일에는 프로젝트에 기여하는 방법에 대한 지침, 프로젝트 행동 강령, 지금까지 기여자 목록, 프로젝트 라이선스 등과 같은 항목이 포함되어 있습니다.
오픈 소스 readme 파일의 좋은 예는 ReactPlay의 readme 입니다. - 기여(Contributing) 지침: 여기에는 개발 환경 설정, 필요한 종속성 설치, 끌어오기 요청 방법 등을 포함하여 해당 프로젝트에 기여하는 방법에 대한 단계별 설명이 포함됩니다. 기여를 시작하려면 프로젝트의 기여 지침을 확인하는 것이 중요합니다.
- 행동 강령(Code of Conduct): 일반적인 오픈 소스 프로젝트에는 행동 강령이 포함되어 있으며, 이는 프로젝트 참여자 간에 규칙, 규정 및 예상되는 행동을 설정하는 문서로 가장 잘 설명됩니다. 행동 강령을 시행하면 프로젝트 내에서 포용적인 커뮤니티를 육성하는 데 도움이 됩니다.
- 이슈: 이슈는 기능을 제안하고, 버그를 보고하고, 토론을 주최하기 위해 열리는 티켓입니다. 일반적으로 기여자가 작업을 시작하기 전에 먼저 이슈를 설명하는 항목을 열어야 합니다(또는 기존 이슈를 확인). 그런 다음 유지 관리자는 일반적으로 이슈를 기여자에게 할당합니다.
또한 이슈에는 난이도, 진행 상태 및 사용 가능 여부를 설명하는 레이블이 함께 표시될 수 있습니다. - 풀 리퀘스트: 풀 리퀘스트는 검토가 필요한 변경 사항에 대해 다른 사람에게 알릴 수 있는 작업입니다. 따라서 기여자가 풀 리퀴스트를 열면 관리자와 다른 기여자가 제안된 변경 사항을 검토하고 논의하고 수정 사항이 있으면 논의하고 만족스러운 경우 풀 리퀘스트가 기본 소스 코드에 병합됩니다.
- 라이선스: 모든 오픈 소스 프로젝트에는 라이선스가 필요합니다. 오픈 소스 라이선스가 없으면 소스 코드는 GitHub에 공개적으로 게시된 경우에도 다른 사람이 사용할 수 없습니다.
라이선스는 소프트웨어로 수행할 수 있는 작업과 수행할 수 없는 작업을 설명합니다. 널리 사용되는 오픈 소스 라이선스의 예로는 MIT , Apache 라이선스 , Mozilla Public License 등이 있습니다.
오픈 소스를 시작하는 방법
첫째, 오픈 소스 기여는 코딩 기술만 있는 사람들에게만 국한되지 않는다는 점에 주목하고 싶습니다. 실제로 대부분의 오픈 소스 프로젝트에는 문서 작성, 오타 수정, UI/UX 디자인, 심지어 언어 번역이 필요합니다.
기여할 새로운 오픈 소스 프로젝트를 검색할 때 주의해야 할 특정 작업이 있습니다.
- 라이선스를 확인하십시오. 프로젝트에 MIT와 같은 허용 가능한 라이선스가 있으면 소스 코드를 자유롭게 수정하고 기여할 수 있음을 의미합니다.
- 프로젝트에서 어떤 기술 스택이 사용되고 있는지 확인하십시오. 예를 들어 Python만 사용한다면 오픈 소스 Python 프로젝트에 기여하고 싶을 것입니다. Swift 또는 C#을 기반으로 하는 프로젝트는 적합하지 않습니다.
- 프로젝트 커뮤니티가 얼마나 포용적이고 친근한지 관찰하십시오. 초보 기여자는 말할 것도 없고 새로운 기여자를 환영하지 않는 일부 오픈 소스 프로젝트가 있습니다. 이러한 프로젝트는 첫 번째 오픈 소스 기여를 검색할 때 피하는 것이 가장 좋습니다.
- 프로젝트에 좋은 readme 파일과 기여 지침이 있는지 확인하십시오.
- 리포지토리의 활동 수를 확인하십시오. 마지막 커밋이 언제였습니까? 토론은 얼마나 자주 수행됩니까?
- 메인테이너가 열린 이슈 또는 풀 리퀘스트에 응답하는 시간을 확인합니다. 관리자가 응답하는 데 너무 오래 걸리는 프로젝트는 시작하기에 적합하지 않을 수 있습니다.
대부분의 활성 오픈 소스 프로젝트에는 프로젝트 토론, 커뮤니티 호출이 자세히 이루어지는 Discord 또는 Slack 채널이 있습니다. 채널에 가입하고 새로운 기여자로 자신을 소개하는 것은 특히 비코딩 기여자를 위해 프로젝트에 참여하는 좋은 단계입니다.
활성 Discord/Slack 채널은 그러한 프로젝트가 환영하고 포용적이라는 좋은 표시입니다. 디자이너, 기술 작가, 프로젝트 관리자와 같은 비코딩 기여자의 경우 채널은 참여, 공유 및 기여를 전달하는 가장 좋은 방법입니다.
기여할 오픈 소스 프로젝트를 찾는 방법
기여할 첫 번째 오픈 소스 프로젝트를 찾는 데 도움이 되는 사이트는 다음과 같습니다.
오픈 소스의 모범 사례
오픈 소스에서 삽질하는 것은 훌륭한 단계이지만 훨씬 더 나은 방법으로 작업을 수행하는 방법을 아는 것은 모든 프로젝트에 귀중한 기여자가 될 것입니다. 참고해야 할 몇 가지 모범 사례는 다음과 같습니다.
- 좋은 사람 기술과 의사 소통
- 새로운 이슈를 열기 전에 유사한 이슈에 대한 기존의 열린 이슈를 확인하십시오.
- 이슈에 대한 이슈를 생성하고 작업을 시작하고 풀 리퀘스트를 제출하기 전에 할당을 기다립니다.
- 모든 이슈에는 복잡성 또는 난이도 수준을 나타내는 레이블이 있어야 합니다.
- 이슈가 할당되는 즉시 최대한 빨리 작업을 시작하고 풀 리퀘스트를 제출하세요.
- 항상 프로젝트 관리자가 설정한 기여 지침을 따릅니다.
- 이미 다른 기여자에게 할당된 이슈에 대한 작업을 피하십시오.
- 작업할 수 있을 만큼 자신 있는 이슈를 항상 맡습니다.
- 풀 리퀘스트를 제출하기 전에 모든 충돌을 해결하십시오.
- 설명적인 커밋 메시지 작성
- 한 번에 1~3개 프로젝트 사이의 몇 가지 오픈 소스 프로젝트에만 집중하십시오.
인기 있는 오픈 소스 프로젝트
GitHub에서 인기 있는 많은 오픈 소스 프로젝트를 이 링크 에서 찾을 수 있습니다 .
결론
오픈 소스는 기술적 배경이나 기술 수준에 관계없이 모든 사람을 위한 것입니다. 또한 오픈 소스는 기술 향상, 필요한 경험 제공, 팀워크 및 협업 기술 향상, 네트워크 성장 및 잠재적인 일자리 확보와 같은 많은 이점을 제공합니다.
from: https://dev.to/eoeboh/open-source-101-for-beginners-30af