Понять Open Source
размер имеет значение. Повседневный «бытовой» опыт обманчиво намекает нам на то, что опен сорс бесплатен. Написали вы, например, Hello World на языке С, откомпилировали его открытым компилятором GCC – и все у вас в порядке. А что если у вас несколько миллионов строк кода? А если вы хотите включить в компиляторе нетривиальные оптимизации? С очень большой вероятностью, вы столкнетесь с неприятностями. Кстати, они у вас возникнут не только с «бесплатным» компилятором. Проблемы будут независимо от того, какой компилятор используете – с открытым кодом или нет. Вам придется заплатить в любом случае. Как только мы начинаем делать что-то большое и – что тоже важно – нетривиальное, мы приходим к тому, что за инструментарий надо платить. На моем предыдущем месте работы даже относительно небольшой коллектив из 20 разработчиков раз в пару месяцев наталкивался ошибки в ядре Линукса. И каждый раз, когда покупались новые серверы, необходимо было заново интегрировать с ними все тот же Линукс. Это иллюстрация того, что если у вашего бизнеса большой масштаб, вам необходима поддержка. Вы можете заплатить за нее, купив «решение» с поддержкой в комплекте, а можете поставить бесплатный дистрибутив и отдельно купить поддержку. Однако деньги вы выложите.
Приведу еще несколько причин, из-за которых приходится платить за Open Source:
- плохая документация
- несовместимость с аппаратной или программной платформой
- нетривиальный пользовательский интерфейс, для работы с которым нужно обучать персонал
Теперь третий миф. На этот раз, о том, будто над открытым кодом трудятся в основном энтузиасты. Это заблуждение связано с первыми двумя и хронологически развеивалось одновременно с ними. Если хорошенько приглядеться к популярным Open Source проектам, то можно заметить, что самый интересный и качественный опен сорс делается крупными коммерческими компаниями. Например, Java – детище Sun Microsystems. Популярный нынче компилятор LLVM зачат компанией Apple, а позже к его развитию присоединились Intel и Google. Незаменимый в современно мире Hadoop практически полностью создан компанией Yahoo! (между 2006 и 2011 годами Yahoo! влил в Hadoop порядка 90 тыс. строк кода, ближайший «преследователь» — около 10 тыс).
Кстати, про Yahoo!.. Лет 15 назад практически каждый интернет-пользователь периодически пользовался поисковиком этой компании. Проверим, много ли людей знают Yahoo! сейчас. В конце поста на эту тему есть опросничек.
Выше я назвал только основные заблуждения, которые существуют или существовали относительно Open Source. Есть еще куча мелких. Но обсуждать их уже не так интересно. Гораздо интереснее поговорить о том, как понимать тенденции, управляющие развитием современного опен сорса. Если научиться анализировать крупнейшие события в мире открытого ПО, то для понимания общей картины предубеждения становятся не нужны.
Универсальных рецептов здесь быть не может. Могу лишь поделиться тем, что считаю полезным для себя. Рад буду услышать в комментариях о том, на что опираетесь вы.
Итак, как научиться понимать Open Source?
Рецепт 1. Open Source – это почти всегда про деньги. Если вы видите непонятные, но мощные «движения» в опен сорс сообществе, попытайтесь понять, кто и как пытается на этом заработать. Разберем пример.
Меньше года назад Microsoft объявил о выводе .NET Core в Open Source. Вопрос: зачем?
Если попытаться понять это с помощью поисковика, то в топе Гугла можно ссылку вот на это. Из статьи следует, что цель – похоронить Java. Еще всплывает вопрос на Quora, где самый популярный ответ говорит о том же.
Хорошо, допустим, что цель действительно такая. Но как Microsoft собирается на этом заработать? Мы знаем, что Microsoft – не благотворительная организация. Пока остается неясным, как компания хочет заработать денег, можно считать, что ответа у нас нет.
Ищем дальше. Находим официальный ответ Microsoft. Кстати, мне удалось его найти только благодаря Яндексу, хотя и пользовался теми же запросами, что и в Гугле.
Что нам говорит сам Microsoft?
Почитайте статью. Там много правильных и красивых слов о том, что получит от новой инициативы клиент. Но ни слова о том, что хочет получить сама компания. Собственно, там этого и не могло быть. Компании всегда фокусируются на клиенте. «Все для клиента, блин!» И это совершенно правильно.
Мне не удалось найти подходящего объяснения в Интернете (возможно, вам в этом вопросе повезло больше). Значит, начинаем думать самостоятельно.
Сам Microsoft говорит нам (см. картинку выше), что .NET пошел в опен сорс ради кросс-платформенности. Замечательно! Microsoft нам врать не будет, просто выдаст не всю правду :). Смотрим на другие инициативы компании в этой области. Замечаем, что Microsoft является большим апологетом HTML5. Не буду здесь приводить конкретных ссылок, т.к. деятельность компании в этой области многогранна. Любой поисковик все легко покажет.
Смотрим дальше. Видим, что компания недавно анонсировала – через одну из своих дочек – проект JUniversal. Это инструмент для перевода Java-кода на .NET платформу.
Итак, обнаружили, что компания сильно заинтересована в кросс-платформенных приложениях. Причем не только на .NET. Но почему тогда Microsoft не кинулся развивать Java?
Снова вспоминаем о том, что Microsoft – это не ради благотворительности. Java контролируется своенравной компанией Oracle. Ставить себя в зависимость от капризов Oracle – большой риск. Поэтому Microsoft концентрируется либо на инструментарии, который контролирует сама, либо на тех технологиях, которые единолично не контролирует никто. Т.е. вроде как, компания действительно не прочь отъесть кусок у Java. Но это не сама цель. Что же тогда цель?
Ответ часто мелькает на интернет-страницах, которые посвящены кросс-платформенным усилиям конторы. Если вы повторите тот поиск, который я кратко описал выше, то увидите, что цель – сделать так, чтобы приложения, которые разработчики пишут для Android и iOS, также запускались на Windows/Windows Phone. Бинго! Добавляем последний кирпичик: у Microsoft нет богатой экосистемы вокруг его мобильной платформы. Но такая экосистема есть у Google и Apple. Так что Microsoft хочет воспользоваться чужой экосистемой, чтобы переманить пользователей двух мобильных гигантов. «Ребята! Все ваши любимые приложения работают и на нашей системе! Айда к нам. У нас платформа гламурнее» (например).
Правильный ли вывод я сделал? Не знаю. Но, по крайней мере, это гипотеза, которую можно проверять, наблюдая за дальнейшими действиями компании.
Подобные логические построения при анализе трендов в Open Source приходится делать часто. Потому что никогда soft-гиганты не придут и не скажут открытым текстом: «Вы знаете, мы тут собираемся эксплуатировать чужую экосистему».
Длинный получился пример… Надеюсь, что во благо. Едем дальше.
Рецепт 2. Думая, куда может пойти Open Source, ищите аналогии. В мире по-настоящему новые идеи появляются очень редко. Мне иногда полезной оказывается мысль о том, что опен сорсу в широком смысле уже много сотен лет. Что я имею в виду?
Юридически, открытый код – это публикация. Примерно как худлит. Код тоже является объектом авторского права. Использование художественных или научных публикаций можно лицензировать. То же самое можно делать и с кодом. Технологии, описываемые в научных работах, можно патентовать. Алгоритмы, реализованные в коде, — тоже (хотя и не во всех странах; и часто – под совсем другим соусом).
Как можно использовать подобные аналогии? Как всегда, приведу пример.
Давайте возьмем что-нибудь не самое тривиальное. Поговорим о роли государства.
Государству выгодны публикации. Благодаря им, частные идеи становятся достоянием общественности, что является серьезным двигателем экономики. Поэтому государство всячески старается эти идеи из населения «выманивать». Так, например, был создан один из основных костылей современного капитализма – патентная система. Патенты делают идею публичной, но при этом защищенной от посторонних посягательств. Дальнейшее ее использование регулируется с помощью лицензий.
Итак, в мире публикаций огромную роль играет государство. А многие интересные для развития экономики публикации рождаются в академической среде, которая поддерживается все тем же государством. Какую теперь можно было бы выдвинуть гипотезу?
Правильно: государство играет огромную роль в развитии Open Source. И академическая среда тоже. Имеется в виду, в первую очередь, американское государство. Российское для развития Open Source пока что сделало мало.
Перед тем, как проверить гипотезу, немного глубже посмотрим на ситуацию. Как коммерциализируются технические идеи, родившиеся в академической среде?
Чтобы ученые «не зажимали» свои идеи, государство позволяет патентовать их и даже дает приоритетное право на коммерциализацию (с некоторыми оговорками, которые здесь не существенны).
В результате научной работы, рождается технология, защищенная патентами и обложенная лицензиями. Дальше ученые – при условии, что университет позволит – основывают стартап и начинают доводить технологию до продукта. Если все идет хорошо, они зарабатывают на этом деньги.
Здесь важным моментом является то, что ученые начинают бизнес, имея в руках уже готовую технологию, созданную ими и оплаченную государством.
Теперь что мы видим в отношении нашей гипотезы? А то, что огромное количество нишевого софта с открытым кодом действительно родилось в стенах исследовательских организаций. Пример из личной практики. Этим летом я посетил конференцию ISC’15 (International Supercomputing Conference). Практически весь софт, представленный на конференции, является открытым и берет свое начало в академических кругах. Сначала он разрабатывался на государственные деньги, а потом разработчики, выйдя из лабораторий с готовыми технологиями, создали вокруг них коммерческие конторы. Сюда относятся, например, все самые популярные реализации MPI и планировщики задач.
Я постоянно сталкиваюсь с опен сорсом, вышедшим из академической среды. Часто это очень серьезные проекты. Взять хотя бы инструмент для визуализации данных VisIt. 1,5 миллиона строк кода. Разрабатывается очень крупной американской лабораторией LLNL. Может использоваться как сам по себе, так и в качестве библиотеки для Python, С++, Java. Кстати, рекомендую.
Вот еще один пример роли государственных денег. «Лохматый» список 2003-го года. Всемирно известные Open Source проекты, проспонсированные государством.
Итак, проведя аналогию с другими видами публикаций, легко пришли к выводу, что государство – серьезный драйвер опен сорса.
Возможно, этот пост читают специалисты по интеллектуальной собственности. Может, кто-то из них знает, где можно достать статистику по количеству денег, которые США вкладывают в Open Source? А еще по количеству коммерческих компаний, которые вышли из академической среды на почве Open Source?
Однако остался еще один рецепт.
Рецепт 3. Периодически отказывайтесь от рецептов. Или ищите новые. Или вообще не используйте. Open Source быстро эволюционирует. То, что казалось фантастикой пару лет назад, сегодня уже реальность.
Этот «рецепт» невозможно проиллюстрировать примером ввиду самой сути рецепта. Но кое-что все равно скажу :)
Сегодня я могу «нагуглить» или «наяндексить» Python-библиотеку практически для любой задачи прикладного характера. Т.е. в мире в какой-то момент появилось по-настоящему удобное средство, которое дало дополнительный толчок развитию Open Source сообщества. Очень легко стало разрабатывать элегантные, маленькие, но эффективные инструменты. (Хотя и с ограниченной областью применения). Каждый из них в отдельности – почти незаметен и, скорее всего, никогда не войдет ни в какой продукт. Но все вместе они создают основу для соцсети нового типа, что ли… Люди постят свои сниппеты вместо фотографий ног и еды. Существенная роль в развитии этого явления принадлежит еще и GitHub.
Удобные инструменты привели к маленькому Open Source коммунизму, что ли… Люди выкладывают свои труды в сеть только потому, что будет приятно, если кто-то еще ими воспользуется.
На этом пока все. В следующем посте поговорим о том, с какими целями отдельные люди и компании выходят в Open Source.
Два обещанных опросничка: