Зачем Вам Нужен Открытый Исходный Код?

Привет! Меня зовут Дмитрий, я тренер по продуктам в Arenadata и один из преподавателей онлайн-школы разработчиков Open Source COMMoN, которую посещаю сейчас.

набор .

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

Что тогда? Я попробовал разобраться — и вот что получилось (под катом).



Зачем вам нужен открытый исходный код?

Фото Александра Копилова, СпБЛУГ, 2019. Будет немного истории Open Source (в том числе из личного опыта), мой взгляд на то, что свободное программное обеспечение может сделать для разработчиков сегодня, а также несколько спойлеров для тех, кто решит присоединиться к школе.



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

Является ли программное обеспечение открытым или закрытым, определяется лицензией.

По сути, это соглашение между правообладателем и пользователем и регулирующее права последнего.

При этом автор и правообладатель обычно не одно и то же лицо.

Бизнес, построенный на продаже программного обеспечения, направлен на то, чтобы дать пользователю только одно право – использовать программное обеспечение (да и то с ограничениями).

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

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

Вообще таких лицензий было много: BSD, MIT и т. д. Однако самым ярким явлением стала лицензия свободного программного обеспечения (не путать с Open Source), созданная сотрудником MIT Ричардом Мэтью Столлманом (RMS) с группой единомышленники.

Благодаря их работе появилось такое понятие, как GPL, или GNU General Public License — лицензия с авторским левом (общедоступная) на свободное программное обеспечение.

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

Open Source пришел в Россию почти одновременно с проприетарным программным обеспечением.

В СССР было свое программное обеспечение, но в основном для больших или мини-ВМ (EC, SM-VM и т.п.

), а также программное обеспечение для западных вычислительных систем производства IBM, DEC, HP и т.д. Модель распространения также была разные: либо вычислительные центры просто «делились» друг с другом, либо головные КБ/ЦНИИ передавали ПО филиалам или организациям-партнерам.

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

В целом феномен свободного программного обеспечения касался не только развития.

Вокруг него сразу возникла целая экосистема.

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

Если человек мог (а главное хотел) писать код, он писал.

Если он был пользователем такого ПО (например, системным администратором), то он просто помогал другим работать с этим ПО.

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

Например:

  • сообщества разработчиков индивидуальных проектов;
  • группы перевода (i18n) — я когда-то участвовал в группе перевода Gnome;
  • LUG (Linux Users Groups) — сообщество для взаимопомощи пользователей ОС Linux и популяризации этой ОС (я активный участник RnDLUG с 2005 года, то есть в Ростове-на-Дону);
  • мейнтейнеры – разработчики, переносящие проекты на новые операционные системы;
  • и многие другие… .

Несколько примеров деятельности ЛУГ с фотографиями из моего личного архива.

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



Зачем вам нужен открытый исходный код?

OpenSourceForum Все ЛУГ 2005. Фото из личного архива (я тоже здесь) :) 2010 В Ростове-на-Дону в рамках государственной программы «Школьный Linux» РнДЛУГ помог школы в установке бесплатного программного обеспечения (мы внедрили школьный дистрибутив AltLinux в 25 школах).



Зачем вам нужен открытый исходный код?

Школьный проект РнДЛУГ 2010. Фото из личного архива 2019 В Санкт-Петербурге SpBLUG пригласила Ричарда Мэтью Столлмана на одну из своих регулярных конференций.



Зачем вам нужен открытый исходный код?

Ричард Мэтью Столлман из SpBLUG. Фото Александра Копилова, СпБЛУГ, 2019. В то время сторонники свободного программного обеспечения практически не зарабатывали на этом денег.

Скорее, это делалось ради удовольствия от создания J4F или в академической среде в рамках преподавательской или исследовательской деятельности.

Однако позже лицензии FLOSS (бесплатное программное обеспечение с открытым исходным кодом) стали мягче.

Стало возможным использовать свободное программное обеспечение в проприетарных продуктах без обязательного открытия кода 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?

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

Ну, во-первых, это весело.

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

Правда, в меньшей степени, чем раньше.

Почему? Хороший вопрос.

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

Не знаю.

Однако интерес к бесплатному программному обеспечению не исчез.

На мой взгляд, он перешел от страстной потребности к осознанию того, что бесплатная лицензия не противоречит интересам как разработчика, так и бизнеса.

И да - свободное программное обеспечение — это не бесплатное пиво.

Итак, какую пользу Open Source может принести вам сегодня? Случай №1. Новичок Молодой разработчик сам что-то написал.

Самостоятельно значит не под коммерческий заказ, а просто для себя.

Обычно это происходит тогда, когда еще много свободного времени, например во времена студенчества.

Что делать дальше с продуктом? Дайте ему шанс выжить, а именно выпустите продукт как проект с открытым исходным кодом.

