장기영 (Thomas Jang)

CHEQUER FrontEnd Director

 

tom@chequer.io

github.com/thomasjang

axisj.com, jsdev.kr, 구구너드.com

액시스제이

구구너드.com

  • 16년차 소프트웨어 개발자
  • NIPA 글로벌 오픈프론티어
  • NIA 2014 슈퍼개발자K3 우승
  • OSS 개발자대회 금상(AXBoot)
  • 주요오픈소스 (AXISJ, AX5UI, AXBoot 등)
  • JSDEV.kr 운영진

오픈소스

컨트리뷰션의 이해

Open Source

오픈 소스(open source)는 소프트웨어 혹은 하드웨어의 제작자의 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어 혹은 오픈 소스 라이선스에 준하는 모든 통칭을 일컫는다. 어원에 대해서는 History of the OSI 자료에 따르면, 1998년 2월 3일에 넷스케이프 브라우저의 원시 코드에 대해 어떠한 형태로 공개할까하는 전략회의에서 붙여진 새로운 용어라고 설명되어 있다.

소스 코드를 공개한다고 해서 모두 오픈 소스인 것은 아니다. 예를 들어, 마이크로소프트는 전체 비율로 보았을 때 극소수의 고객(주로 정부나 거대 다국적 기업 또는 대학교 및 연구소)들에게 마이크로소프트 윈도우의 소스를 공개했다. 오로지 보안 유지를 위해서만 소스를 직접 수정할 수 있으며, 그 수정본을 재배포하는 것은 금지되어 있다. 이것은 오픈 소스의 의의에 어긋나므로 이러한 경우는 오픈 소스라 부르지 않는다.

https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88_%EC%86%8C%EC%8A%A4

Open Source

  • 소스가 공개되어 있다.
  • 라이센스를 가진다.
    • GPL, BSD, MIT, Apache...
  • 열람, 사용, 복사, 수정, 배포 가능
  • 대표적으로 Linux, Chromium
  • 원 제작자의 권리(Copyright)를 인정

https://www.slideshare.net/JerryJeong2/ss-58804386

Linux

리눅스(영어: Linux)는 컴퓨터 운영 체제의 하나이며, 그 커널을 뜻하기도 한다. 리눅스는 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 표본으로 들 수 있다. 리눅스는 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)이다.

엄밀하게 따지면 이 ‘리눅스’라는 용어는 리눅스 커널만을 뜻하지만, 리눅스 커널과 GNU 프로젝트의 라이브러리와 도구들이 포함된, 전체 운영 체제(GNU/리눅스라고도 알려진)를 나타내는 말로 흔히 쓰인다.

https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4

Richard Matthew Stallman

Richard Matthew Stallman

리차드 매튜 스톨만(영어: Richard Matthew Stallman, 1953년 3월 16일 ~)은 자유 소프트웨어 운동의 중심 인물이며, GNU 프로젝트와 자유 소프트웨어 재단의 설립자이다. 그는 이 운동을 지원하기 위해 카피레프트의 개념을 만들었으며, 현재 널리 쓰이고 있는 일반 공중 사용 허가서(GPL) 소프트웨어 라이선스의 개념을 도입했다.

그는 또한 탁월한 프로그래머이기도 하다. 그는 문서 편집기인 Emacs, GNU 컴파일러 모음 컴파일러, GDB 디버거 등 많은 프로그램을 만들었으며, 이들 모두를 GNU 프로젝트의 일부로 만들었다.

그는 자유 소프트웨어 운동의 도덕적, 정치적, 법적인 기초를 세우는 데 본질적인 영향을 준 인물이며, 이는 독점 소프트웨어 개발과 공급에 대한 대안이 되었다.

Linux

1983년 9월 리처드 스톨만은 GNU 프로젝트를 시작했다. GNU 프로젝트의 목적은 프리웨어로만 구성된 완전한 하나의 유닉스-유사 시스템을 만드는 것이었다. 1989년, GNU는 시스템 라이브러리, 컴파일러, 텍스트 에디터, 셸 등의 커널을 제외한 시스템의 핵심적인 부분을 완성했다. 1990년 시작된 허드(Hurd) 커널은, 초기에는 BSD 4.4-Lite 커널을 기반으로 개발하려 했으나, 원래의 BSD 커널을 개발했던 버클리 프로그래머들과의 협력이 이루어지지 않아 실패했다. 1987년 리처드 스톨만은 허드를 마하(Mach)라는 마이크로 커널을 기반으로 개발하려 했다. 그러나 마하는 예상외로 복잡한 구조를 가지고 있어서, 허드의 개발은 지체되었다.

그러던 중(1991년), 리눅스라는 이름의 또 다른 커널이 극적으로 등장하였다.

Linus Benedict Torvalds

Linus Benedict Torvalds

