Эпизод 107 подкаста SitePoint теперь доступен! На этой неделе Луи Симоно ( @rssaddict ) и Дэн Чейл беседуют с Томом Престоном-Вернером ( @mojombo ), одним из соучредителей GitHub. Мы говорим об огромном росте GitHub, масштабировании с Rails, социальном кодировании и важности открытого исходного кода.
Скачать этот эпизод
Вы можете скачать этот эпизод в виде отдельного файла MP3. Вот ссылка:
-
Подкаст SitePoint № 107: Социальное кодирование с Томом Престоном-Вернером(MP3, 44:28, 42,7 МБ)
Стенограмма интервью
Луи: Здравствуйте и добро пожаловать в еще один эпизод подкаста SitePoint. Со мной сегодня на шоу у нас есть Дэн Чейл, который является редактором RubySource, который является одним из наших новых небольших проектов здесь, в SitePoint, и мы собираемся взять интервью у довольно впечатляющего гостя, я очень рад, что нам удалось чтобы получить его в программе. Но прежде чем мы перейдем к собеседованию, я подумал, что это хорошая возможность просто поговорить с Дэном о RubySource и о том, куда мы идем, так что, привет, Дэн, как дела?
Дэн: действительно хорошо, спасибо!
Луи: Итак, вы хотите дать нам немного предыстории, некоторые люди, которые следят за SitePoint, могут быть осведомлены и, возможно, видели, что мы недавно запустили пару маленьких сестринских сайтов для более конкретных тем, которые, возможно, мы не можем посвятить столько внимания на sitepoint.com, сколько они заслуживают, так что вы хотите рассказать нам немного о RubySource и о том, как вы к этому подключились?
Дэн: Да. По сути, то, что мы пытаемся охватить с помощью RubySource, — это централизованное место, где можно просто поговорить обо всем, что связано с Ruby: учебные пособия, статьи с изложением мнений, изучение способов достижения различных целей в Ruby, а также предоставление места для разработчиков с других платформ, скажем, PHP, Java и .NET для тех, кто заинтересован в переходе на Ruby и Rails, которые могут прийти и прочесть некоторые статьи, которые не обязательно относятся к ним как к новым программистам, но как к людям, которые имеют навыки и опыт и знают основы, но на самом деле могут взять эти навыки и копировать их и использовать их в среде на основе Ruby. Так что попытка охватить довольно большое количество оснований — это довольно сложная попытка, но, в конечном счете, речь идет о том, чтобы поделиться энтузиазмом, который я и все авторы испытываем к Ruby и Rails и всему, что с этим связано.
Луи: Да, абсолютно. Я брал интервью у Питера Купера и Джейсона Сейфера на подкасте пару недель назад , и если есть что-то, что можно сказать о ребятах из Ruby, так это то, что они полны энтузиазма.
Дэн: Это язык, который, кажется, порождает сильные мнения по обе стороны забора, но я думаю, что в конечном итоге вся эта страсть просто направляется на создание удивительных качественных проектов, первоклассных библиотек, платформ и всего остального; экосистема Ruby — это радость для работы, это звучит как бешеный фанатизм.
Луи: (смех) до некоторой степени.
Дэн: Это в какой-то степени, но я думаю, что в основе всего этого лежит качественный продукт, который люди чувствуют по поводу использования, который удивителен для языка разработки программного обеспечения.
Луи: Я думаю, что отчасти это вытекает из того, что замечательное место, куда можно пригласить нашего гостя, — это когда вы говорите о Ruby как об отличном способе — или о том, что из этого выходит множество потрясающих проектов и библиотек. Итак, сегодня на подкасте мы собираемся взять интервью у Тома Престона-Вернера, который является одним из соучредителей GitHub, который, я думаю, является одним из наиболее заметных проектов Rails, по крайней мере, для большинства разработчиков.
Дэн: Да.
Луи: И я просто хотел, чтобы вы тоже были на шоу, чтобы мы могли по-настоящему взглянуть на некоторые аспекты реализации и поговорить о, возможно, проблемах, с которыми они столкнулись при создании чего-то такого большого с использованием Ruby и Rails, Я имею в виду, что у меня есть куча вещей, о которых я хотел бы поговорить в отношении Open Source в целом, но я подумал, что было бы здорово, если бы в интервью было больше преданного взгляда на Ruby.
Дэн: Конечно.
Луи: Итак, без лишних слов, я думаю, мы просто попытаемся привлечь Тома к ответственности. Так что добро пожаловать на шоу.
Том: Спасибо.
Луи: Как дела?
Том: Все хорошо, как ты?
Луи: Очень хорошо. И здесь у нас есть Дэн, который является управляющим редактором нашего специального сайта Ruby под названием RubySource, который был запущен несколько недель назад.
Дэн: Привет.
Том: Как дела?
Дэн: Хорошо, хорошо, спасибо.
Луи: Итак, я думаю, для начала вам лучше всего стать соучредителем GitHub .
Том: Это правильно.
Луи: Итак, вы хотите, чтобы только для тех, кто слушает, я понимаю, что большинство людей, вероятно, будут хотя бы немного знакомы с Git и GitHub, но для всех, кто не слушает, вы просто хотите рассказать нам, что такое Git и что такое GitHub. и почему у него такое странное имя?
Том: Итак, Git — это распределенная система контроля версий, что означает, что разработчики программного обеспечения используют ее для создания версий своего кода и передачи его другим людям. Теперь, распределенная часть этого означает, что у каждого человека, который имеет копию этой кодовой базы, есть весь репозиторий со всей его историей, так что вы можете работать с ним локально, на самолете, все операции выполняются быстро, потому что это происходит ваш локальный репозиторий; это отличается от систем, подобных Subversion, в которых есть единственное централизованное хранилище, в котором хранятся все файлы, и для выполнения любых операций необходимо синхронизировать данные с этим хранилищем. Таким образом, даже такие простые вещи, как ведение журнала в Subversion, очень медленные, потому что они идут по сети, но в Git это очень быстро, потому что это локально. Git также имеет так называемые ветки, поэтому он делает создание новой ветки и выполнение экспериментальной работы на той же кодовой базе очень простым, а также делает объединение этих веток с вашей основной веткой разработки также очень простым, чего не делают другие системы контроля версий. обращаться так же хорошо. Итак, это Git, Git был создан Линусом Торвальдсом для ядра Linux, когда он был недоволен альтернативами, и поэтому он назвал его Git, и история, предположительно, заключается в том, что Линус сказал, что ему нравится называть проекты в честь себя, первого Linux а теперь Git, что забавно, потому что в британском «git» означает своего рода ублюдок или тот, кто полон себя. Так что это Git, и откуда Git и в чем он хорош. Теперь GitHub, очевидно, назван в честь Git системы управления версиями, и часть «Hub» — это то, о чем мы все говорим, мы делимся этими Git-репозиториями со своими друзьями. Итак, до того, как появился GitHub, мы начали использовать Git, это было в первые дни, когда не так много людей использовали его, кроме ядра Linux, и мы обнаружили, что по иронии судьбы Git распространяется, что означает, что с ним должно быть действительно легко работать. ваш репозиторий с другими людьми, должно быть действительно легко поделиться теми изменениями, которые вы делаете вокруг; это якобы то, в чем он очень хорош. Но реальность заключалась в том, что если у вас где-то не был сервер Linux и вы не могли настроить учетные записи пользователей для своих друзей, то на самом деле было не очень легко делиться этим кодом, вам нужно было где-то поместить его туда, куда вы могли бы передавать его назад и вперед так что вам не нужно было напрямую подключаться к компьютерам других людей, что очень сложно из-за брандмауэров и тому подобного. Итак, я и Крис Уонстрат, другой соучредитель, мы из области веб-разработки и сказали, что мы хотим использовать этот Git, эту систему управления версиями, которую мы начали использовать, и это было действительно здорово для разработки и создания веток. и это, но аспект совместного использования этого был не очень хорош. И мы сказали, ну, мы веб-разработчики, что если мы создадим веб-сайт, который позволит нам делиться этими репозиториями и видеть их в Интернете, просматривать те коммиты, которые делают люди, и отслеживать историю ветвей и то, как они были разветвлены и объединены вместе, что если бы мы сделали что-то, чтобы сделать это действительно легко, и вот что мы сделали, и это то, чем является GitHub, место, где вы действительно можете легко делиться своим кодом и сотрудничать с другими людьми, используя множество инструментов, которые мы построен с тех пор, как мы начали.
Луис: И я думаю, что одна из вещей, которые интересны в этом, это то, насколько удивительно успешен GitHub, он ушел от того, что все вроде как использовали Subversion, и было несколько человек на периферии в мире Rails, и, как вы сказали, ядро Linux, которое использовало Git, в то время как теперь это почти похоже на костяк Git, как и все, кто публикует библиотеку с открытым исходным кодом, собирается связать вас с репозиторием GitHub, и это произошло очень быстро.
Том: Да, мы запустили сайт всего три года назад в апреле, так что в этом месяце, и я думаю, что это было 10 апреля, мы открыли его публично три года назад.
Луи: Это безумие.
Том: Да, я думаю, что одна из важных вещей, которые мы сделали, отличалась с самого начала, что позволило ему стать настолько популярным, что мы не налагаем никаких ограничений на то, что люди ставят на GitHub, в отличие от некоторых более ранних систем, которые заставит вас получить разрешение на выставление проектов, у них будет процесс одобрения, мы хорошо сказали, какой смысл в этом, люди должны делиться кодом любой природы, это не должен быть законный проект, это может быть мало эксперименты или даже ваши точечные файлы, и теперь на GitHub есть тысячи репозиториев, которые просто содержат файлы конфигурации людей для их командной строки. И мы сделали это, предложив пользователю пространство имен для URL-адреса, поэтому URL-адрес GitHub выглядит как github.com/username/projectname, и это означает, что вам не нужно беспокоиться об использовании ценного имени для проекта, потому что это все под вашим пользователем. И вот что позволяет людям быть действительно свободными в том, что они выкладывают, и чем больше людей выкладывают это, тем больше шансов, что кто-то наткнется на это и скажет: «Эй, этот парень решает мою проблему; хотя этот человек, возможно, и не думает, что он кому-то полезен, некоторые из самых популярных проектов на GitHub — это файлы конфигурации, и кто бы мог подумать, что это действительно то, чем люди хотели бы поделиться, ну, не так много люди до GitHub были рядом, но оказалось, что просто случайность наткнуться на что-то, что кто-то нашел полезным, даже если он не предназначен для общественного потребления, это действительно мощная вещь.
Луи: Вы когда-нибудь задумывались о том, что может случиться так, что люди начнут делиться какими-то небольшими случайными фрагментами, которые, возможно, не являются полноценными проектами?
Том: Да, я думаю, что это было то, что мы хотели сделать, потому что мы были разочарованы другими сайтами, которые ждали несколько дней, чтобы просто создать новый проект, и это казалось довольно глупым. И мы были очень большими людьми с открытым исходным кодом, и у нас есть все виды репозиториев, в которых есть код, который на самом деле не готов к выпуску в какой-то разумной форме, они просто как мы играли, мы запустили эту библиотеку, этот рубиновый камень или что-то в этом роде, и мы просто хотим куда-нибудь его поместить, чтобы, во-первых, он был безопасным, я имею в виду, что он действует как резервная копия, и, во-вторых, просто так, когда мы хотим показать его кому-то еще, мы можем просто отправить их URL, это так просто, нам не нужно отправлять им по электронной почте zip-файл с большой базой кода, нет, мы просто им URL и говорим, эй, это может решить вашу проблему, я не работать над этим больше, но, возможно, вы хотите взять эту базу кода и извлечь из нее пользу, потому что я больше не собираюсь. Так что это было то, что мы хотели сделать лично, и именно поэтому мы сделали это. Поэтому я думаю, что мы знали, что у нас не было большого количества данных, я имею в виду, что мы просто сделали это, потому что мы хотели это сделать, и поэтому в основном мы делаем на GitHub то, что мы создаем то, что нам нужно, чтобы служить нам это нужно, и получается, что мы очень похожи на многих разработчиков, а другим людям нравятся те же самые вещи, что и мы.
Луи: Точно. Возможно, я просто хочу немного переключиться, вы кратко говорили о Ruby Gem, у меня есть Дэн из Ruby Source, и я просто хотел, чтобы вы, ребята, немного поболтали о том, что это было Я имею в виду, я полагаю, что вы были парнем из Ruby до того, как начали GitHub, поэтому решение о сборке GitHub в Rails было для вас естественным?
Том: Да, абсолютно. Я имею в виду, что я занимался инструментами для компании под названием Powerset, которая занималась поиском в Википедии, я делал там инструменты до того, как начал работать над GitHub или действительно, потому что я начал GitHub, когда все еще работал там полный рабочий день. Итак, я занимался Ruby в течение нескольких лет до этого, и был глубоко в Rails, много болтал на встречах Ruby, которые были здесь, в Сан-Франциско, и встречал много людей, занимающихся Ruby, там я познакомился с Крисом и ПиДжей, один из других соучредителей. Таким образом, решение сделать это было, я имею в виду, что никакого решения не было, просто я хочу создать этот сайт, и мы приступаем к созданию приложения Rails и приступим к написанию кода.
Луи: Точно. Итак, когда вы начали, сейчас GitHub работает так, как будто у него несколько новая структура цен. Таким образом, вы предоставляете неограниченное количество общедоступных репозиториев бесплатно, так что любой может зарегистрироваться с помощью учетной записи, и если все, что он хочет, это сделать что-то, чтобы показать всем, или у них есть проект с открытым исходным кодом, который они хотят разместить, они могут сделать это для бесплатно, а затем, если вы хотите иметь частные репозитории и просто поделиться ими со своей командой, тогда это платные планы. Была ли у вас такая ценовая структура с самого начала?
Том: У нас с Крисом были долгие обсуждения в самые первые дни о том, как мы хотели сделать оценку, и один из уроков, которые я извлек из предыдущего предприятия, которое у меня было, которое было Gravatar, то есть маленькие аватары, которые Вы видите везде, что следуют за вами, я сделал это и создал это без какой-либо бизнес-модели, я просто сделал, потому что я думал, что это будет весело, это отличный способ внести свой вклад в экосистему блога, и я в конечном итоге узнал, что если у вас нет способа заработать деньги на вашем стороннем проекте, то в конечном итоге он становится очень дорогостоящим, и он начинает отнимать все больше и больше вашего времени, и все же вы не зарабатываете на жизнь, делая это, и так что теперь у вас есть две работы на полную ставку, и вам просто не платят за одну из них. И это был действительно большой урок, который я извлек из тех дней, и поэтому, когда мы запустили GitHub, я хорошо сказал, что это может быть действительно классный сторонний проект, но если я собираюсь вложить много времени в тогда я хочу иметь возможность зарабатывать на этом, а также, чтобы, если он стал действительно популярным, он также зарабатывал много денег, чтобы я мог делать это полный рабочий день. Так что это было определенно осознанное решение с самого начала, которое давало нам придумать способ взимать плату за это, и мы много говорили об этом, и самое важное было, ну, кто будет в состоянии заплатить за что у кого будут деньги? Люди с открытым исходным кодом не собираются платить за что-то подобное, потому что это открытый исходный код, они делают это на стороне, они делают это для удовольствия, мы хотим поощрять людей размещать здесь свой код и поделитесь, вот как мы собираемся получить информацию, и так хорошо, давайте сделаем это бесплатно для них, кого мы можем зарядить? Ну, вы знаете, у кого есть деньги, у компаний, поэтому давайте начисляем их, верно, давайте нацелим ценообразование на людей с деньгами, это имеет смысл, верно? Так что мы могли бы взимать за то, что компании захотят, что разработчики с открытым исходным кодом не нужны, и это конфиденциальность. Так что на самом деле модель стала удачной, давайте возьмем плату за частные репозитории, и так было, когда мы выпустили ее три года назад; Мы запустили эту модель ценообразования, с тех пор как мы запустили модель ценообразования.
Луис: Да, и это очень хорошо сработало для вас, ребята.
Том: Да, это работает на удивление хорошо. Я имею в виду, что все счастливы, верно; разработчики с открытым исходным кодом получают его бесплатно, у компаний есть конфиденциальность, и у них есть деньги, чтобы заплатить за это и тому подобное, поэтому они счастливы сделать это, я думаю, что это беспроигрышный вариант для всех, верно.
Луи: И было ли это, учитывая огромное количество кода, который публикуется на GitHub, так что все там находятся, есть ли у вас достаточно людей, платящих за частные репозитории, чтобы иметь возможность поддержать эту бесплатную поездку для всех остальных?
Том: О да, конечно. То, как мы построили архитектуру и затраты на ведение бизнеса, безусловно, делает это возможным. Я имею в виду, что мы сейчас, я думаю, что мы только что наняли нашего 27- го человека, так что, по сути, да, это не проблема.
L ouis: Хорошо, ясно, что это работает для вас.
Дэн: я лично знаю, как разработчик, делающий мои вещи, которыми я готов поделиться, особенно по низкой цене с самого начала, и начинать продвигать ваши профессиональные проекты тоже не составит труда. Я, честно говоря, даже не думал о том, чтобы подписаться на платиновый план и довести его до конца, поэтому он действительно хорошо сработал для меня.
Луи: Да, так же. Я должен сказать, что у меня есть платная учетная запись GitHub, так что я думаю, что я не должен выражать шок от того факта, что люди платят за это в достаточном количестве, я полагаю, это не только компании, но и многие из них — у вас есть тарифные планы, доступные только обычному разработчику, который, хорошо, я делаю какую-то работу с открытым исходным кодом, которую я хочу, чтобы все видели, но я также делаю несколько проектов для клиентов, и вместо того, чтобы держать их на своей машине, я можно просто поставить их на GitHub вместе со всем остальным.
Том: Да, именно так. Планы начинаются с $ 7,00 в месяц, так что это действительно легко для отдельных разработчиков, людей, у которых есть консалтинговые фирмы или что-то еще, предположительно, это будет зависеть от количества клиентов, которые у вас есть, верно, у вас есть группа клиентов, они Вам платят, и вы берете на себя небольшую часть этого и платите нам за создание этого удивительного инструмента, который вы можете использовать, чтобы облегчить свою жизнь, и вы можете предоставить своим клиентам доступ к этим репозиториям на индивидуальной основе, и тогда это работает очень хорошо для многих людей. Так что, да, вы можете определенно войти в это без большого количества денег, и это было еще одно сознательное решение, которое, ну, в общем, нам нужно, чтобы люди платили нам, и хотя три года назад не так много людей использовали Git, поэтому нам пришлось сделать цены достаточно низкие, чтобы люди могли хорошо говорить 7 долларов в месяц, я могу сказать, что это не имеет большого значения; Мне нравится Git достаточно, чтобы заплатить этим парням за то, что они сделали для меня действительно хороший хостинг. И мы сохранили эту философию и по сей день, которая заключается в том, чтобы помочь людям вовлечься, верно, и просто строить действительно хорошие недорогие планы, в которых все еще можно выполнить настоящую работу, и это действительно своего рода адаптация; просто сделайте так, чтобы им было легче участвовать, потому что, если наш первый план составлял 100 долларов в месяц, то никто — новичок в Git, они просто хотели экспериментировать, у них было всего несколько хранилищ, они не собирались платить, таким образом, хороший способ повышения цен сработал очень хорошо, и у нас был урок. Когда мы запустили функцию организации, которая представляла собой некоторую функциональность для групп, организации групп людей и создания разрешений, основанных на этом, у нас был довольно большой скачок по сравнению со старыми планами, так что в следующем плане был разрыв в 50 долларов. стоило того, что под ним, и оказалось, что это было слишком высоко, людям было неудобно делать такой большой прыжок. Мы ответили и сказали: «Хорошо, давайте добавим еще один промежуточный план, чтобы у людей была более упрощенная процедура обновления, и людям это очень понравилось, и все сказали:« О, это сработает, это круто ». Таким образом, вы должны реагировать на подобные вещи и знать свою клиентскую базу. Мы поняли, что наши клиенты — это, прежде всего, малые предприятия, у нас есть несколько более крупных людей, но по большей части это огромное количество малых предприятий, которые являются нашими основными клиентами, и я думаю, что мы забыли об этом на секунду; мы сказали, эй, ну, все они крупные компании, да, у них есть куча денег, но эти малые предприятия не обязательно, они стартапы просто пытаются начать или они консалтинговые фирмы, которые не являются На самом деле, получая слишком много прибыли, они просто пытаются ладить, и мы хотим служить этим людям, они являются нашей клиентской базой, и поэтому мы должны быть в состоянии обслуживать их очень хорошо. Как только мы поняли это и создали этот новый план, с тех пор все стало идеально, и это было правильное решение.
Луи: Фантастика. Вы говорили о том, как вы начали всего три года назад, в то время это были только вы трое, соучредители?
Том: Да, изначально это были Крис и я, а потом ПиДжей появился вскоре после того, как мы начали.
Луи: А теперь у вас до 27 сотрудников, и, очевидно, сайт и пользовательская база чрезвычайно выросли, может быть, я просто передам слово Дэну, и вы, ребята, можете немного рассказать о проблемах масштабирования и реальных технических трудностях, с которыми вы работаете. возможно, столкнулись по пути.
Дэн: Я полагаю, что в сообществе разработчиков Ruby явно печально известен своей неспособностью к масштабированию, я бы предположил, что GitHub доказывает, что это возможно. Очевидно, вы уже говорили раньше, потому что вы, ребята, все равно являетесь разработчиками Ruby, был ли у вас когда-нибудь день после того, как вы начали, что, возможно, это был неправильный инструмент, или вы просто счастливы его использовать, потому что это то, что вы знали и верили Вы могли бы сделать то, что вам нужно сделать с этим?
Том: Хорошо, поэтому люди говорят о том, что Ruby и Rails не масштабируются, это, вы знаете, мы никогда не видели этого. Ruby и Rails и эта часть сайта никогда не были узким местом, ни разу, ни разу. Узкие места для нас — файловая система, удаление Git-репозиториев с диска всегда было большой проблемой; это не Rails, это не база данных, это не какой-либо другой компонент, это просто копирование данных из этих репозиториев Git с диска и перенос их на внешний интерфейс. Так что я имею в виду, да, у нас сейчас много трафика, и это только то, что нужно убедиться, что у вас есть хорошее кэширование с использованием таких вещей, как Memcache, и мы используем Redis для многих вещей, чтобы получить действительно быстрый поиск для ключа / оценивать типы вещей. И так, нет, я имею в виду, что мы в основном работали на Ruby и Rails с самого начала, и это было удивительно, это позволяет нам писать вещи очень быстро, привлекать новых людей к скорости на базах кода, потому что Ruby действительно очень легко читаемый, и когда вы уделяете большое внимание модульной инфраструктуре, чтобы различные части были разбиты на отдельные библиотеки, так что это концептуально очень просто, это выходит за рамки специфических для Ruby вещей, но я думаю, что это соответствует основному принципу Ruby — простота и простота понимания. Так что все это было здорово, я не жалею об этом выборе архитектуры, я бы больше ничего не использовал.
Дэн: Отлично. Я предполагаю, что вопрос, который меня интересовал некоторое время как разработчика Ruby и как пользователя сайта, сколько GitHub — это Rails и сколько может быть других библиотек Ruby или даже не-Ruby вещей, которые поддерживают фон ? Очевидно, есть файловая система, соединяющая ваш интерфейс и Git, но мне интересно, не могли бы вы дать нам немного больше представления о том, что еще делает GitHub мощным.
Том: Да, так что основной сайт — это Rails, все это довольно стандартные Rails, и затем все становится интересным, как только вы начинаете переходить на бэкэнд; Одним из наиболее интересных моментов является то, как данные попадают с файловых серверов на внешние интерфейсы. Таким образом, архитектура состоит в том, что у нас есть шесть интерфейсных машин, они запускают Rails, а затем у нас есть девять пар файловых серверов на бэкэнде, и каждая из них работает в ситуации «ведущий-ведомый». Поэтому, когда вы делаете запрос на репозиторий, передний конец проходит через эту библиотеку, которую мы написали, под названием Grit, которая является привязками Ruby Git, и все методы, которые имеют дело с обращениями к файловой системе в этой библиотеке, существуют в одном единственном классе, и то, что мы делаем, — это отключаем этот класс на внешних интерфейсах, чтобы он — и заменяли его новым классом, который переходит по сети и связывается с прокси, так что он превращает запрос для конкретной команды Git в вызов, который использует формат, который называется BERT RPC , а BERT — это специальный протокол, который я написал для использования, который действительно эффективен для больших двоичных файлов; это было два года назад, я был недоволен другими решениями протокола. И это протокол, основанный на терминах Erlang, поэтому BERT означает Binary Erlang Term, я довольно большой парень Erlang, поэтому я написал сервер на бэкэнде, который называется Ernie , который является сервером BERT RPC. (Смеется).
Дэн: Очень мило.
Том: Итак, сервер Эрни — просто сервер RPC. Я говорил со многими людьми о потенциальных архитектурах для того, как сделать это с обычными серверами, как будто мы не хотели покупать большие модные песочные машины для хранения всех репозиториев и иметь общую файловую систему, это то, что мы делали раньше, и это не сработало очень хорошо. Мы хотели работать только с обычными серверами и иметь большое количество независимых бэкэндов файловых серверов, которые представляют собой просто машины Linux с быстрым диском в них, и именно это мы решили сделать лучшим решением. И поэтому вместо использования чего-то вроде XMPP или асинхронной системы обмена сообщениями, что подходит для нашего сценария, это просто стандартный механизм RPC, просто внешнему интерфейсу нужно получать информацию из бэкэнда, он всегда синхронный, он всегда будет ждать этого В то же время я не должен был заниматься другими делами, и я был недоволен решением, поэтому я написал протокол BERT, спецификацию RPC BERT и сервер Ernie, чтобы сделать это. И то, что сервер Ernie делает, что довольно круто, так это то, что у вас могут быть запущены процессы Ruby за сервером Ernie, Ernie на самом деле просто выполняет балансировку нагрузки для обработчиков, и эти обработчики на самом деле являются всего лишь остальной частью того кода Grit, который пытается выполнить интерфейс звонить. Таким образом, вы можете себе представить, что внешние интерфейсы на самом деле просто пытаются выполнить этот код в Grit, но поскольку сами репозитории находятся на файловых серверах, расположенных на разных компьютерах, нам необходимо иметь возможность передавать эту информацию по проводам. Таким образом, он использует этот удаленный вызов процедуры, отправляет его через прокси, прокси просматривает этот RPC-пакет и выясняет, на какой машине находится этот пользователь, потому что каждый запрос будет содержать имя пользователя хранилища, или на самом деле мы делаем это немного по-другому. сейчас, но это все еще очень похоже; он отключает информацию о пользователе и имени хранилища, чтобы определить, к какому файловому серверу он относится. Так что в основном он выполняет небольшой поиск в Redis и говорит, что вы на сервере X, прокси-сервер затем отправляет туда запрос, он отправляется Эрни, Эрни говорит, что вы пытаетесь запустить эту команду Grit, а затем отправляет его одному из обработчиков, и обработчики на самом деле просто завершают этот вызов, так что вы в основном помещаете прокси между двумя частями одной библиотеки, это действительно разделяет эту библиотеку Grit на две половины и запускает их в соответствующих местах, вот как работает эта инфраструктура. И Эрни написан на Erlang, а остальная часть — на Ruby, так что это действительно просто способ обрабатывать эти удаленные вызовы Ruby, и он работает очень хорошо, я имею в виду, что мы ежедневно выполняем сотни миллионов запросов через эту инфраструктуру.
Дэн: Отлично.
Том: У нас также есть много других вещей на Ruby, у нас есть Resque, который написал Крис, который представляет собой библиотеку очередей для выполнения заданий, так что они просто переходят в Redis, а затем у нас работают разные обработчики, обработчики заданий, и мы широко их используем. и это работает очень хорошо, это в Ruby. На самом деле мы используем некоторые Node.js для загрузок, когда вы выполняете загрузку архива, чтобы вы не сказали тег, определенную версию тега репозитория, которую нужно создавать на лету, и это небольшой Node.js. сервер, который написал Рик, Рик Олсон, и это работает очень хорошо. У нас есть и другие маленькие кусочки, которые есть в разных вещах, мы просто Pygments, это библиотека Python, которая делает подсветку синтаксиса, и это работает очень хорошо. Итак, я имею в виду, что мы используем те технологии, которые подходят для работы, и у нас есть вещи, написанные на разных языках, не слишком много, мы стараемся не иметь смешного количества технологий просто для того, чтобы упростить процесс найма и привлечь всех знакомы с кодом, но Ruby, Erlang и Node, вероятно, являются основными, которые мы используем сейчас.
Дэн: Отлично.
Луи: Там есть кое-что, о чем вы говорили, ну, есть две вещи, которые вроде как слились в вещи, о которых я хотел поговорить. Во-первых, вы говорили о Grit и нескольких других используемых вами библиотеках, и ранее вы говорили о том, как вы, ребята, вроде как стремились поддержать сообщество open source, поэтому я хочу, возможно, понять суть этого и Посмотрите, какова ваша философия в отношении открытого исходного кода, если материал, который вы пишете внутри, делает большую часть этого материала открытым исходным кодом?
Том: Да, тонну того, что мы делаем, мы открываем, в основном это вещи уровня инфраструктуры. Наша философия заключается в том, что если это инфраструктурный код, который на самом деле не специфичен для нашего ценностного предложения, которое в основном содержит инструменты для Git-репозиториев, это одна из наших основных вещей, если это не имеет к этому никакого отношения, тогда мы открываем его с открытым исходным кодом. Так, например, все библиотеки BERT и BERT RPC с открытым исходным кодом, Ernie с открытым исходным кодом, ProxyMachine, прокси-сервер, о котором я говорил, открыт, Resque is Open, Jekyll, который запускает страницы GitHub, которые преобразуют статические типы HTML-сайтов, чтобы иметь возможность для размещения на нашем статическом HTML-сервере Jekyll имеет открытый исходный код, потому что весь этот материал не имеет особого отношения к тому, за что мы взимаем плату, верно, и другие люди могут извлечь выгоду из использования их в различных ситуациях, поэтому давайте вернем их сообщество, я имею в виду, что мы полагаемся на такое большое количество открытого исходного кода, вы знаете, Ruby, Rails, Linux, я имею в виду множество различных библиотек Ruby. Вся экосистема действительно богата и позволяет нам действительно эффективно выполнять свою работу, потому что другие люди внесли свой вклад, и поэтому мы придерживаемся той же философии; если это не повлияет на то, сколько денег мы зарабатываем, то, как правило, мы открываем их.
Луи: Другое дело, это возвращает его немного назад, вы говорили о нем очень рано, вы говорили о Ruby и Rails, и ваше решение пойти с этим и как это в некотором роде позволяет вам делать очень быстрые изменения и быстро набирайте новых сотрудников. Одной из вещей, которая подчеркнула, было то, что, я думаю, это было в конце прошлого года, была целая вещь Firesheep , и я помню, как был поражен тем, как невероятно быстро вы, ребята, развернули первоначальную систему предотвращения взлома, которая, я думаю, была затем пересмотрена просто https все, но все это произошло очень быстро, в то время как все остальные в Интернете были просто, о, это очень интересно, возможно, мы должны что-то сделать с этим в какой-то момент.
Том: Да, это было — я думаю, что возможность решать такие вещи очень быстро во многом связана с тем, как мы организовываем компанию, которая очень … Я сказал, что сейчас у нас 27 человек, и у нас нет менеджеров, которые позволяет нам быть очень гибкими, у нас также нет отделов, так что это означает, что каждый чувствует себя ответственным за все, что важно; когда вы начинаете разделять людей и распределять обязанности по конкретным вещам, тогда одному департаменту легко взглянуть на это и сказать: «Эй, это компетенция этого другого департамента, и они должны это делать, и этот департамент, вероятно, считает, что это компетенция кого-то другого», и так что это много уклоняется от вины, это очень легко сделать. Одна из вещей, которые мы имеем здесь, это то, что все работают вместе для достижения одной цели, и мы все действительно верим в это, и поэтому, когда возникает какая-то проблема безопасности, все получают уведомление через список безопасности, все в компании входят в этот список. все получают эти электронные письма, и у нас просто есть культура быстрого решения этих проблем. Так что что-то вроде Firesheep очень проблематично для нас, я имею в виду, что это огромная вещь; наша компания основана на доверии к тому, что ваш код будет в безопасности, и поэтому мы подскочили на это и сказали: «Эй, нам нужно это исправить, и это нужно сделать немедленно, мы не можем ждать месяц, чтобы сделать это». И поэтому пара наших парней просто запрыгнула на это, и они сделали это, что, как правило, здесь все делается, кто-то говорит, что это может быть проблемой, это может быть лучше, и они соберутся в команды обычно два или три, а потом они идут и делают это. В некоторых случаях это безопасность, и они делают это, потому что это должно быть сделано, и во многих случаях это просто то, над чем люди заинтересованы работать, это то, что мы определяем как вещи, которые будут полезны для компании, и это просто очень органично мы не так много командуем и контролируем, так что это позволяет создавать действительно приятные ситуации.
Луис: Было действительно впечатляюще видеть, вы знаете, вы читали об этом — так что Firesheep для тех, кто слушает, кто не знаком, был таким способом перехвата аутентифицированных сеансов через открытый Wi-Fi, и поэтому был пост в блоге человека, который написал эту маленькую библиотеку, и он просто делал это, чтобы указать на недостаток безопасности в том, как много аутентификации происходит в Интернете, и в течение дня я думаю, что у вас, ребята, было, по крайней мере, временное исправление, которое предотвратит многое из этого Это было действительно впечатляюще, видеть, как быстро вы, ребята, — и это было совершенно функционально и никак не влияло на сайт, очень впечатляюще.
Том: Да, я думаю, это было круто, это был Рик Олсон, Кори Донохо действительно запрыгнул на это изначально и сделал это, они просто — они пришли туда и исправили это, и я хотел бы, чтобы больше людей сделали это, потому что это серьезная проблема, и она до сих пор затрагивает людей на других сайтах, которые этого не делают, я имею в виду, что запуск https везде не идеален, но он выполним, и он не такой медленный, как думали все мрачные и мрачные быть.
Луис: Я думаю, что у людей был этот аргумент, знаете ли, это было чем-то, что оставалось безоговорочным в течение семи или восьми лет, потому что, когда мы впервые начали делать это, HTTPS везде был медленным, потому что серверы были медленными, и никто не исследовал это и не думал, Ой, подождите, сейчас все намного быстрее, мы можем это сделать, и это на самом деле не влияет.
Том: Да, теперь это хорошо. Теперь, это всегда может быть лучше, все еще есть некоторая задержка в рукопожатии SSL, которую мы хотели бы решить, и Google делает некоторые довольно причудливые вещи с пакетами TCP и как они отправляют данные обратно, о которых вы можете прочитать в Интернете, которые действительно интересны вещи, которые мы изучаем сейчас, потому что, да, хотя это все еще быстро, оно всегда может быть быстрее, и мы всегда стремимся сделать вещи быстрее.
Луис: Полагаю, последнее, что, возможно, я хотел бы решить как-то быстро, это то, что я случайно натолкнулся на несколько дней назад на Hacker News, где кто-то говорил о роли чего-то вроде GitHub в том, что программист может найти работу, и о начальном Когда дело доходит до найма, я буду вести журнал коммитов GitHub в любое время.
Том: Да, Джон Резиг сказал это.
Луи: Точно. И еще эта громадная нить вытекает из того, что люди чувствуют себя неуверенно по этому поводу и, как хорошо, я много работаю весь день, и это все для моего работодателя, а когда я иду домой, у меня нет времени работать над другими вещами. и это должно иметь такое же значение.Что вы думаете о роли GitHub в том, как люди смотрят на программистов? Я имею в виду очень многих программистов, у всех разработчиков в офисе на их личных сайтах есть ссылка на их учетную запись GitHub, потому что это их общедоступная лицо, право; как вы относитесь к роли, которую вы, ребята, взяли в этом пространстве?
Том:Я думаю, что это действительно ценно. Я имею в виду, я знаю, что иногда это может показаться сложным, но с точки зрения работодателя наличие открытого исходного кода, доступного для потенциальных работодателей, дает им возможность технически оценить вас вне собеседования, и это почти то, что мы делаем. То, как мы нанимаем людей, это то, что мы идентифицируем людей, которые, на наш взгляд, являются замечательными, которые написали открытый исходный код, который мы уже используем во многих случаях, о чем мы знаем из сообщества, людей, которые ходили на конференции и беседовали, людей которые увлекаются тем, что действительно увлечены тем, что они делают, и люди, которые написали открытый исходный код и которые делают это, они находят время, всегда есть время, просто насколько вы мотивированы использовать это время для выполнения таких вещей, как код ,И находя людей, которые так любят кодировать, что найдут время заняться этим, это те люди, которых мы хотим нанять, те люди, чей код мы уже видим, потому что это означает, что они любят то, что они » Я имею в виду, что нам всем нравится то, что мы делаем здесь, на GitHub, и это делает компанию намного лучше, чем было бы в противном случае. И поэтому я думаю, что это действительно здорово, я надеюсь, что все, у кого есть открытый исходный код, помещают его на GitHub или где-нибудь на видном месте, чтобы потенциальные работодатели могли его видеть, это просто делает процесс найма намного проще. Я имею в виду, что то, как в наши дни проводятся собеседования в компаниях, действительно прискорбно, оно не находит нужных людей; Вы не найдете хороших инженеров, задавая им загадки в интервью, я имею в виду, что это не то, что практично для работы,это не имеет никакого отношения. И большую часть времени задавать им по-настоящему жесткие архитектурные вопросы или алгоритмические вопросы также смешно, потому что вы пытаетесь нанять парня из Rails, и ваш помощник приходит, и я собираюсь дать этому парню побег за его деньги. ну, это бесполезно, и все, что вы собираетесь сделать, — это заставить потенциального сотрудника вообще не работать на вас, но он действительно крут в Rails, показывая ему, как оптимизировать время поиска на жестком диске с последовательным интерфейсом ATA бессмысленно, но это происходит постоянно. Таким образом, способ, которым мы нанимаем людей, и я думаю, что многие люди могут быть лучше в этом, — это определять людей, которые хороши технически, с помощью своего кода, с помощью проверенных вещей, которые они написали, эмпирическим подтверждением того, что они хороши технически. Как только вы найдете этих людей, теперь этопросто вопрос в том, насколько они культурно подходят, и это своего рода двухэтапная процедура; очень редко, когда мы говорим о действительно глубоких технических вещах во время интервью, потому что мы уже знаем, что их код хорош, поэтому в основном в этот момент вы согласны с видением GitHub, вас заинтересует то, что мы? снова нанимаю тебя. И еще одна вещь — убедиться, что вы нанимаете людей, которые будут заинтересованы в том, что они делают, это огромно, просто привлекаете людей, которые будут интересоваться тем, что они делают.так что в основном в этот момент вы согласны с концепцией GitHub, будете ли вы заинтересованы в том, для чего мы вас нанимаем. И еще одна вещь — убедиться, что вы нанимаете людей, которые будут заинтересованы в том, что они делают, это огромно, просто привлекаете людей, которые будут интересоваться тем, что они делают.так что в основном в этот момент вы согласны с концепцией GitHub, будете ли вы заинтересованы в том, для чего мы вас нанимаем. И еще одна вещь — убедиться, что вы нанимаете людей, которые будут заинтересованы в том, что они делают, это огромно, просто привлекаете людей, которые будут интересоваться тем, что они делают.
Луи: Точно. So do you feel like — when you talked just now about the GitHub mission do you feel like to some extent that’s part of your mission is giving developers this kind of platform to show off what they’re doing and better their careers as a result of that, is that a goal that you keep in mind or is it just sort of a side effect of what you’re doing?
Tom:О, это абсолютная цель, и это то, к чему мы стремимся. Я только что разговаривал с нашим ведущим дизайнером сегодня, и мы говорили о страницах профиля, и на этой странице мы хотим сделать так много вещей, чтобы люди могли проще показать свой код, чтобы сказать, эй, это репозитории, которые я Вы работали над тем, чтобы вам ничего не понадобилось, это просто автоматически. И поэтому потенциальные работодатели или кто бы то ни было приходил и говорил, хорошо, я могу получить действительно общее представление о том, над чем работал этот парень, может быть, он много привержен Rails, может быть, это какой-то другой проект, который он сам начал, это те вещи, которые мы хотим сделать доступными и раскрыть людям, потому что хвастаться тем, что ты сделал, показывать свой код, это ‘То, что сделало GitHub даже возможным, что люди действительно хотят это сделать, мы хотим помочь людям показать то, что они сделали, это то, чем мы занимаемся, и любой способ, которым мы можем сделать это лучше, меня устраивает.
Луи: Ну, вы, ребята, отлично справляетесь с этим. Сейчас самое время, когда вы просматриваете какой-нибудь проект или библиотеку с открытым исходным кодом и попадаете на страницу SourceForge или что-то еще, вы всегда похожи на aww, aww (смех).
Дэн: Я фактически дисквалифицировал гемы из своих проектов исключительно потому, что они не на GitHub, всегда есть опция на GitHub, теперь это стало хранилищем defacto для мира Ruby, особенно когда вы, ребята, начали становиться дистрибьютором Gem, как Gem source сам, он просто действительно открыл это на совершенно новом уровне, вы знаете, он сделал это без необходимости иметь дело с RubyForge и так далее, он действительно открыл его гораздо большему количеству людей и решил в лучшем коде. Как разработчик Ruby все, что я могу, это спасибо.
Том: Пожалуйста.
Дэн: Ты сделал мою работу намного проще. Приветствия.
Том: Большое спасибо.
Дэн: Нет, я имею в виду, что я подписался сразу после того, как вы, ребята, действительно добились успеха, я думаю, что это было примерно в то время, когда проект Rails переключил хостинг кода на вас, ребята, и сразу стало очевидно, что это хорошо. большой, и на самом деле это будет иметь значение через три или четыре года в том месте, где находится экосистема Ruby, он огромен.
Том: Да, это поражает меня каждый день новым кодом, который заканчивается там, и проектом, над которым мы работаем, и просто тем, что мы можем быть вовлечены в создание экосистемы с открытым исходным кодом и просто в жизнь людей в компаниях, над которыми они работают. Оптимизация этого материала для меня — это то, что я действительно люблю, это то, что дает мне удовлетворение от работы, так как я знаю, что мы помогаем людям создавать то, что будет управлять будущим, что для меня просто потрясающе.
Луи: (смеется) звучит как лозунг кампании. Хорошо.Большое спасибо, что нашли время прийти на шоу сегодня, Том, это было здорово, и продолжайте делать то, что вы, ребята, делаете, как сказал Дэн, и тогда я могу определенно повторить это, это действительно потрясающе, и это сделало работу над этим материалом намного веселее, чем раньше. И я думаю, что во многих случаях это привело к улучшению кода, возможно, потому, что люди знают, что он будет видимым (смех), они немного более осторожны. Но да, большое спасибо за то, что уделили время. Если слушатели хотят найти вас в Интернете, куда они идут, у вас есть ручка Twitter или, может быть, просто ваш профиль на GitHub?
Том: Да, вы нашли меня на GitHub по адресу github.com/mojombo , и там есть несколько ссылок. Мой блог — tom.preston-werner.com, и там есть несколько постов, которые люди могут читать.
Луи: Очень круто, спасибо. Дэн, спасибо, что зашел, чтобы помочь нам с этим сегодня, ты хочешь также отбросить некоторые ссылки?
Дэн: Да, лучшее место — это RubySource , на этой неделе у нас есть несколько отличных статей, всегда ищущих новых авторов, так что, если вы согласитесь, если вам нравится, не стесняйтесь, присылайте нам статьи и всегда ищите людей, чтобы писать о новых темах, если вы в Rails, дайте нам знать.
Луи: Отлично, спасибо. А RubySource в Твиттере, так что twitter.com/rubysource . Хорошо, большое спасибо, ребята, это было приятно.
Том: Да, большое спасибо.
Луи: Хорошо, спасибо! До свидания.
Том: Пока.
Дэн: Ура.
Тема музыки Майка Меллы .
Спасибо за прослушивание! Не стесняйтесь сообщить нам, как у нас дела, или продолжить обсуждение, используя поле комментариев ниже.