- Что такое Open Source?
- Особенности Open Source
- Плюсы и минусы Open Source программ
- Что такое опен-сорс проект?
- С чего начать и где искать проекты с открытым публичным кодом
- Опен-сорс проекты Хекслета
- Популярные лицензии софта
- Лицензии Creative Commons
- Бесплатное ПО — просто можно не платить, а внутри что угодно
- Лицензии Open Source
- Примеры проектов с открытым кодом
- Как принять участие в работе над Open Source проектом
- Открытый Linux
- Драйвер роста
- Причины процветания открытого исходного кода
В мире разработки часто путают три термина: свободный, открытый исходный код и свободное программное обеспечение (т.е. ПО). Для обывателя эти термины близки, но для экспертов есть большая разница. Расширяйте свои горизонты прямо сейчас.
Что такое Open Source?
Многие люди покупают другое программное обеспечение или используют пиратские версии. Пользователи видят графический интерфейс программы, но код продукта обычно скрыт. Это делает практически невозможным изменение программного обеспечения и защищает разработчика от тех, кто хочет скопировать и присвоить код. Тем не менее, в современном мире появляется все больше и больше так называемых программ с «открытым исходным кодом». Давайте узнаем, что такое программное обеспечение с открытым исходным кодом и каковы его преимущества и недостатки.
Почти все программное обеспечение поставляется конечному пользователю в виде готовых программ. Это достаточно функциональные программы с приятным пользовательским интерфейсом, которыми легко пользоваться. Если код продукта открыт, любой желающий может его изменить, предложить свои варианты, чтобы исправить обнаруженные ошибки или внести какие-то новшества. Таким образом, качество продукта улучшается с течением времени. Примерами операционных систем с открытым исходным кодом являются Linux, Unix, Ubuntu.
Все знают Microsoft Office, чей аналог с открытым исходным кодом — Open Office. Mozilla Firefox и Google Chrome также являются программным обеспечением с открытым исходным кодом. Существует множество подобных продуктов, многие люди используют большое количество программного обеспечения и не знают, что некоторые из них могут быть с открытым исходным кодом.
Особенности Open Source
Для того чтобы программное обеспечение считалось открытым, недостаточно, чтобы код был доступен каждому. Программное обеспечение должно быть полностью бесплатным. Пользователю также не нужно ничего платить за дальнейшее использование или попытки изменить код. Каждый имеет право свободно распространять продукт и, как уже говорилось выше, изменять его. При использовании этого типа программного обеспечения нет никаких ограничений по объему или продолжительности использования. Его можно использовать в бизнесе, в исследованиях, в преподавании и так до бесконечности.
Лицензия на использование этого программного обеспечения также является бесплатной. Нет никаких ограничений на его использование, модификацию, распространение или использование с другим совместимым программным обеспечением. Она также технологически нейтральна по отношению ко всем другим существующим программам.
Плюсы и минусы Open Source программ
В отличие от обычного лицензионного программного обеспечения, программное обеспечение с открытым исходным кодом разрабатывается группой свободных разработчиков и поэтому является бесплатным.
Вторым важным преимуществом является то, что мы можем обновлять эти программы. Хороший программист, разобравшись в коде, может добавить в программу новые функции или улучшить существующие. Например, пользователь macOS не может настроить свою операционную систему, в отличие от Linux, которую может настроить каждый. В итоге получился совершенно новый продукт, очень удобный для пользователя. Если полученное программное обеспечение действительно хорошо, оно может быть запатентовано и продано (!).
Еще одним неоспоримым преимуществом программного обеспечения с открытым исходным кодом является его устойчивость к вирусам. Почти все вирусы написаны для приложений Windows, а вредоносных программ для Linux очень мало. Таким образом, вероятность подхватить вирус при использовании операционной системы с открытым исходным кодом очень мала.
В настоящее время многие компании переходят на программное обеспечение с открытым исходным кодом. Это снижает затраты и минимизирует риск взлома системы.
Но, как известно, у каждой монеты две стороны, давайте поговорим о недостатках программ с открытым исходным кодом.
При возникновении проблем с программным обеспечением обычно запрашивается техническая поддержка. С программами с открытым исходным кодом дело обстоит иначе. Проблема в том, что программа была модифицирована различными разработчиками со всей страны или даже мира. Поэтому вам придется искать решение проблемы в Интернете или устранять ее самостоятельно.
Второй недостаток опять же связан с тем, что любой желающий может изменить код программы. Часто мнения вовлеченных людей не совпадают, что приводит к конфликтам, когда дело доходит до изменения продукта. Это может привести к провалу проекта, над которым многие люди работали долгое время.
Вредоносные программы также часто маскируются под программное обеспечение с открытым исходным кодом, и их трудно отличить от действительно безопасного программного обеспечения.
Хотя программное обеспечение с открытым исходным кодом имеет определенные недостатки, все больше и больше пользователей проявляют к нему интерес. В настоящее время все больше и больше продуктов создается с открытым исходным кодом. Это означает, что у программного обеспечения с открытым исходным кодом есть будущее, и к нему стоит присмотреться.
В конце концов, нет никакой гарантии, что код, написанный сообществом, не будет более низкого качества, чем ваш собственный. В результате вы будете вынуждены обновлять чужой код, а люди будут разочарованы тем, что вы не пропустили их изменения.
Что такое опен-сорс проект?
Проекты с открытым исходным кодом — это проекты с открытым исходным кодом, где любой желающий может принять участие в проектировании и разработке. Такие проекты обычно разрабатываются сообществом, которое строится вокруг них. Одним из таких примеров является GIT, а разработчикам фронтенда известна библиотека с открытым исходным кодом JQuery. К ним относится операционная система Linux, которой ежедневно пользуются миллионы людей по всему миру.
Проекты с открытым исходным кодом позволяют новичкам совершенствовать свои навыки программирования, получать практический опыт и улучшать свои навыки, обмениваясь опытом с другими разработчиками. Разработчики добавляют успешно выполненные задания на выпуск в свое портфолио, что особенно важно для тех, кто не имеет практического опыта разработки. Это поможет при поиске работы, потому что работодатели всегда в первую очередь смотрят на практические проекты.
С чего начать и где искать проекты с открытым публичным кодом
Новичкам, не имеющим опыта разработки, я рекомендую ознакомиться с заданиями, размещенными на GoodFirstIssue. Обычно такие выпуски называют «хорошим первым выпуском». Вы также можете использовать этот тег для поиска своей первой записи на GitHub.
Студентам Hexlet мы рекомендуем начинать проекты с открытым исходным кодом после успешного завершения второго выпуска. Это необходимо для того, чтобы у вас уже было представление о том, какими проектами вы будете заниматься в будущем. Наша учебная программа построена таким образом, что студенты могут выполнять простые производственные задания уже в начале третьего проекта.
Однако, если вы чувствуете, что ваш первый образовательный проект прост, вы уже можете посмотреть на наши проекты с открытым исходным кодом. Независимо от проекта, я рекомендую сначала установить его локально на своем компьютере и понять чужой код. Прикоснитесь к нему и поймите, как и что в нем работает.
Hexlet имеет множество проектов с открытым исходным кодом, которые открыты для всех желающих, будь то начинающие или опытные разработчики. Полный список наших проектов с открытым исходным кодом можно найти в нашем превосходном руководстве «Как принять участие в жизни Hexlet».
Опен-сорс проекты Хекслета
Если вы немного попрактиковались в решении задач или хотите улучшить свои навыки алгоритмического мышления, я рекомендую CodeBattle. Всем участникам дается конкретная задача, которую они должны решить на заранее выбранном языке программирования. Например, вы пишете решение на JS, а ваш оппонент решает его на Python. Процесс решения проблемы виден всем участникам в реальном времени — это идеально подходит для стрессовых ситуаций. Уровень адреналина повышается, а время решения сокращается — такой подход помогает подготовиться к собеседованиям, где часто приходится решать задачи за короткое время.
Codebattle имеет небольшую команду, которая приветствует активных участников, и вокруг проекта существует активное сообщество. Помогая людям улучшить проект, вы также сотрудничаете с будущими пользователями проекта. Например, какие проекты сейчас открыты для участников Codebattle:
Общайтесь о проекте через канал #codebattle в Slack-сообществе Hexlet.
Читайте также: как присоединиться к работе над OpenSource, что такое PS1 и другие вопросы: ответы разработчика Hexlet Андрея Мошкова.
Другой наш важный проект — Hexlet Editor. Это встроенный редактор для написания и выполнения кода, который мы сможем использовать во всех наших образовательных платформах в будущем. Этот проект очень важен для нас, потому что такие сервисы, как Replit и Codepen, могут вести себя непредсказуемо или выйти из строя. Например, один из сервисов начал вставлять свои рекламные объявления, а затем и вовсе вышел из строя. Вы можете обсудить трудности разработки этого проекта в канале #hexlet-volunteers в сообществе Slack.
Еще один важный проект в жизни Hexlet — Code-Basics, открытый, бесплатный проект для изучения основ программирования. Цель этой услуги — обучить базовым навыкам языка программирования программистов, которые только начинают свою карьеру. Этот сайт совершенно бесплатен и продолжает развиваться благодаря нашему дружному сообществу.
- Совершенствование существующих курсов. Курсы и языки доступны на GitHub.
- Улучшение самого веб-сайта. Задачи по улучшению представлены в
- Создание курсов для новых языков
- Перевод курсов на английский язык
- Популяризация проекта.
Существует также SICP Hexlet — система мониторинга прогресса SICP. Участники отмечают пройденный материал и отслеживают прогресс других пользователей. Проект работает на Laravel. Мы любим этот проект и активно его развиваем.
Вы можете обсудить проблемы в канале #hexlet-volunteers в нашем сообществе Slack.
Также читайте: навыки командной разработки, опыт работы на GitHub и умение читать чужой код: Зачем вам нужна стажировка?
Hexlet CV — еще один проект с открытым исходным кодом для соискателей и HR-динамиков. Соискатели размещают на сайте свои резюме, а опытные рекрутеры помогают им их улучшить. В проекте используется Ruby on Rails. Благодаря программе многие ребята получили свое первое предложение о работе, а работодатели нашли себе разработчиков.
Проекты также можно обсуждать в канале #hexlet-volunteers в сообществе Slack.
Hexlet Friends — это проект Python с открытым исходным кодом. Сервис отслеживает opsource-проекты Hexlet. Она анализирует количество коммитов, пул-запросов и проблем и автоматически ранжирует участников с помощью «Достижений». Сейчас мы хотим добавить туда много новых функций, поэтому я рекомендую вам ознакомиться с ними.
Codebattle имеет небольшую команду, которая приветствует активных участников, и вокруг проекта существует активное сообщество. Помогая людям улучшить проект, вы также сотрудничаете с будущими пользователями проекта. Например, какие проекты сейчас открыты для участников Codebattle:
Популярные лицензии софта
GNU GPL (GNU General Public License) — это универсальная общедоступная лицензия, которая считается самой важной лицензией в мире открытого и свободного программного обеспечения. Согласно этой лицензии, пользователь имеет 4 свободы:
- для запуска программы в любых целях,
- изучать и изменять исходный код,
- распространять как исходный код, так и программное обеспечение,
- усовершенствовать программу и сделать ее доступной для всех, но под той же лицензией.
Большинство дистрибутивов Linux поставляются с этой лицензией, и она является наиболее часто используемой лицензией для определения свободных программ.
Mozilla Public License — эта лицензия используется почти для всех продуктов Mozilla (браузер, почта и другие) и многими другими компаниями. Она похожа на GPL, но с одним важным отличием: код под этой лицензией может использоваться вместе с собственным кодом, права на который есть только у разработчика. Это означает, что в программе можно найти как открытый, так и закрытый исходный код.
Лицензия Apache — позволяет делать с кодом все, что угодно. Самое главное — назвать всех авторов и все патенты, использованные в разработке. Например, вы можете купить открытый исходный код с такой лицензией, изменить его, сделать свой код доступным для всех и продать его. Единственное, что вам нужно сделать, это добавить два файла: один с лицензией Apache, а другой — со списком всего кода, который мы использовали с этой лицензией.
Лицензии Creative Commons
Существует также большое количество лицензий, разработанных Creative Commons, которые вы можете применять к программному обеспечению и исходному коду. Вот некоторые из предлагаемых там лицензий:
- CC Attribution (CC BY) — вы можете делать с кодом все, что угодно, при условии указания автора оригинальной версии.
- CC Attribution — Share Alike (CC BY-SA) — если вы создадите что-то свое на основе этого кода, это должно распространяться по той же лицензии.
- CC Attribution — Non-Commercial Use (CC BY-NC) — вы можете использовать код по своему усмотрению, но не можете извлекать из него прибыль.
- CC Attribution — Noncommercial — No Derivative Works (CC BY-NC-ND) — Вы можете использовать его по своему усмотрению, но не можете зарабатывать на нем деньги или изменять ни одной строчки кода.
Существует множество других комбинаций. Главный вопрос здесь — принцип: лицензии CC определяют, должен ли быть указан автор, можно ли передавать эту лицензию, можно ли изменять код и можно ли делать на нем деньги. На основе этих комбинаций создаются различные комбинации лицензий.
Бесплатное ПО — просто можно не платить, а внутри что угодно
Свободное программное обеспечение — это программное обеспечение, авторы которого изначально решили раздавать его бесплатно и поэтому не имеют права продавать его. Продажа свободного программного обеспечения будет считаться нарушением лицензии, которое может преследоваться по закону.
Любой вид программного обеспечения может быть свободным: с открытым исходным кодом, проприетарное, свободное проприетарное. Skype, например, является свободным программным обеспечением, но имеет закрытый исходный код.
Бывают случаи, когда программное обеспечение имеет открытый исходный код, но компания зарабатывает деньги на установке, поддержке или других услугах. Примером может служить платформа WordPress.com. Это сервис, который бесплатно и без комиссии предоставляет вам услуги платного хостинга на базе системы WordPress с открытым исходным кодом. Вы не можете продавать сам WordPress, но вы можете продавать услуги по обслуживанию, установке, хостингу и резервному копированию.
Иногда люди не хотят писать README, потому что считают свою работу незаконченной, или потому что не хотят принимать чужую работу. Но это хорошая причина, чтобы написать об этом.
Лицензии Open Source
Существует множество различных лицензий на открытый исходный код. Чтобы лучше понять их, вот диаграмма, показывающая, чем они отличаются друг от друга.
Лицензии на открытый исходный код
- Лицензия MIT была разработана в одном из ведущих учебных заведений США — Массачусетском технологическом институте. Она почти полностью совпадает с трехпунктовой версией лицензии BSD, только с одним дополнительным пунктом, запрещающим использовать имя автора в рекламе. Под этим именем появились XFree86, Expat, PuTTY и другие продукты.
- Лицензия BSD была впервые введена в начале 1980-х годов для распространения одноименной операционной системы. Существуют следующие варианты этой лицензии:
- Оригинальная лицензия BSD — первая оригинальная лицензия, также называемая лицензией с четырьмя пунктами.
- Модифицированная лицензия BSD — это лицензия из трех пунктов, из которой был удален один пункт, согласно которому в рекламе должно быть указано, что в приложении используется программное обеспечение, разработанное в Калифорнийском университете.
- Лицензия Intel, которая предназначена для запатентованных приложений. Не поддерживается Open Source Initiative.
Существуют и другие менее распространенные лицензии, такие как Guile, Common Public License, Mozilla Public License и другие.
Примеры проектов с открытым кодом
Разработка ядра Linux и приложений GNU стала основой для других приложений с открытым исходным кодом. Появление Netscape вызвало интерес крупных IT-компаний. С тех пор было разработано множество различных продуктов.
Мы начнем с Debian, который поддерживался Фондом свободного программного обеспечения с 1994 по 1995 год. Позже была основана некоммерческая организация Software in the Public Interest, которая продолжила финансирование проекта.
В рамках проекта была создана не только операционная система, но и офисная программа LibreOffice, браузер Firefox, почтовый клиент Evolution, программа для записи компакт-дисков K3b, видеоплеер VCL, программа для редактирования изображений GIMP и другие продукты.
Некоммерческая организация Apache Software Foundation была основана как проект с открытым исходным кодом для поддержки программного обеспечения. Самым известным продуктом компании является одноименный веб-сервер. В настоящее время компания поддерживает большое количество проектов, распространяемых под лицензией Apache. Среди спонсоров АФС — компании Microsoft, Amazon и Huawei.
Еще одна компания, которая фокусируется на проектах с открытым исходным кодом, — Red Hat. Ее основной проект развития — операционная система, основанная на ядре Linux. Она предлагает не только программное обеспечение, но и техническую поддержку и специализированное обучение. В 2018 году она была приобретена компанией IBM.
Google также разрабатывает бесплатное программное обеспечение. Она разрабатывает и поддерживает следующие проекты: библиотеку TensorFlow для разработки систем машинного обучения, язык Go, программное обеспечение Kubernetes для автоматизации разработки программного обеспечения и другие продукты.
В науке открытый исходный код — это не только программное обеспечение, но и публикация статей, оценка и поддержка образовательных ресурсов.
В 1991 году Пол Гинспарг основал в Лос-Аламосской лаборатории онлайн-архив arXiv, в котором можно найти не только работы по физике, но и медицинские, математические и другие научные статьи. ЦЕРН также имеет портал для открытых научных работ.
Операционные системы с открытым исходным кодом
Как принять участие в работе над Open Source проектом
Если вы хотите попрактиковаться в программировании и улучшить свое резюме, участие в разработке продукта с открытым исходным кодом — для вас. Мы шаг за шагом рассказываем, что вам нужно.
Сначала вам нужно зарегистрироваться на GitHub и выбрать проект, в котором вы хотите участвовать. Это должно быть интересно для вас. Хорошо, если он содержит много работы, которую вы можете выполнить. Также следует обратить внимание на популярность проекта, о которой можно судить по количеству звезд.
Также важно отметить, насколько продвинулась разработка и когда были внесены последние изменения. После того как вы выбрали интересующий вас проект, вам нужно найти руководителя и связаться с ним.
Следующий шаг — выбор проекта. Рекомендуется выбрать для начала самую легкую задачу. Самое главное — вы должны уметь решать поставленную задачу. После этого возьмите задачу в свои руки и установите все необходимые инструменты.
Решив задачу, внесите предложения по изменению кода в репозитории. Для этого загрузите свой код на GitHub и нажмите на кнопку «Pull request». Затем необходимо ввести название запроса и описание. Затем следует дождаться, пока куратор примет или отклонит предложенные изменения.
Если вы взялись за выполнение задания, но возникли другие неотложные вопросы или вы обнаружили, что не можете выполнить задание, вы можете отказаться от него. Это нормально, но вы должны сообщить о своем решении начальству.
Поскольку проекты op-sensor поддерживаются — часто анонимными — командами разработчиков, они могут решить поместить в код что-нибудь неприятное. Это разрушит их репутацию, но чем не пожертвуешь в условиях кризиса массового психоза.
Открытый Linux
Если название лицензии вас смущает, скажем лишь, что Торвальдс разработал операционную систему Linux, которая стала одной из самых популярных в мире в последующие десятилетия. Популярность Linux также породила закон Линуса, который стал мантрой для описания ценности открытого программного обеспечения для разработки лучшего кода: «Если у вас достаточно глаз, все ошибки лежат на поверхности». То есть, открытый исходный код улучшил качество кода: Ошибки были найдены и исправлены.
Однако GPL все еще содержит определенные ограничения, налагаемые концепцией авторского лева (в отличие от обычного авторского права). Ограничения касаются способа распространения свободного программного обеспечения и гарантируют, что все производные продукты распространяются под одной и той же лицензией.
Для разработчиков появление авторского лева, которое, помимо прочего, позволяет создавать новые программы без разрешения владельца исходного кода, означало, что для программ с открытым исходным кодом требуется новый вид лицензии. Open Source Initiative (OSI) была основана в 1998 году. С самого начала целью OSI было продвижение несвободного программного обеспечения с прагматическим подходом, который отличал его от альтруистического свободного программного обеспечения». Модель открытого исходного кода предполагает использование открытого исходного кода как метода разработки, обновления и поддержки кода, при этом права на код остаются у первоначального разработчика, в отличие от свободного программного обеспечения.
Драйвер роста
11 августа 1999 года компания, создавшая на базе Linux компанию RedHat, вышла на биржу, и в первый день торгов на Уолл-стрит цена ее акций выросла на 272%. Популярность Linux, которая отбирала долю рынка у Microsoft Windows, показала, как открытый исходный код может проникнуть на рынок проприетарного программного обеспечения.
Компания RedHat стала пионером бизнес-модели с открытым исходным кодом, предлагая услуги поддержки, обучения и интеграции на основе подписки. В первый день торгов компания достигла многомиллиардной оценки и с тех пор значительно выросла: сегодня ее стоимость составляет более 30 миллиардов долларов, а доходы превышают 3 миллиарда долларов в год.
В 2000-х годах, по мере развития лицензирования открытого исходного кода, росло и количество проектов. JBoss была приобретена компанией RedHat в 2006 году за более чем 350 миллионов долларов; XenSource была приобретена Citrix в 2007 году за 500 миллионов долларов; Zimbra была приобретена Yahoo! в 2007 году за 350 миллионов долларов; MySQL была приобретена Sun в 2008 году за 400 миллиардов долларов. Описывая приобретение SpringSource компании VMWare, поставщика виртуальных машин, за 420 миллионов долларов в 2009 году, TechCrunch не мог не воскликнуть: «Открытый исходный код — это законная бизнес-модель!». Появилось много новых технологий с открытым исходным кодом, включая WordPress, Nginx, Hadoop, MongoDB, Elasticsearch и многие другие.
Причины процветания открытого исходного кода
Первоначально основной причиной распространения открытого кода была низкая цена покупки и возможность изменять исходный код по мере необходимости. Затем появился закон Линуса о том, что модель открытого исходного кода приводит к лучшему коду, и ряд, казалось бы, неочевидных, но весомых аргументов в пользу отказа от проприетарного программного обеспечения с закрытым исходным кодом.
Открытый исходный код означает отсутствие привязки к конкретному поставщику и возможность полагаться на поддержку сообщества. Даже если компания, финансирующая проект, терпит крах, технология может продолжать жить в сообществе, как это произошло, например, когда RethinkDB закрылась, а проект с открытым исходным кодом присоединился к Linux Foundation.
Проекты с открытым исходным кодом являются инновационными благодаря своей модели сотрудничества, которая позволяет исправлять ошибки самостоятельно и, что не менее важно, получать обратную связь от сообщества. Внедрение технологий с открытым исходным кодом помогает как при найме персонала, так и при разработке своими силами: Инженеры проявляют больше энтузиазма и поэтому быстрее осваивают базовую технологию, чем проприетарную систему конкретного поставщика. Вклад разработчика в проект с открытым исходным кодом, помимо прочего, дает возможность быть замеченным и способствует долгосрочной карьере.
Открытый исходный код стал более эффективной моделью выхода на рынок, чем традиционное проприетарное программное обеспечение. Выход на рынок может быть сосредоточен на обучении разработчиков, а не на продажах, что обеспечивает прямой контакт с конечным пользователем без необходимости создания сложных организационных структур. Отдел продаж, в свою очередь, может сосредоточиться на клиентах, которые знают и успешно используют распределенные технологии, что на порядки эффективнее, чем маркетинг собственного программного обеспечения посредством холодных звонков и демонстраций.