ПО с открытым исходным кодом на самом деле бесплатно или лишь кажется таковым?
Согласно Википедии, «Программное обеспечение с открытым исходным кодом (Open source Software, OSS) — это компьютерное программное обеспечение, выпускаемое под лицензией, в которой правообладатель предоставляет пользователям права на использование, изучение, изменение и распространение программного обеспечения и его исходного кода кому угодно и для каких угодно целей». Проще говоря, у вас есть доступ к коду и свобода изменять, распространять и использовать его по своему усмотрению.
Исторически рынок программного обеспечения развивался за счет так называемого проприетарного ПО с закрытым исходным кодом и контролировался преимущественно крупными организациями, выпускавшими новые версии своих продуктов без предоставления доступа к исходникам.
Организация Open Source Initiative была основана в феврале 1998 года для популяризации принципов открытого исходного кода. Будучи создателем Open Source Definition, она заложила основы экосистемы открытого исходного кода. Open source начал набирать обороты в начале 2000-х годов, когда компьютеры стали широко использоваться для решения бизнес-задач, а Интернет стал новой мировой сенсацией.
Проект GitHub сыграл в open source важнейшую роль, став де-факто площадкой для размещения проектов с открытым исходным кодом. По состоянию на июнь 2022 года на нем размещено более 28 миллионов публичных репозиториев, что показывает масштабы open source и его признание сообществом разработчиков. Такие крупные организации, как Microsoft, Google, Netflix и Uber, выпустили немало проектов с открытым исходным кодом на благо всего сообщества, демонстрируя поддержку и любовь к open source.
Этот притягательный ценник $0.00
Кто же не любит бесплатный сыр! Организация, которая ежегодно платит тысячи долларов за коммерческую лицензию, в один прекрасный день находит эквивалентное open source решение и задается вопросом: зачем платить, если можно сделать все бесплатно? Нет ничего плохого в том, чтобы оценить все варианты, прежде чем принять обоснованное решение. Будучи пользователем программного обеспечения, вы должны тщательно проанализировать ситуацию, прежде чем отдать предпочтение тому или иному продукту. Однако то, что программа бесплатна, не делает ее предпочтительным выбором. Прежде чем принять решение, рассчитайте совокупную стоимость владения (Total Cost of Ownership, TCO).
Самый серьезный риск open source заключается в том, что все воспринимают его как нечто бесплатное. Я не против использования open source! Наоборот, я его горячо поддерживаю. В своей профессиональной жизни я пользовался множеством open source решений, которые облегчили мою жизнь и помогли мне работать гораздо быстрее. По сей день я захожу на GitHub, чтобы изучить трендовые проекты и понять, куда движется индустрия программного обеспечения. Эта статья призвана помочь изменить мышление профессионалов в области программного обеспечения, чтобы они полностью осознали последствия внедрения open source и могли определить, когда использование open source софта оправдано.
Проблемы, которые могут возникнуть с открытым исходным кодом
Разработка и внедрение программного обеспечения сопряжены с рисками и ограничениями. При попытке внедрить open source организации сталкиваются с рядом проблем. Ниже приведены некоторые из них.
Безопасность
Из-за самой природы открытого кода такие продукты особенно восприимчивы к угрозам безопасности. Да, лицензионное программное обеспечение может быть в равной степени подвержено этой проблеме, тем не менее, открытость кода в некотором смысле играет на руку хакерам. Сообщество разработчиков программного обеспечения успокаивает себя тем, что open source более безопасен благодаря своей прозрачности и многие специалисты пристально следят за тем, чтобы вовремя обнаруживать и устранять проблемы. В реальности у одних проектов слишком много «зрителей», а у других их вообще нет.
Недавно я узнал об одном интересном факте, связанном с использованием организацией open source пакета для оркестровки рабочих нагрузок. Он очень популярен и, вероятно, именно его выбирают многие компании. Прежде чем запустить пакет в эксплуатацию, одна организация проверила его на наличие уязвимостей. К своему удивлению, специалисты по сопровождению обнаружили множество слабых мест, которые до сих пор не закрыты разработчиками. Самое смешное, что теперь организация рассматривает возможность купить услугу managed service на этом же ПО. Готовы ли вы отправлять пакет с уязвимостями в продакшн или вы все-таки потратите силы и время на их устранение?
Амортизация и обновления
Разработка коммерческого программного обеспечения зачастую носит итеративный характер: это значит, что время от времени разработчики выпускают новую версию своих продуктов. То же самое справедливо и для open source: участники сообщества по мере готовности выкладывают в общий доступ свежие релизы пакетов/фреймворков/других видов программного обеспечения. Пользователям предлагается перейти на последнюю поддерживаемую версию, а это в свою очередь может потребовать изменений в коде, миграции или чего-то еще, что требует вмешательства внутренних специалистов.
Даже если старая версия будет стабильно функционировать, вы рискуете потерять возможность получения поддержки или исправлений безопасности от авторов. Если вы не готовы взять на себя риск, то обновление вашей инсталляции до последней поддерживаемой версии несколько раз в год потребует значительных усилий. В мире SaaS вендор самостоятельно обновляет программное обеспечение, причем этот процесс проходит незаметно для конечного пользователя.
Отсутствие технической поддержки вендора
Внедрить новый компонент программного обеспечения — это не просто взять и развернуть его в продуктивной среде. Несомненно, вы столкнетесь с кучей проблем, если решите развернуть программное обеспечение с открытым исходным кодом на проде, не заручившись помощью разработчика. Поддержка вендора может оказаться полезной, если речь идет об устранении ошибок безопасности, проблем с производительностью или просто о том, чтобы убедиться, что вы правильно используете некую функциональность.
Организации ежегодно платят тысячи долларов за поддержку, чтобы всегда иметь под рукой кого-то, кто ответит на возникшие вопросы и предоставит best practices по эксплуатации продукта. Никакая, даже самая подробная и продвинутая документация не поможет вам справиться с непредвиденной даже автором ошибкой. Да, поддержка сообщества у многих проектов поистине фантастически развита, но, увы, к ней не прилагается SLA.
Запуск критически важных приложений в прод без поддержки — это заведомо плохая идея. В связи с этим многие open source проекты начали предоставлять услуги в формате managed service, чтобы предоставлять крупным организациям услуги, необходимые для эффективного ведения бизнеса.
Кривая обучения
Немалая часть open source проектов поставляется с превосходной и содержательной документацией. Тем не менее, будет лучше, если вы найдете кого-то, кто потратит время на изучение и поиск best practices по использованию продукта. Возможно, вам повезет, и вы найдете человека, имеющего опыт работы с этим пакетом, и он сможет поделиться своими знаниями.
Поставщики коммерческого программного обеспечения предоставляют бесплатное обучение, консультантов и проводят десятки мероприятий, на которых ваши специалисты смогут обучиться новым приемам работы с этим ПО. Кроме того, компании будут информировать вас обо всех новых возможностях, а если вы являетесь крупным клиентом, то сможете повлиять на развитие продукта.
Заключение
Выбор в пользу open source или коммерческого ПО зависит от ваших целей, навыков команды, организационной структуры, требований к безопасности. Повторюсь, open source — это не «кое-что задаром». Совокупная стоимость владения им может оказаться выше, чем стоимость покупки сходной услуги у крупного вендора. При выборе open source софта я смотрю на него через призму характера проекта, независимо от того, фреймворк это, инструмент для решения какой-то узкой задачи или крупный пакет, а затем анализирую его соответствующим образом.
По моему опыту, существует немало фреймворков с открытым исходным кодом, и вы без проблем сможете построить собственный продукт на их основе. Начните с изучения лицензии и оцените пригодность решения в текущей экосистеме (состоящей из стека навыков и технологий). Хорошие продукты, как правило, более популярны и развиваются под крылом крупных технологических компаний.
Полнофункциональные продукты с открытым исходным кодом требуют гораздо более тщательного изучения с точки зрения функциональности и поддержки. Это программное обеспечение решает бизнес- или техническую проблему, и ваша задача — грамотно вписать его в свою инфраструктуру. Многие разработчики такого ПО сегодня предоставляют его в формате SaaS. Это выгодно как разработчикам, так и пользователям. Но окончательный выбор, замешанный на ваших бизнес-задачах, навыках и даже личных предпочтениях, всегда остается за вами. Каждый проект, каждая задача индивидуальны, поэтому панацеи быть не может. Не зарьтесь на «бесплатное» ПО с открытым исходным кодом, но и не тешьте себя иллюзиями того, что коммерческая лицензия сама решит за вас все проблемы, раз вы заплатили деньги.
«В мире по-настоящему открытого исходного кода вы имеете право управлять своей судьбой». — Линус Торвальдс