Найти тему
N + 1

Софт для всех

Наверняка вам доводилось слышать выражение «опенсорс». Может быть, вы даже понимаете, что под этим термином скрывается «программное обеспечение с открытым исходным кодом». Но какие возможности такая открытость дает разработчикам и почему может быть выгодна обыкновенным пользователям? Рассказываем о разработке и значимости опенсорс-проектов.

Этим материалом мы запускаем проект «Исходный код», посвященный опенсорсу: его истории, философии, ключевым принципам, самым известным и важным разработкам, а также законодательству и лицензированию. Проект подготовлен при поддержке высокопроизводительного и масштабируемого российского веб-сервера Angie.

Начиная с интернет-браузеров и заканчивая платформами общедоступных облачных вычислений, открытый исходный код лежит в основе софта, с помощью которого мы общаемся, работаем, ведем бизнес и предоставляем услуги. Но даже не задумываемся, кто и как его разработал. ПО может иметь закрытый исходный код или открытый. К первому случаю обычно относятся коммерческие программы, ко второму — общедоступные и свободно распространяемые. Чаще всего мы сталкиваемся с закрытым ПО, но и опенсорс-проекты не такое редкое явление, как может показаться. Они лежат в основе большинства программ и сильно повлияли на мир IT. Например, браузеры «Яндекс» и Chrome созданы на основе опенсорс-проекта Chromium. Некоммерческий браузер Mozilla Firefox тоже имеет открытый исходный код. В его основу лег браузер Netscape Navigator, который дорабатывался силами участников проекта Mozilla Suite, принадлежавшего Netscape Communications. Сообщество разработчиков Mozilla по-прежнему активно вносит в него изменения и исправляет ошибки.

За последние 20 лет движение опенсорс сильно выросло благодаря появлению общедоступных

Облачных хранилищ с файлами.

, таких как Github. Открытый код способствует инновациям, улучшению безопасности программ и развитию сотрудничества между разработчиками. Например, Ubuntu — самая популярная операционная система с открытым кодом — основана на ядре Linux. ОС Linux стала основой для множества других ОС. На ядре Linux создана мобильная ОС Android, поэтому каждый разработчик может легко получить доступ к ее программному коду и создавать приложения, которые расширяют функции устройств на базе этой операционной системы.

Любой сайт в интернете работает через веб-сервер — приложение, выступающее в роли посредника между «железным» сервером, на котором хранятся файлы, и браузером. Примерно 70 процентов веб-серверов в мире построены на опенсорс-проектах Apache HTTP Server и Ngnix. Разработчики со всего мира много лет вносили правки в Apache и Ngnix, повышая их надежность и производительность. Благодаря этому они стали одними из наиболее популярных и играют ключевую роль в разработке веб-приложений. При этом 43 процента всех сайтов в мире используют систему управления контентом другого опенсорсного проекта — WordPress.

Если бы не опенсорс-проекты, возможно, мы бы не увидели текущих достижений в области робототехники и искусственного интеллекта. Например, проект с открытым кодом ROS (Robot Operating System) предоставляет разработчикам исходный код и библиотеки для создания роботов. Это позволяет ускорить разработку и сотрудничество между изобретателями, способствует обмену знаниями и передаче опыта.

  Steve Jurvetson / Flickr / CC BY 2.0
Steve Jurvetson / Flickr / CC BY 2.0

Разработка с принципами

Исходный код опенсорс-проектов находится в открытом доступе в

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

виде, поэтому доступен всем, кто хочет дополнять или корректировать его.

Участники движения опенсорс считают, что пользователи должны обладать равными возможностями: например, если человек не может заплатить за лицензию Microsoft Word, должна существовать бесплатная альтернатива, не уступающая ему по функционалу. В идеальном мире, как его представляют сторонники опенсорс-философии, ПО бесплатно и доступно для всех, а его разработчики зарабатывают на сервисном обслуживании или иным косвенным образом.

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

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

Иван Панченко, Сооснователь и заместитель генерального директора компании Postgres Professional

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

Важным шагом в истории развития опенсорса стало появление ОС UNIX в 1973 году. Она заменяла стандартное дорогое ПО для компьютеров IBM и поэтому завоевала популярность. UNIX тоже была платной, но зато имела открытый исходный код, поэтому на ее основе можно было создать собственное ПО. Например, так поступили в Калифорнийском университете в Беркли, где появилась ОС BSD (Berkeley Software Distribution).