Если станет интересно, открытая лицензия и возможность бесплатной доставки позволят проекту прорваться в массы и обрести сторонников и последователей.

Некоторые успешные проекты начинались именно так.

Случай №2. Снова новичок, но с карьерными амбициями Молодой разработчик пытается продвинуться в своей профессии.

В серьезные организации не берут: ни опыта, ни портфолио.

Бесплатное программное обеспечение может помочь.

Вы участвуете в разработке сообществом конкретного проекта (там вас, скорее всего, наймут на простые задачи).

И после года работы тебе есть что показать на собеседовании.

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

В какой-то момент вы понимаете, что функционал вас немного не устраивает или обнаруживаете небольшой баг.

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

Или вы можете открыть исходный код и исправить то, что вас беспокоит. Это главное преимущество бесплатного программного обеспечения.

Именно об этом сказано в притча «RMS и принтер Xerox».

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

И все довольны, и вы, скорее всего, получите +100 000 в карму и зарплату тоже.

Кейс №4. Бизнес на открытом ПО Свободное программное обеспечение не означает свободное программное обеспечение.

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

.

И если в какой-то момент вы создадите достаточно большой объем кода во время процесса исправления ошибок или запроса функций, вы можете создать форк проекта как свой собственный.

Разумеется, без нарушения авторских прав и рамок свободной лицензии.

Тогда вы станете производителем российского ПО :) Кейс №5. Создатель проекта с открытым исходным кодом Вы давно знаете, что такое бесплатное программное обеспечение, и работаете над своим проектом.

Возможно, вы надеетесь на это как на бизнес, а возможно, вы работаете над этим из любви к искусству.

Если проект полезен сообществу, то, скорее всего, он будет востребован и у вас появится команда, а также круг пользователей продукта.

Примеров масса: Олег Бартунов (PostgresPro), Игорь Сысоев (Nginx), Алексей Миловидов (ClickHouse) и многие другие популярные проекты.



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

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

Центром всего является сообщество с собственной кодовой базой.

Обычно у него есть:

  • сайт проекта;
  • репозиторий исходного кода (часто репозиторий на GitHub или в вашей собственной системе совместной разработки);
  • каналы связи с/с сообществом (списки рассылки, форумы, чаты в Telegram, Matrix);
  • каналы отчетов об ошибках/запросов функций (Jira, Redmine, Bugzilla, Slack);
  • документы (правила/шаблоны/стиль);
  • инструменты разработки (ОС, среда разработки, клиент git и многое другое).

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

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

Например, на наш буткемп Общий .



Отслеживать данные арены

И напоследок немного о том, чему вы можете научиться вместе со мной на трассе.

В своих лекциях я расскажу вам, как вообще работает современная Open Source разработка.

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

Расскажу о современных подходах к построению СХД (Хранилища Данных); это важно, поскольку сегодня в них значительную роль играют технологии с открытым исходным кодом.

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

Поэтому ему будет посвящена первая часть теоретического курса.

Давайте рассмотрим структуру этой ОС, процессы установки, настройки, загрузки, важные утилиты, менеджеры пакетов и многое другое.

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

Поговорим о том, что такое СХД и единая платформа данных в современной презентации, как развернуть ADB и OpenSearch, рассмотрим примеры использования этих продуктов, утилит, вопросов и важных плагинов.

Чему мы не научимся, так это программированию.

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

Основная цель нашей работы – дипломный проект. Участники трека самостоятельно решат конкретную задачу, имеющую отношение к проекту, которую затем можно будет показать в своем портфолио.

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

Вопросы о ходе обучения и развития вы можете задать мне в групповом чате Telegram. Ссылка придет после прохождения вступительного теста (да, оно существует и довольно сложное!).

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

Аренадата БД .

Ну это главное.

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

Лучшие команды получат от нас различные призы и возможность стажировки в Arenadata. И раз уж мы заговорили о стажировках, то расскажу о нас немного подробнее.

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



Зачем вам нужен открытый исходный код?

Без ложной скромности компания является одним из крупнейших коммиттеров проектов с открытым исходным кодом в России.

Мы регулярно участвуем в проектах Apache Software Foundation и участвуем в разработке Yandex ClickHouse и Tarantool. По количеству коммитов Greenplum мы являемся вторым по величине вкладчиком в мире.

Среди наиболее значимых особенностей, представленных нашей командой, могу отметить алгоритм эффективного сжатия данных без дополнительной нагрузки на ЦП Zstandard (ZSTD) и функцию pushdown в PXF (Platform Extension Framework), позволяющую существенно ускорить выполнение запроса на фильтрацию данных (они стали доступны сообществу в Greenplum 6).

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

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



Зачем вам нужен открытый исходный код?

Фото Александра Копилова, СпБЛУГ, 2019. Теги: #linux #open source #database #stallman #RMS #greenplum #arenadata #dwh #opensearch #LUG

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.