что такое опенсорс проект

Как новичку поучаствовать в опенсорс разработке?

В прошлый раз я публиковал пост о сложностях, с которыми сталкиваются разработчики при попытках поучаствовать в опенсорс проектах. Не хотелось оставлять эту проблему без описания возможного решения, поэтому в этот раз я перевел для вас статью известного опенсорс активиста Кента Доддса. В статье автор делится несколькими любопытными лайфхаками — надеюсь, кому-то из читателей они помогут извлечь больше пользы/получить больше удовольствия от участия в опенсорс проектах.
что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект

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

В наиболее общем виде ответ звучит так:

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

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

Какие открытые библиотеки, фреймворки или инструменты вы применяете чаще всего? Может, вы работаете с Grunt, Gulp, Webpack или Browserify, и вам кажется, что они могли бы быть улучшены или задокументированы точнее. Или, вероятно, вы применяете библиотеку React или модуль Angular – их тоже можно немного отполировать. Вы наверняка используете какое-либо опенсорс ПО — и его улучшение может вам в чем-то помочь.

Первые шаги

Как только вы определились с проектом, в котором будете участвовать, возникает второй вопрос: «А с какой стороны за него браться»? У многих проектов есть файл CONTRIBUTING. Заглянув в него, вы обнаружите инструкции по участию в проекте. Если отдельного файла нет, то соответствующие инструкции могут быть в README (обычно расположен на домашней странице проекта). А если нет ни того ни другого, то можно отправить пулл реквест на добавление хотя бы скелетного файла CONTRIBUTING.md, чтобы начать переговоры о добавлении полноценных инструкций.

Познакомьтесь с проектом ближе. Чтение документации это хорошо, но мне больше нравится узнавать проект по коду. Мой любимый способ – влезть в обращения к функциям через дебаггер. К примеру, что случиться, если обратиться angular.module?

Посмотрев код, вы поймёте многое о принципах работы библиотеки или фреймворка. То же самое вы можете делать и с локальными инструментами, используя ваш любимый отладчик узлов (или просто добавив console.logs). Не переживайте, если с ходу что-то останется непонятным. Не сдавайтесь — вам это под силу!

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

Если у вас есть собственные соображения об исправлении бага или фичи, которую вам хотелось бы претворить в жизнь, я настоятельно рекомендую сначала обсудить её с куратором(ами) на GitHub issue. Может они скажут, что она лежит вне сферы интересов проекта или уже находится в разработке, а может, подскажут, какого рода изменения они хотели бы видеть в программном коде. Вы потратите гораздо меньше времени, убедившись, что ваш пулл реквест будет принят, прежде чем браться за его оформление (точно также прежде чем сделать предложение своей жене, я сначала сделал все для того, чтобы ответ был “да”)

Ваш первый пулл реквест

Для первого пулл реквеста просто найдите любой проект с подходящим багом/фичей и попробуйте предложить свои доработки. Дайте кураторам знать, что вы новичок и не имеете ничего против их советов. Если они слишком заняты, то лучше поищите другой проект. Первая доработка опенсорс кода – это всегда непросто, поэтому вам может потребоваться помощь и ценные указания более опытных участников. На этом этапе сам привнесенный код не так важен, важно научиться работать в опенсорс проекте. Поэтому ищите проект или человека, у которых хватит времени и терпения, чтобы направить вас на путь истинный.

Также вам может быть интересна серия постов о том, как участвовать в опенсорс проектах на GitHub: https://blog.kentcdodds.com/introducing-how-to-contribute-to-open-source-be67917eb704.

Дополнительные материалы

Загляните на GitHub’s issues в поисках тикетов, отмеченных first-timers-only, good for beginners, good first bug (или good-first-bug), или help wanted. Есть и другие ресурсы для поиска простых путей участия в проектах:

Заключение

