Open source: що це, для чого і як розпочати

Понад 8 років я працюю у сфері розробки програмного забезпечення, переважно з JavaScript і RoR, і всі 8 років беру участь в open source. Серед проєктів, участю в яких пишаюся найбільше — Botpress та Spree .

Уперше з open source мені довелося мати справу ще в школі, коли я пробував запускати Linux замість чергового «перевстановлення Windows» у собі й своїх близьких. Згодом почав використовувати його й у роботі, проте не наважувався брати участь. Свій перший PR я відкрив до Spree, з яким саме тоді працював і якому бракувало перекладу українською. Його прийняли, і вісь тоді я зрозумів, що, виявляється, це не лише не так і складно, а й можна поєднувати роботу із задоволенням.

Але цю статтю пишу не для того, щоб розповісти, що в Open Source робив я. Моя мета — пояснити, чому open source потрібні ві. Чи можна заробити на open source, як почати й для чого це все треба?

Що таке open source і community

Open source — це рух, що підтримує розробка й просування відкритого програмного забезпечення. Простіше кажучи, open source — це, наприклад, безліч проєктів на GitHub, куди ви точно не раз заходили, щоб знайте потрібне вам рішення. Open source — це ще й Linux, улюблена ОС більшості розробників програмного забезпечення.

За кожним проєктом open source стоїть спільнота, тобто community, яка його розробляє, підтримує і просуває. Community — це різні люди з різними намірами: хтось хоче розвинути програмний продукт, наприклад того, що використовує його в роботі або навіть виконує завдання, яке оплачує кінцевий замовник; хтось хоче вдосконалити власні навички — так люди, які тривалий час працюють в одному проєкті, хочуть урізноманітнити свій досвід, перевірити знання й уміння та отримати фідбек від ком'юніті; хтось робить внесок в open source заради різних community-заходів — вони й додають фану в роботу; а комусь просто цікаво, можна сказати з дослідницького погляду, зрозуміти, як працює щось складення (тієї самий Virtual DOM у реакті).

Неважливо, які цілі ці люди мають на прикметі. Важливо те, що, з одного боку, без спільноти проєкт Open Source не зможе довго існувати, а з іншого, для реалізації цих цілей, нам і самим потрібен open source!

Учасники Lviv Hacktoberfest

Як community може вести розробка продукту

Ми вже з'єднання ясували, що за розробка, підтримку, документацію і просування проєктів відповідає спільнота. Але як? Кому належить проєкт? Хто ним керує?

Є два спосібі, за допомогою яких можна зорганізувати роботу над проєктом open source.

1. Проєкт повністю контролює спільнота

Тут принцип простий: кожен учасник спільноти може повідомити про проблему або розв'язків зв'язати її, створити pull request і з'єднання єднати його з певною гілкою. У таких проєктах open source є один або кілька адміністраторів, що переглядають кожен pull request, кожне зареєстроване issue і наводять лад.

Адміністратори — це розробникі програмного забезпечення, зазвичай засновники тихий проєктів, які вони адмініструють. Наприклад, Стів Клабнік (Steve Klabnik ) — це один з авторів мов програмування Ruby on Rails і Rust. Більшість з вас знають його як надактивного користувача твіттеру, але, крім того, він ще й адміністратор такого проєкту open source як Rust. Колись він писав, що понад місяць займався лише тім, щоб навести лад у списку issues, про які повідомляли учасники спільноти — видалити повторювані, закрити розв'язків пов'язані або зібрати вимоги до незрозуміло пояснених проблем. Вже згаданий раніше Linux — це також проєкт, який повністю контролює спільнота. Лінус Торвальдс (Linus Torvalds ), засновник цього проєкту, віддав його на повну опіку спільноті open source, хоча він і досі лишається тією людиною, що найактивніше розробляє, підтримує й адмініструє Linux.

2. Спільнота контролює проєкт лише частково

Над проєктом працює спільнота розробників, але є певна команда — центр спільноти, core, який ухвалює основні рішення щодо проєктів. Наприклад, популярний JavaScript-фреймворк React підтримує спільнота, альо керують ним розробникі з компанії Facebook. Інший приклад — платформа для створення чатботів Botpress . Чимало людей працюють над цим проєктом, і я пишаюся бути серед них. Проте керівник проєкту — компанія Botpress.

Чи можна заробити на open source

Заробити реально, але невиправдано важко. Як звичайний малоактивний учасник певної спільноти ві не зможете одержати прибуток. Як власник проєкту або ентузіаст open source — можливо, хоча й малоймовірно. Вісь кілька способів, щоб монетизувати цю ініціативу:

Для власників проєктів можна одержати прибуток з підтримки й консультацій корпоративних користувачів продукту. Повертаючись до прикладу з Linux, ми вже з'єднання ясували, що ця ОС безплатна. Однак уявіть, що є велика компанія, яка хоче перевести всі свої комп'ютерній комп'ютери на Linux. Налаштувати десятки й сотні пристроїв — це робота не для однієї людини й не на один день. Компанія Linux пропонує таким клієнтам платну послугу зі встановлення й налаштування свого програмного забезпечення на всіх комп'ютерній комп'ютерах замовника. Якщо замовник згоден, компанія Linux одержує прибуток.

Для власників проєктів і деяких учасників спільноти:

Хай там як, а заробіток — не основна мета участі в open source. Тоді виникає запитання: навіщо?

Для чого брати участь в open source

Усі знають, як важко знайте роботу людині без досвіду. Open source — це досвід, який ви можете сміливо згадати у своєму CV. Якщо HR запитає вас, чи знаєте ви React, то вразьте його й скажіть, що належите до спільноти розробників цього фреймворку! Або ж реалістичніший приклад: сконтактуйтеся з кимось з community й прилучіться до підтримки менш розкрученого проєкту (наприклад, Svelte) на місяць. Ві й користь зможете принести проєкту, й цікаві знайомства здобути, і, звісно, у резюме зможете це згадати.