Одним из вдохновителей движения опенсорс считается разработчик Ричард Столлман. В 1984 году он основал проект GNU (GNU’s Not UNIX), целью которого было создать некоммерческую ОС. Тогда же Столлман провозгласил критерии «свободного ПО», отличающие его от проприетарного, и вместе с единомышленниками основал фонд Free Software Foundation, который начал поддерживать такое ПО.

  Leonid Dmitriev (leozub) / Wikimedia Commons / CC BY 3.0
Leonid Dmitriev (leozub) / Wikimedia Commons / CC BY 3.0

Вторым отцом-основателем опенсорса считается Линус Торвальдс, который в 1991 году выпустил ядро ОС, разработанное отдельно от GNU, но по его лицензии. Свое детище он назвал «Линукс» (Linux). После этого цель GNU-проекта была достигнута, и участники переключились на другие задачи.

  Krd / Wikimedia Commons / CC BY-SA 3.0
Krd / Wikimedia Commons / CC BY-SA 3.0

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

В 1998 году сообщество разработчиков приняло термин «опенсорс», предложенный Кристин Петерсон, соосновательницей аналитического центра Foresight Institute. В том же году Брюс Перенс опубликовал документ, который определяет, какое ПО можно маркировать сертификационным знаком опенсорса. Он содержал принципы, которые помогли разработчикам определиться, что считать свободным ПО, а что — открытым.

10 принципов опенсорса ↓

  1. Свободное распространение: программное обеспечение можно распространять бесплатно или продавать.
  2. Доступ к исходному коду: исходный код должен прилагаться к копии программы или находиться в свободном доступе.
  3. Свобода модификации: лицензия должна разрешать модифицировать программу и распространять модифицированные версии.
  4. Целостность исходного кода автора: лицензии могут потребовать внесения изменений, которые будут распространяться только в виде патчей.
  5. Никакой дискриминации отдельных лиц или групп: все пользователи софта наделяются равными правами.
  6. Никакой дискриминации бизнеса: корпоративные пользователи не могут быть лишены права использовать программу.
  7. Распространение прав: пользователи наделяются правами, изложенными в лицензии, автоматически при получении ПО.
  8. Лицензия не должна быть специфичной для конкретного продукта: программа не может быть лицензирована только как часть более крупного дистрибутива.
  9. Лицензия не должна ограничивать другое программное обеспечение: нельзя требовать, чтобы ПО, распространяемое вместе с опенсорсным, также имело открытый исходный код.
  10. Лицензия должна быть технологически нейтральной: нельзя требовать от пользователя принять условия щелчком мыши или иным образом, специфичным для носителя программного обеспечения.

Закрытость против открытости

В отличие от опенсорс-проектов, программное обеспечение с закрытым исходным кодом зашифровано и скомпилировано. К нему прилагается соглашение о том, что его нельзя декомпилировать, изменять, перекомпилировать или распространять без специального разрешения. Программа считается интеллектуальной собственностью разработчика, и компании прикладывают немало усилий для защиты результатов своей работы. Например, Windows или MacOS относятся к коммерческим ОС. В рамках такой модели разработки производитель имеет конкурентное преимущество и больше способов заработать на ПО, поскольку его код уникален.

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

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

Так как исходный код открытого ПО доступен для просмотра и изменения, пользователи могут настраивать его в соответствии со своими потребностями и требованиями. Разработка опенсорс-проектов может занимать больше времени, однако благодаря этому код тщательно проверяется на ошибки и уязвимости большим сообществом разработчиков и пользователей. В конечном итоге открытое ПО обладает повышенным уровнем безопасности и надежности, благодаря чему оно и становится таким популярным. Например, сервис веб-серверов Nginx начал самостоятельно создавать в 2004 году разработчик Игорь Сысоев.

Следующие 20 лет проект дорабатывался силами опенсорс-сообщества. Когда Nginx вышел, он моментально подавил конкурентов благодаря нескольким ключевым улучшениям: асинхронной архитектуре, улучшенной обработке файлов, балансировке нагрузки, кэшированию FastCGI, поддержке uwsgi, SCGI и другим. Кроме того, в нем была решена так называемая проблема C10K — задача настройки сервера для работы при высоких нагрузках и обслуживания более 10 тысяч соединений одновременно. Все это сделало его более надежным и безопасным по сравнению с другими веб-серверами, и он по-прежнему занимает высокие рейтинги по этим показателям.

«ПО с открытым кодом — это способ скачкообразно увеличить количество вариантов и функций оригинального софта под конкретные задачи. Когда мы продаем ПО с закрытым кодом, то возможности по кастомизации нашего продукта в клиенте ограничены пропускной способностью вендора. Когда ПО уходит открытым, то количество людей, которые могут его доработать, вырастает на много порядков. Это означает, что облегчается запуск стартапов, растет „внутривидовое разнообразие“, но также и растет фрагментированность (не каждый специалист помнит, сколько сейчас ответвлений MySQL). Это приводит к тому, что снижается положительный эффект при миграции сотрудников между компаниями: человек переходит не на тот же WordPress, а на немного другой или даже очень сильно другой.»

Максим Лапшин, Основатель и технический директор Flussonic

Общий вклад

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

От англ. fork — вилка, развилка или ответвление.

. Вносить изменения в основной репозиторий может только команда, которая сделала форки.

Контрибьюторы редактируют код в своих локальных копиях репозиториев. На языке разработчиков это называется

От англ. commit — фиксировать, совершать.

. Изменения отображаются только у контрибьюторов и нигде больше. Таким образом, в проекте появляются две ветки файлов: оригинальная и ее копия с изменениями. Далее участники создают пулл-реквест — запрос на слияние своей копии и оригинального репозитория. Если команде, управляющей репозиторием, решение нравится, то его добавляют в проект.

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

«Высокое качество кода достигается за счет того, что обычно над опенсорс-проектами трудятся по канонам лучших практик в разработке. Здесь меньше „срезают углы“, меньше вставляют „костыли“ (временные обходные решения на скорую руку), стараются делать код читабельным и сопровождают комментариями. Это можно сравнить с тем, как мы относимся к повседневной одежде: ту, в которой выходим в публичное место, мы гладим чаще. Так и здесь, разработчики стараются повысить планку, потому что код у всех на виду.»

Заур Абасмирзоев, Генеральный директор компании-разработчика российского веб-сервера Angie

При этом разработчики пишут функции, которые их действительно интересуют, что порой становится почвой для конфликта. Чаще всего решения принимаются волей основных владельцев-авторов проекта. Сторонний разработчик предлагает изменения и ожидает обратной связи. Если разработчик хочет привнести заметный вклад в проект, то после отказа он может сделать форк проекта и параллельно развивать собственную версию. Так случается довольно часто. На выходе оба проекта могут перенимать наработки друг друга. Например, у Nginx есть несколько форков: Tengine, OpenResty, Angie и так далее.

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

Однако это не означает, что над открытыми проектами трудятся энтузиасты, для которых поощрение не важно. Разработчики и даже компании могут получать вознаграждение, но не финансовое.

«Большие компании опенсорсом решают прежде всего кадровые вопросы. Опенсорс имеет серьезные бонусы в маркетинге: его готовы промоутить бесплатно, особенно по сарафанному радио. Если компания запускает проект в опенсорс, она получает упоминания о себе в IT-среде, источник квалифицированных кадров, повышение конкурентоспособности. Когда весь рынок работает на закрытом софте, развитие может идти более плавно. Опенсорс же может помочь „убить“ всех потенциальных конкурентов еще на дальних подступах.

При этом для людей мотивы лезть в опенсорс зачастую совершенно другие. Кто-то искренне верит в то, что люди должны не тратить свое время на то, что уже кем-то сделано, а собирать наши „небоскребы знаний“ из готовых кирпичиков. Кому-то просто нужно социальное признание, и это доступный им способ: мало где можно без денег получить такой объем внимания только своими мозгами. Иные испытывают социальную ответственность в виде желания поделиться с миром своими навыками в ответ на уже полученный оттуда опенсорс»

Максим Лапшин, Основатель и технический директор Flussonic

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

Преимущества и недостатки открытого ПО

Открытость и доступность исходного кода дает уникальные возможности и преимущества для пользователей и разработчиков. К ним можно отнести:

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

Вместе с тем у опенсорса существуют ограничения и недостатки, которые следует учитывать. Среди них можно выделить:

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

Будущее опенсорса

Сегодня опенсорс становится двигателем инноваций в сфере IT. По данным отчета OSI и OpenLogic Perforce за 2023 год, 80 процентов компаний расширили использование опенсорс-продуктов. Проекты с открытым кодом часто представляют собой фундаментальные компоненты многих современных технологий и приложений. Однако финансовая поддержка остается проблемой для распространения открытого ПО.

Одним из решений может стать гибридный подход, в рамках которого часть открытого проекта с проверенным и отработанным кодом продается в коммерческой форме и обеспечивается технической поддержкой. Это позволяет привлечь финансирование для дальнейшего развития.

Такой тренд характерен и для России. Гибридный подход снижает себестоимость конечного продукта, а также делает его практически неуязвимым перед санкциями. По прогнозам, в связи с уходом с российского рынка вендоров ПО и необходимости их замены к 2026 году более 90 процентов российских компаний будут использовать ПО с открытым кодом.

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

Реклама: ООО «Веб-Сервер», ИНН 9704151517, Kra23vpc4