Мне очень нравится участвовать в опенсорс проектах, и я всячески советую испытать на себе этот опыт. Да, начать непросто, но после того как вы сделаете первый шаг все последующие будут даваться значительно легче. Конечно, не всегда всё идёт как по маслу. У опенсорс сообщества есть свои причуды. Не обращайте на них внимания, просто продолжайте работать. Всё обязательно получится! Удачи!

Источник

В чем смысл open source?

Хабр, привет! Я Юра, руководитель платформенной команды inDriver. В IT уже более 12 лет, на iOS пишу 7 лет. В этой статье обращусь к принципам и целям open source. Мы разберемся с его лицензиями, посмотрим на рынок и государственное участие в этом процессе. Добро пожаловать под кат!

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектСодержание

Минутка истории

Начну с определения того, что такое open source. Это открытое программное обеспечение, исходный код которого доступен для просмотра, изучения, изменения и позволяет убедиться в отсутствии уязвимостей.

Попробуем разобраться с корнями определения. Есть 2 термина: free software и open source. Термин open source был использован в качестве определения в 1998 году Эриком Реймондом и Брюсом Перенсом. Они утверждали, что термин free software (свободное программное обеспечение) в английском языке неоднозначен и смущает многих коммерческих предпринимателей.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектЭрик Реймонд и Брюс Перенс

Но откуда же пошли эти термины? В 1985 году появился Free Software Foundation. Он возник благодаря трудам разработчика Ричарда Столлмана, который присоединился к лаборатории искусственного интеллекта при Массачусетском технологическом институте. Столлман принимал участие в работе над свободным ПО (например, над Emacs — текстовым редактором для мини-компьютеров). Позднее редактор продали коммерческому дистрибьютору, и в 1984 году Столлман решил основать проект свободного ПО под названием GNU.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектРичард Столлман

Если не знали, GNU — во-первых, рекурсивный акроним — GNU’s Not UNIX, во-вторых, ОС типа UNIX с набором свободных программ. В рамках проекта энтузиасты придумали термин «свободное ПО» и сформулировали его критерии: использование, изучение, шеринг и улучшение.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект4 основных принципа

В 1985 году Столлман основал фонд Free Software Foundation для развития свободного ПО за счет пожертвований. Цель организации — способствовать свободе пользователей компьютеров во всем мире. Фонд взял на себя задачу защиты прав всех пользователей программного обеспечения.

Философия фонда строится на 4 основных свободах:

Свобода запускать программу в любых целях (свобода 0).

Свобода изучения работы программы и ее адаптация к вашим нуждам (свобода 1). Доступ к исходным текстам является необходимым условием.

Свобода распространять копии, так что вы можете помочь вашему товарищу (свобода 2).

Свобода улучшать программу и публиковать ваши улучшения, так что все общество выиграет от этого (свобода 3). Доступ к исходным текстам является необходимым условием.

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

В англоязычных текстах free означает не только «свободное», но и «бесплатное». Оно нередко употребляется к бесплатному программному обеспечению, которое распространяется без взимания платы, но недоступно для изменения. Получается, такое ПО не является свободным.

Чтобы устранить недоразумения, как раз и был придуман термин open source. Его сформулировала некоммерческая организация Open Source Initiative, которая была основана вышеупомянутыми Реймондом и Перенсом.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектЛоготип организации

В середине 1990-х годов в open source пришла первая крупная компания — Netscape. Ее браузер Netscape Navigator был одним из самых популярных в мире, но с появлением Internet Explorer стал вытесняться с рынка.

В 1998 году в Netscape решили открыть исходный код своего браузера. Год спустя компании не стало, но исходный код Navigator лег в основу одного из самых популярных современных браузеров — Mozilla Firefox. В том же 1998 году возникла Open Source Initiative, которая и начала заниматься популяризацией открытого исходного кода.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектИнтерфейс Netscape Navigator

Основатели Open Source Initiative придумали альтернативу free software и сделали больший упор на open source. То есть это не свободное ПО, а ПО с открытым исходным кодом. Разработчики написали определение, описали более подробно, что такое open source и на чем он зиждется.

По их мнению, открытый исходный код — не просто доступ к исходному коду, но и условия распространения программного обеспечения с открытым исходным кодом. Также Реймонд и Перенс задекларировали 3 важных критерия:

Лицензия не должна ограничивать любую сторону от продажи или раздачи программного обеспечения как компонента совокупного распространения.

Лицензия не требует лицензионных или иных сборов за такую продажу.

Программа должна включать исходный код и допускать распространение в исходном коде, а также в скомпилированном формате.

Эти постулаты были частично взяты из Debian Free Software Guidelines. Я не буду их раскрывать по части дискриминации и лицензий, но после этого начинается постепенное развитие open source от одной некоммерческой организации к другой.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектdino

Кстати, еще одно достоинство Open Source Initiative — репозиторий SourceForge для программ с открытым исходным кодом. Помню его с домобильной эпохи по скачиванию архиваторов на Windows, но сейчас он уже не столь популярен.

Лицензии

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

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

Пример такой лицензии — СС0 от Creative Commons

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

3. Copyleft. Это лицензии, которые требуют, чтобы распространение продукта подчинялось той же лицензии, что и оригинал. То есть нельзя делать проприетарным этот софт.

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

Рынок

Теперь о многообразии open source-проектов. Open source участвует практически во всех сферах, начиная от мобилок и заканчивая блокчейном и искусственным интеллектом.

Простой пример. Android, операционная система, 2,5 миллиарда активных устройств, огромнейший рынок, который построен на open source. В вебе это WordPress, на котором крутится более 40% сайтов в интернете. В бэкэнде, инфраструктуре — NGINX и Kubernetes, используются для оркестрации нагрузки, контейнеров, являются стандартами индустрии. В AI это TensorFlow — платформа, которая используется для машинного обучения. Для блокчейна это Ethereum — платформа, которая лежит в основе многих криптовалют.

Многие индивидуальные разработчики делают вклад в open source не менее значимый, чем корпорации. Благодаря Линусу Торвальдсу появился Linux. Микаэль Видениус создал, наверное, самую популярную у веб-разработчиков базу данных — MySQL, а Майкл Стоунбрейкер с командой из Беркли — PostgreSQL.

Если переходить к корпорациям, все крупные IT-игроки понимают важность open source-проектов. Как пример приведу исследования компании Red Hat. Она ежегодно опрашивает более 1 000 компаний и делает обзор рынка, куда IT двигается и как меняется. Согласно последнему исследованию, 90% опрошенных респондентов считают, что open source играет важную роль в технологиях корпораций. Наиболее распространенные пути использования open source в корпоративном секторе: IT-инфраструктура, разработка приложений, цифровая трансформация. За 2 года эти показатели увеличились на 11%.

Почему корпорации идут в open source? В первую очередь, участие в открытых проектах позволяет привлечь внимание не только к этому проекту, но и к другим своим программам. Вовлечение открытого сообщества в проекты компаний делает проще найм сотрудников и позволяет удерживать таланты внутри компании. Мотивационная часть также важна — поддержка проектов извне мотивирует разработчиков активнее их развивать.

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

Russia Open Source

Перейдем к российским реалиям. 1 октября 2021 года Министерство цифрового развития России и крупные IT-компании обсудили стратегию работы с открытым кодом до 2024 года.

Целями развития программного обеспечения с открытым кодом в России являются:

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

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

Также при создании стратегии идут отсылки к опыту других стран. В США, согласно политике, принятой в 2016 году, публикуют не менее 20% исходного кода правительственного ПО под открытыми лицензиями.

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

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

Hacktoberfest

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

Участники должны сделать 4 пул-реквеста на GitHub или GitLab. Предварительно, конечно же, зарегистрироваться на сайте.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектОдин из этапов регистрации

Из нюансов — вы можете контрибьютить в свои собственные репозитории, необязательно развивать сторонний проект. Неважно и то, на каком языке вы программируете. Можно выбрать ваш любимый продукт или open source-проект, посмотреть issues, которые можно закрыть, и даже поправить документацию. Вариантов много, выбор остается за вами.

Из личных примеров: когда устраивался в inDriver сделал open source-проект под «Роскачество». В свое время в маркете было приложение «Роскачество», где российская лаборатория тестировала и проверяла продукты, но визуальная реализация оставляла желать лучшего. Заодно попробовал новую архитектуру, новые технологии, которые появлялись в iOS (например, Swift UI с однонаправленной архитектурой). Это стало долгосрочным полезным вкладом.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проектЛоготип UDF

Наконец, приглашаю всех поучаствовать в развитии open source-проекта inDriver. Мы опубликовали iOS-архитектуру c Redux-парадигмой. Конечно, это не первая реализация однонаправленной архитектуры, но у нее есть ряд преимуществ: адаптация под UI Kit, модуляризируемая, с апробацией в крупном проекте. Подробнее про UDF можно прочитать в статьях моего коллеги Антона Гончарова на Хабре (часть 1 и часть 2).

У меня все. Спасибо, что читали. Задавайте ваши вопросы в комментариях.

Источник

Как поучаствовать в Open Source проекте? 8 ответов новичку

Авторизуйтесь

Как поучаствовать в Open Source проекте? 8 ответов новичку

Как поучаствовать в разработке Open Source проектов, какова их роль и что они могут дать вам как разработчику?

Начнём с того, что гордое название «Open Source» носят проекты с открытым исходным кодом, которые чаще всего разрабатываются и поддерживаются силами сообщества. Это значит, что устройство и принцип работы таких проектов прозрачны, а в разработке может принять участие любой желающий.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект

Участие в Open Source проектах — это возможность усовершенствовать свои навыки, создавая при этом что-то новое или улучшая уже существующее. При этом не имеет значения, изучаете вы основы PHP или являетесь продвинутым C++ разработчиком — открытых проектов уйма, на любой вкус и цвет. Начинающие программисты могут не только пополнить багаж знаний, научиться работать с чужим кодом и получать фидбек от опытных программистов, но также пополнить портфолио первой серьёзной работой.

Разбираемся, как поучаствовать в Open Source проекте и не ударить в грязь лицом.

Чем может быть полезен Open Source?

Тут всё зависит от ваших целей и задач. Кто-то начинает работать с Open Source, чтобы глубже изучить определённый технологический стек, кто-то — потому что сам использует тот или иной инструмент в работе и считает, что может его улучшить. Кто-то, как мы в ABBYY в случае с нашей библиотекой NeoML, сначала создаёт инструмент для решения внутренних задач, а потом понимает, что от его выхода в Open Source выиграет и компания, и сообщество. Есть разные пути — решите, какой из них больше подходит именно вам.

Работа в Open Source может дать много, если подойти к ней с умом. Навык чтения чужого кода здорово выпрямляет руки, работа с кураторами подтянет английский. А чувство, что вы приложили руку к крупному проекту (которых в Open Source достаточно), может неплохо смотивировать вас в карьерном плане.

Как найти Open Source проект?

Для участия в Open Source проекте самое главное — определиться со сферой собственных интересов. Это крайне важно, так как вам предстоит выбрать проект, максимально подходящий под ваши интересы и компетенции. Делается это просто. Крупнейший сайт с проектами — это Github. Там вы делаете поисковый запрос по ключевым словам, соответствующим интересам, например «javascript gamification framework». В ответ получаете список проектов, в каждом из которых вы можете поучаствовать.

Очевидный ответ, который напрашивается, — зайти на GitHub. Уже на месте стоит определиться с тематикой, хотя бы с точностью до крупной области. Затем погуглить, что есть на сайте на этот счёт.

Новичку я бы посоветовал обратить внимание на GitHub Trending, где постят небольшие проекты.

Начать просто: найдите проект, который вам по зубам, и предложите свои доработки. Вообще, нередко кураторы идут навстречу новичкам и охотно разъясняют, что упрощает процесс работы.

На что обращать внимание при выборе проекта?

