Raspberry Pi Contribution
쉽지만 빡센 실전 훈련소Raspberry Pi Contributor
git 과 리눅스를 공부하면서 실제로 어떻게 쓰이는지 사용해봐야 하는데 밑도 끝도 없이 프로젝트를 하는건 수습하기 어려울 거 같아서 오픈소스에 참가하였다.
Raspberry Pi에서 Contributor로 활동하며 협업 방법과 Linux Kernel에 접근하여 공부해가는 학습과정을 기록하였다. Raspberry Pi 사용자 문서로 제품 특성이나 가이드라인을 포함한다. Raspberry Pi는 리눅스가 올라간 초소형 미니 컴퓨터로 리눅스 컴퓨터 사용 방법과 간단한 모듈에 대한 예제 코드들이 다수 포함되었다.
라즈베리파이로 여러가지 프로젝트를 해보면서 문제를 해결하다보니 저장소에 기여하고자 공식 홈페이지에 들어갔다.
커널 빌드하기까지
Linux Kernel 에서 어떤 Pull Request를 할지 몰라서 하고 있던 Pi-Watch 프로젝트에서 Kernel을 빌드해보면서 구현한 자동화 스크립트를 Pull Request를 요청하였다. 답변은 굉장히 격식 있는 Close
답변을 주어 보낸 Pull Request가 부끄러워졌다. 너무 성의없이 Pull Request를 요청한게 아닌가 느껴졌다.
답변은 메인테이너가 기여하려는 마음을 따뜻하고 가치있게 봐준 점이 오픈소스 협업에 관한 열정을 더 높였다. 비록 Close
되었지만 기여할 수 있는 부분을 논의하였고 커널을 빌드할 때 문제를 수정해주면 입문자들이 시작할 때 어디가 문제인지 쉽게 접근할 수 있다는 답변을 받았다.
메인테이너가 권유한 방식대로 기술문서에서 Kernel 빌드할 때 트러블슈팅을 작성하려고 하였다. 프로젝트를 진행하면서 기존에 아는 방식과 다르게 기술문서를 따라해보면서 커널을 빌드해보았고 그 과정에서 처음 입문하는 사람들이 알 수 없는 부딪힐 수 있는 부분이 있을까 세세하게 확인하던 중 크로스 컴파일할 때 프로세서 갯수를 확인하는 부분이 구체적으로 명시되지 않아 수정하여 PR(Pull Request)를 요청할 수 있었다.
커널 빌드 관련 Contribution
기술문서에서 커널을 크로스 컴파일하는 과정에서 프로세서 갯수를 확인하는 명령어를 첨부하여 수정하였고 간단한 피드백을 통해 긍정적인 Merge
답변이 날라와 이에 힘 입어 지속적으로 수정을 거치고 있다.
충분한 이해를 위해 기술문서 정독하기
Rapsberry Pi
를 사용한 지 2년이 훌쩍 다다른다. 처음 접할 때 여러 명령어와 익숙하지 않은 CLI 환경에 힘들었지만 조금씩 적응할수록 GUI보다 CLI 환경에 더 적응해가고 있다. 또한 GUI 환경에서 할 수 없었던 제한된 복합적인 기능을 명령어 한 줄로 구사하는 점이 매력적으로 다가왔다.
커널을 빌드하고서 PR(Pull Request)를 요청한 지 약 3개월만에 리눅스 커널에 드디어 코드 한 줄을 기여하였다. 처음 시작은 Raspberry Pi 커널을 빌드한 결과 자동화 스크립트를 작성하여 요청하였으나 거부하였고 대신 기술문서 안에서 바로 잡을 수 있는 부분을 기여해달라는 답변을 받아 Raspberry Pi 기술문서에서 커널 빌드 부분을 작성하여 기였하였더니 Merge
와 함께 감사의 인사로 답하였다. 이때 힘 입어 기술문서에 다른 Command 사용에 관하여 기여를 하였고 Linux 환경 중점 보다는 Raspberry Pi 사용 중심으로 기여하고자 깊은 구성은 피했다. 그후 다시 리눅스 커널에 관한 드라이버 파트를 유심히 보다가 커널 config 부분에 코드를 기여할 수 있게 되었고 흔쾌히 Merge
답변을 남겨주었다.
어느 커뮤니티에 말을 인용하자면 리눅스 커널이라는 영역은 평생을 공부해야 코드 한 줄을 기여할 수 있을까 말까 할 정도로 다 알 수 없을만큼 가치 있고 흥미로운 일이라고 한다. 어려운 시작, 낯선 시작이었지만 포기하지 않고 코드를 사랑하는 마음으로 꾸준히 기여하고자 한다.
다른 것
디바이스 드라이버에 관하여 구현해보려고 구글을 통해 간단한 테스트 문자 디바이스 드라이버를 구현하였다. 디바이스 드라이버 개발 규칙을 간단하게 살펴 예제를 시도해보았다. 관련된 건으로 Raspberry Pi Zero W를 SERVER로 사용하고 있는데 유선랜 포트가 없어 ENC28J60 모듈을 사용하여 이더넷에 연결하였다. 문서를 찾아보니 개발된 드라이버가 있어서 연결하여 호환이 가능한 것이었다.
잠시
최근 문서 기술 관해서 간단한 명령어 관해 PR을 요청하자 운영과 관련된 기술문서는 웹사이트에 더 자세하게 나와있어 앞으로 이와 같은 PR 요청은 받지 않는다는 답변을 받았다. 그래서 좀 더 다른 파트로 PR을 해보고자 쉬면서 커널 부분과 기술문서를 차근차근 살펴보려고 한다.
이름 쓸 줄 모르는 이상한 곳
Pull Request를 진행하다보니 Raspberry Pi
오타가 빈번하게 많은 걸 발견했다. 메인테이너들이 유쾌하게 받아치길 이곳은 철자를 쓸 줄 모르는 사람들만이 일을 할 수 있는 자격을 가질 수 았다고 한다.
기술문서 내에 철자 틀린 부분이 몇가지 있었다. 그 후 또 찾을 수 있었다. 여기서 유머러스하게 답변한 것을 보고 유쾌한 곳에 속해있다는 것을 알았다.
얼마 후 나도 드디어(?) 자격을 얻었다.
이쯤이면 오타를 즐기는 것 같고 우연찮게 오타를 내면 유쾌하게 받아칠 수 있는 것 같다.
Top Contributor
Open source community에 매일 1 - contribution
을 진행한 결과 탑 컨트리뷰터 리스트에 오르게 되었다. 첫 시작은 커널을 빌드하는 과정에서 자동화 스크립트를 작성하였지만 Collaborator가 다른 사람들이 커널에 관하여 문제 해결을 쉽게 할 수 있도록 가이드를 잡아달라고 요청하여 기술문서로 방향을 바꿨다. 첫 커널을 빌드할 때 기술문서를 충분히 숙지하고자 여러번 정독하였는데 이때 크로스 컴파일 진행할 때 코어 갯수를 확인하는 명령어 설명이 부족하여 이를 시작으로 조금씩 기술문서 내에 교정 문구와 오타들을 바로 잡았다.
덕분에 Git 명령어를 친숙하게 사용할 수 있게 되었고 PR을 하면서 필요한 옵션과 일어날 수 있는 충돌과 요구사항에 맞게 자유자재로 명령어를 다루어 commit을 진행해볼 수 있었다.
문서 개편이었나
의미있는 커밋을 진행하고자 한다. 물론 매일 기술문서에서 보완할 것을 찾는 것도 좋지만 더 의미있는 가치있는 PR을 남겨보고자 한다.
남겨진 코멘트를 참고하여 의미없는 변화를 추구하지 않도록 기여해야겠다.
Raspberry Pi Imager 한글화
Raspberry Pi Imager
공식 한글화를 진행하였다. 라즈베리파이 프로젝트를 하면서 많이 찾아본 것은 다름 아닌 관련 기술문서다. 기술문서를 통해 라즈베리파이를 어떻게 사용하고 어떤 방식으로 구성되었는지 알아보기에 좋은 레퍼런스이다. 당시에는 Raspberry Pi 프로젝트를 하려면 먼저 운영체제를 SD카드에 설치하기 위해 카드를 포맷하고 다시 카드에 쓰기까지 몇번의 과정을 거쳐야 했어서 번거로운 것이 없지 않아 있었다. 우연히 오픈소스 컨트리뷰션을 하다가 Imager 번역 컨트리뷰션을 알게 되어 한글화를 진행하였다. 단순하게 번역 자체 의미는 없지만 어떤 툴이나 플랫폼을 쓸 때 우리말이 지원된다는 건 기쁜 일이다. 항상 그 뒤에 누군가 번역해준다는 사실을 모르고 있었는데 이번에 Raspberry Pi Imager
를 번역하면서 지금까지 사용해왔던 툴이나 프로그램에서 우리말이 지원되기까지 수고해주신 보이지 않는 분들의 손길이 감사했다.
프로그래밍을 배우고 자라나는 친구들이 한번쯤 쓰고 지나친다는 Raspberry Pi
, 내가 번역한 한글화 버전을 쓴다는 생각에 더 신경써서 번역해야겠다.
기여자 몰색하기
https://github.com/raspberrypi/documentation/pull/2601#discussion_r930905709
누군가 컨트리뷰션을 할 수 있게 오타를 수정하지 않고 냅뒀다. 다른 사람이 컨트린뷰션을 할 수 있도록 열어둔 셈이다. (하지만 담당자가 수정했다.)
컨트리뷰션을 하면서 느낀 것은 오픈소스는 정말 무섭고 위대한 단체라고 생각한다. 비록 페이나 보상이 없어 순수한 마음이 아니라면 동기부여가 어렵지만 이 말은 마음만 있다면 어떤 코드 간에 개선과 패치 그리고 bug fix 는 멈추지 않는다는 것이다. 조금 느리더라도 누군가에 의해 코드는 개선되고 후에 더 나은 모습으로 무서운 속도로 성장할 것이라고 본다.
If you find any errors, please let me know by comment or email. Thank you.