Об Open Source. Часть I.

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

А ещё заметка опять получилась слишком длинной, поэтому я решил разбить её на две части. Сегодня — начало, продолжение в следующее воскресенье.

Личный опыт

Моё общение с Open Source началось ещё в 90-е, когда я был романтиком и феномен свободного ПО мне показался очень интересным. Я тогда компилировал ядро Linux, разбирался во всех этих утилитах, изучал команды и насиловал ими свой компьютер. Linux тогда был совсем не тот, что сейчас и для любого самого простого действия приходилось изрядно помучиться. Это сейчас, мне кажется, какой-нибудь Ubuntu поставить и настроить сможет даже домохозяйка, а тогда это было большое дело. Но я тогда был студентом и мне это было очень интересно.

Впрочем, от мира Open Source я очень быстро перешёл в мир Windows. Во многом испугавшись толпы красноглазых фанатиков, которыми очень быстро наполнилась вся экосистема и от создаваемой суеты и шума хотелось сбежать. Так, наверное, происходит со всеми революционными идеями, которые, будучи задуманными идеалистами, очень быстро оказываются захваченными аферистами и фанатиками.

В экосистеме Microsoft тогда было наоборот, всё очень адекватно, спокойно и здраво. Только-только вышел очень грамотно сделанный Windows NT, на горизонте был Windows 2000, который нёс в себе революционную и очень грамотно сделанную систему каталогов Active Directory, без которой до сих пор не может обойтись практически ни одна компания в мире. Все ждали .Net и C#, которые были сделаны очень и очень разумно. После базара Open Source сообщества, стройный храм нормального софта показался мне близким к идеалу.

Поэтому не буду скрывать, что в те молодые годы я порой не сдерживал себя в критике Open Source. Впрочем, уже тогда критикуя чаще не сам софт, а его фанатичных последователей. К счастью, фанатики, хоть и генерировали 99% шума, тем не менее были не единственными игроками этой экосистемы и поэтому феномен Open Source продолжал развиваться, пока вдруг не оказалось, что практически весь мир вокруг работает на технологиях Open Source. Большая часть серверов в интернете работает на Linux, почти все облачные провайдеры работают на Linux, большая часть клиентских устройств, на счёт бурного роста Android — тоже на Linux (Android построен на его ядре)!