Обратите внимание на ПО, которым пользуетесь сами: во-первых, вы уже знакомы с проектом как пользователь и хорошо понимаете, что стоит улучшить или изменить; во-вторых, вы будете вносить вклад в то, что важно для вас.

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

Каковы особенности Open Source разработки?

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

Каких Open Source проектов стоит избегать?

У проектов с открытым кодом есть и свои неприятные особенности:

Что стоит сделать перед тем, как принять участие в Open Source проекте?

Основной инструмент для участия в Open Source проектах — это, конечно, система контроля версий Git. Поэтому в первую очередь стоит ознакомиться с ним.

Есть несколько важных условий для того, чтобы начинающий специалист справился с Open Source — впрочем, как и вообще с любым проектом. Требования к хардскиллам очевидны — нужно уверенно владеть выбранным стеком технологий. Софтскиллы, в свою очередь, помогают успешнее погрузиться в новый проект. Ключевые личные качества на этом этапе — дисциплина, коммуникации, готовность к командной работе, обучению и самообучению. Наконец, самому разработчику при выборе проекта стоит внимательно оценивать порог входа — в Open Source бывают такие задачи, с которыми и сеньор не сразу справится.

А как быть с внесением изменений в проект?

Pull request — запрос на изменение кода в репозитории. Перед началом работы обязательно создайте свою ветку, в которую вы будете вносить изменения. Если речь идёт о master-ветке, любые изменения стоит вносить только после согласования с куратором проекта.

Отличной практикой будет предварительный показ вашей работы кому-нибудь, ведь вы могли что-то упустить или просто свернуть не туда. В этом случае вас могут попросить изменить что-либо в вашем PR.

Как начать свой Open Source проект?

Это ещё один ответ на вопрос, как поучаствовать в Open Source проекте: создайте его сами. Но для начала определитесь с целью, взвесьте все «за» и «против», убедитесь, что готовы взять на себя ответственность за труд других людей и уверенно двигаться к релизу.

Если начинать свой Open Source проект, то необходимо привлечь к нему внимание через англоязычные порталы. Самый простой вариант — публиковать ссылки на портале Reddit в нужных подразделах с тематикой «программирование». Это обеспечивает больший отклик, чем публикация на любом русскоязычном сайте. Естественно, стоит рассказать о проекте и на таких ресурсах, как Хабр, DTF и в тематических группах ВК.

Источник

Зачем тебе Open Source?

Привет! Меня зовут Дмитрий, я тренер по продуктам компании Arenadata и один из преподавателей в онлайн-школе для разработчиков в Open Source COMMoN, в которую сейчас идёт набор. Пока мы готовились к этому буткемпу (а я веду трек по Arenadata DB), я задумался: а что сегодня движет молодыми, которые выбирают для себя работу с открытым ПО? Я отлично помню, что двигало нами 20 лет назад… И отлично вижу, что сегодня всё не так. Тогда что? Попробовал разобраться — и вот что получилось (под катом).

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект
Фото Александра Копилова, SpBLUG, 2019г.

Здесь будет немного истории Open Source (в том числе из личного опыта), мой взгляд на то, чем может быть полезно свободное ПО разработчикам сегодня, и немного спойлеров по моему треку для тех, кто решит присоединиться к школе.

Основы и немного истории

Открытость или закрытость ПО определяется лицензией. По факту она является договором правообладателя с пользователем и регулирует права последнего. Причём автор и правообладатель обычно не одно и то же лицо. Бизнес, построенный на продаже софта, нацелен на то, чтобы отдать пользователю только одно право — использовать софт (да и то с ограничениями).

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

Вообще таких лицензий было много: BSD, MIT и т. д. Однако наиболее ярким явлением стала лицензия Free Software (не путать с Open Source), созданная сотрудником МТИ Ричардом Мэтью Cтоллманом (RMS) с группой единомышленников. Благодаря их работе появилось такое понятие, как GPL, или GNU General Public License — copyleft-лицензия (общедоступная) на свободное программное обеспечение. Её условием стало рекурсивное наследование лицензии на все проекты, которые создаются на основе или с использованием кода под свободной лицензией.

