Что такое опенсорс проект
Open Source — это что за термин? Объясняем основы для чайников
Open Source — это такой вид разработки программ, при котором исходный код остается доступным для всех. Абсолютно каждый может сделать с исходным кодом все, что пожелает:
внешне изменять и модифицировать программу;
добавлять или убирать какой-либо функционал;
создать свою версию программного обеспечения и зарабатывать на ее продаже.
Примерно так же происходит и в программировании.
Open Source — что это?
Опенсорс — это в первую очередь свобода распространения, деньги стоят на втором или на третьем плане, поэтому Open Source-продукт в основном бесплатный, но также может быть и платным.
Open Source — это особый вид лицензирования продукта, где главным пунктом является свободное распространение, но обязательное сохранение информации об авторстве программы.
История возникновения Open Source
Вот и получается, что первые Open Source-продукты зародились вместе с первым и компьютерами и были бесплатными. Потом продукты оставались «опенсорс», но за них уже бралась оплата. А первое официальное лицензирование коммерческих программных продуктов началось только в 1974-м году. У истоков проприетарной модели программного обеспечения стояла компания Microsoft, а чуть позже подключилась и Apple Computer Inc.
Open Source: наше время
Итак, с начала 80-х проприетарные программы перехватили доминирование на р ы нке ПО у Open Source-программ. При этом многих разработчиков это совсем не устраивало. Одним из таких Open Source-инициаторов был разработчик Ричард Столлм а н, который в 1984-м году вместе со своей командой создал первую по-настоящему открытую операционную систему GNU, которая была очень похожа на коммерческий продукт UNIX и составляла ему реальную альтернативу, так как могла устанавливаться на компьютеры, где устанавливался UNIX.
Однако, чтобы каким-либо образом защитить свое «свободное» ПО, тоже нужно был о предпринять какие-то шаги. Для этого команда Ричарда «поработала» над юридической составляющей своего продукта, например:
был придуман термин «свободное программное обеспечение»;
данному термину было предложено точное определение, что с таким ПО можно делать;
был опубликован целый манифест по ОС GNU.
При этом т а же команда:
к 1989-му году добилась создания первой версии лицензии GPL, которая работает до сих пор.
Преимущества и недостатки Open Source
В сети можно найти много разных описаний преимуществ и недостатков Open Source-проектов. Но оценивать опенсорс-индустрию в целом по меньшей мере неправильно. Правильней будет сравнивать конкретные продукты, например : ОС с ОС, офис с офисом, редактор с редактором, но точно не Microsoft и Linux.
Реакция на уязвимости. Многие считают, что в Open Source быстрее устраняют уязвимости, чем в проприетарном ПО. В некоторых Open Source-проектах так и есть — любая проблема мгновенно «латается», но в то же время есть опенсорс-проекты, которые месяцами не устраняют проблемы. Так же и в коммерческом ПО: одни исправляют все очень быстро, а другие месяцами ничего не делают. Так что это преимущество также нужно рассматривать на конкретной программе.
Заключение
пользоваться проприетарным MS Office или опенсорсным LibreOffice;
использовать монополист ическую Windows или свободный дистрибутив Линукс;
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Как поучаствовать в 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?
Хабр, привет! Я Юра, руководитель платформенной команды 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).
У меня все. Спасибо, что читали. Задавайте ваши вопросы в комментариях.
Как новичку поучаствовать в опенсорс разработке?
В прошлый раз я публиковал пост о сложностях, с которыми сталкиваются разработчики при попытках поучаствовать в опенсорс проектах. Не хотелось оставлять эту проблему без описания возможного решения, поэтому в этот раз я перевел для вас статью известного опенсорс активиста Кента Доддса. В статье автор делится несколькими любопытными лайфхаками — надеюсь, кому-то из читателей они помогут извлечь больше пользы/получить больше удовольствия от участия в опенсорс проектах.
После моего недавнего поста «Для тех, у кого это впервые», я получил массу писем и сообщений с вопросом: «В каком открытом проекте вы посоветуете поучаствовать?». В этом посте я попробую дать ответ на этот вопрос, а также сформулировать несколько рекомендаций относительно первых шагов в опенсорсе.
В наиболее общем виде ответ звучит так:
Наилучший вклад вы сможете внести в разработку того ПО, которым пользуетесь регулярно.
Лично мне больше всего удовлетворения приносит работа над проектами, которые важны для меня и моих знакомых. Второй ключ к успеху – работа на постоянной основе. Регулярная работа над проектом потребует понимания особенностей использования ПО и тех проблем, для решения которых оно было создано — знакомство с софтом с позиции пользователя в этом очень помогает.
Какие открытые библиотеки, фреймворки или инструменты вы применяете чаще всего? Может, вы работаете с 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. Есть и другие ресурсы для поиска простых путей участия в проектах:
Заключение
Мне очень нравится участвовать в опенсорс проектах, и я всячески советую испытать на себе этот опыт. Да, начать непросто, но после того как вы сделаете первый шаг все последующие будут даваться значительно легче. Конечно, не всегда всё идёт как по маслу. У опенсорс сообщества есть свои причуды. Не обращайте на них внимания, просто продолжайте работать. Всё обязательно получится! Удачи!