Open source — це чудова нагода вдосконалити свої знання й навички програмування без курсів і без книжок. Коли ваш pull request перевіряє Ден Абрамов (Dan Abramov ) або тієї самий Стів Клабнік (Steve Klabnik ), то ви думаєте про якість коду й про зауваження до нього куди більше, ніж коли пишете код для себе або на курсах. І повірте, ці хлопці знають «трохи» більше за пересічного тимліда з вашого міста, а отже, є і більше промов, яких можна й повчитися у них.

Open source — це соціальна відповідальність. Ві розв'язків язуєте один баг в проєкті open source й автоматично розв'язків язуєте його для всіх, хто використовує цей продукт. Наприклад, розв'язків язуючи одну проблему в Botpress, я ще додав підтримку української мови на платформі.

Як можна долучитися до Open Source

Прилучитися до open source просто. Зробити це добре — трохи важче, але цілком реально. Правила гри доволі прості:

  1. Якщо ви використовуєте певний продукт open source (бібліотеку, фреймворк, операційну систему, програми...), підтримайте мотивацію людей, які до нього докладають зусилля. Поставте їм зірочку, лишіть декілька дописів до наявних issue, висловіть подяку комусь із розробників. Не уявляєте, скільки відкритих проєктів це могло б урятувати від занепаду.
  2. Якщо ви знаходите помилку в проєкті open source, що його ви використовуєте, — відкрийте GitHub проєкту й повідомте про проблему. Повідомити про проблему можна добре, а можна погано. Щоб повідомити погано, напишіть, що проблема є, але не описуйте її, не розповідайте деталі й не додавайте зображень. Ба більше, напишіть це «на емоціях» і звинуватьте адміністратора в поганій підтримці проєкту: «ВАША ПРОГРАМА НЕ ПРАЦЮЄ!!! ЗРОБІТЬ ЩОСЬ!!!» Так ви, звісно ж, «підвищите» мотивацію людей, які працюють над проєктом (зазвичай у вільний від роботи час на безоплатній основі) й змусите їх потренувати свої детективні навички у розумінні ваших натяків на існування проблеми. Щоб повідомити про помилку добрі, зробіть навпаки — додайте ідеальний опис того, що сталося та за яких умов, а ще ліпше, зробіть знімки екрана, на яких проблему буде видно. Вісь гарний приклад того, як створювати опис помилок, з якими розробниками приємно працювати:

  3. Якщо можете розв'язків зв'язати проблему, яку знайшли ви або хтось інший, то розв'язків яжіть її і зробіть pull request. Pull request теж можна зробити добре й погано. Щоб виконати його погано, проігноруйте всі інструкції та гайди, зробіть багато невмотивованих або непояснених змін, ігноруйте стиль кодом, не пишіть тестів і не ведіть документацію. У результаті ваш PR висітиме місяцями й відбиратиме енергію на спілкування й пояснення потреби в дотриманні стандартів у команді. І, можливо, так і не буде прийнятий. Щоб зробити pull request добре, уважно прочитайте й використайте Contribution Guidelines — опис основних принципів і правил роботи з певним проєктом, а також зважайте на ті, у яку гілку ві мерджите свій pull request.

Ще один спосіб стати частиною спільноти open source — це відвідувати заходи, що вона проводити. Наприклад, Hacktoberfest — це рух, що підтримує open source й щороку проводити жовтневі хакатони в усьому світі. У Львові ця подія вже відбувалася 2018 і 2019 роках за підтримки компанії KeenEthics. Читайте в пресрелізі про ті, як це було.

Як розпочати

Багато хто думає: «Я не такий кваліфікований, щоб викладати щось на GitHub». З чого ж розпочати в такому разі?

Найперше, як описано вище, спробуйте відвідувати заходи, що організовує спільнота. Коли ви подивитеся на учасників open source, то зрозумієте, що не святі горщики ліплять. Колеги й однодумці допоможуть вам здобути впевненість у собі та ліпше збагнути філософію open source.

Крім того, можете зорганізувати собі імпровізовану менторську програму. Серед друзів або колег знайдіть когось досвідченішого, хто вже підтримує open source, і попросіть його поділитися досвідом. Попросіть оцінити ваші технічні навички, попрацюйте пліч-о-пліч з ними й разом зробіть ваш перший pull request на GitHub.

Вже згадував, що своїм першим PR я всього-на-всього поправивши українську локалізацію. Це хороший варіант для старту: це зазвичай нескладні зміни для носія мови, до того ж може статися, що носіїв української в ком'юніті певних проєктів мало або тільки ви і є.

Підсумуємо

Доля в open source навряд принесе вам фінансову вигоду. Однак вона подарує щось більше — задоволення собою, нестандартні головоломки для тренування мозку, спілкування з цікавими людьми й безцінний досвід. Якщо хочете дізнатися більше про ті, як і навіщо ставати учасником цієї спільноти, пишіть на oleksiy.pletnov@keenethics.com . Якщо переконувати вас більше не треба, відкривайте GitHub, повідомляйте про issue і робіть ваш перший pull request.

Опубліковано: 20/02/20 @ 11:00
Розділ Різне

Рекомендуємо:

DOU Ревізор у Львові: «Офіс Elitex з видом на Оперу»
10 інструментів ефективної роботи, або Забудьте про багатозадачності
Чим незадоволені українські програмісти? Глас народу 2019
BA дайджест #7: 20 уроків від аналітика з 20-річним досвідом, Top skills for 2020
Використання Defer Go