В Россию Open Source пришёл почти одновременно с проприетарным софтом. В СССР было собственное ПО, но в основном для больших или мини-ЭВМ (ЕС, СМ ЭВМ и т. д.), а также ПО для западных вычислительных систем производства IBM, DEC, HP и т. д. Модель распространения тоже была другой: либо просто ВЦ «делились» друг с другом, либо головные КБ / центральные НИИ передавали ПО в филиалы или партнёрские организации.

Незадолго до крушения Союза появились DOS, первые версии Windows, OS/2, офисное ПО и т. д. Почти в то же время появился и свободный софт: сначала — варианты BSD, позже — Linux и т. д. Тогда уже существовали Open Source-лицензии, например MIT/BSD. Однако наиболее активное развитие получило Free (libre) Software GNU/Linux под наиболее непримиримой свободной лицензией GNU/GPL. Эта лицензия стратифицировала модели разработки и распространения ПО, что, как я считаю, и позволило выжить свободному софту.

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

2005 год. В городе Архыз RnDLUG (Ростов-на-Дону) и NCLUG (Северо-Кавказская группа) при поддержке IBM провели трёхдневный форум, в котором участвовало около 50 специалистов из разных городов России.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект
OpenSourceForum All LUG 2005 г. Фото из личного архива (я тут тоже есть) 🙂

2010 год. В Ростове-на-Дону в рамках государственной программы «Школьный линукс» RnDLUG помогали школам в установке свободного ПО (развернули школьный дистрибутив AltLinux в 25 школах).

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект
Школьный проект RnDLUG 2010 г. Фото из личного архива

2019 год. В Санкт-Петербурге SpBLUG на одну из очередных конференций пригласили Ричарда Мэттью Столлмана.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект
Ричард Мэттью Столлман в SpBLUG. Фото Александра Копилова, SpBLUG, 2019г.

В это время сторонники Free Software практически не зарабатывали на нём. Скорее, это делалось ради удовольствия от процесса созидания, J4F или в академической среде как часть учебной или научной деятельности. Однако позже FLOSS-лицензии (Free-Libre Open Source Software) стали мягче. Появилась возможность использовать свободное ПО в проприетарных продуктах без обязательного открытия кода LGPL и т. д. Кроме того, появились лицензии OSI (Open Source Initiative). Они и перекинули мостик между двумя мирами: открытого и проприетарного ПО.

К тому времени уже было накоплено довольно большое количество ПО с открытым кодом. Крупные вендоры начали вкладывать в развитие Open Source, появились фонды для финансирования отдельных, наиболее важных направлений развития такого софта (FSF, The Document Foundation и другие).

Ну и, наконец, большие корпорации стали напрямую участвовать в разработке свободного ПО. За последние 12 лет в десятку ведущих коммитеров в код ядра Linux вошли такие компании, как Intel, RedHat, IBM, Suse, Linaro, Google и Samsung. Как следствие, на основе проектов с открытым кодом стали массово появляться коммерческие проекты. В качестве забавного примера приведу историю с закрытием бага №1 в багтрекере Ubuntu — «У Microsoft сегодня самая большая доля на рынке». В 2013 г. сам же Марк Шаттлворт закрыл его в связи тем, что с приходом Android (кстати, созданным Google на основе ядра Linux) доля Windows стала ниже 50%.

Постепенно появилось много самых разных и вполне конкурентоспособных продуктов с открытым кодом: СУБД, операционные системы, офисные пакеты, графические и 3D-редакторы, научное и аналитическое ПО и многое, многое другое. И это ПО не хуже, а иногда и лучше, чем проприетарное, справляется с разными бизнес-задачами.

Интерес к Open Source продолжает расти. В последние несколько лет на мировом рынке произошла череда крупных слияний и поглощений (Microsoft&GitHub, IBM&RedHat, Cloudera&Hortonworks и др.), а международные венчурные фонды прямо заговорили о том, что сегодня самое лучшее время для создания бизнеса на базе открытого ПО.

