Публичный аккаунт нашей компании на GitHub занял 4-е место среди почти 2 тыс. украинских IT-аутсорсинговых компаний. Большой вклад внесли Android-разработчики, однако поддерживают Open Source комьюнити и другие наши сотрудники в течение уже многих лет. В статье наши специалисты подготовили рекомендации, как создать успешный IT-проект на GitHub.
Составляющие качественного Open Source проекта
1. Документация
Документация в GitHub — это, своего рода, инструкция по применению кода. Чем более подробно она расписана, тем понятнее будет стороннему разработчику, как пользоваться готовой наработкой. Соответственно, тем больше шансов получить «Звездочку», «Фолловера» или привлечь к своему проекту сторонних контрибьюторов. GitHub уже создал рекомендации о том, как правильно подготовить документацию.
2. Функциональность
Код должен решать популярную задачу, также должна быть возможность его повторного использования. Например, создавая нашу Андроид библиотеку для полноэкранного просмотра изображений, мы учли тенденции мобильного дизайна, в данном случае — переход к интуитивным жестам. Заметили, что часто сталкиваемся в работе с подобными задачами, для которых на то время не было готовых решений в опенсорсе. Оказалось — не мы одни нуждались в подобном решении.
3. Количество багов
Безупречный код без багов — мечта заказчика и страшный сон тестировщика. В реальной жизни 100% идеального кода не существует (по крайней мере, мы не встречали). Хотя бы один баг найдется всегда, было бы желание его отыскать. Все же, чем меньше пакостных жуков в вашем коде, тем более высокие у него шансы завоевать свою аудиторию. Кстати, крупные компании, представленные также и на GitHub, будут благодарны, если вы найдете баг в их программах. Google, Facebook, Mozilla даже могут выплатить вам денежное вознаграждение.
4. Качество кода
Качественный код зачастую характеризуют следующие параметры:
- Код должен быть написан так, чтобы в будущем его можно было легко поддерживать и расширять.
- Код должен соответствовать принятым стандартам в рамках используемого языка программирования (или фреймворка).
- Код должен быть читабельным, структурированным. Желательно использовать существующие шаблоны проектирования, так как они описывают решения частых ситуаций, с которыми встречаются разработчики. Если есть сторонние библиотеки, которые полностью удовлетворяют ваши нужды, то лучше использовать их, нежели изобретать очередной велосипед.
- Качественным является тот код, который протестирован, т.е. ему можно доверять. Если функционал интерфейса приложения еще можно протестировать вручную, то сырой код обычно покрывают модульными тестами (они выглядят также как код, просто проверяют работу отдельных кусков программы). В идеале, конечно, иметь 100% покрытие тестами — оно обезопасит ваш код от непредвиденных багов во время его изменения, но если цена 100% покрытия кода слишком велика, то хорошо бы иметь покрытие тестами на ключевую бизнес-логику.
- Также при написании кода нужно помнить о принципах DRY и KISS, они помогут сделать ваш код лучше.
Несколько слов в пользу Continuous integration
Большинство проверок качества кода можно автоматизировать. Под разные языки программирования существуют свои утилиты для проверки стандартов форматирования, дублирования кода, сложности, запрещенных конструкций и т.д. Также есть библиотеки для модульных тестов, которые упрощают их написание. Качественные опенсорс проекты имеют настроенные CI (Continuous integration) серверы. В их работу входит автоматическая прогонка всех прописанных проверок при каждом пулл-реквесте. Если пулл-реквест не проходит какую-то проверку, то пользователь, отправивший его, может рассмотреть причину и исправить ее, чтобы соответствовать требованиям данного репозитория. Одним из самых популярных CI серверов является TravisCI, вы можете подключить его к своему публичному репозиторию абсолютно бесплатно.
5. Активное сопровождение
Если вы выкладываете новое решение, будьте готовы к тому, что на него могут активно реагировать другие — искать ошибки, предлагать изменения, просто следить за проектом. Хороший тон — отвечать на активность пользователей. Сопровождение проекта, оперативное исправление критических ошибок и, конечно же, открытость изменениям — ключи к успеху. Доработка новых версий проекта также большой плюс в вашу копилку.
6. Лицензия
Open Source — это открытое программное обеспечение. Если говорить очень широко, то все доступные на ГитХаб программы и материалы можно использовать бесплатно, с маленькой оговоркой — если позволяет лицензия. В зависимости от готовности делиться и открываться миру, на GitHub можно выбрать для себя тип лицензии с определенным доступом, например:
- The Unlicense — лицензия без условий, основа Опенсорс, когда код — всеобщее достояние. Доступен для работы, модификации и дополнений для всех без исключения;
- MIT — пользователи могут свободно пользоваться разработками и вносить предложения, однако обязаны соблюдать авторское право. Такую лицензию используют jQuery, .NET, Core и Rails;
- Apache 2.0 — в дополнение к лицензии MIT обеспечивает экспресс-выдачу патентных прав. Данную лицензию используют Android, Apache и Swift.
Есть также проекты с закрытой лицензией — доступ к данным в таком случае имеют только определенные владельцем участники. Узнать более подробно о всех вариантах лицензий и подобрать подходящую для своего проекта можно здесь.
На кого и на что стоит подписаться на GitHub, в зависимости от вашей технологии. Советы наших специалистов.
Android
JakeWharton — король опенсорс в направлении Android;
dmytrodanylyk — GDE из Украины. Разработчик многих популярных библиотек для Android
googlesamples — примеры использования разнообразных API от Google
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
Актуальный рейтинг репозиториев по языкам (по количеству звездочек)
По перечисленным выше ссылкам всегда можно найти новейшие данные об актуальных репозиториях интересующих вас технологий.
За обновлениями нашей компании можно следить здесь. Успешных вам проектов!
Разработчики студии stfalcon.com обладают большим опытом в создании технически сложных решений для крупных компаний. Напишите нам на info@stfalcon.com чтобы поделиться своей идеей. Мы с радостью ответим на все ваши вопросы и поможем реализовать проект вашей мечты!