리누스 베네딕트 토르발스(스웨덴어: Linus Benedict Torvalds , 1969년 12월 28일 ~)는 스웨덴계 핀란드인으로서 핀란드 헬싱키에서 태어난 소프트웨어 개발자로, 리눅스 커널과 깃을 최초로 개발한 사람으로 잘 알려져 있다. 후에 그는 리눅스 커널 개발 최고 설계자가 되었고, 현재 프로젝트 코디네이터로 활동하고 있다. 그는 커널의 플랫폼 독립적인 부분과 인텔 IA-32 아키텍처로 구체화되는 핵심 커널의 컴포넌트들을 관리한다. 저명한 오픈소스 소프트웨어 개발리더들에게 부여되는 명예 타이틀직인 자비로운 종신독재자(BDFL, en:Benevolent Dictator for Life) 중의 한 사람이기도 하다.

Android Open Source Project

만약 당신에게 안드로이드가 없다면?

만약 당신에게 안드로이드가 없다면?

만약 당신에게 안드로이드가 없다면?

만약 당신에게 안드로이드가 없다면?

오픈소스의 가치

이해 되시겠죠?

자비로운 종신독재자

자비로운 종신독재자(BDFL, Benevolent Dictator for Life)란 소수의 오픈 소스 소프트웨어 개발 리더에게 부여되는 칭호이다.

주로 커뮤니티 내에서 논쟁이 있을 때 최종적으로 결론을 내려줄 수 있는, 프로젝트 창시자인 경우가 많다.

 

이 표현은 1995년에 파이썬의 창시자 귀도 반 로섬을 가리키는 호칭으로 처음 사용되었다.

자비로운 종신독재자

이름 프로젝트 종류
귀도 반 로섬 파이썬 프로그래밍 언어
래리 월 프로그래밍 언어
리누스 토르발스 리눅스 운영체제
리처드 스톨먼 GNU 프로젝트 오픈소스 소프트웨어 운동
리치 히키 클로저 프로그래밍 언어
마츠모토 유키히로 루비 프로그래밍 언어
마틴 오더스키 스칼라 프로그래밍 언어
브람 물레나르 Vim 텍스트 편집기

Git

2005년 리누스 토르발스가 Subversion을 쓰다가 엄청나게 빡쳐서

개발한 분산형 버전 관리 프로그램.

오픈소스계의 영원한 아이돌 리누스 토발즈는 리눅스 커널을 관리하는 기존 툴이 엉망인 것에 너무 빡친 바람에 git이라는 소스관리 툴을 만든다.

그게 리누스에게 얼마나 깊은 빡침이었는지, 단 2주만에 완성하는 기염을 토했다. (그러고는 후에 “git 만드는게 제일 쉬웠어요”라는 인터뷰로 나와 같은 빠돌이를 지리게 했다). - 오픈소스의 승리 중에서 -

https://namu.wiki/w/Git

Git

깃(Git /ɡɪt/)은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다. 기하학적 불변 이론을 바탕으로 설계됐고, 빠른 수행 속도에 중점을 두고 있는 것이 특징이다. 최초에는 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발하였으며, 현재는 다른 곳에도 널리 사용되고 있다.

깃의 작업 폴더는 모두, 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있으며, 완전한 형태의 저장소이다. 네트워크에 접근하거나 중앙 서버에 의존하지 않는다.

현재 주니오 하마노(Junio Hamano)가 소프트웨어 관리를 감독하고 있다. 깃은 GNU 일반 공중 사용 허가서 v2 하에 배포되는 자유 소프트웨어이다.

Git GUI Tools

  • Sourcetree
  • Github Desktop
  • GitKraken
  • SmartGit/Hg

Git을 사용하기 편리하게 도와주는 도구들

Sourcetree

  • OSX/Win : https://www.sourcetreeapp.com
  • Linux : https://git-scm.com/download/gui/linux

Contribution

something that you contribute or do to help produce or achieve something together with other people, or to help make something successful

다른 사람들과 함께 무언가를 창출하거나 성취하도록 돕거나 무언가를 성공적으로 만들기 위해 당신이 기여하거나하는 일

Why do you contribute?

  • 개발 커리어를 꾸준히 쌓을 수 있다.
  • 내 실력을 공개적으로 증명할 수 있다.
  • 이력서? 토익점수? 엄청난 곳에서 연락이 옵니다.
  • 개발자를 인정해주고 아껴주는 회사에서 일할 수 있다.
  • 글로벌하게 소프트웨어 산업에 기여할 수 있다.

Where do you contribute?

Github는 개발자의 Facebook

Github의 개념 정리

  • Main Repository
    내가 기여할 리파지터리, 나에게 쓰기커밋 권한이 없다!
     
  • My Repository
    내가 만들거나 Fork해온 리파지터리, 내꺼!
     
  • Local Repository
    내 PC에 내려받은 git

Github Contribution Process

Github Contribution Process

  • 포크 > 클론

  • 개발을 하고

  • Commit을 하고

  • Push를 하고

  • Pull Request를 보냅니다.

  • 이것이 오픈소스 컨트리뷰션!

Pull Request

  • Github의 아주 강력한 협업 기능

  • 단지 오픈소스 컨트리뷰션만을 위한 기능이 아님

  • 작업의 완료를 위한 과정이 아닌, 새로운 작업의 시작을 위한 기능

  • 작업의 히스토리 관리에도 매우 효율적임

Don't "Push" Your PRs

