Использование Ubuntu и другого СПО в компании Google
Применение открытых программ и проектов в Google – интервью с Кристом ДиБоной (Chris Dibona), управляющим OpenSource-проектами в компании Googlе.
Платформа Android воплотила мечты о становлении систем на базе Linux. Классическому Linux-у на “десктопном” (настольном) компьютере трудно конкурировать с Windows и Mac-OS, но принципиально новый подход к построению десктоп-систем, используемый в платформах ChromeOS и Android, может существенно повлиять на популярность Linux-решений для обычных пользователей. ChromeOS обгоняет время и пользователи ещё не готовы к подобным системам, но в корпоративной среде уже начинают понимать преимущества использования ChromeOS (высокая безопасность, централизованное управление, независимость от рабочего места, упрощение обслуживания, надёжное хранение данных на внешнем удалёёном хранилище)!
В Google на 70% ноутбуков используется Mac OS X, а на остальных – Linux. Доля Windows оценивается как незначительная. Рабочие станции персонала, не связанного с разработкой, пытаются перевести на ChromeOS. На рабочих станциях технического персонала как правило установлен Linux, при этом в компании используется собственная сборка Ubuntu, в обиходе называемая Goobuntu.
Основное отличие Goobuntu сводится к добавлению в базовую поставку инструментов, используемых разработчиками в Google, а также к интеграции с внутренним сетевым окружением, например, все домашние директории пользователей монтируются с централизованного файлового сервера. Google стремиться возвращать добавляемые в Goobuntu улучшения в Ubuntu, но пока наблюдается проблема с отставанием от основного проекта – дистрибутив Google прежде всего ориентируется на стабильность, поэтому не успевает угнаться за темпом разработки Ubuntu. Например, в Google пока не используют интерфейс Unity и не планируют переходить на него пока для Unity не будет достигнут высокий уровень совместимости c используемыми в Google инструментами, среди которых Eclipse, VIM, Emacs.
За последние пять лет компания Google выпустила около 1300 открытых проектов, из которых самыми известные – это Android и Chrome. Объём открытого Google кода оценивается в 25 млн. строк, при этом созданный в Google код можно встретить практически повсеместно, например, наиболее распространены открытые наработки, связанные с компиляторами и программными фреймворками (программным обеспечением, облегчающим разработку и объединение разных компонентов большого проекта).
В компании Google принята упрощённая процедура открытия кода, разработчик имеет возможность легко добиться открытия результатов своего труда. Но никто не навязывает, открывать код или нет. Например, для того чтобы открыть код патча к GCC или другому открытому проекту нужно всего лишь рецензировать его в специальном отделе. После того как патч посмотрят и дадут добро, его можно публиковать. Если после рецензирования нескольких патчей будет ясно, что разработчик понимает, что от него требуется, то ему предоставляется свобода и он уже может отправлять патчи без предварительного рецензирования. При работе над новым открытым проектом необходимо пройти проверку на соблюдение патентов и торговых марок, при этом на выдачу заключения отводится не более трёх дней. Если за три дня ответ не получен – проект автоматически считается одобренным. Обычно бюрократические проверки удаётся совершить ещё до завершения разработки и они никак не сказываются на процессе формирования релиза.
В качестве рекомендуемой открытой лицензией в Google используется лицензия Apache. Если разработчик желает использовать другую лицензию и готов аргументировать, что лицензия Apache в его случае не оптимальна, то можно использовать и другую лицензию. Лицензия Apache выбрана потому, что она современна и отражает аспекты передачи прав на использование связанной с разработкой интеллектуальной собственности, не ограничивая сторонние компании и сообщества в использовании и модификации продукта. Ключевой причиной выбора лицензии Apache является возможность делегировать право безвозмездного использования патентов, затрагивающих используемые в программном продукте технологии. При этом, в случае судебного иска против разработчика, истец утрачивает право использования данных патентов.
MySQL был одним из наиболее важных открытых проектов, используемых в Google, но сейчас это уже не так. MySQL пока ещё используется для обеспечения работы некоторых подсистем, связанных с показом контекстной рекламы, но для объёмов Google MySQL плохо масштабируется, поэтому компания перевела большинство использующих MySQL служб на собственные БД BigTable и Megastore.
В качестве наиболее важных для Google открытых проектов в нынешнем интервью назван набор компиляторов GCC и Linux-ядро, а также инструментарии и языки для разработчиков, такие как Java, C++ и Python. Кроме того, среди очень важных проектов отмечены OpenSSL и FFmpeg.
В Chrome и Android используются принципиально разные модели разработки. Процесс развития Chrome полностью открыт и каждый патч сразу появляется в публичном репозитории. Android развивается немного иначе, код вначале развивается закрыто и публикуется только после готовности релиза. Подобные различия объясняются ориентацией проектов на разные рынки. В случае Android, имеются обязательства перед большим числом партнёров, среди которых производители чипсетов, сотовые операторы и производители мобильной техники, многие из партнёров конкурируют между собой. Все заинтересованные платформой Android партнёры желают получить для себя какую-то уникальную особенность и конкурентное преимущество.
Если централизовано не контролировать выпуск релизов Android и полностью открыть процесс разработки, на рынок будет выплеснута волна некачественных, собранных на базе не готовых к релизу исходных текстов, и несовместимых между собой продуктов, которые дискредитируют идею единой платформы Android. Именно по причине возможной фрагментации в настоящее время задерживается выпуск кода Android “Honeycomb”, который будет открыт только после синхронизации веток для планшетов и смартфонов. Все LGPL и GPL компоненты Android “Honeycomb” изначально открыты, в соответствии с требованиями данных лицензий, задержка с открытием кода наблюдается только для частей под лицензией Apache, но это временная мера и в конечном итоге код будет полностью открыт.
Компания заинтересована в увеличении числа разработчиков открытых проектов. По мнению Google открытые разработки позволяют поддерживать свободный и конкурентоспособный характер сети Интернет. Для способствования росту открытых проектов, Google ежегодно проводит мероприятие “Summer of Code”, в рамках которого студентам и наставникам из открытых проектов уже выплачено около 28 млн долларов. Более того, благодаря “Summer of Code” сообщества многих открытых проектов смогли привлечь к работе новых разработчиков, которые продолжают участвовать в разработке и после окончания мероприятия.