23 September 2015

Понять Open Source

Open source
image


Опен сорс заставляет меня чувствовать себя мазохистом.
Я люблю его, однако часто работа с ним – боль.
(c) Мой

Когда-то – может, уже лет 10 назад – было модно предрекать конец опен сорсу. Интернет пестрил заголовками типа «Почему Open Source скоро умрет» или «Почему Open Source никогда не победит платное ПО». Это не точные заголовки. Скорее, впечатление, которое сохранилось с тех пор.

Сейчас мы видим, что опен сорс цветет и пахнет. Иногда хорошо пахнет, иногда – не очень. Но в целом по-прежнему набирает популярность и даже как-то эволюционирует. Собственно, об этом и поговорим: о том, что Open Source представляет собой сейчас, и куда будет двигаться дальше. Хотелось бы увидеть в комментариях ваши мнения по этому поводу.

Сразу предупрежу, что я не аналитическое агентство. Поэтому не предоставлю масштабной статистики с построенными на ней далеко идущими выводами. Скорее, я ограничусь «далеко идущими выводами», основанными на моей работе с открытым кодом, на общении с людьми, которые тоже этим занимаются, и на наблюдениях за деятельностью различных компаний в этой области.

Я запланировал три поста, которые опубликую, если тема покажется интересной:

  1. Этот пост, где поговорим о том, как научиться понимать Open Source
  2. Модели использования Open Source для достижения бизнес-целей
  3. В третьем посте я предложу нестрогую классификацию открытого кода по его профпригодности. По тому, насколько удобно, эффективно и полезно работать с различными сторонними проектами.

Что такое опен сорс, я впервые узнал, наверное, в конце девяностых. Первый раз собрал ядро Линукса из исходных кодов году в 2001. До 2008-го опен сорс меня интересовал только как «бесплатный» инструментарий для дома и работы. Слово «бесплатный» беру в кавычки, потому что уже давно не считаю сочетания «Open Source» и «платное ПО» противоположными по смыслу. Но об этом чуть позже. В 2008-ом я впервые начал нехотя наблюдать за трендами в опен сорсе изнутри компании, в которой тогда работал. А вот по-настоящему работать с ним начал меньше двух лет назад. Но успел уже здорово нахлебаться примерно от десятка различных проектов.

Все это время в моем мозгу развенчивались мифы, связанные с опен сорсом. И я даже подозреваю, что реальная история открытого кода развивалась как раз таким образом, чтобы рассеивать мифы, которые когда-то были правдой. Вот только в реальности они разрушились гораздо раньше, чем у меня в голове.

Кстати, небольшой опросничек: как вы используете опен сорс? (См. в самом низу поста. Хабр не умеет вставлять опросники в текст)

Сначала я смотрел на ПО с открытым кодом очень романтически. Фактически, я верил в широко распространенные одно время легенды об «энтузиастах с красными глазами», которые пишут код в ночи с одной только целью – сделать мир лучше. Безусловно, такие люди были. Даже в моем студенческом общежитии были ребята, которые ковыряли ядро Линукса и GNUтые приложения. И кто-то из них даже вливал свой код в соответствующие репозитории. Подозреваю, что и сейчас в общежитиях технических ВУЗов люди по ночам занимаются не только сексом и геймерством. Интересно даже, что именно они сейчас ковыряют. Если 15 лет назад ответ был очевиден – Линукс – то сейчас я почти уверен, что это не Линукс. Очевидно, энтузиасты с красными глазами существуют и поныне. Но их вклад в Open Source ничтожен.

imageПервый миф, с которым мне пришлось расстаться – это представление о том, будто на ПО с открытым кодом не делают деньги. Распрощаться с этой идеей было очень просто, потому что за примерами далеко ходить не надо. Взять хотя бы корпоративные версии Linux-дистрибутивов. Например, Red Hat Enterprise Linux (в простонародии – RHEL). Коммерческие дистрибутивы Linux – железный пример того, что на опен сорсе можно заработать. От него не отмахнешься аргументом типа «Если кто-то пытается зарабатывать, это еще не значит, что идея популярна и что заработать можно много». Практически каждая крупная западная компания платит за подобные дистрибутивы. А сколько на этом можно заработать, легко понять из финансовых отчетностей Red Hat или из краткой сводки его финансовых метрик.

Бесплатность опен сорса – это второй миф, с которым я распрощался. По-хорошему, этот миф должен быть с некоторой натяжкой более-менее эквивалентен первому. Однако в сознании людей эти два заблуждения жили по отдельности. Мой случай не был исключением. Забавно, что в современном мире первый миф, видимо, уже изжит. А вот второй по-прежнему процветает. Думаю, для этого есть несколько причин:

  1. люди думают, что платить можно только деньгами. Хотя если человек проводит ночь, пытаясь заставить работать «бесплатную» софтину, то он платит собственным временем. (Которое, как известно, все равно почти что деньги). Бесконечная возня с графическими библиотеками – та причина, по которой я перестал когда-то использовать линуксовые GUI для домашних целей (хотя сейчас ситуация с ними, наверное, уже улучшилась);
  2. упускается из виду реальный плательщик. Такая ситуация часто встречается на Хабре. «Я никогда не куплю это дорогущее интегрированное коробочное решение. Лучше я за копейки куплю дешевого железа и поставлю на него опен сорс. Все будет работать точно так же и даже лучше!» Тут интересный момент заключается в том, что реально за то, что «все будет работать», платит не сам комментатор, а его наниматель. Это он – т.е. наниматель – заплатил умельцу, чтобы все работало. А мог бы уволить умельца и с освободившимися деньгами подойти к секретарю: «Закажите, пожалуйста, вот эту черную коробку. А когда придет, воткните, пожалуйста, в розетку. Ничего больше делать не надо». Конечно, я тут немного утрирую. И даже более того: чтобы люди начали стоить дешевле решений, поставляемых вместе с сервисом, бизнесу необходимо достичь определенных размеров. Но тут мы вплотную подходим к следующей причине;
  3. размер имеет значение. Повседневный «бытовой» опыт обманчиво намекает нам на то, что опен сорс бесплатен. Написали вы, например, Hello World на языке С, откомпилировали его открытым компилятором GCC – и все у вас в порядке. imageА что если у вас несколько миллионов строк кода? А если вы хотите включить в компиляторе нетривиальные оптимизации? С очень большой вероятностью, вы столкнетесь с неприятностями. Кстати, они у вас возникнут не только с «бесплатным» компилятором. Проблемы будут независимо от того, какой компилятор используете – с открытым кодом или нет. Вам придется заплатить в любом случае. Как только мы начинаем делать что-то большое и – что тоже важно – нетривиальное, мы приходим к тому, что за инструментарий надо платить. На моем предыдущем месте работы даже относительно небольшой коллектив из 20 разработчиков раз в пару месяцев наталкивался ошибки в ядре Линукса. И каждый раз, когда покупались новые серверы, необходимо было заново интегрировать с ними все тот же Линукс. Это иллюстрация того, что если у вашего бизнеса большой масштаб, вам необходима поддержка. Вы можете заплатить за нее, купив «решение» с поддержкой в комплекте, а можете поставить бесплатный дистрибутив и отдельно купить поддержку. Однако деньги вы выложите.

    Приведу еще несколько причин, из-за которых приходится платить за Open Source:
    1. плохая документация
    2. несовместимость с аппаратной или программной платформой
    3. нетривиальный пользовательский интерфейс, для работы с которым нужно обучать персонал

    imageimageТеперь третий миф. На этот раз, о том, будто над открытым кодом трудятся в основном энтузиасты. Это заблуждение связано с первыми двумя и хронологически развеивалось одновременно с ними. Если хорошенько приглядеться к популярным Open Source проектам, то можно заметить, что самый интересный и качественный опен сорс делается крупными коммерческими компаниями. Например, Java – детище Sun Microsystems. Популярный нынче компилятор LLVM зачат компанией Apple, а позже к его развитию присоединились Intel и Google. Незаменимый в современном мире Hadoop практически полностью создан компанией Yahoo! (между 2006 и 2011 годами Yahoo! влил в Hadoop порядка 90 тыс. строк кода, ближайший «преследователь» — около 10 тыс).

    image


    Кстати, про Yahoo!.. Лет 15 назад практически каждый интернет-пользователь периодически пользовался поисковиком этой компании. Проверим, много ли людей знают Yahoo! сейчас. В конце поста на эту тему есть опросничек.

    image


    Выше я назвал только основные заблуждения, которые существуют или существовали относительно Open Source. Есть еще куча мелких. Но обсуждать их уже не так интересно. Гораздо интереснее поговорить о том, как понимать тенденции, управляющие развитием современного опен сорса. Если научиться анализировать крупнейшие события в мире открытого ПО, то для понимания общей картины предубеждения становятся не нужны.

    Универсальных рецептов здесь быть не может. Могу лишь поделиться тем, что считаю полезным для себя. Рад буду услышать в комментариях о том, на что опираетесь вы.

    Итак, как научиться понимать Open Source?

    Рецепт 1. Open Source – это почти всегда про деньги. Если вы видите непонятные, но мощные «движения» в опен сорс сообществе, попытайтесь понять, кто и как пытается на этом заработать. Разберем пример.

    Меньше года назад Microsoft объявил о выводе .NET Core в Open Source. Вопрос: зачем?

    image


    Если попытаться понять это с помощью поисковика, то в топе Гугла можно ссылку вот на это. Из статьи следует, что цель – похоронить Java. Еще всплывает вопрос на Quora, где самый популярный ответ говорит о том же.

    Хорошо, допустим, что цель действительно такая. Но как Microsoft собирается на этом заработать? Мы знаем, что Microsoft – не благотворительная организация. Пока остается неясным, как компания хочет заработать денег, можно считать, что ответа у нас нет.

    Ищем дальше. Находим официальный ответ Microsoft. Кстати, мне удалось его найти только благодаря Яндексу, хотя и пользовался теми же запросами, что и в Гугле.

    Что нам говорит сам Microsoft?

    image


    Почитайте статью. Там много правильных и красивых слов о том, что получит от новой инициативы клиент. Но ни слова о том, что хочет получить сама компания. Собственно, там этого и не могло быть. Компании всегда фокусируются на клиенте. «Все для клиента, блин!» И это совершенно правильно.

    Мне не удалось найти подходящего объяснения в Интернете (возможно, вам в этом вопросе повезло больше). Значит, начинаем думать самостоятельно.

    Сам Microsoft говорит нам (см. картинку выше), что .NET пошел в опен сорс ради кросс-платформенности. Замечательно! Microsoft нам врать не будет, просто выдаст не всю правду :). Смотрим на другие инициативы компании в этой области. Замечаем, что Microsoft является большим апологетом HTML5. Не буду здесь приводить конкретных ссылок, т.к. деятельность компании в этой области многогранна. Любой поисковик все легко покажет.

    image


    Смотрим дальше. Видим, что компания недавно анонсировала – через одну из своих дочек – проект JUniversal. Это инструмент для перевода Java-кода на .NET платформу.

    image


    Итак, обнаружили, что компания сильно заинтересована в кросс-платформенных приложениях. Причем не только на .NET. Но почему тогда Microsoft не кинулся развивать Java?

    Снова вспоминаем о том, что Microsoft – это не ради благотворительности. Java контролируется своенравной компанией Oracle. Ставить себя в зависимость от капризов Oracle – большой риск. Поэтому Microsoft концентрируется либо на инструментарии, который контролирует сама, либо на тех технологиях, которые единолично не контролирует никто. Т.е. вроде как, компания действительно не прочь отъесть кусок у Java. Но это не сама цель. Что же тогда цель?

    Ответ часто мелькает на интернет-страницах, которые посвящены кросс-платформенным усилиям конторы. Если вы повторите тот поиск, который я кратко описал выше, то увидите, что цель – сделать так, чтобы приложения, которые разработчики пишут для Android и iOS, также запускались на Windows/Windows Phone. Бинго! Добавляем последний кирпичик: у Microsoft нет богатой экосистемы вокруг его мобильной платформы. Но такая экосистема есть у Google и Apple. Так что Microsoft хочет воспользоваться чужой экосистемой, чтобы переманить пользователей двух мобильных гигантов. «Ребята! Все ваши любимые приложения работают и на нашей системе! Айда к нам. У нас платформа гламурнее» (например).

    image


    Правильный ли вывод я сделал? Не знаю. Но, по крайней мере, это гипотеза, которую можно проверять, наблюдая за дальнейшими действиями компании.

    Подобные логические построения при анализе трендов в Open Source приходится делать часто. Потому что никогда soft-гиганты не придут и не скажут открытым текстом: «Вы знаете, мы тут собираемся эксплуатировать чужую экосистему».

    Длинный получился пример… Надеюсь, что во благо. Едем дальше.

    Рецепт 2. Думая, куда может пойти Open Source, ищите аналогии. В мире по-настоящему новые идеи появляются очень редко. Мне иногда полезной оказывается мысль о том, что опен сорсу в широком смысле уже много сотен лет. Что я имею в виду?

    Юридически, открытый код – это публикация. Примерно как худлит. Код тоже является объектом авторского права. Использование художественных или научных публикаций можно лицензировать. То же самое можно делать и с кодом. Технологии, описываемые в научных работах, можно патентовать. Алгоритмы, реализованные в коде, — тоже (хотя и не во всех странах; и часто – под совсем другим соусом).

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

    Давайте возьмем что-нибудь не самое тривиальное. Поговорим о роли государства.

    Государству выгодны публикации. Благодаря им, частные идеи становятся достоянием общественности, что является серьезным двигателем экономики. Поэтому государство всячески старается эти идеи из населения «выманивать». Так, например, был создан один из основных костылей современного капитализма – патентная система. Патенты делают идею публичной, но при этом защищенной от посторонних посягательств. Дальнейшее ее использование регулируется с помощью лицензий.

    Итак, в мире публикаций огромную роль играет государство. А многие интересные для развития экономики публикации рождаются в академической среде, которая поддерживается все тем же государством. Какую теперь можно было бы выдвинуть гипотезу?

    Правильно: государство играет огромную роль в развитии Open Source. И академическая среда тоже. Имеется в виду, в первую очередь, американское государство. Российское для развития Open Source пока что сделало мало.

    Перед тем, как проверить гипотезу, немного глубже посмотрим на ситуацию. Как коммерциализируются технические идеи, родившиеся в академической среде?

    Чтобы ученые «не зажимали» свои идеи, государство позволяет патентовать их и даже дает приоритетное право на коммерциализацию (с некоторыми оговорками, которые здесь не существенны).

    В результате научной работы, рождается технология, защищенная патентами и обложенная лицензиями. Дальше ученые – при условии, что университет позволит – основывают стартап и начинают доводить технологию до продукта. Если все идет хорошо, они зарабатывают на этом деньги.

    Здесь важным моментом является то, что ученые начинают бизнес, имея в руках уже готовую технологию, созданную ими и оплаченную государством.

    Теперь что мы видим в отношении нашей гипотезы? А то, что огромное количество нишевого софта с открытым кодом действительно родилось в стенах исследовательских организаций. Пример из личной практики. Этим летом я посетил конференцию ISC’15 (International Supercomputing Conference). Практически весь софт, представленный на конференции, является открытым и берет свое начало в академических кругах. Сначала он разрабатывался на государственные деньги, а потом разработчики, выйдя из лабораторий с готовыми технологиями, создали вокруг них коммерческие конторы. Сюда относятся, например, все самые популярные реализации MPI и планировщики задач.

    Я постоянно сталкиваюсь с опен сорсом, вышедшим из академической среды. Часто это очень серьезные проекты. Взять хотя бы инструмент для визуализации данных VisIt. 1,5 миллиона строк кода. Разрабатывается очень крупной американской лабораторией LLNL. Может использоваться как сам по себе, так и в качестве библиотеки для Python, С++, Java. Кстати, рекомендую.

    image


    image


    Вот еще один пример роли государственных денег. «Лохматый» список 2003-го года. Всемирно известные Open Source проекты, проспонсированные государством.

    Итак, проведя аналогию с другими видами публикаций, легко пришли к выводу, что государство – серьезный драйвер опен сорса.

    Возможно, этот пост читают специалисты по интеллектуальной собственности. Может, кто-то из них знает, где можно достать статистику по количеству денег, которые США вкладывают в Open Source? А еще по количеству коммерческих компаний, которые вышли из академической среды на почве Open Source?

    Однако остался еще один рецепт.

    Рецепт 3. Периодически отказывайтесь от рецептов. Или ищите новые. Или вообще не используйте. Open Source быстро эволюционирует. То, что казалось фантастикой пару лет назад, сегодня уже реальность.

    Этот «рецепт» невозможно проиллюстрировать примером ввиду самой сути рецепта. Но кое-что все равно скажу :)

    imageimageСегодня я могу «нагуглить» или «наяндексить» Python-библиотеку практически для любой задачи прикладного характера. Т.е. в мире в какой-то момент появилось по-настоящему удобное средство, которое дало дополнительный толчок развитию Open Source сообщества. Очень легко стало разрабатывать элегантные, маленькие, но эффективные инструменты. (Хотя и с ограниченной областью применения). Каждый из них в отдельности – почти незаметен и, скорее всего, никогда не войдет ни в какой продукт. Но все вместе они создают основу для соцсети нового типа, что ли… Люди постят свои сниппеты вместо фотографий ног и еды. Существенная роль в развитии этого явления принадлежит еще и GitHub.

    Удобные инструменты привели к маленькому Open Source коммунизму, что ли… Люди выкладывают свои труды в сеть только потому, что будет приятно, если кто-то еще ими воспользуется.

    На этом пока все. В следующем посте поговорим о том, с какими целями отдельные люди и компании выходят в Open Source.

    Продолжение: «Понять Open Source: модели использования»

    Два обещанных опросничка:
Tags:Open Sourceopen source software
Hubs: Open source
+18
48.2k 138
Comments 83