[[분류:클라우드 스토리지]][[분류:미국의 IT 관련 기업]][[분류:Microsoft]] [include(틀:마이크로소프트)] [[파일:깃허브 아이콘.png|width=330]] [[https://github.com/|홈페이지]] [목차] == 개요 == >'''GitHub is how people build software''' >GitHub는 사람들이 소프트웨어를 개발하는 방법입니다 대표적인 무료 [[Git]] 저장소. 2008년 공개했다. Git 호스팅 기능 덕분에 GitHub는 [[자유 소프트웨어]]의 성지로 떠올랐다. 본사는 미국 [[샌프란시스코]]에 있다. 경쟁사 [[SourceForge]]는 애드웨어, 해킹, 바이러스 등등의 문제로 많은 개발자들의 신뢰를 잃어 사실상 망했으며, 대부분의 프로젝트가 GitHub 쪽으로 이주하게 됐다. 마스코트는 [[고양이]]와 [[문어]]를 합친 모습의 Octocat이다. 새 모양 실루엣의 트위터 로고가 마음에 든 깃허브 관리자가 그 디자이너에게 제작을 의뢰했다고 한다. 원래는 공개 프로젝트만 무료였고 비공개 프로젝트는 결제를 해야 했으나, [[#s-4.1|MS에 인수]]된 이후 2019년 1월 초부터 비공개 저장소를 무료로 제공하기 시작했고[[https://blog.github.com/2019-01-07-new-year-new-github/|#]], 2020년 4월 중순부터 비공개 저장소 공동 작업자수 제한도 풀렸다.[[http://www.digitaltoday.co.kr/news/articleView.html?idxno=230464|#]] == 특징 == * 각 소스코드 저장소마다 Gollum이란 [[마크다운]] 기반 위키를 만들 수 있다. 위키를 클론하고 싶을 경우 '''https://github.com/(사용자 이름)/(저장소).wiki.git'''을 클론하면 된다. * GitHub는 SSH 와 https 프로토콜을 지원하며, 각각 다른 방식의 Remote git의 URL로 저장된다. * Public/Private repository를 지원하며, 접근 권한이 필요한 private repository인 경우 기본적으로 GitHub 계정과 Password 를 입력을 해야 git pull/push가 가능하지만, 한번만 설정도 가능하다. [[https://kibua20.tistory.com/88|GitHub ID/Password 입력 없이 사용하는 방법]]. * [[https://pages.github.com/|GitHub Pages]]라는 이름으로 웹 호스팅 서비스도 제공하고 있다. Jekyll(지킬)이라는 [[Ruby]] 기반 정적 [[CMS]] 툴을 내장하고 있다.[* 안전 모드로 돌아가기 때문에 플러그인은 사용할 수 없다.] Jekyll을 사용하지 않을 경우에도 평범한 HTML/CSS/JS를 툭 던져놓으면 홈페이지로 쓸 수 있다. (사용자 이름).github.io라는 이름으로 저장소를 만들면 된다. 개인 도메인을 사용하고 싶은 경우 저장소 루트 경로에 CNAME 파일을 만들고 도메인을 입력한 뒤 DNS에 GitHub 서버 주소를 입력하면 된다.[* 2018년 5월부터 커스텀 도메인 적용시에도 [[HTTPS]] 적용.] * 각 소스코드 저장소마다 홈페이지를 한개씩 만들 수 있다. GitHub Pages의 하위 디렉토리로 들어가게 된다.[* 즉, abcd라는 저장소를 만들 경우 이와 연동되는 홈페이지의 주소는 http://(username).github.io/abcd가 된다.] * 각 레포지토리마다 별도의 [[이슈 트래커]]를 무료로 지원한다. 마이크로소프트도 GitHub의 이슈 트래커를 상당히 애용하고 있다. * 2020년 2월부터 디스커션 보드가 추가되었다. 이전까지는 이슈 트래커에서 버그 리포팅과 특정 주제에 대한 토론을 함께 진행했는데, 이제 토론은 별도의 게시판에서 진행할 수 있다. * 2명 이상의 협력자(Collaborators)를 등록하여 하나의 프로젝트를 가지고 GitHub를 통해 공동 작업할 수 있다. * [[https://gist.github.com/|GitHub Gist]] : 단일 소스 파일과 간단한 메모를 저장 또는 공유하는 용도로 사용할 수있다. public[* gist 목록에 공개된다]/private[* 링크가 있어야먄 확인할수 있다.] 여부를 선택할 수 있으며, Google Colab 등 여러 툴에서 코드 단위 레포지토리 용도로 기본적으로 제공하는 추세이다. 원래는 익명으로도 올리는 것이 가능했으나 이를 악용한 스팸이나 악성코드 업로드 등 지속적으로 문제가 되자 로그인해야만 사용 가능하도록 변경되었다. * 외부 라이브러리의 취약점이 확인된 경우 사용자에게 해당 사실을 통보하고 자동으로 최신 버전으로 교체하는 기능을 제공한다. * [[https://github.com/features/actions|Github Action]]이라는 CI/CD를 위한 워크플로우 자동화 기능을 제공한다.[* 쉽게 말해 젠킨스라고 생각하면 된다. 다만 이쪽은 Github에서 빌드를 위한 컨테이너를 제공한다.] 모든 언어를 지원하며, 모든 주요 OS 컨테이너에서 빌드, 테스트 및 배포가 가능하다.[* 도커 배포시 굉장히 유용하다.][* 무료 버전도 무려 한달에 2,000분이나 지원한다.] 미리 만들어진 엑션을 사용하거나, [[https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions|YAML 구문]]을 사용하여 엑션을 사용할 수 있다. * [[https://docs.github.com/en/github/managing-your-work-on-github/about-project-boards|Project Boards]]라는 내장 칸반보드가 있다. 자동으로 추가되게 설정도 가능하다. == 유사 서비스 == --강력한 기능과 안정성을 원한다면 [[마이크로소프트]]의 [[https://azure.microsoft.com/ko-kr/services/devops/|Azure DevOps]]가 대체재가 될 수 있다. 한 저장소당 최대 5명의 사용자가 무료 이용이 가능하며 공개/비공개 설정도 자유롭다.-- 이제 Github에서도 Private계정을 만들수 있고, DevOps또한 Github으로 합쳐졌다. 그 외에 [[https://bitbucket.org/|Bitbucket]]과 [[GitLab]]이라는 후보도 있다. 이 중에서 GitLab이 Bitbucket보다 여러모로 강력한 기능을 제공하고 제한도 적게 걸지만[* Bitbucket(Bitbucket Cloud)은 공개/비공개 여부에 상관없이 한 저장소당 최대 5명의 사용자까지만 무료다. GitLab은 인원 수 제한이 아예 없다.], Bitbucket에 비하면 서버 운영이 불안정한 편이다. Bitbucket은 Jira와 Confluence로 유명한 Atlassian에서 개발했기 때문에 신뢰도는 확실하다. 참고로 [[https://gitee.com/|Gitee]]라는 중국판 GitHub도 있다. 중국에서 GitHub를 [[황금방패|차단]]한 뒤 중국판 대체 웹사이트를 만든 것으로 추정된다. == 비판 및 사건사고 == === MS의 인수 === [[https://www.bloomberg.com/news/articles/2018-06-03/microsoft-is-said-to-have-agreed-to-acquire-coding-site-github|Bloomberg에 따르면]] 2018년 6월 4일, [[마이크로소프트]]가 GitHub를 인수하기로 결정했다고 한다. [[https://blog.github.com/2018-06-04-github-microsoft/|#]] GitHub는 2016년에만 무려 6,600만 달러의 엄청난 적자[[http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&oid=092&aid=0002139014|#]]를 기록했고, 이 때문에 자체 상장보다는 인수되는 것을 희망해 왔다고 한다. 또한 오픈 소스에 친화적인 태도를 보이는 마이크로소프트의 CEO인 사티아 나델라에게 감명받았다고 한다. 현지시각으로 2018년 6월 4일 오전 6시에 MS 트위터를 통해서 GitHub 인수 소식이 정식 발표되었다. [[https://twitter.com/Microsoft/status/1003622903298998272|#]] 인수 금액은 75억 달러이다. 인수가 완료되면 [[Xamarin]]의 CEO였던 냇 프리드먼이 GitHub의 CEO로 부임할 예정이다. 그리고 2018년 10월 26일, 인수 절차가 완료되었다. [[https://www.theverge.com/2018/10/26/17954714/microsoft-github-deal-acquisition-complete|#]] 이에 대해서 걱정 또는 비판하는 목소리가 많았다. GitHub는 [[오픈 소스]]의 성지 역할을 하고 있는 사이트였고, 이는 GitHub이 특정 기업에 종속되지 않은 중립적인 행보를 보였기에 가능한 일이었다. 오픈 소스를 배척한다는 이미지가 강해 자유 소프트웨어 쪽에서는 거의 악마로 묘사되는 MS가 GitHub를 인수하게 되면 오픈 소스를 탄압 또는 고사시킬 것이라는 우려이다. 물론 이는 [[빌 게이츠]] 시절 이야기고 [[사티아 나델라]] CEO 이후엔 친 오픈 소스, 탈 윈도우 플랫폼 행보를 보이고 있다. 그 전에 인수한 [[링크드인]]도 MS의 색채를 거의 없앤 채로 운영 중이지만 한번 쌓인 이미지가 그리 쉽게 사라지지 않는다는 게 문제다. 또한 경쟁사 서버에 자신들의 소스 코드가 올라가게 되었다는 점에서 [[Microsoft|MS]]와 경쟁관계에 있는 수많은 기업들([[Apple|애플]], [[구글]] 등) 또한 찝찝할 수밖에 없다. [[GitLab]] 측에서는 MS의 GitHub 인수를 축하하는 글을 블로그에 올렸다. MS의 인수 소식 때문인지, [[Apple|애플]]은 [[Xcode]] 10부터 GitLab 기능을 통합시킬 것이라고 밝혔다. [[https://twitter.com/gitlab/status/1003764673454342144|#]] GitHub의 텍스트 에디터인 [[Atom(에디터)|Atom]]이 같은 Electron 프레임워크 기반의 [[비주얼 스튜디오 코드]]와 유사한 위상이어서, MS에서 Atom을 정리하려는 것은 아닌가 우려하는 사용자들이 있었으나, 일단 GitHub의 새로운 CEO는 Atom을 계속 지원할 것을 약속했다. [[https://thenextweb.com/dd/2018/06/08/githubs-new-ceo-promises-to-save-atom-post-microsoft-acquisition/|#]] 그러나 VS Code에 비하면 Atom은 적극적인 업데이트가 이루어지지 않고 있으며, 결국에는 버려질 것이라는 예상이 많다. 한편으로는 [[오라클(기업)|오라클]]이 아니라 MS가 인수해서 다행이라는 반응도 있다. 이전부터 오픈소스 진영에서는 오라클이 [[주적]](主敵)으로 취급되곤 했는데, 그 주적한테 인수되는 것 자체가 자칫 큰 반발을 살 수 있기 때문.[* 커뮤니티 상에서는 최악의 인수 기업으로 [[오라클]], [[텐센트]], [[아마존닷컴]]을 뽑았고, 최선의 경우로 [[구글]]과 [[마이크로소프트]]를 뽑았다.] 다행히 인수 의사를 밝힌 MS는 친 오픈소스 행보를 보이고 있기 때문에, 앞서 언급했듯 GitLab 등에서도 환영 의사를 나타낼 수 있었다. 오라클이 인수했다면 [[썬 마이크로시스템즈]]나 [[오픈오피스]], 아니면 [[MySQL]] 꼴 날 수도 있었을 일. 물론 [[오라클|오픈소스의 적]]이 GitHub를 인수할 일은 애초에 없었을 것이긴 하다. 2020년 3월 16일 자바스크립트 패키징 벤더인 [[npm]]을 인수했다. === 악성 코드가 들어가 있는 오픈소스들 === GitHub는 로그인만 한다면 누구나 오픈소스를 올릴 수 있다 보니 그만큼 악성 코드 소스, 악성 프로그램 제작 툴들이 많다. 랜섬웨어 바이러스 오픈소스들부터 시작해서 컴퓨터 해킹 툴 오픈소스까지 있다![* 다만 이 같은 경우에는 모의 침투를 위한 툴이 올라와 있는 경우가 많기 때문에 무조건 나쁘다고 단정지을 수는 없다. 그러나 안내 페이지에 이에 대한 사전 경고가 없다면 문제가 있다고 봐야 한다.] 또한 악성 코드를 몰래몰래 숨겨서 오픈소스를 게시하는 경우도 있을수 있으므로 오픈소스를 실행하기 전 어떤 것이 들어가 있는지 확인해봐야 한다. 사실 이 문제는 패키징 벤더들 또는 GitHub 같은 서비스들의 공통적인 문제이긴 하다. 당장 [[Node.js]]의 패키징 벤더인 [[npm]]와 [[Python]]의 패키징 벤더인 Pypi만 해도 가끔씩 트로이 목마 같은 악성 코드들이 올라오나, 그에 비해 GitHub의 관리는 미흡하다고 볼 수 있다.[* 물론 GitHub의 리포지토리 수를 생각하면 현실적으로 모든 퍼블릭 리포지토리를 검사하는건 불가능에 가깝다.][* [[https://github.com/ytisf/theZoo]]와 같이 분석목적으로 올라온 멀웨어들이 꽤 많다.] === [[SK텔레콤 GitHub 어뷰징 사건]] === 상세한 내용은 [[메타트론 디스커버리#s-2.1]] 문서의 2.1 단락 참고. == 여담 == 한국을 포함한 전세계 IT 업계에서는 프로그래머 면접에서 GitHub 계정이 일종의 포트폴리오 역할을 할 수 있기 때문에 관련 업계에서 상당히 각광받는 중. 아예 입사지원서에 GitHub 계정/url을 요구하는 곳도 있고 점점 늘어나는 추세다. 최근에 들어서는 국적을 가리지 않고 스타트업이나 개방적인 기업 중심으로 GitHub를 포트폴리오로 사용 / 기업 활동에 사용하는 일이 점점 늘어나고 있다. 오픈 소스 프로젝트라면 뭐든 올릴 수 있기 때문에 가끔 괴상한 것들이 올라오기도 한다. * [[아폴로 11호]]에 사용된 가이던스 컴퓨터의 소스 코드가 [[https://github.com/chrislgarry/Apollo-11|공개]]되었다. * [[페르시아의 왕자]] [[https://github.com/jmechner/Prince-of-Persia-Apple-II|오리지널 버전 소스 코드]]. 공개자는 제작자인 조던 메크너 본인. 워낙 예전 소스라 자기도 기억 안 나니까 궁금한 거 있어도 묻지 말라고 써 놨다. 더군다나 사용언어는 [[애플 II]] [[어셈블리어]](...). 추가로 굉장히 많은 언어 사용이 감지되는데, 확장자로 인한 것으로 어셈블리로 작성된 프로그램이 맞다. * [[https://github.com/frabcus/house/issues|집안일 관리용 이슈 트래커]](...). README 파일이 가관이다. "My house has no source code, so I only use the issue tracker." 이 레포지토리는 2012년 12월 말에 트렌드 1위로 등극하기도 했다! 2018년 10월 현재 상태로 저 레포지토리는 사라진 상태. 하지만 이 레포지토리에 영감을 얻은 여러 사용자들이 비슷한 집안일 관리용 레포지토리를 만들었다. [[https://github.com/aenoble/house/issues|1]], [[https://github.com/canadaduane/house|2]], [[https://github.com/06b/house/issues|3]] 이외에도 상당히 많은 레포지토리들이 존재한다. 원조와 다른 점은 소스 코드를 가지고 있다는 것 정도. * GitHub랑 연동해서 실제 책을 집필하게 해주는 [[https://www.gitbook.com/|GitBook]]이란 서비스도 있다. * [[https://github.com/forkwikiman/enha|엔하위키]][* 마크다운으로 변환시켰다고 한다.] [[https://github.com/forkwikiman/enha_monimarkup|미러]][* 참고로 이건 [[리그베다 위키]]의 [[FrontPage]]가 [[반달리즘(위키)|반달]] 당했을때 포크된 데이터다(...). ~~[[https://github.com/forkwikiman/enha_monimarkup/blob/master/FrontPage.wiki|청동씨 이건 아니죠. 돌아와서 얘기를 하세요]]~~]가 '''통째로''' 저장되어 있기도 하다. ~~GitHub에서 위키질을 할 수가 있다~~ ~~편집을 못 한다~~ ~~PR을 일일이 보내야 한다~~ * [[https://education.github.com/pack|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]][* [[IntelliJ IDEA]], [[CLion]] 등의 IDE 개발사. 유료 버전 사용이 가능하다.] 등도 어느 정도의 서비스를 무료로 제공하므로 관심 있다면 위의 링크를 통해 찾아보자. --참고로 신청하고 승인되기까지 상당히 걸리는데, 찾아보면 미국인의 경우에도 1년이 넘게 걸리는 곳도 있다고 한다. 국내 모 국립대의 경우에 2개월 만에 승인 메일이 도착했다는-- 최근에 들어서는 대학교 이메일(ac.kr 도메인으로 끝나는 이메일)을 이용하는 경우, 바로 처리가 되는것으로 보인다. 학교 이메일 없이 국내 초/중/고 학생증만으로 하루 만에 인증이 완료되었다는 사례도 있다. * [[페이스북]]의 [[바둑/인공지능|인공지능]] [[바둑]] 프로그램인 [[다크포레스트]]도 공개되어 있다. * 심지어 [[https://github.com/Microsoft/MS-DOS|MS-DOS]] 1.25와 2.0의 소스 코드도 공개되어 있다! * [[케모노 프렌즈]] 애니메이션의 [[https://github.com/akahuku/kemono-friends-dialogs|대사집]]도 공개되어 있다. --[[카도카와(기업)|카도카와]]: ??-- * [[레진 코믹스]]에서 취업공고를 GitHub에 올리기도 하였다. * Github의 유저 프로필에서는 일별 커밋수를 확인할 수 있는데, 커밋을 많이할수록 해당 일자 칸이 진한 초록색을 띄는 탓에 국내에서는 일별 커밋수를 꾸준히 늘려서 초록색을 늘리는 걸 “잔디심기”라고 표현하기도 한다. 일정 제한을 두고 비공개 프로젝트를 자유롭게 생성할 수 있기 때문에, 실제 현장에서도 서버 돌리기는 뭣할 때 여기를 사용해서 프로젝트를 호스팅하는 경우가 있다. 2019년 7월, 국내 통신사인 [[SKT]]에서 오픈 소스 프로젝트인 [[메타트론 디스커버리]]를 업로드한 뒤 경품을 걸고 Star 어뷰징을 하는 사건이 일어났다. Star 기능을 단순한 좋아요 정도로 생각한 것인데, Github에서 Star 기능은 코드에 관심을 가지는 사람이 얼마나 많은지 나타내는 수치인것을 간과한 것이다. 이 어뷰징으로 400대였던 Star 수가 최대 2600대까지, 약 6배 이상 급증했다. 결국 이 사실이 포럼에 퍼지면서 거하게 국제 망신을 당하고 이벤트를 내렸다. 문제가 되었던 Star 수도 초기화를 거쳐, 2020년 9월 기준 200대를 유지하고 있다. [[https://newstars.tistory.com/431|사건 정리 블로그]]