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

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

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

Главной концепцией Open Source было «свободное ПО» (как в свободе слова), а не «бесплатное ПО» (как бесплатное пиво).

Начало неплохое, но в смысл проблемы глубоко не вникает: свобода слова влечет за собой определенные последствия, но люди о них как-то не задумываются, когда слышат этот термин. Аргумент вроде «все ошибки можно элементарно исправить, было бы только достаточно внимательных глаз» («Given enough eyeballs, all bugs are trivial» — фраза, приписываемая Эрику Рэймонду) подразумевает, что эти глаза принадлежат людям наблюдательным, сообразительным и готовым участвовать в работе.

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

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

По мере того, как открытый код стал приобретать растущее коммерческое значение, все больше людей заговорили о нем как о ничейном, как в случае с щенком: ведь любое подобранное вами ПО, которое вы решите встроить в свой бизнес или процесс разработки, сопряжено с определенными обязанностями. Наиболее значимое открытое ПО, от которого зависит целая отрасль, уже в течение десятилетий отчаянно недополучает средства. Инициатива по спасению критических проектов от Linux Foundation под названием Critical Infrastructure — это одна из попыток исправить положение, потому что само по себе оно не исправится.

Если вы пользовались FoundationDB, потому что думали, что эта БД открытая, как и остальные базы NoSQL (по причине того, что вы ни разу не читали лицензию), вас наверняка бы резко отрезвил тот факт, что корпорация Apple купила эту компанию и убрала весь код с GitHub. Выясняется, открытой была только часть кода, помогающая использовать проприетарный код самой базы.

Если сравнение Open Source с ничейным щенком прозвучало слишком трогательно, то давайте я перефразирую и скажу «ничейный, как матрас». То есть, валяется себе матрас и любой может взять его себе домой, но станете ли вы это делать, если неизвестно, откуда он взялся?

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

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

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

Обычно в таких случаях говорят о том, как важно образовать вокруг проекта сообщество (неважно — формальное или неформальное) и сообща разделять эту нагрузку, но не будем забывать, насколько тяжело создавать и взращивать такие сообщества. Достаточно посмотреть на правила участия в проекте Node.js, чтобы понять, как хлопотно администрировать большое сообщество.

Если вы работаете над образованием Open Source-сообщества, советую почитать книгу (бесплатную) Нади Эгбал «Дороги и мосты: незримая работа, стоящая за нашей цифровой инфраструктурой».

Глядя на недавние дискуссии на тему того, что труд, направленный на поддержку открытого ПО, нигде не ценится, я добавляю к своему списку аналогий еще одну: свободный, как «вечер после работы».

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

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