Skip to content

Latest commit

 

History

History
78 lines (58 loc) · 7.11 KB

open-source.md

File metadata and controls

78 lines (58 loc) · 7.11 KB

Работа с Open Source

Для размещения наших open source библиотек и различных утилит используется GitHub. Чтобы не засорять его узкоспециализированными или неподдерживаемыми компонентами, нужно придерживаться ряда правил.

Как попасть на GitHub

Библиотека
  • Используется как минимум в двух внутренних проектах,
  • Не привязана к нашим конкретным задачам, может пригодиться сообществу,
  • Решение не является велосипедом, можно четко выделить перечень причин, по которым оно обходит свои аналоги,
  • Ревью проекта проводили как минимум двое членов команды, не принимавших участие непосредственно в разработке компонента,
  • Полностью покрыта тестами,
  • Код содержит подробные комментарии на английском языке.
Приложение
  • Для работоспособности не требуется доступ к приватным ресурсам,
  • Демонстрирует подходы к решению определенных задач, либо несет ценность само по себе,
  • Написано с соблюдением принятых в команде практик,
  • Тестами покрыта как минимум бизнес-логика,
  • Код содержит подробные комментарии на английском языке,
  • В команде есть человек, отвечающий за план разработки проекта и продуктовые вопросы.
Утилита
  • Полностью наследуются правила для пункта 1,
  • Написано на языке, который знает больше одного человека в команде.
Форк
  • Необходим для работоспособности одного из open source приложений, расположенных на нашем же GitHub,
  • Содержит кардинальные улучшения, по каким-то причинам не принимаемые автором оригинального компонента.

Ведение документации

Каждый проект должен иметь подробный Readme на английском языке. Должны присутствовать следующие разделы:

  • Описание проекта,
  • Скриншот (если возможно снять),
  • Инструкция по установке/интеграции, требуемое окружение,
  • Максимально простой пример использования,
  • Лицензия,
  • Имя автора.

Пример Readme: Generamba

Статья на тему: Building Popular Projects

В случае, если примера из Readme недостаточно для понимания правил и возможностей работы с проектом, дополнительная документация ведется с использованием GitHub Wiki.

Пример Wiki: Generamba Wiki

Работа с Git

  • Работаем по GitFlow,
  • Коммиты пишутся на английском языке,
  • Если изменение относится к какому-то issue, это упоминатся в тексте коммита,
  • Ко всем версиям обязательно добавляются release notes, содержащие полный перечень всех изменений.

Пример: Generamba release 0.7.2

Трекинг задач

Для ведения задач по всем open source проектом стараемся использовать функционал GitHub - Issues и Milestones. В этом случае конкретного набора правил нет, скорее перечень рекомендаций:

  • Milestone удобно использовать для разделения задач по версиям. К примеру, Version 0.7.2, Backlog. Это позволяет быстро оценивать прогресс выполнения задач для определенной версии и помогает при составлении release notes.
  • Для разделения задач по эпикам, проставления приоритета или других отметок, можно использовать Labels - по сути, обычные теги. Примеры: Backend, Bug. Все issues ведутся на английском языке.
  • У каждого issue должен быть не только заголовок, но и относительно подробное описание - любой сторонний человек должен быть способен понять смысл задачи и самостоятельно выполнить ее.
  • Те же правила относятся и к составлению Pull Request'ов. Кроме того, не забывайте линковать их к соответствующим Issues.
  • Если задача находится в разработке, у нее должен быть явно проставлен Assignee, во избежание конфликтов.
  • Если при выполнении задачи возникли какие-то проблемы, желательно описать их в комментариях.
  • При общении в комментариях старайтесь быть максимально открытыми и доброжелательными, даже если псотавленный вопрос откровенно глупый.

Тестирование и Continious Integration

Если на проект возможно написать тесты, они должны быть. Для Continuous Integration используется система Travis CI.

Примеры конфигов:

В Readme проекта добавляется значок с текущим статусом прохождения тестов. Если Pull Request не проходит тесты, он не сливается в develop.

Travis CI