기여는 항상 환영해야 마땅하지만, 깜짝 놀랄 패치는 결국 짐이 될 뿐이다.

당신은 분명 도움을 주기 위해 한 일이다.

하지만 누군가는 당신보다 더 오랜 기간 동안 그 코드를 유지보수 해왔다.

그러므로 그들을 놀라게 하는 것을 피하고 그들의 방식을 먼저 따르자.

 

더 최악인 경우는, 협소한 문제를 해결하기 위해 지역적인 변경을 만들어 프로젝트에서의 전체적인 구현을 놓치게 되는 경우가 있다.

Pull Request Guide

  • 큰 커밋은 작고 다루기 쉬운 단위로 자른다.
  • 하나의 PR에 여러가지 변경점을 담지 말라.
  • 문제를 해결하기 위해 지역적 변경을 만들지 말라.
  • 문제와 해결책에 대한 이슈를 만들어 어떤 일을 하려고 하는지 먼저 알리자.
  • 코딩 컨벤션을 살펴보고 따라라.
    (명명규칙, 들여쓰기, 중괄호, 주석...)

Contributing in other ways

  • 오타수정
  • 가이드 문서 작성
  • 디자인 작업
  • 의견 제시
  • 아무리 사소한 것이라도 프로젝트에 도움이 된다면!

오픈소스 비즈니스 모델

MySQL과 sleepycat(버클리 DB)가 듀얼 라이센싱으로 유명하다. 즉, GPL 버전은 무료로 쓰지만, non-GPL버전을 쓰려면 돈을 내야 한다. (두개 버전이 다르다.)

소프트웨어를 Embed 해서 재판매 하려는 회사에 해당된다.(물론 GPL버전 만으로도 충분하다.) 하지만, GPL버전에 대한 피해망상이나 오해로 사람들이 종종 라이센스를 사기도 한다.

듀얼 라이센싱 모델

오픈소스 비즈니스 모델

이것은 Xen, SugarCRM 과 같은 회사에서 요즘 새로 실험되는 모델이다. 즉, 코어는 공짜로 풀고 부가기능은 돈받고 파는 모델이다.(물론, 코어만으로도 충분하다.) 여기서 판매가치는 부가기능들이 만들어 낸다.

코어 오픈 모델 : 프리미엄 모델

제품을 무료로 다운로드할 수 있게 한다. 그리고 별도로 ‘프로’ 업그레이드 버전을 만들어놓는다. 제품의 핵심부분은 무료로 제공하면서, 다양한 애드온 기능을 프로 버전에서 제공한다.

오픈소스 비즈니스 모델

소프트웨어 제품을 만든 회사가 소스코드를 공개한다. 커뮤니티 에디션은 이 회사가 제공하는 제품의 여러 버전 중 하나다. 기술지원을 받길 원하는 사용자에게 유료 에디션을 구매하게 하거나, 유료 기술지원 서비스를 구독하게 한다. 설치, 기술지원 등으로 매출을 거둔다. 스스로 소프트웨어를 안정적으로 쓸 수 있다면 유상 기술지원 서비스를 안 쓰면 된다. 유상 서비스는 유지보수, 기술지원, 교육 등 다양한 요소를 가질 수 있다.

커뮤니티 에디션 모델

오픈소스 비즈니스 모델

현재 오픈소스 소프트웨어의 수익성을 보여주는 사업모델이 다수 존재한다. 디스크에 소프트웨어를 담아 소매점에서 판매하던 1990년대 모델은 이제 무의미해졌다. 많은 회사가 창의적 사업모델을 만들어내고 있다.

현대 소프트웨어 업계는 가능성으로 가득해 역동적으로 움직이고 있다.

위키피디아, 오픈소스 사업모델 16종으로 분류

오픈소스의 중심 언어

JavaScript ; 무조건 자바스크립트

JS <web>

JS <mobile>

JS <desktop>

JS <server>

JS <Game>

JS <Media>

JS <IoT & Robotics>

One Javascript To Rule Them All

오픈소스는 대세

  • 78%의 IT 회사가 오픈소스를 사용 중

  • 64%의 IT 회사가 오픈소스 프로젝트 참여 중

오픈소스는 대세

  • 50% 이상의 엔지니어가 오픈소스 기반으로 업무

  • 66% 이상이 솔루션 도입 시 오픈소스 우선 고려

오픈소스는 대세

  • 65%의 기업이 오픈소스를 통해 경쟁 우위 확보

  • 75%의 기업이 오픈소스를 통해 매출 증대

오픈소스 하세요

  • 오픈소스 활동을 통해 개발 실력 향상과 영어 실력 향상 두 가지를 모두 노릴 수 있습니다.

  • 본인의 역량을 쉽게 노출시킬 수 있고, 이를 이력서에 활용할 수 있으므로 본인 홍보의 수단이 됩니다.

  • 협업을 통해 개발이 진행되기 때문에 문제에 접근하는 시야가 넓어질 수 있습니다.

오픈소스 컨트리뷰션의 이해

By 기영(CHEQUER) 장

오픈소스 컨트리뷰션의 이해

오픈소스 강의

  • 1,409