В России использование свободного ПО тоже становится одной из главных возможностей роста (и для государства, и для бизнеса, и для разработчика). Примеров этому масса, начиная от нашумевшей истории веб-сервера Nginx и целой группы российских ОС (AltLinux, Rosa, AstraLinux и т. д.).

Зачем разработчику Open Source сегодня

А теперь давайте поговорим о том, чем сфера свободного ПО может быть интересна современному разработчику.

Ну, во-первых, это весело. Здесь я имею в виду, что мотивация пионеров свободного софта действует на молодое поколение разработчиков и сегодня. Правда, в меньшей степени, чем раньше. Почему? Хороший вопрос. Может, сменились приоритеты, может, всё потому, что сегодня коммерческое ПО переплелось со свободным, так что уже не всегда легко понять, где заканчивается одно и начинается другое… Не знаю.

Однако интерес к свободному ПО не исчез. На мой взгляд, он сместился от пассионарной потребности к осознанию того, что свободная лицензия не противоречит интересам как разработчика, так и бизнеса. И да — free software is not free beer.

Итак, чем вам может быть полезен Open Source сегодня?

Молодой разработчик что-то самостоятельно написал. Самостоятельно — это значит не под коммерческий заказ, а просто для себя. Такое обычно случается, когда свободного времени ещё много, например в студенческую пору. Что дальше делать с продуктом? Дать ему шанс выжить, а именно — вывести продукт как открытый проект. Если он станет интересен, открытая лицензия и бесплатный вариант поставки дадут возможность проекту пробиться в массы, приобрести сторонников и последователей. Некоторые успешные проекты начинались именно так.

Кейс № 2. Снова newbie, но с карьерными амбициями

Молодой разработчик пытается продвинуться в профессии. В серьёзные организации не берут: нет опыта, нет портфолио. В помощь идёт свободный софт. Участвуете в разработке сообществом конкретного проекта (там, скорее всего, вас возьмут на простенькие задачи). И спустя год работы есть что показать на собеседовании.

Кейс №3. Сотрудники, или как упростить жизнь себе и другим

Вы внедряете свободное ПО в контуре своего предприятия. В какой-то момент понимаете, что функционал вас немного не устраивает или находите небольшой баг. Можете просто ничего не делать и тихо мучиться, проклиная кривой открытый софт. Можете написать багрепорт или фичреквест и ждать, пока его исправят, тихо мучаясь и проклиная кривой открытый софт. А можете открыть исходники и поправить то, что вам мешает. В этом главное преимущество свободного ПО. Именно об этом говорится в притче «RMS и принтер Xerox». Если вы не просто исправите/дополните код для себя, но свяжетесь с разработчиками и сможете добавить свой код в исходный код проекта свободного ПО, это позволит пользоваться этой доработкой не только вам (в том числе и в новых версиях), но и всему community. И все счастливы, а вам +100 000 в карму и к з/п, весьма вероятно, тоже.

Кейс №4. Бизнес на открытом ПО

Свободное ПО не значит бесплатное ПО. Это значит, что если вы имеете большой объём экспертизы в области интеграции/внедрения/сопровождения какого-либо проекта Free Software, то вы можете оказывать услуги по перечисленным позициям, то есть помогать клиентам получать дополнительное value и зарабатывать на этих услугах. А если в какой-то момент вы создадите достаточно большое количество кода в процессе багфиксинга/фичреквестинга, можно форкнуть проект как собственный. Разумеется, не нарушая авторского права и рамок свободной лицензии. Тогда вы станете производителем российского софта 🙂

Кейс №5. Создатель проекта с открытым кодом

Вы давно знаете, что такое свободное ПО и пилите свой проект. Возможно, вы возлагаете на него надежды в плане бизнеса, а может быть, вы работаете над ним из любви к искусству. Если проект полезен сообществу, то, скорее всего, он будет востребован и у вас будет команда, а также круг пользователей продукта. Примеров масса: Олег Бартунов (PostgresPro), Игорь Сысоев (Nginx), Алексей Миловидов (ClickHouse) и очень много других популярных проектов.

