
Публічний акаунт нашої компанії на GitHub зайняв 4-те місце серед більш ніж 2 тисяч IT-аутсорсингових компаній в Україні. Великий внесок у цей успіх зробили Android-розробники, але спільнота Open Source також підтримується іншими співробітниками компанії вже багато років. У цій статті наші експерти підготували рекомендації щодо того, як створити успішний IT-проект на GitHub.
Компоненти якісного Open Source проекту
1. Документація
Документація в GitHub є своєрідним посібником на додаток до коду. Чим детальніше вона написана, тим зрозуміліше сторонньому розробнику, як застосовувати рішення. Таким чином, більше шансів отримати Star, підписників і "контрибуторів". GitHub вже має встановлені рекомендації щодо того, як правильно підготувати документацію.
2. Функціональність
Код повинен вирішувати популярну проблему, і, що важливо, — код має бути повторно використовуваним. Наприклад, під час створення нашої Android-бібліотеки для перегляду зображень на весь екран, ми врахували тренди мобільного дизайну, зокрема акцент на інтуїтивні жести. Ми помітили, що часто стикалися з подібними завданнями в роботі. На той час готових рішень в open source, які б відповідали нашому запиту, не було. Виявилося, ми не єдині, хто потребував такого рішення, і бібліотека стала популярною.
3. Кількість помилок
Безпомилковий код без багів — мрія клієнта і нічний жах QC-спеціаліста. У реальному житті 100% ідеального коду не існує (принаймні, ми ніколи його не бачили). Якщо є воля, принаймні одна помилка завжди буде знайдена. Проте, чим менше помилок у вашому коді, тим вищі шанси залучити вашу аудиторію. До речі, великі компанії, які також є на GitHub, будуть вдячні, якщо ви знайдете помилку в їхніх продуктах. Google, Facebook, Mozilla можуть навіть заплатити вам грошову винагороду.
4. Якість коду
Якісний код можна охарактеризувати наступними параметрами:
- Код має бути написаний так, щоб у майбутньому його було легко підтримувати та розширювати.
- Код має відповідати прийнятим стандартам у межах мови програмування.
- Код має бути читабельним, структурованим. Рекомендується використовувати існуючі шаблони проектування, оскільки вони описують рішення для деяких поширених ситуацій, з якими стикаються розробники. Якщо є сторонні бібліотеки, які повністю відповідають вашим потребам, краще використовувати їх, ніж винаходити велосипед.
- Якісний код тестується, тобто йому можна довіряти. Якщо функціональність інтерфейсу програми можна протестувати вручну, то сирий код зазвичай покривається юніт-тестами (вони виглядають як код, що просто перевіряє роботу окремих частин програми). В ідеалі, звичайно, мати 100% покриття тестами — це захистить ваш код від несподіваних помилок під час змін, але якщо ціна 100% покриття тестами занадто висока, було б добре мати покриття тестами принаймні на ключовій бізнес-логіці.
- Також, пишучи код, слід пам’ятати про принципи DRY та KISS, вони допоможуть зробити ваш код кращим.
Кілька слів на користь безперервної інтеграції
Більшість перевірок якості коду можна автоматизувати. Різні мови програмування мають свої власні стандарти форматування, дублювання коду, складності, заборонені конструкції тощо. Також існують бібліотеки для юніт-тестів, які спрощують написання тестів. Якісні проекти з відкритим кодом налаштовані з CI (безперервна інтеграція) серверами. Їхня робота включає автоматичний запуск усіх прописаних перевірок під час кожного pull-request. Якщо pull request не проходить певну перевірку, користувач, який його надіслав, може розглянути причину та виправити її, щоб відповідати вимогам репозиторію. Один з найпопулярніших CI серверів — TravisCI, ви можете безкоштовно підключити його до вашого публічного репозиторію.
5. Активна підтримка
Якщо ви опублікуєте нове рішення, будьте готові отримати активну реакцію від інших. Вони можуть шукати помилки, пропонувати зміни або просто стежити за проектом. Хороше правило — відповідати на активність користувачів. Підтримка проекту, швидке виправлення критичних помилок і, звичайно, відкритість до змін — ключі до успіху. Розробка нових версій проекту також є великим плюсом у вашій скарбничці.
6. Ліцензія
Open Source — це відкрите програмне забезпечення. Говорячи дуже загально, усі програми та матеріали, доступні на GitHub, можна використовувати безкоштовно, з невеликим застереженням — якщо ліцензія дозволяє. В залежності від готовності ділитися та відкриватися світу, на GitHub ви можете вибрати тип ліцензії з певним доступом, наприклад:
- The Unlicense — ліцензія без умов, основа відкритого коду, коли код є суспільним надбанням. Такий проект буде доступний для операцій, модифікацій та доповнень для всіх без винятку;
- MIT — користувачі можуть вільно використовувати код і робити пропозиції, однак зобов'язані поважати авторські права. Таку ліцензію використовують jQuery, .NET, Core та Rails;
- Apache 2.0 — на додаток до MIT, ліцензія надає явну передачу патентних прав. Цю ліцензію використовують Android, Apache та Swift.
Існують також проекти з закритою ліцензією — доступ до даних у цьому випадку мають лише певні учасники. Ліцензію для вашого проекту ви можете обрати тут.
Кого підписати на GitHub в залежності від вашої технології
Android
JakeWharton — король open source в Android
dmytrodanylyk — GDE з України, розробник різних популярних бібліотек для Android
googlesamples — приклади використання Google API
square, facebook — провідні компанії, які діляться своїм досвідом
Symfony/PHP
fabpot — автор Symfony
rlerdorf — творець PHP
sebastianbergmann — автор бібліотеки PhpUnit
Seldaek — творець Composer та різних інших бібліотек
javiereguiluz — один з активних контриб'юторів Symfony
Front end
AngularClass/awesome-angular — список бібліотек Angular4
vuejs/awesome-vue — список бібліотек для Vue
yyx990803 — творець Vue.js
addyosmani — Addy Osmani, дуже класний інженер з Google
Актуальний рейтинг репозиторіїв за мовою (кількість зірок)
За наведеними посиланнями ви завжди можете знайти останні дані про актуальні репозиторії технологій, які вас цікавлять.
Останні оновлення компанії ви можете переглянути тут. Успішних проектів вам!
Підсумок
Бізнеси використовують GitHub як систему контролю версій, що дозволяє їхнім розробникам відстежувати зміни в вихідному коді, сприяючи співпраці. Внаслідок цього кілька програмістів можуть вносити свій внесок у найсвіжішу версію коду, спрощуючи управління проектами. Рівень Enterprise покращує цей процес, пропонуючи підтримку регуляторних вимог та функції дотримання стандартів.
Studio stfalcon.com має великий досвід розробки масштабних рішень для великих компаній, і ми були б раді працювати над проектом для вашого бізнесу. Напишіть нам, і давайте створимо щось неймовірне разом!