Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

[Book] 오픈 소스로 미래를 연마하라

제목 그대로 오픈소스에 관한 책이고 이 책에서는 자유 소프트웨어와 오픈소스 소프트웨어를 모두 포괄하는 FOSS(Free and Open Source Software)라고 부르고 있다. 오픈소스로 책을 검색하면 꽤 많은 책이 나오는데 오픈소스 프로젝트 외에도 오픈소스에 기여하는 방법에 대한 책도 많이 있다.

1983년 리처드 M. 스톨먼은 소프트웨어 사용자들이 더 이상 자유롭게 소프트웨어를 살펴보고 수정하고 공유할 수 없다는 사실에 실망했고 GNU 프로젝트를 시작했다.

이런 책의 대부분이 GitHub의 사용법이나 오픈소스 생태계의 도구들을 설명하는 실용서라서 처음 오픈소스 생태계를 배울 때 도움 되지만 더 큰 그림은 못 보여주고 있다고 생각한다. 리차드 스톨만이 자유 소프트웨어를 얘기하면서 지금의 대세가 된 오픈소스의 분위기까지 담긴 역사와 철학 등이 있고 단순히 어떤 도구를 쓰느냐 이상의 발전 과정에 담긴 많은 내용이 있다고 생각한다.

오픈소스 생태계에 익숙해지기 위해 결국 배워야 하는 것은 '사람과 사람이 만나는 태도'에 관한 내용입니다.

실용서가 많은 데 비해서 이런 내용을 담고 있던 책이 없어서 아쉬웠기에 이번 책이 나왔을때 반가웠다. 실제로 작년 컨트리뷰톤에 참가하면서 오픈소스를 좀 설명해 주려고 했을 때 내가 선택한 책은 성당과 시장오픈 소스 : 오픈 소스 혁명의 목소리였는데 "성당과 시장"의 원서는 1997년에 나왔고 "오픈 소스 혁명의 목소리"는 1999년에 나왔다.

많은 사람이 알고 있는 내용과 달리 FOSS에서는 소프트웨어만 중요한 게 아니라 사람도 중요하다.

그만큼 오픈소스에 대해서 포괄적으로 설명하는 책이 적었다고 생각하는데 이 책은 그런 부분을 다뤄주고 있다. 책에서 라이센스와 기여하는 방법, 프로젝트나 이슈를 선택하는 방법도 나와 있지만 전체적으로 특정 플랫폼이나 도구를 특정 짓지 않으면서도 오픈소스에 어떻게 기여하고 왜 생태계가 그렇게 구성되어 있으며 어떤 태도와 기대를 하고 참여해야 하는지를 잘 설명하고 있다고 생각한다. 그런 면에서 특정 서비스나 플랫폼의 사용법을 배우진 못해도 더 긴 안목으로 써먹을 수 있는 지식을 배울 수 있는 책이다.

무언가를 기여하려면 FOSS 프로젝트에 공통으로 내재한 사회적 구조와 철학을 반드시 이해해야 한다.

소프트웨어를 오픈 소스로 만드는 것은 단지 소스 코드 이용 가능성이 아니라, 라이선스 그리고 해당 라이선스의 지시 사항들이다.

1장에서는 자유 소프트웨어와 오픈소스의 철학과 기원을 설명해서 어떤 차이가 있는지 이해할 수 있게 돕고 자연히 따라오는 라이선스에 관해 설명해서 FOSS의 기본을 이해할 수 있도록 돕는다.

자유 소프트웨어와 오픈 소스의 차이점은 철학과 동기에 있다. 자유 소프트웨어 지지자들의 노력에는 강한 도덕적 목적이 있다. ... 오픈 소스는 그 동기를 좀 더 실용적인 문제에서 찾는다. 오픈 소스 지지자들은 소프트웨어 소스를 공개적으로 이용할 수 있다면 소프트웨어를 이용하는 사업, 과학, 예술, 다른 모든 시도가 좀 더 잘 돌아갈 수 있으리라 생각한다.

