GitHub
[image]
홈페이지
1. 개요
대표적인 무료 Git 저장소. 2008년 공개했다. Git 호스팅 기능 덕분에 GitHub는 자유 소프트웨어의 성지로 떠올랐다. 본사는 미국 샌프란시스코에 있다. 경쟁사 SourceForge는 애드웨어, 해킹, 바이러스 등등의 문제로 많은 개발자들의 신뢰를 잃어 사실상 망했으며, 대부분의 프로젝트가 GitHub 쪽으로 이주하게 됐다. 마스코트는 고양이와 문어를 합친 모습의 Octocat이다. 새 모양 실루엣의 트위터 로고가 마음에 든 깃허브 관리자가 그 디자이너에게 제작을 의뢰했다고 한다.'''GitHub is how people build software'''
GitHub는 사람들이 소프트웨어를 개발하는 방법입니다
원래는 공개 프로젝트만 무료였고 비공개 프로젝트는 결제를 해야 했으나, MS에 인수된 이후 2019년 1월 초부터 비공개 저장소를 무료로 제공하기 시작했고#, 2020년 4월 중순부터 비공개 저장소 공동 작업자수 제한도 풀렸다.#
2. 특징
- 각 소스코드 저장소마다 Gollum이란 마크다운 기반 위키를 만들 수 있다. 위키를 클론하고 싶을 경우 https://github.com/(사용자 이름)/(저장소).wiki.git을 클론하면 된다.
- GitHub는 SSH 와 https 프로토콜을 지원하며, 각각 다른 방식의 Remote git의 URL로 저장된다.
- Public/Private repository를 지원하며, 접근 권한이 필요한 private repository인 경우 기본적으로 GitHub 계정과 Password 를 입력을 해야 git pull/push가 가능하지만, 한번만 설정도 가능하다. GitHub ID/Password 입력 없이 사용하는 방법.
- GitHub Pages라는 이름으로 웹 호스팅 서비스도 제공하고 있다. Jekyll(지킬)이라는 Ruby 기반 정적 CMS 툴을 내장하고 있다.[1] Jekyll을 사용하지 않을 경우에도 평범한 HTML/CSS/JS를 툭 던져놓으면 홈페이지로 쓸 수 있다. (사용자 이름).github.io라는 이름으로 저장소를 만들면 된다. 개인 도메인을 사용하고 싶은 경우 저장소 루트 경로에 CNAME 파일을 만들고 도메인을 입력한 뒤 DNS에 GitHub 서버 주소를 입력하면 된다.[2]
- 각 소스코드 저장소마다 홈페이지를 한개씩 만들 수 있다. GitHub Pages의 하위 디렉토리로 들어가게 된다.[3]
- 각 레포지토리마다 별도의 이슈 트래커를 무료로 지원한다. 마이크로소프트도 GitHub의 이슈 트래커를 상당히 애용하고 있다.
- 2020년 2월부터 디스커션 보드가 추가되었다. 이전까지는 이슈 트래커에서 버그 리포팅과 특정 주제에 대한 토론을 함께 진행했는데, 이제 토론은 별도의 게시판에서 진행할 수 있다.
- 2명 이상의 협력자(Collaborators)를 등록하여 하나의 프로젝트를 가지고 GitHub를 통해 공동 작업할 수 있다.
- GitHub Gist : 단일 소스 파일과 간단한 메모를 저장 또는 공유하는 용도로 사용할 수있다. public[4] /private[5] 여부를 선택할 수 있으며, Google Colab 등 여러 툴에서 코드 단위 레포지토리 용도로 기본적으로 제공하는 추세이다. 원래는 익명으로도 올리는 것이 가능했으나 이를 악용한 스팸이나 악성코드 업로드 등 지속적으로 문제가 되자 로그인해야만 사용 가능하도록 변경되었다.
- 외부 라이브러리의 취약점이 확인된 경우 사용자에게 해당 사실을 통보하고 자동으로 최신 버전으로 교체하는 기능을 제공한다.
- Github Action이라는 CI/CD를 위한 워크플로우 자동화 기능을 제공한다.[6] 모든 언어를 지원하며, 모든 주요 OS 컨테이너에서 빌드, 테스트 및 배포가 가능하다.[7][8] 미리 만들어진 엑션을 사용하거나, YAML 구문을 사용하여 엑션을 사용할 수 있다.
- Project Boards라는 내장 칸반보드가 있다. 자동으로 추가되게 설정도 가능하다.
3. 유사 서비스
이제 Github에서도 Private계정을 만들수 있고, DevOps또한 Github으로 합쳐졌다.
그 외에 Bitbucket과 GitLab이라는 후보도 있다. 이 중에서 GitLab이 Bitbucket보다 여러모로 강력한 기능을 제공하고 제한도 적게 걸지만[9] , Bitbucket에 비하면 서버 운영이 불안정한 편이다. Bitbucket은 Jira와 Confluence로 유명한 Atlassian에서 개발했기 때문에 신뢰도는 확실하다.
참고로 Gitee라는 중국판 GitHub도 있다. 중국에서 GitHub를 차단한 뒤 중국판 대체 웹사이트를 만든 것으로 추정된다.
4. 비판 및 사건사고
4.1. MS의 인수
Bloomberg에 따르면 2018년 6월 4일, 마이크로소프트가 GitHub를 인수하기로 결정했다고 한다. #
GitHub는 2016년에만 무려 6,600만 달러의 엄청난 적자#를 기록했고, 이 때문에 자체 상장보다는 인수되는 것을 희망해 왔다고 한다. 또한 오픈 소스에 친화적인 태도를 보이는 마이크로소프트의 CEO인 사티아 나델라에게 감명받았다고 한다. 현지시각으로 2018년 6월 4일 오전 6시에 MS 트위터를 통해서 GitHub 인수 소식이 정식 발표되었다. # 인수 금액은 75억 달러이다. 인수가 완료되면 Xamarin의 CEO였던 냇 프리드먼이 GitHub의 CEO로 부임할 예정이다. 그리고 2018년 10월 26일, 인수 절차가 완료되었다. #
이에 대해서 걱정 또는 비판하는 목소리가 많았다. GitHub는 오픈 소스의 성지 역할을 하고 있는 사이트였고, 이는 GitHub이 특정 기업에 종속되지 않은 중립적인 행보를 보였기에 가능한 일이었다. 오픈 소스를 배척한다는 이미지가 강해 자유 소프트웨어 쪽에서는 거의 악마로 묘사되는 MS가 GitHub를 인수하게 되면 오픈 소스를 탄압 또는 고사시킬 것이라는 우려이다. 물론 이는 빌 게이츠 시절 이야기고 사티아 나델라 CEO 이후엔 친 오픈 소스, 탈 윈도우 플랫폼 행보를 보이고 있다. 그 전에 인수한 링크드인도 MS의 색채를 거의 없앤 채로 운영 중이지만 한번 쌓인 이미지가 그리 쉽게 사라지지 않는다는 게 문제다. 또한 경쟁사 서버에 자신들의 소스 코드가 올라가게 되었다는 점에서 MS와 경쟁관계에 있는 수많은 기업들(애플, 구글 등) 또한 찝찝할 수밖에 없다.
GitLab 측에서는 MS의 GitHub 인수를 축하하는 글을 블로그에 올렸다. MS의 인수 소식 때문인지, 애플은 Xcode 10부터 GitLab 기능을 통합시킬 것이라고 밝혔다. #
GitHub의 텍스트 에디터인 Atom이 같은 Electron 프레임워크 기반의 비주얼 스튜디오 코드와 유사한 위상이어서, MS에서 Atom을 정리하려는 것은 아닌가 우려하는 사용자들이 있었으나, 일단 GitHub의 새로운 CEO는 Atom을 계속 지원할 것을 약속했다. # 그러나 VS Code에 비하면 Atom은 적극적인 업데이트가 이루어지지 않고 있으며, 결국에는 버려질 것이라는 예상이 많다.
한편으로는 오라클이 아니라 MS가 인수해서 다행이라는 반응도 있다. 이전부터 오픈소스 진영에서는 오라클이 주적(主敵)으로 취급되곤 했는데, 그 주적한테 인수되는 것 자체가 자칫 큰 반발을 살 수 있기 때문.[10] 다행히 인수 의사를 밝힌 MS는 친 오픈소스 행보를 보이고 있기 때문에, 앞서 언급했듯 GitLab 등에서도 환영 의사를 나타낼 수 있었다. 오라클이 인수했다면 썬 마이크로시스템즈나 오픈오피스, 아니면 MySQL 꼴 날 수도 있었을 일. 물론 오픈소스의 적이 GitHub를 인수할 일은 애초에 없었을 것이긴 하다.
2020년 3월 16일 자바스크립트 패키징 벤더인 npm을 인수했다.
4.2. 악성 코드가 들어가 있는 오픈소스들
GitHub는 로그인만 한다면 누구나 오픈소스를 올릴 수 있다 보니 그만큼 악성 코드 소스, 악성 프로그램 제작 툴들이 많다. 랜섬웨어 바이러스 오픈소스들부터 시작해서 컴퓨터 해킹 툴 오픈소스까지 있다![11] 또한 악성 코드를 몰래몰래 숨겨서 오픈소스를 게시하는 경우도 있을수 있으므로 오픈소스를 실행하기 전 어떤 것이 들어가 있는지 확인해봐야 한다.
사실 이 문제는 패키징 벤더들 또는 GitHub 같은 서비스들의 공통적인 문제이긴 하다. 당장 Node.js의 패키징 벤더인 npm와 Python의 패키징 벤더인 Pypi만 해도 가끔씩 트로이 목마 같은 악성 코드들이 올라오나, 그에 비해 GitHub의 관리는 미흡하다고 볼 수 있다.[12][13]
4.3. SK텔레콤 GitHub 어뷰징 사건
상세한 내용은 메타트론 디스커버리#s-2.1 문서의 2.1 단락 참고.
5. 여담
한국을 포함한 전세계 IT 업계에서는 프로그래머 면접에서 GitHub 계정이 일종의 포트폴리오 역할을 할 수 있기 때문에 관련 업계에서 상당히 각광받는 중. 아예 입사지원서에 GitHub 계정/url을 요구하는 곳도 있고 점점 늘어나는 추세다. 최근에 들어서는 국적을 가리지 않고 스타트업이나 개방적인 기업 중심으로 GitHub를 포트폴리오로 사용 / 기업 활동에 사용하는 일이 점점 늘어나고 있다.
오픈 소스 프로젝트라면 뭐든 올릴 수 있기 때문에 가끔 괴상한 것들이 올라오기도 한다.
- 아폴로 11호에 사용된 가이던스 컴퓨터의 소스 코드가 공개되었다.
- 페르시아의 왕자 오리지널 버전 소스 코드. 공개자는 제작자인 조던 메크너 본인. 워낙 예전 소스라 자기도 기억 안 나니까 궁금한 거 있어도 묻지 말라고 써 놨다. 더군다나 사용언어는 애플 II 어셈블리어(...). 추가로 굉장히 많은 언어 사용이 감지되는데, 확장자로 인한 것으로 어셈블리로 작성된 프로그램이 맞다.
- 집안일 관리용 이슈 트래커(...). README 파일이 가관이다. "My house has no source code, so I only use the issue tracker." 이 레포지토리는 2012년 12월 말에 트렌드 1위로 등극하기도 했다! 2018년 10월 현재 상태로 저 레포지토리는 사라진 상태. 하지만 이 레포지토리에 영감을 얻은 여러 사용자들이 비슷한 집안일 관리용 레포지토리를 만들었다. 1, 2, 3 이외에도 상당히 많은 레포지토리들이 존재한다. 원조와 다른 점은 소스 코드를 가지고 있다는 것 정도.
- GitHub랑 연동해서 실제 책을 집필하게 해주는 GitBook이란 서비스도 있다.
- 엔하위키[14] 미러[15] 가 통째로 저장되어 있기도 하다.
- GitHub Student Developer Pack이라고 학생의 경우에 인증을 하면 GitHub의 유료 요금제를 무료로 사용할 수 있다. GitHub 외에도 AWS Educate, Bitnami, CrowdFlower, DigitalOcean, Dnsimple, Hackhands, Microsoft Azure, namecheap, Orchestrate, SendGrid, Stripe, Travis CI, Udacity, Unreal Engine, JetBrains[16] 등도 어느 정도의 서비스를 무료로 제공하므로 관심 있다면 위의 링크를 통해 찾아보자. 최근에 들어서는 대학교 이메일(ac.kr 도메인으로 끝나는 이메일)을 이용하는 경우, 바로 처리가 되는것으로 보인다. 학교 이메일 없이 국내 초/중/고 학생증만으로 하루 만에 인증이 완료되었다는 사례도 있다.
- 페이스북의 인공지능 바둑 프로그램인 다크포레스트도 공개되어 있다.
- 심지어 MS-DOS 1.25와 2.0의 소스 코드도 공개되어 있다!
- 케모노 프렌즈 애니메이션의 대사집도 공개되어 있다.
- 레진 코믹스에서 취업공고를 GitHub에 올리기도 하였다.
- Github의 유저 프로필에서는 일별 커밋수를 확인할 수 있는데, 커밋을 많이할수록 해당 일자 칸이 진한 초록색을 띄는 탓에 국내에서는 일별 커밋수를 꾸준히 늘려서 초록색을 늘리는 걸 “잔디심기”라고 표현하기도 한다.
2019년 7월, 국내 통신사인 SKT에서 오픈 소스 프로젝트인 메타트론 디스커버리를 업로드한 뒤 경품을 걸고 Star 어뷰징을 하는 사건이 일어났다. Star 기능을 단순한 좋아요 정도로 생각한 것인데, Github에서 Star 기능은 코드에 관심을 가지는 사람이 얼마나 많은지 나타내는 수치인것을 간과한 것이다. 이 어뷰징으로 400대였던 Star 수가 최대 2600대까지, 약 6배 이상 급증했다. 결국 이 사실이 포럼에 퍼지면서 거하게 국제 망신을 당하고 이벤트를 내렸다. 문제가 되었던 Star 수도 초기화를 거쳐, 2020년 9월 기준 200대를 유지하고 있다. 사건 정리 블로그
[1] 안전 모드로 돌아가기 때문에 플러그인은 사용할 수 없다.[2] 2018년 5월부터 커스텀 도메인 적용시에도 HTTPS 적용.[3] 즉, abcd라는 저장소를 만들 경우 이와 연동되는 홈페이지의 주소는 http://(username).github.io/abcd가 된다.[4] gist 목록에 공개된다[5] 링크가 있어야먄 확인할수 있다.[6] 쉽게 말해 젠킨스라고 생각하면 된다. 다만 이쪽은 Github에서 빌드를 위한 컨테이너를 제공한다.[7] 도커 배포시 굉장히 유용하다.[8] 무료 버전도 무려 한달에 2,000분이나 지원한다.[9] Bitbucket(Bitbucket Cloud)은 공개/비공개 여부에 상관없이 한 저장소당 최대 5명의 사용자까지만 무료다. GitLab은 인원 수 제한이 아예 없다.[10] 커뮤니티 상에서는 최악의 인수 기업으로 오라클, 텐센트, 아마존닷컴을 뽑았고, 최선의 경우로 구글과 마이크로소프트를 뽑았다.[11] 다만 이 같은 경우에는 모의 침투를 위한 툴이 올라와 있는 경우가 많기 때문에 무조건 나쁘다고 단정지을 수는 없다. 그러나 안내 페이지에 이에 대한 사전 경고가 없다면 문제가 있다고 봐야 한다.[12] 물론 GitHub의 리포지토리 수를 생각하면 현실적으로 모든 퍼블릭 리포지토리를 검사하는건 불가능에 가깝다.[13] https://github.com/ytisf/theZoo와 같이 분석목적으로 올라온 멀웨어들이 꽤 많다.[14] 마크다운으로 변환시켰다고 한다.[15] 참고로 이건 리그베다 위키의 FrontPage가 반달 당했을때 포크된 데이터다(...). [16] IntelliJ IDEA, CLion 등의 IDE 개발사. 유료 버전 사용이 가능하다.