Открытый исходный код (от англ. Open Source Software, OSS) — это термин, обозначающий программное обеспечение, предназначенное для публичного доступа, где любой желающий может просматривать, изменять и использовать его код по своему усмотрению.
Программное обеспечение с открытым исходным кодом разрабатывается децентрализованно, совместными силами множества ничем не связанных разработчиков. Программное обеспечение с открытым исходным кодом обычно более гибкое в функционале, а его поддержка долговечнее. К тому же сама разработка, обходится гораздо дешевле, чем у проприетарных аналогов. Всё потому, что такое программное обеспечение создаётся сообществами независимых разработчиков, а не одним автором или компанией.
Движение за открытый исходный код предлагает модель децентрализованного производства программного обеспечения для более эффективного решения возникающих в процессе разработке проблем. Конечный продукт, по итогу, получается функциональнее и надёжнее.
В 50-х и 60-х годах исследователи, разрабатывающие ранние интернет-технологии и телекоммуникационные протоколы, полагались на открытую исследовательскую среду. Сеть агентств перспективных исследовательских проектов (Advanced Research Projects Agency Network, ARPANET), которая позже стала основой современного Интернета, поощряла открытый процесс обратной связи и свежий взгляд на разрабатываемый продукт. Группы разработчиков совместно использовали и дорабатывали код друг друга. Позже различные форумы помогли облегчить коммуникацию и разработать единые стандарты коллективной разработки. В основу Интернета как технологии были заложены такие ценности, как совместное сотрудничество, экспертная оценка, коммуникация и открытость.
Модель разработки открытого исходного кода существует благодаря сообществу разработчиков. Продукты на основе открытого исходного года выпускаются с соответствующей открытой лицензией, поэтому любой разработчик может просматривать или изменять их исходный код.
Многие проекты с открытым исходным кодом размещены на GitHub, где можно получить доступ к репозиториям или принять участие в разработке. Linux®, Ansible и Kubernetes являются примерами популярных продуктов с открытым исходным кодом.
Иногда к процессу разработки программного обеспечения с открытым исходным кодом подключаются крупные IT-компании. Они берут за основу уже написанный код, исправляют баги, уязвимости и добавляют новые функции. Все эти улучшения затем можно внести обратно в первоначальный проект, на благо сообщества разработчиков.
Linux — это бесплатная операционная система с открытым исходным кодом, выпущенная по стандартной общественной лицензии (General Public License, GPL). А ещё это крупнейший в мире проект программного обеспечения на основе открытого исходного кода.
Операционная система Linux была в своё время создана как бесплатная альтернатива операционной системы MINIX, основанной на принципах и дизайне Unix. Создатели так хотели подчеркнуть заложенные при разработке принципы свободного программного обеспечения, что даже первоначально назвали своё детище «GNU» (от англ. «GNU’s Not UNIX» — «GNU — не Unix»), хотя система всё равно была построена на основе Unix.
Поскольку Linux до сих пор выпускается по открытой лицензии, любой желающий может запускать, изучать, изменять и распространять исходный код. Даже продавать копии своего измененного кода, если это делается в соответствии с лицензией.
Под программным обеспечение с открытым исходным кодом долгое время понималось «свободное программное обеспечение». Движение за свободное программное обеспечение было основано Ричардом Столменом в 1983 году как раз в рамках проекта GNU. Это движение организовалось вокруг идеи пользовательских свобод: свободы видеть исходный код, изменять и распространять его по своему усмотрению.
Свободное программное обеспечение появилось в ответ на проприетарное или закрытое программное обеспечение. Софт с закрытым исходный кодом недоступен для просмотра, изменения или использования в разработке других продуктов. Только владельцы закрытого исходного кода имеют законное право доступа к нему. А рядовые пользователи, купившие лицензионную копию, платят лишь за использование программы по назначению.
Само название «свободное программное обеспечение» вызвало много путаницы, ведь оно не означало бесплатность продукта, а только свободное использование на усмотрение пользователя. Кристин Петерсон попыталась решить эту проблему в 1998 году, когда предложила термин «открытый исходный код». Он лучше фокусировался на сути и не сбивал с толку тех, кто плохо знаком с концепцией движения за свободное программное обеспечение.
Петерсон предложила термин «открытый исходный код» взамен использовавшегося ранее «свободное программное обеспечение» на одном из совещаний рабочей группы, которая занималась распространением практики свободного программного обеспечения на более широкий рынок. Цель этой группы была в том, чтобы мир узнал, что программное обеспечение лучше, когда оно общедоступно и его можно свободно модифицировать.
Эрик Рэймонд был одним из членов вышеупомянутой группы. В 1997 году он опубликовал некоторые из ключевых положений, касающихся открытого кода, в своем чрезвычайно влиятельном эссе «Собор и базар». В 1998 году, отчасти в ответ на это эссе, корпорация Netscape Communications открыла исходный код своего проекта Mozilla, выпустив его в виде бесплатного программного обеспечения. Позже этот код стал основой для Mozilla Firefox и Thunderbird.
Поддержка Netscape Communications программного обеспечения с открытым исходным кодом заставила сообщество задуматься о том, как подчеркнуть практические аспекты этого движения для бизнеса. Разница между «открытым исходным кодом» и «свободным программным обеспечением» позже была закреплена документально. «Открытый исходный код» служит термином, защищающим методологические, производственные и бизнес-аспекты свободного программного обеспечения. «Свободное программное обеспечение» остаётся ярлыком для обсуждений, в которых подчеркиваются философские аспекты тех же вопросов, поскольку они связаны с концепцией свобод пользователя.
В 1998 году была основана организация Open Source Initiative, формализовавшая термин «открытый исходный код» и установившая его общеизвестное определение. Хотя с конца 90-х до начала 2000-х к движению за открытый исходный код относились с осторожностью, оно неуклонно шло к тому, чтобы стать отраслевым стандартом, коим и является сегодня.
Есть множество причин, по которым люди предпочитают открытый исходный код проприетарному программному обеспечению, но наиболее распространенными из них являются:
Экспертная оценка. Поскольку открытый исходный код находится в свободном доступе, а сообщество разработчиков очень активно — код активно проверяется и постоянно улучшается разными программистами.
Прозрачность. Если необходимо точно знать обо всех изменениях, которые произошли в коде, и на каком этапе разработки находится проект — открытый исходный код как нельзя лучше решит этот вопрос. Ведь проверять и отслеживать изменения может кто угодно, в реальном времени.
Надежность. Запатентованный код зависит от одного автора или компании, контролирующей и развивающей его. Открытый исходный код живёт в полной независимости от своих первоначальных авторов. Ведь он постоянно обновляется активными сообществами разработчиков. Множество заинтересованных программистов регулярно тестируют и обновляют код, чтобы сделать его лучше.
Гибкость. Открытый исходный код можно использовать для решения огромного спектра разных задач. При этом, нет никакой зависимости от навыков специалистов, которые запустили проект. Ведь на помощь, так или иначе, придут другие разработчики и дадут свою экспертную оценку при внедрении новых решений.
Более низкая стоимость. Разработка программного обеспечения с открытым исходным кодом обычно держится на чистом энтузиазме. А за готовые продукты, даже если и просят какую-то обязательную плату, взамен предлагают поддержку и помощь в настройке.
Нет привязки к поставщику. Свобода для пользователя означает, что в любой момент можно взять открытый исходный код и применить его, как угодно, на своё усмотрение.
Открытое сотрудничество. Наличие активных сообществ разработчиков означает, что можно легко и быстро найти помощь, ресурсы и различные видения решения задачи, выходящие за рамки интересов определённой группы разработчиков или компании.
Спойлер: мы раскрываем их любимые трюки