2장에서는 FOSS에서 배울 수 있는 점을 설명해서 FOSS 기여를 왜 해야 하는지를 설명하고 있다. 안전한 환경에서 새로운 기술을 배우고 연습할 수 있으며 의사소통 기술을 발전시킬 수 있다고 하고 있다.

FOSS는 끊임없이 움직이고 발전하고 혁신하기 때문에 많은 업계의 현재 모범 사례가 FOSS 개발에서 비롯됐거나 완성됐다. 버전 관리, 기능 브랜치, 단위/통합 테스트, 지속적 통합/배포, 디자인 패턴 등이 그 예다.

3장에서는 실제 기여하기 위한 준비 과정을 포괄적으로 설명하고 있다.

  1. 기여하고 싶다는 걸 깨닫는다.
  2. 프로젝트를 찾는다.
  3. 할 일을 찾는다.
  4. 환경을 구성한다.
  5. 기여 작업을 한다.
  6. 기여를 제출한다.
  7. 피드백을 받고 코드 개선을 반복한다.
  8. 기여가 받아들여진다!
  9. 1번부터 다시 시작한다.

위의 과정으로 기여를 한다고 설명하고 4장부터 6장까지는 실제로 기여하기 위해 프로젝트를 어떻게 찾아야 하고 기여를 하는 방법과 고려해야 할 점 등을 설명한다. 앞에서 말했듯이 특정 서비스를 위주로 설명한다기보다는 기여 과정 자체를 이해하고 접근할 수 있도록 해서 특정 서비스가 아니어도 할 수 있게 설명한다.

핵심 기여자가 아닌 사람들이 그 일을 할 수 있다면 핵심 기여자들은 좀 더 세세한 검토에 필요한 시간을 확보할 수 있다.

여러분의 기여가 좋고 가치 있다고 생각하더라도 프로젝트 담당자가 받아들이지 않을 수도 있다. 그렇더라도 사적으로 여기지 말라.

FOSS에서 가장 중요한 측면은 코드가 아니라 사람이기 때문이다. FOSS 기여에서는 단순히 코드, 디자인, 문서 작업이 아니라 참여와 커뮤니티가 중요하다.

뒷부분에서는 FOSS의 핵심 중 하나인 소통을 다루고 있다. 실제로 기여를 하면 Pull Reqeust를 올리는 것은 시작에 불과하고 이후에 왜 이 코드 변경이 필요한지를 설득하고 논의하는 길고 긴 시간이 필요한데 그 부분을 많이 다뤄주는 점이 좋았다. FOSS 커뮤니티가 어떤 식으로 소통을 하고 어떻게 대응해야 하는지 잘 설명해 준다.

커뮤니티 멤버들은 우호적이지 않고 사람을 판단하고 환영하지 않는다. "이봐, 받아들여. 우리도 힘들게 했으니 당신도 그렇게 해야 해"라는 태도가 만연해 있다. 커뮤니티 멤버들은 반대되는 의견이나 불완전한 기여를 보면 공격적이 되고 모욕을 준다. FOSS에서 살아남는 유일한 방법은 철면피가 되거나 '자기 이익만 생각하는' 것이다. 이것이 FOSS에 대한 평판이다.

특히, 이 책에서 좋았던 점은 "오픈소스에 참여하면 좋다"고 장점만 부각하지 않는다는 점이다. 실제로 무례한 사람이나 우호적이지 않은 프로젝트들이 존재하고 그런 부분이 상처가 되거나 커뮤니티를 벗어나게 되는 원인이 되기도 하는데 이런 부분도 가감 없이 다뤄주고 있으며 떠나고 싶을 때 어떻게 하는 게 좋은지까지 설명해 준다.

나도 이런 철학이나 기원에 대해서 이해하는 과정을 중요하게 생각하는 터라 오픈소스에 관심이 있을 때 추천해 줄 만한 좋은 서적이 생긴 것 같다.

2020/01/10 00:35 2020/01/10 00:35