Привет! Меня зовут Дмитрий, я тренер по продуктам компании 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 касался не только разработки. Вокруг него сразу появилась целая экосистема. В частности, очень много людей, которые не являлись разработчиками, всё-таки вносили свой вклад в выживание и распространение этой модели. Если человек мог (и, главное, хотел) писать код, он писал. Если он был пользователем такого софта (например, системным администратором), он просто помогал другим в работе с этим ПО. Сформировалось множество сообществ и просто отдельных людей, которые участвовали в жизни экосистемы.
Например:

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

Несколько примеров активности LUG с фото из моего личного архива.

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 сегодня?

Кейс №1. Newbie

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

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


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

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

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

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

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

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

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

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


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

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


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

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


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