Проєкти Open source для розробників: 7 суттєвих переваг і 4 незначні недоліки
Чимало розробників користуються продуктами Open source, але далеко не всі беруть участь у їхньому створенні та покращенні. І дарма! Цей процес може бути захопливим і, найголовніше, корисним для розробника.
У цій статті Олександр Скриль, PHP Software Engineer в ІТ-команді NIX, виділив основні переваги та недоліки участі в Open source проєктах. Читайте та вирішуйте, чи спробувати щось нове.
Що таке Open Source
Open Source — це програмне забезпечення (далі — ПЗ, software) з відкритим кодом. Будь-хто може його використовувати та навіть змінювати під свої потреби, зокрема й комерційні. Чи не найбільш відомий зразок такого продукту — операційна система Linux. Вона повністю відкрита, безплатна та розвивається завдяки спільноті контриб’юторів, ентузіастів з усього світу. Хоча приклади такого софту є в усіх сферах: від офісних програм до ігор.
Зазвичай Open Source створюють і розвивають у вільний від роботи час не пов’язані один з одним розробники. Тобто це децентралізовані ком’юніті, до яких долучаються всі охочі. Хоча сьогодні є багато прикладів софту, який розробили компанії, а пізніше відкрили його базу. Такі Open Source-проєкти також залежать від контриб'юторів, проте ключові рішення щодо їх розвитку приймають все ж постійні команди.
Переваги участі в Open Source
На перший погляд може здатися дивним писати код для відкритого ПЗ. Ця робота не передбачає матеріальної винагороди. Проте багатьом розробникам варто хоча б час від часу долучатися до написання в Open Source-продуктах нового коду чи рефакторингу наявного. На це є мінімум такі причини:
- Новий досвід
Це працює і для новачків, і для досвідчених девелоперів. Перші мають можливість здобути навички роботи в реальному, а не навчальному проєкті. Початківці побачать, як працювати з системою контролю версій, оформлювати пул реквести та проходити код рев’ю. На курсах і у вишах цьому навчають, але це не порівняти з ком’юніті експертів. Що до мідлів і сеньйорів, то вони в Open Source можуть відволіктися від комерційної рутини та спробувати щось нове без зміни місця роботи. А ще розробка відкритого софту має чимало відмінностей у процесах, що розширює горизонт для досвідченого фахівця.
- Покращення хард-скілів
Open Source-проєкти можуть допомогти комплексно прокачати технічні навички. В них можна дослідити та спробувати використати нові для вас мови програмування, фреймворки, бібліотеки, технології, окремі інструменти тощо. При цьому факт мерджу запропонованих вами змін в основну гілку продукту є відмінним показником того, що ви добре засвоїли технологію. А ще у відкритих проєктах можна навчатися новим для себе код стайлам чи принципам оформлення пул реквестів. Це також непоганий буст для власного розвитку, особливо для початківців.
- Розвиток софт-скілів
Робота в Open Source — це передусім робота в команді. А ця команда дуже розумна, винахідлива, вмотивована, захоплена проєктом і зацікавлена в пошуку кращих рішень. Тож участь у проєкті допоможе розвинути софтскіли: ви будете краще розумітися з різними людьми, вміти аргументувати свої рішення та відпрацьовувати фідбек. Про останнє варто сказати окремо. Адже такі проєкти часто створюють експерти та навіть справжні зірки програмування. Важко переоцінити досвід комунікації з найвідомішими розробниками, які можуть вам порадити щось покращити в коді чи стилі роботи!
- Розширення горизонтальних зв’язків
Ця перевага участі в Open Source нерозривно пов’язана з попереднім пунктом. Якщо ви постійно долучаєтесь до великих відкритих проєктів, то регулярно спілкуєтесь із розробниками з інших компаній. Як визнає чимало прихильників створення софту з відкритим кодом, процес розробки, позбавлений нудних корпоративних догм, є дуже веселим та цікавим. Завдяки цьому доволі легко знайти по всьому світі кльових та розумних знайомих і, можливо, навіть друзів. Деякі з них, будемо говорити відверто, можуть виявитися корисними для вашого кар’єрного зростання в майбутньому.
Підписуйтеся на наші соцмережі
- Бонус до резюме
Погодьтеся, багато кому хотілося б мати резюме, де зазначена участь у всесвітньо відомому проєкті! Це завжди привертатиме увагу HR-спеціалістів і технічних експертів. Звичайно, мова не йде про зроблене одне виправлення маленького багу. Важливо стати постійним активним учасником ком’юніті. Тож варто додати до CV посилання на конкретні пул реквести, аби потенційний роботодавець міг оцінити обсяги та якість вашої роботи. А ще відмінною рекламою скілів як розробника стане публічний профіль на тому ж GitHub, де можна побачити вашу участь у відомих Open Source-проєктах.
- Краще розуміння інструменту
Зазвичай розробники долучаються до тих відкритих проєктів, якими постійно або хоча б час від часу користуються самі. Це цілком логічно, бо хто як не обізнаний користувач бачить реальні проблеми продукту та знає, що треба змінити мінімум на рівні бізнес-логіки? Тож вивчення внутрішнього світу продукту допоможе розробнику побачити структуру інструменту та глибше зрозуміти весь його функціонал. Тобто це дозволить вам зробити використання тієї самої безплатної тулзи у своїй повсякденній роботі більш зручним та ефективним.
- Позитивні емоції
Приємно робити те, що подобається. А в Open Source ви самі обираєте і проєкт, і завдання, і стек, і навіть дедлайни. Це — справжня свобода. А ще багато контриб’юторів підтверджують: просто класно усвідомлювати, що ви хоч трохи покращили новаторські та корисні проєкти з величезною аудиторією в різних куточках світу. До того ж таку роботу можна певною мірою сприймати як волонтерство, благодійність. Ви самі користуєтесь безплатним софтом, і ви ж допомагаєте створювати його для інших людей. Це точно буде незайвим плюсом до карми, чи не так?
Недоліки Open Source проєктів
Не можна оминути й негативні моменти в розробці ПЗ із відкритим кодом:
- Робота переважно без оплати
Інколи можна трохи заробити в розробці Open Source-продуктів. Це можуть бути донати користувачів, баунті-нагороди від компаній-власників проєкту або спонсорські виплати. Але це все — доволі рідкісні історії із відносно невеликими заробітками для окремого розробника. Проте на цей недолік треба дивитися інакше. Під час роботи над Open Source ви отримуєте багато чого з того, за що інші готові платити самі.
- Складні процеси
У проєктах із відкритим кодом зазвичай відсутня ієрархія. Тут немає проєктних менеджерів чи наставників, які скеровують вашу розробку, а в якості техлідів можуть бути різні експерти. Зазвичай є адміністратори, найчастіше це автори проєкту, але в цілому відповідальність розділена. Це заважає виправленню помилок і впровадженню фіч. Але на це можна дивитися і як на виклик! Така організація вимагає гнучкості та вправної комунікації за будь-яких обставин.
- Повільні реакції
Ви можете витратити багато часу на рефакторинг чужого коду, зрозуміло описати та красиво оформити пул реквест — і потім декілька днів чи навіть тижнів чекати на код рев’ю від учасників ком’юніті. Це нормальна ситуація в Open Source. В таких проєктах немає планування та чітко визначених термінів для реакції. Декого така відкладеність дратує й позбавляє ентузіазму. А декого вона навчає терпіння — це знову ж таки залежить від вашого сприйняття.
- Не зовсім релевантний досвід
Вище було згадано, що новачки можуть знайти в Open Source потрібний для старту досвід. Але пам’ятайте: робота в комерційних проєктах побудована трохи інакше. Там є спринти, ретро й мітинги, там є технічна документація, вимоги й узгодження, там більше ролей у команді та інші способи оцінки вашої успішності. Звичайно, Open Source розширює горизонти, але треба адекватно сприймати їх. Лише тоді це принесе вам справжню користь.
Досі цікаво? Дізнайтесь, як долучитися до створення Open Source продукту
Про пошук цікавого проєкту та початок роботи в ньому можна написати окрему статтю. Але в оглядовій публікації варто обмежитися кількома питаннями, які зорієнтують вас у подальшому шляху:
- Де знайти проєкт?
Найпростіший спосіб — скористатися пошуком на GitHub, Bitbucket чи GitLab. Там можна легко та швидко підібрати продукт за мовою, спеком і галуззю. Також ви можете нагуглити профільні форуми з обговоренням різних Open Source.
Існують й окремі платформи з продуктами із відкритим кодом. Серед них згадується openhub.net. Ресурс агрегує багато статистичних даних про різноманітні проєкти. Під час пошуку підходящого для себе, орієнтуйтесь на ці дані. Можна відфільтрувати пошук за мовами програмування. Сайт містить корисну інформацію про Open Source загалом, як почати практикуватись у ньому, а також дозволяє додати свій пет-проєкт.
З одного боку стара як світ, але з іншого — теж може зацікавити вас — Apache Software Foundation. Має корисні гайдлайни по роботі з Open Source проєктами. Спільнота фінансується спонсами, тож деякі проєкти живуть і мають широке ком'юніті. Вони передусім зацікавлені розвивати власний ІТ-інкубатор, але й іншим допомагають.
У дечому ці платформи схожі на стартап-спільноти: просувають Open Source-проєкти, але не серед інвесторів, а серед розробників.
- Як обрати проєкт?
Ключовий принцип — вам має бути цікавим обраний продукт. Адже ця робота подібна до хобі, якому ви приділятимете певну кількість годин на тиждень. Без особистого інтересу швидко втрачається запал що робити. Важливий і масштаб роєкту. Здавалося б, участь у розробці того ж Linux сприймається як щось особливе. Але в нішевому продукті легше проявити себе. Однакова умова для всіх проєктів — він має бути «живим». Щоб перевірити це, оцініть у репозиторії проєкту, коли його оновлювали. Якщо там місяцями немає нічого нового, то ви ризикуєте згаяти час.
- З чого почати?
У вас є кілька варіантів. Перший — шукати помилки й описувати їх в issues і по ним же рефакторити власноруч. Другий — фіксити знайдені іншими контриб’юторами проблеми, які очікують на виправлення. І третій шлях — пропонувати нові фічі. Який би шлях ви не обрали, розпочинайте з вивчення Contribution Guidelines. Це правила в проєкті про опис помилок і створення пул реквестів, код стайлу, наявні гілки тощо. Без цього навіть критичні баги чи круті ідеї можуть залишатися просто проігнорованими.
Наостанок ловіть добірку популярних Open Source-продуктів, де ви знайдете для себе чимало цікавих завдань і, можливо, перспектив для професійного розвитку. Для зручності вибору проєкти розділені за мовами програмування:
- Python: популярні фреймворки Django та Flask, бібліотека для машинного навчання TensorFlow та модна система управління конфігураціями Ansible.
- Java: потужний та легкий фреймворк Spring, система Jenkins, без якої важко уявити девопс-практику, і пошукова система Elasticsearch для роботи з Big Data.
- C++: оригінальна і ностальгічна за дизайном ОС SerenityOS, багатоплатформний медіаплеєр Kodi та Microsoft Cognitive Toolkit для створення нейромереж. Також раджу Xen — багатоплатформний гіпервізор, розроблений в комп'ютерній лабораторії. Цікаво виглядає проєкт «Оберіг». Це багатоплатформний застосунок, створений на основі принципу web view. А для практики у 2D і 3D проєктах підійде Urho3D.
Звісно, цими проєктами світ Open Source не обмежується. Більше спілкуйтесь із досвідченими колегами та на форумах розробників — розпитуйте про подібні можливості в інших напрямах. Шукайте своє та сміливо пробуйте незнайоме. Будь-який новий досвід піде на користь.