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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

image

Здесь будет немного истории 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 специалистов из разных городов России.

image
OpenSourceForum All LUG 2005 г. Фото из личного архива (я тут тоже есть) :)

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

image
Школьный проект RnDLUG 2010 г. Фото из личного архива

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

image
Ричард Мэттью Столлман в 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. Newbee

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

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


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

Кейс №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).

image

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

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

image
Источник: https://habr.com/ru/company/samsung/blog/571264/


Интересные статьи

Интересные статьи

Попасть сюда было непросто, тем и интереснее, тем больше хотелось. Стать не только частью высокоITшного общества, а рассказать то, что знаю и над чем работаю. Будучи проектировщиком, сталкивался с раз...
Много работая с командами разработки, только что перешедшими на OpenShift, мы стремимся дать им рекомендации и лучшие практики для успешного создания и внедрения приложен...
Скорее всего нет тут такого человека, который бы не играл в GTA (или хотя бы не слышал о ней). Первая 3D версия серии вышла около 20 лет назад. Это была GTA III. Через год вышла GTA: Vi...
Telegram предоставляет возможность делать ботов быстро, удобно и подключать их к своим внутренним системам, создавая множество подвязок, триггеров и шаблонов. Активируешь Botfather-а ...
Авторы: Тед Янг, Притам Шах и «Комитет технических спецификаций» (Карлос Альберто, Богдан Друту, Сергей Канжелев и Юрий Шкуро). Совместный проект обзавелся названием: http://opentelemetry.io ...