What Exactly Is GitHub Anyway?

Next Story

Как создать минимально жизнеспособный продукт?

Андрессен Хоровиц объявил о своих колоссальных инвестициях в 100 миллионов долларов в GitHub на этой неделе. Найти обсуждения этой новости и планов GitHub насчёт этих вложений можно повсюду на просторах сети, и, как предполагают аналитики, это очень выгодное вложение как для Андрессена Хоровица, так и для GitHub.

Но что же такого особенного в этом проекте и почему разработчики так увлечённо обсуждают его? Вы могли слышать что GitHub - это сервис для обмена и публикации программного кода, или что это социальная сеть для программистов. В обоих случаях ваши догадки верны, однако, ни одна из них не объясняет что делает сервис GitHub таким особенным.

Сердцем GitHub является Git, проект открытого исходника от создателя Linux, Линуса Торвальдса. Мэттью МакКалах, тренер в GitHub, объясняет что Git, как и любая другая система контроля версий, контролирует и хранит разные варианты проектов. Хотя, в основном используемая ради кода, Git, как говорит МакКалах, может быть использована для работы с любым другим типом файлов, таким как документы Word, или проекты Final Cut. О ней можно думать как о системе для работы с любым документом или другим проектом.

У некоторых из предшественников Git, таких как CVS или Subversion, было центральное “хранилище” для всех файлов относящихся к проекту. И если необходимо сделать какие-то изменения в проекте, они производились напрямую в самом центральном хранилище, как объяснил нам МакКалах. В то время как, используя такую версию контроля системы, как Git, при изменении проекта, нужно скопировать всё хранилище целиком на свой жёсткий диск, сделать необходимые изменения, и передать конечных файл на сервер. По мнению МакКалаха, это упрощает обмен и публикацию более комплексных изменений в проекте, так как не нужно подключаться к серверу каждый раз когда нужно что-то подкорректировать.

GitHub включает в себя не только систему хранилища Git, но и многие другие уникальные особенности. В то время как Git - это программный командный инструмент, GitHub обеспечивает приятный и удобный графический интерфейс в сети. Он также предоставляет контроль и управление доступом и несколько "помощников", таких как wiki-материалы, или базовый набор инструментов для каждого проекта.

Флагманская особенность GitHub, это "разветвление", то есть копирование и перенос хранилища с одного аккаунта на другой. Это позволяет целой команде делать один проект на разных стадиях, находясь совершенно в разных местах, например, вы можете взять уже написанный проект для редактирования и модификации конечной версии уже на своём аккаунте. Если же вы хотите поделиться своими изменениями, вы можете послать "pull-запрос", уведомление изначальному создателю проекта. Затем, создатель интересующего нас проекта, может несколькими нажатиями клавиш объединить ваши изменения со своим конечным проектом.

Разветвление, pull-запрос, и объединение - вот три основные особенности которые обосабливают GitHub от многих других подобных сервисов и делают его таким популярным. Грег Поллак из Code School (которая, к слову, запустила новый предмет TryGit) рассказывает что до появления GitHub, если вы хотели что-то добавить к проекту с открытым исходником, нужно было вручную загружать исходный код проекта, делать локальные изменения, создавать список изменений, называемый "патч" и затем высылать патч на электронную почту создателя проекта. Создатель проекта, в свою очередь, должен был оценить патч, в большинстве случаев написанный абсолютно посторонним человеком, и принимать решение по поводу внесения изменений.

И как раз в этом месте особенности GitHub как социальной сети начинают набирать обороты. Когда вы отправляете pull-запрос, создатель проекта может просмотреть ваш профиль, в котором будут указаны ваши контактные данные, а также вклад в предыдущие проекты. Если ваш патч принимается, то на профиль на сайта начисляются очки. Это как резюме, которое может показать создателю проекта вашу репутацию среди других создателей. Чем больше людей и проектов задействовано в GitHub, тем лучшую и более детальную картину может составить создатель о человеке, написавшем изменения. Патчи также могут публично обсуждаться на форумах.

Даже тем создателям, которые не пользуются интерфейсом GitHub, данный сервис может облегчить работу с людьми, которые хотят привнести изменения в их проект. “В любом случае приходится скачивать патч, объединять его с проектом через командную строку, или же простым нажатием на кнопку” - делится впечатлениями Исаак Шлутэр, создатель рабочей платформы с открытым исходником Node.js. “Но GitHub обеспечивает отдельное место, где патч может обсуждаться многими людьми”

Таким образом, расширяется окно в котором молодые проекты могут успешно развиваться. “Node.js не смогу бы стать тем, чем он стал, без GitHub,” говорит Шлутэр.

Помимо публичных хранилищ с открытым кодом, GitHub продаёт частные закрытые ячейки для использования компаниями желающими оставить свои секреты в тайне. Такие частные ячейки, разумеется, не имеют полного ощущения социальной стороны GitHub, однако, они всё ещё могут пользоваться особенностями системы для командной работы. Так GitHub зарабатывает, но этот сервис не одинок на рынке.

Atlassian запустила на рынок конкурента, под названием BitBucket в 2010 году. Также ранее в этом году, Atlassian запустила Stash, программу, позволяющую вам содержать частные хранилища Git со всеми особенностями для командной работы, что и у конкурентов. И это ещё не всё, ещё компания распространяет разнообразные инструменты для командной работы над проектом, такие как отладчик багов Jira, или всяческую wiki-документацию. Это соперничество с Atlassian, в которые инвестировали 60 миллионов долларов Accel Partners в 2010, объясняют нам почему же эти инвестиции от Андрессена Хоровица, так кстати для GitHub.

В то время как прибыль сосредоточена в секторе частных закрытых хранилищ, всё-таки популярность GitHub сосредоточена именно в социальной стороне сервиса. Можно даже сказать что GitHub стал настоящей Александрийской Библиотекой среди программистов. Так как Git позволяет проводить комплексные изменения в проекте, как новички в программировании, так и мастера своего дела могут прослеживать всю эволюцию проектов лучших разработчиков по всему миру, и видеть каким образом они решают разнообразные возникающие проблемы. В то же время, в случае повторения судьбы Александрийской Библиотеки, все данные можно легко восстановить, благодаря возможности разветвления и размножения файлов на многие жёсткие диски во всём мире. И независимо от того, будут ли эти инвестиции успешными, команда разработчиков GitHub уже оставила существенный след за собой.