Open-source: что это такое, почему важно для всех и как в нем поучаствовать
Существует сообщество разработчиков, которые делают софт не для выгоды, а чтобы подарить его интернету для общего прогресса.
Такие программы называют открытыми или open-source. Их исходный код можно изучать или менять. Они существуют в противовес закрытым или проприетарным программам. Разработчики закрытого софта не допускают никого к коду, не позволяют его копировать и исследовать, почти всегда делают программы платными. Сторонники open-source же придерживаются других принципов.
Ежедневно миллионы людей объединяют усилия, улучшают софт с открытым кодом и придумывают что-то новое. Многие современные программы, которыми мы пользуемся каждый день, построены на принципах open-source. Например, Google Chrome, Opera и «Яндекс-браузер» основаны на открытом браузере Chromium. А операционная система Android — на открытом ядре Linux.
Расскажу, какие бывают программы и как устроен мир open-source. Его частью может стать любой желающий.
Из материала вы узнаете
Как появилось движение за открытые программы
Когда компьютерные технологии только зарождались, создавать программы могли очень немногие специалисты. Разработка стоила огромных денег, так что об идее делать код открытым и делиться им никто особо не задумывался. Ситуация начала меняться в 1980-х, когда компьютеры получили широкое распространение и вырос спрос на программы для них.
Предвестником open-source стало так называемое свободное ПО. Его идеологом выступил разработчик Ричард Столлман. На фоне взрывного роста технологических компаний вроде Microsoft он захотел сделать так много бесплатного программного обеспечения, чтобы в будущем вообще обойтись без коммерческих продуктов. В 1984 году Столлман приступил к созданию GNU — свободной операционной системы с текстовым редактором, играми и другим софтом. Она была противоположностью Unix, за которую просили деньги.
Затем Столлман с единомышленниками основал некоммерческий фонд Free Software Foundation. Главной задачей организации стала поддержка free-software-решений, того самого свободного ПО. На пожертвования участники нанимали программистов и создавали все больше бесплатных программ.
Столлман хотел возродить дух сотрудничества между разработчиками, утерянный из-за ограничений коммерческой разработки. Когда человек получал программу на основах free-software, вместе с ней он обретал четыре ключевые свободы, которые помогали разработчикам объединиться:
- 💻 Свободное использование: запускать программу можно для любых целей, в том числе коммерческих.
- 📚 Свободное изучение: исследовать программу можно безо всяких ограничений.
- 💿 Свободное распространение: делиться программой можно с кем угодно.
- 💡 Свободное улучшение: доработать программу на пользу сообществу можно любыми способами.
Со временем понятие свободного ПО вносило все больше неясности, особенно из-за английского слова free. Возникало противоречие: автор свободной программы мог продавать ее, а покупатель — свободно распространять, но уже после оплаты. То есть свободный софт — не обязательно бесплатный, несмотря на название.
Из-за этого в 1998 году сообщество разработчиков свободных программ приняло термин open-source, или открытое ПО. Разница между терминами — в деталях.
Свободное ПО дает ряд прав распоряжаться продуктом и подразумевает наличие одной из свободных лицензий. Если у вас есть такая программа, то вы можете, к примеру, передать ее кому-то дальше.
Открытое ПО означает в первую очередь открытые исходники. То есть, у программы можно изучить исходный код. А вот то, как ее можно использовать и кому передавать, определяется от случая к случаю.
Если суммировать коротко: не все открытые программы — свободные. Открытый код означает только то, что исходники доступны всем.
Первым open-source-продуктом стал Netscape Communicator, главный браузер 90-х. Позже его сместил Internet Explorer. С тех пор вокруг идеи открытого ПО объединялось все больше людей, количество таких программ росло. А вот идея свободного ПО так и не стала массовой.
От 70 до 90% современных программ состоит из решений с открытым исходным кодом. Число людей, принимающих участие в open-source-технологиях, перешагнуло рубеж в 100 миллионов человек.
Как устроено сообщество open-source сегодня
Как технически происходит работа над open-source-проектами. Участников open-source-движения называют контрибьюторами. Не все они пишут код. Приветствуется любой посильный вклад. Одни переводят или создают документацию, другие предлагают дизайн, ищут уязвимости, проверяют на безопасность сервисы.
Контрибьюторы собираются вокруг репозиториев — облачных хранилищ с файлами проекта. Обычно это происходит на платформе GitHub, но есть и альтернативы, например GitLab или Launchpad. Вот что происходит дальше:
- Каждый участник копирует репозиторий себе — это еще называют клонированием или форком. Без форка не получится добавить в проект свои изменения: вносить правки в основной репозиторий может только команда, отвечающая за проект, иначе случился бы хаос.
- Контрибьюторы добавляют новшества в свои локальные копии репозиториев. Это называют коммитом — от английского commit, что значит «фиксировать» или «совершать». Все эти изменения отображаются только у контрибьюторов и нигде больше. Получаются две ветки файлов: оригинальная и копия с изменениями.
- Участники создают запрос на слияние своей копии и оригинального репозитория. Это называют пулл-реквестом.
- Команда, управляющая репозиторием, рассматривает пулл-реквесты. Если решение нравится, его добавляют в проект.
Почему люди участвуют в open-source-проектах. Такая работа не оплачивается, это всегда личная инициатива. Как подсчитали исследователи, если бы ядро Linux создавалось на коммерческой основе, стоимость его разработки к 2010 году превысила бы миллиард долларов. Причем большая часть этих денег ушла бы на оплату труда.
Может показаться, что над открытыми проектами работают энтузиасты, для которых поощрение не важно, но это не так. Часто разработчики и даже компании получают вознаграждение, просто не финансовое. Это можно назвать не столько благотворительностью, сколько техноальтруизмом, выгодным всем сторонам.
- 👨🎓 Можно изучать чужие решения. Например, для выполнения задач на работе или просто для обучения.
- 🤝 Труд над открытым проектом вместе с более квалифицированными коллегами улучшает профессиональные навыки, открывает новые деловые связи.
- 👀 Разработчики могут публиковать свои решения, чтобы найти помощь в их дальнейшем развитии или для портфолио.
- 🙋 Потенциальные работодатели могут оценить уровень подготовки соискателя по его открытым проектам.
- 🧠 Опытные разработчики могут заняться творческими задачами или пробовать новые технологии. Все это доступно с open-source, нужно лишь найти интересующий проект и влиться в его доработку.
Компаниям тоже выгодно открывать код своих продуктов, и вот почему:
- 🙋 Можно находить талантливых сотрудников среди тех, кто интересуется используемыми технологиями или активно проявляет себя.
- 🤵 Вклад в open-source высоко ценится на ИТ-рынке. Это шанс повысить статус и улучшить репутацию компании.
- 🏃 Благодаря открытому коду компаниям удается снизить затраты на разработку. Участники бесплатно тестируют или привносят решения в готовый продукт.
Треть из первых 40 инженеров, нанятых компанией GitLab, до этого программировала для нее бесплатно в рамках open-source. В таком случае команда, управляющая работой над открытым кодом, хорошо знает контрибьюторов. А они знают продукт, над которым уже давно работают.
Ради развития технологий и повышения статуса Google открыла более 2,5 тысячи хранилищ-репозиториев. А некоторые компании платят своим сотрудникам, чтобы те участвовали в открытых проектах и продвигали бренд работодателя. Российские компании тоже вкладываются в open-source. В их числе «Яндекс», «Авито», Сбер и другие техногиганты.
Что получают от open-source обычные пользователи. Как минимум — экономят деньги. Они даром получают программы, которые работают не хуже платных.
Также открытые решения дают пользователям больше контроля над конфиденциальностью и безопасностью. В платных программах владельцы нередко собирают данные для рекламы, в то время как в open-source это сразу бы обнаружили. В таких проектах безопасность могут проверить все желающие, ведь исходники открыты. Поэтому есть мнение, что открытые решения надежнее платных. Хотя бывают и исключения. Например, громкая история про уязвимость Log4Shell в популярной Java-библиотеке Apache Log4j. Тогда под угрозой оказались миллионы устройств.
На доверии к открытости строится работа некоторых компаний, занимающихся хранением личных данных. Как, например, в случае менеджера паролей KeePassXC. Любой достаточно понимающий в программировании человек может открыть репозиторий с кодом и проверить его на безопасность или просто изучить рецензии других разработчиков. С проприетарным софтом это сделать не получится, ведь исходники таких программ закрыты. Поэтому остается лишь доверять авторитету создателей продукта.
Какие проблемы есть у open-source
Открытость исходников в open-source-проектах иногда играет на руку злоумышленникам. Они могут изучить устройство программы, чтобы обнаружить уязвимые места и попытаться взломать систему. Поэтому между ними и людьми, которые тестируют код из желания помочь, ведется негласное противостояние. Причем, несмотря на открытость, пробелы в безопасности не всегда удается обнаружить даже в больших проектах.
Один из громких примеров, когда известный открытый продукт оказался небезопасным, — уязвимость Heartbleed 2014 года. Она позволяла злоумышленникам получать конфиденциальные данные из памяти серверов. Из-за этого около 17% защищенных веб-сайтов интернета оказались под угрозой. Проблема возникла банально: один из создателей открытого проекта OpenSSL, в котором обнаружили Heartbleed, не заметил уязвимый код другого разработчика — и добавил его в репозиторий.
У контрибьюторов могут возникнуть сложности из-за отсутствия документации. Без нее сложно разобраться, какая именно помощь нужна в том или ином проекте, как ее оказать, где и что находится. Иногда из-за этого даже опытным разработчикам приходится отказываться от участия. Это распространенная проблема, так что помощь в доработке документации всегда особенно ценится в открытых проектах.
Проект может застопориться и отправиться в архив. К этому обычно приводит отсутствие хорошей команды. Очень важно постоянно следить за репозиторием и принимать вклады других участников.
Нехватка финансирования — главная беда open-source-проектов. Хотя рядовые участники вкладываются в работу бесплатно, обслуживание почти любого проекта стоит немалых денег. Сюда входит оплата серверов, доменов, разных сервисов для совместной работы и другой инфраструктуры. Обычно средства идут с пожертвований или от компаний, которые помогают с разработкой продукта. На одной лишь инициативе продержаться могут очень немногие.
Место open-source в современных технологиях
По данным исследования за 2022 год, почти все ИТ-компании так или иначе используют открытый код. На нем основаны многие инструменты разработки и отдельные сервисы. Поэтому, если бы культуры open-source не существовало, темпы развития информационных технологий сильно бы снизились, а многие из современных решений до сих пор бы не изобрели.
Вот несколько из самых популярных открытых решений, без которых сложно представить себе современный мир:
- Linux. Самый масштабный open-source-проект. Системы с ним используют на серверах, суперкомпьютерах, мобильных устройствах, обычных ПК и не только.
- WordPress. Около 40% всех сайтов интернета используют эту систему управления контентом.
- Apache и Nginx. Два самых распространенных веб-сервера, на которых работает половина интернета.
- Chromium. Веб-браузер, на основе которого работают Google Chrome, Opera, «Яндекс-браузер», Microsoft Edge.
- MySQL. Одна из самых используемых баз данных в мире.
Без open-source специалисты потеряли бы возможность бесплатно находить и применять накопленный опыт в сфере информационных технологий. Так было в эпоху становления открытого кода в начале 1980-х, когда для каждой проблемы приходилось искать платное решение. Это сказывалось на сроках разработки и стоимости программ. Без открытого кода пострадали бы все: и пользователи, и разработчики, и компании.
Сегодня молодые специалисты могут увидеть «настоящий» код еще до устройства на работу. При этом качество открытых решений гораздо выше, чем если бы компании разрабатывали их своими силами в условиях недостатка времени и ресурсов. Под каждую задачу можно найти чей-то код, бесплатно его использовать или доработать под себя. Мир open-source похож на огромную базу знаний, к которой можно обратиться в любой момент.
Вокруг открытых решений собираются и люди, желающие стать частью большого благотворительного проекта. Так случилось с платформой ChRIS — она призвана наладить коммуникацию между врачами и исследователями в лабораториях. Все началось с того, что сотрудники Бостонской детской больницы захотели улучшить выявляемость опухолей. Но из-за плохой связи между разными специалистами медицины сделать это не получалось.
Для решения проблемы требовалась ИТ-инфраструктура, разработка которой стоила бы очень много денег и времени. Ситуацию спасла культура open-source. На основе кода Массачусетского экологического центра высокопроизводительных вычислений при поддержке университетов, компаний и активистов удалось запустить платформу для быстрого обмена информацией между врачами. Идея открытого кода не только объединила людей, но и помогла в медицине.
Но не все open-source-решения полностью бесплатны, хоть так и может показаться. Разработчики еще в начале 2000-х нашли способ монетизировать свой труд, не отказываясь от идеи партнерства с сообществом. Таким путем пошли авторы Elastic, одной из самых популярных систем поиска, а также создатели GitLab. В их случае можно бесплатно пользоваться базовыми версиями программ, изучать код и работать с ним. А вот дополнительные функции доступны только после оплаты.
Для пользователей такой подход может быть выгоднее полностью бесплатных решений. Он дает гарантию, что проект не зачахнет из-за недостатка финансирования или отсутствия мотивации у владельцев. При этом те, кто не хочет платить, могут продолжать пользоваться бесплатным вариантом — и он будет поддерживаться не только стабильной командой, но и сообществом.
Как поучаствовать в open-source-проекте
Главная площадка для работы с open-source-проектами — это GitHub. Число репозиториев с кодом там давно превысило 100 миллионов. Платформа похожа на социальную сеть, но не для общения, а для совместной работы и хостинга решений. После регистрации будет доступен личный аккаунт со статистикой вкладов и достижениями. В нем можно рассказать про себя, отметить любимые репозитории. На GitHub удобно работать, не покидая сайт. Для этого есть все необходимые инструменты: файловый менеджер, встроенный редактор кода, система отслеживания изменений.
Участвовать в open-source могут не только эксперты в программировании. Владельцы открытых проектов будут благодарны любому вкладу. Вот несколько примеров того, чем можно заняться:
- 🧍 Организовывать семинары, встречи, конференции между участниками. Искать идеи для выступлений.
- 🎨 Создавать дизайн: от макетов сайтов до иллюстраций к статьям. Если интересует первое, можно создать в паре с разработчиком тему WordPress, Иллюстрации же лучше делать в специальных контентных репозиториях.
- ✍️ Писать или редактировать документацию, наполнять учебные пособия к образовательным проектам, переводить тексты. Около 28% вкладов в open-source относятся именно к этой категории. Например, можно присоединиться к написанию документации для веб-разработчиков в doka.guide или помочь freeCodeCamp с бесплатными курсами.
- 🗯️ Помогать с менеджментом. Например, можно искать способы, как лучше организовать взаимодействие в команде. Или как вести дискуссии и обсуждение, чтобы они были эффективными.
- 🗣 Выступать в качестве спикера от проекта. К этому относятся ответы на вопросы новых участников, модерация обсуждений и других каналов общения. Это удобно делать во вкладке Discussions проекта на GitHub. Но сперва стоит узнать, не против ли команда.
- 🤖 Помогать в написании кода, проверять чужие решения. При должном опыте можно взять роль наставника, искать ошибки и предлагать идеи по улучшению проекта. Или вообще писать собственный код, помогая воплощать идеи команды в реальность.
Выбор своего первого open-source-проекта на GitHub может показаться сложной задачей. Ниже — пара советов, на что обратить внимание в первую очередь.
Вспомните, какими из открытых решений вы пользуетесь. Так вы не только поможете команде проекта, но и увидите, как ваши предложения воплощаются в жизнь. Еще можно искать среди областей, которые вам в целом близки — например, что-нибудь из медицины или искусственного интеллекта, — а потом выбирать среди понравившихся репозиториев.
У «живого» проекта есть два важных признака, про которые стоит помнить. Это число звездочек — аналога лайков — и время последнего обновления. Если звездочек совсем мало, меньше трех-четырех сотен, то проект еще не состоялся или он очень локальный, а может, и вовсе «умер».
Если же проект давно не обновляли, то и до ваших предложений явно доберутся нескоро. Лучше выбирать что-то, что получило апдейт меньше месяца назад. Новичкам также не стоит вкладываться в масштабные проекты. Процессы там идут медленно, а задачи очень сложные.
На первый раз лучше выбрать проект с небольшой командой, которая регулярно принимает изменения других участников. Так ваш первый пулл-реквест пройдет быстро и комфортно для всех сторон. После этого вы появитесь в списке участников проекта, а в личном профиле закрасится зеленый квадратик первой статистики. Теперь вы полноценный участник мира open-source!
Мы постим кружочки, красивые карточки и новости о технологиях и поп-культуре в нашем телеграм-канале. Подписывайтесь, там классно: @t_technocult