Путь джедая: с чего начать и какие нужны скилы

Чтобы понять, какими инструментами и навыками должен владеть Open Source-разработчик, давайте посмотрим на структуру и элементы типового проекта открытого ПО. Центром всего является комьюнити со своей кодовой базой. У него обычно есть:

Для участия в процессе разработки от вас потребуются следующие скилы:

С чего начать, если по каким-то причинам вы решили принять участие в создании открытого ПО? Самое простое — связаться с разработчиками проекта и предложить свою помощь. Если конкретный проект ещё не выбрали или есть много других открытых вопросов, можно пойти поучиться. Например, в наш буткемп COMMoN.

Трек Arenadata

И, наконец, немного о том, чему можно будет научиться со мной на треке.

На своих лекциях я расскажу, как сейчас устроена современная разработка в Open Source в целом. Проиллюстрирую это на примере наших продуктов, построенных на базе нескольких международных и российских Open Source-проектов. Рассмотрим основные вопросы эксплуатации Open Source в процессе разработки, принципы создания и распространения проектов. Расскажу о современных подходах к построению DWH (Data Warehouse, хранилище данных); это важно, поскольку Open Source-технологии в них сегодня играют значимую роль.

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

Вторая группа лекций будет посвящена целевым проектам с открытым исходным кодом (СУБД Greenplum/ADB и семейства поискового ПО OpenSearch). Поговорим о том, что такое DWH и единая платформа данных в современном представлении, как разворачивать ADB и OpenSearch, посмотрим примеры использования этих продуктов, утилиты, проблематику и важные плагины.

Чему мы не будем учиться, так это программированию. Предполагается, что на входе у вас достаточно развиты навыки программирования на одном (желательно Java) или более ЯП.

Главная цель нашей работы — выпускной проект. Участники трека самостоятельно решат конкретную актуальную для проекта задачу, которую потом можно будет показать в своём портфолио. На нашем треке задания, соответственно, будут направлены на решение актуальных проблем в Greenplum и OpenSearch.

Для его выполнения будет необходимо изучить предметную область, хорошо проанализировать задачу и собственно разработать необходимый функционал. Вопросы по ходу обучения и разработки можно будет задать мне в групповом чате в Telegram. Ссылка придёт после прохождения входного тестирования (да, оно есть и довольно сложное!). Во время разбора теории, как и для практики, будем использовать наш виртуальный кластер Arenadata DB.

Ну и главное. Проекты буду оценивать с позиции практической значимости для общего дела. Лучшие команды получат разные призы от нас и возможность стажировки в Arenadata.

И раз уж речь зашла про стажировку, расскажу ещё немного о нас.

Arenadata — разработчик корпоративной платформы больших данных на базе технологий с открытым исходным кодом Arenadata EDP (Enterprise Data Platform).

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект

Без ложной скромности, компания — один из крупнейших коммитеров Open Source-проектов в России. Мы регулярно вносим вклад в проекты Apache Software Foundation, участвуем в развитии Yandex ClickHouse и Tarantool. По количеству коммитов Greenplum мы второй в мире контрибьютор. Из наиболее значимых фич, привнесённых именно нашей командой, могу отметить алгоритм эффективного сжатия данных без дополнительной нагрузки на CPU Zstandard (ZSTD) и функцию pushdown в PXF (Platform Extension Framework), позволяющую многократно ускорить выполнение запроса на фильтрацию данных (они стали доступны community в Greenplum 6).

Вот, собственно, и всё.

Надеюсь, мой опыт вам пригодится, и буду рад видеть вас в нашей онлайн-школе.

что такое опенсорс проект. Смотреть фото что такое опенсорс проект. Смотреть картинку что такое опенсорс проект. Картинка про что такое опенсорс проект. Фото что такое опенсорс проект
Фото Александра Копилова, SpBLUG, 2019г.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *