Софт для всех

Что такое опенсорс и почему он важен для IT-индустрии

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

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

Поправка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Общий вклад

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

Каждый контрибьютор проекта редактирует его код в локальной копии репозитория, добавляя и изменяя интересную лично ему функциональность. Изменения отображаются только у самих контрибьюторов и нигде больше. Часто контрибьютор работает над несколькими большими изменениями сразу, и в его копии проекта появляются разные ветки файлов: оригинальные и с изменениями. Зафиксировав изменения в составе той или иной ветки (иначе говоря, закоммитивОт англ. commit — фиксировать, совершать.), контрибьютор публикует ветку и предлагает добавить ее в оригинальный репозиторий. Если команде, управляющей репозиторием, нравится предложенное решение, то его добавляют в основной проект.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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