Может и прав был Стив Балмер, когда сравнивал Open Source с раковой опухолью? По крайней мере по скорости распространения точно есть сходство. Правда пользы, конечно, от Open Course несравнимо больше. Кстати, Балмер с тех пор признал свою ошибку и признался в любви к Linux (https://www.zdnet.com/article/ballmer-i-may-have-called-linux-a-cancer-but-now-i-love-it/). А умение признавать свои ошибки — оно более ценно, чем умение их не допускать.

Я, конечно, не Балмер, но сейчас понимаю и признаю, что Open Source я критиковал зря (фанатиков — не зря). И это действительно феномен, который очень сильно поменял окружающий мир и в мире разработки ПО, и за его пределами. Попробую исправить свои прошлые ошибки этой заметкой, рассказав немножко об этом феномене.

Откуда взялся Open Source

Open Source появился благодаря монополии (забавно звучит, правда? Но это действительно так). Монополии компании AT&T, которая, со времен основания её изобретателем телефона Александром Беллом и до 1982 года была монополистом на рынке связи в США. И даже считалась официально “естественной монополией”. Что позволяло ей зарабатывать очень большие деньги. И много инвестировать в инновации.

Питер Тиль в своей горячо мной рекомендуемой здесь уже неоднократно книге “0 to 1” (https://www.amazon.com/Zero-One-Notes-Start-Future-ebook/dp/B00KHX0II4/) рассуждает о вреде и пользе конкуренции и приходит к парадоксальному (лишь на первый взгляд) выводу. Конкуренция не приносит пользы потребителю. Всё, к чему она приводит — это убивание маржинальности бизнеса в ноль. И для того, чтобы создавать что-то новое, полезное и интересное, любой бизнес всеми силами должен уходить от конкуренции в новые ниши. Поэтому практически всегда прорывные инновации оказываются связаны с монополией, а не с конкуренцией. Более того, позволю себе сделать провокационное утверждение, что рынок софта в принципе тяготеет к монополизации благодаря экосистемам, которые создаются вокруг большинства продуктов (но об этом ниже).

Очень многие инновации были созданы именно благодаря тому, что компании, их создавшие, могли себе позволить инвестировать. Ровно как многие произведения искусства были созданы благодаря чрезмерной концентрации денег в одних руках. А там, где такой концентрации не было (потому, например, что общество было более здоровым и не было пропасти между богатыми и бедными) — искусство тоже было в упадке.

Но вернёмся к AT&T. В AT&T были созданы такие вещи, без которых невозможно представить нашу жизнь, как транзисторы, солнечные батареи, языки программирования С и С++, лазеры и т.д. Только нобелевских премий было получено девять! В числе прочего в AT&T была создана операционная система UNIX, наследником которой и является Linux. И который бы не появился без UNIX.

Поскольку AT&T был монополией, его деятельность была очень сильно зарегулирована правительством. Поэтому AT&T был обязан отдавать (с определёнными ограничениями) исходный код UNIX разным университетам. В том числе и университету Беркли. Так знания об устройстве UNIX стали доступны массам. И это же привело к всеобщему распространению UNIX в мире. Даже у Microsoft был собственный UNIX (см. Xenix: https://en.wikipedia.org/wiki/Xenix).

AT&T исходный код раздавал, но всё равно copyright принадлежал AT&T. То есть AT&T всё ещё принадлежали права на UNIX. Поэтому примерно тогда же возникло параллельно два течения: университет Беркли начал переписывать исходный код UNIX, чтобы написать свой собственный UNIX, свободный от обязательств перед AT&T. Из этого течения выросла операционная система BSD, которая лежит в основе MacOS, работающей на всех компьютерах Apple. А Ричард Столлман, идеолог свободного ПО, начал переписывать UNIX в проекте GNU (что рекурсивно расшифровывается, как GNU’s Not UNIX).

Случайное появление Linux

К началу 90-х, с одной стороны, всё больше росла популярность Windows. И многим это начинало не нравиться, так как они боялись, что Microsoft начнёт контролировать весь компьютерный мир. AT&T судился с университетом Беркли по поводу BSD, и будущее этой операционной системы было под вопросом. А Ричард Столлман в своём проекте GNU уже переписал кучу вспомогательных приложений для UNIX, но вот ядро операционной системы всё никак не получалось. Надо сказать, что оно до сих пор у него не получилось и всё ещё пребывает в состоянии предварительной версии (https://en.wikipedia.org/wiki/GNU_Hurd). Это к вопросу о недостатках Open Source, о которых мы поговорим ниже.

И тут на сцене появляется никому доселе неизвестный студент Хельсингского университета Линус Торвальдс. Который в целях изучения архитектуры нового на тот момент процессора Intel i386 решает написать ядро для UNIX-подобной операционной системы и предлагает всем желающим присоединиться к этой работе. На тот момент это никто всерьёз не воспринял (и зря).

Кстати, забавный факт — папа Линуса, Нильс Торвальдс (https://en.wikipedia.org/wiki/Nils_Torvalds), был ярым коммунистом, учился и работал долгие годы в Москве. Не могу понять, почему до сих пор русских хакеров и КГБ не обвинили в захвате мира через Linux?

Но шутки в сторону. Линус со своим Linux оказался в нужное время в нужном месте. Миру очень нужна была открытая и бесплатная операционная система, свободная от любых возможных судебных посягательств. Поэтому на подмогу Линусу кинулось огромное количество энтузиастов, которые начали помогать ему развивать ядро Linux (точнее не только поэтому, но и потому, что это просто очень прикольно — взять и написать ядро операционной системы — “just for fun”!). А многие другие компоненты операционной системы к тому времени уже были готовы в проекте GNU. Поэтому правильно говорить, что Linux — это только ядро, а всё вместе называется GNU/Linux.

А что же тогда такое все эти Red Hat и Ubuntu? Это так называемые дистрибутивы Linux, то есть сборки ядра и множества других компонентов, которые хорошо работают вместе. Таких дистрибутивов сделано великое множество, но самые распространённые из них берут свои истоки либо из Red Hat, либо из Debian (в том числе и самый известный и популярный сейчас дистрибутив — Ubuntu). Но не будет уходить в дебри, заметка и так получается слишком длинной.

В игру вступают корпорации

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

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

И здесь проявилось ещё одно уникальное преимущество Open Source. Дело в том, что в информационных технологиях почему-то всё очень тяготеет к консолидации и даже монополизации. Миру не нужен второй Facebook (так как никто не хочет регистрироваться ещё в одной социальной сети), миру не нужен второй Google (когда уже есть первый), второй Office, второй Android и второй Linux. Да, у всех этих продуктов есть конкуренты, но “the winner takes it all”. Почему? Мне кажется, одной из причин является то, что вокруг любого продукта на рынке вырастает целая экосистема. Экосистема расширений, совместимых приложений, совместимых устройств, книг, обучающих материалов, опытных специалистов. И возникает кумулятивный эффект: чем больше популярность лидера, тем больше экосистема вокруг него. А чем больше экосистема — тем больше популярность лидера. Круг замкнулся.

Поэтому конкурируют не продукты сами по себе, а экосистемы вокруг них. И если сам продукт ещё можно сделать, и очень неплохой, то воспроизвести всю экосистему может быть очень тяжело. Пример того же Windows Phone очень наглядно это показал. К сожалению, так как продукт был очень хороший. И именно поэтому, кстати, в долгосрочной перспективе в конкуренции открытая платформа всегда выигрывает у закрытой платформы. Каким бы прекрасным ни был iPhone, в долгосрочной перспективе я бы не поставил на него против Android. Впрочем, у нишевых продуктов всегда будет свой рынок. Но лидер будет только один.

Так вот, в случае одного лидера, для всех игроков в экосистеме будет лучше, если этот лидер будет построен на модели Open Source. Так как в этом случае у лидера будут ограниченные возможности управлять этим рынком и всем остальным будет от этого спокойнее в этот продукт и созданную вокруг него экосистему инвестировать. Получается такой капиталистический колхоз. Именно поэтому в Linux инвестируют и развивают его совместными усилиями заклятые конкуренты. Так как всем от этого спокойнее.

Закон Галла

Вторая причина успеха Open Source — закон Галла (https://en.wikipedia.org/wiki/John_Gall_(author) ). Недавно увидел, как Костя Горский у себя в канале (http://t.me/desprod) упомянул его, полез изучать тему и поразился тому, насколько этот закон крут и насколько точно он описывает многие проблемы корпораций и государств. Закон звучит так:

— A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: a complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a simple system.

Перевод:

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

Это невероятно точно и мудро. Сколько раз я видел в своей жизни попытки спроектировать сложную систему и заставить её работать. И это практически никогда не получается сделать. Если только случайно. Но сделать что-то простое и работающее, а потом постепенно развить это до большой системы — можно.

Правда, это тоже не панацея, так как с законом Галла очень связан “Эффект второй версии системы” из великой книги Фредерика Брукса “Мифический человеко-месяц” (https://www.litres.ru/frederik-bruks/mificheskiy-cheloveko-mesyac-ili-kak-sozdautsya-programmnye-sistemy-2-e-izdanie-24499406/). Её нужно всем прочитать обязательно, она удивительно актуальна, хоть и написана очень давно. Так вот, эффект второй версии гласит:

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

Open Source является примером эволюционного развития сложных систем. Эволюционный путь развития далеко не идеален. Он полон тупиковых ветвей, неправильных решений, кучу всего приходится переделывать заново. Но это единственный способ сделать что-то сложное. Кстати, живые существа являются хорошим примером работающего Закона Галла. Почитайте книжку Ника Шубина “Внутренняя рыба” (https://www.litres.ru/nil-shubin/vnutrennyaya-ryba-istoriya-chelovecheskogo-tela-s-drevneyshih-vremen-do-nashih-dney-6222609/), и вы узнаете, что ухо человека эволюционно развилось из хрящей челюсти акулы, и ещё много всего интересного.

Окончание следует.