Значительная часть открытых проектов начинается с публикации кода на GitHub. В настоящее время именно этот хостинг занимает ведущее положение в экосистеме Open Source — платформа включает в себя всё необходимое для управления версиями, проверки кода и интеграции с другими инструментами.

Как эффективно начать работу на этом хостинге? Что должен знать начинающий пользователь ресурса? Советы новичкам даёт Джоно Бэкон, директор по коммуникациям проекта GitHub.

Определитесь с лицензией

Первое, что нужно сделать — выбрать лицензию для своего проекта. К сожалению, этим часто пренебрегают — на GitHub есть слишком много проектов с отсутствующей лицензией, что создаёт определённые проблемы для людей, желающих присоединиться к разработке.

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

Стоит избегать и другой крайности — не надо придумывать собственную лицензию. Значительно лучше воспользоваться одной из широко известных. Тем более, что их тексты можно без труда найти на специализированных ресурсах.

Создайте файл README.md

Это чрезвычайно важный документ, в котором автор может представить потенциальным участникам свой проект и рассказать им о своей цели. Если его нет, то людям будет непонятно, чего именно от них хотят.

Для написания файла README.md используется язык разметки Markdown. Он исключительно прост в освоении, но позволяет преобразовать текст в другие форматы.

Создайте файл CONTRIBUTING.md

Этот файл чем-то похож на предыдущий, в нём содержится информация о том, каким образом люди могут участвовать в проекте. Но, в отличие от README.md, в нём размещаются подробные сведения — по сути пошаговая инструкция.

В CONTRIBUTING.md следует написать, каким образом участники могут клонировать код, вносить в него свои изменения, куда обращаться за поддержкой...

Используйте ярлык Bitesize

Даже если новому участнику в общих чертах всё более-менее понятно, то ему всё равно затруднительно сразу приступить к решению каких-то практических проблем проекта. Конечно, в его распоряжении есть перечень задач, но без глубокого погружения в контекст он бесполезен.

Чтобы новички могли быстро начать работать, целесообразно применять специальный ярлык Bitesize, которым помечаются незначительные и относительно изолированные задачи, не требующие глубокого погружения в проект. Опытным участникам они уже не интересны, а начинающие смогут сразу приступить к делу.

Используйте флаги для вопросов

Одна из полезных, но нечасто используемых возможностей GitHub — применение специальных флагов для маркировки отдельных вопросов. Язык Markdown позволяет это сделать.

Такие методы полезны, если текущая проблема может быть разбита на ряд относительно независимых задач, каждая из которых должна быть решена. Разумеется, способ оформления не носит критичного характера, но оно добавляет проекту некоторое удобство, что обязательно будет оценено его участниками и положительно скажется на скорости разработки.

Используйте шаблоны

Одна из самых неприятных проблем проекта может заключаться в том, что пользователи просят исправить ошибки, которые не особенно важны для разработчиков. Например, какие-то незначительные шероховатости в интерфейсе.

В идеале, баг-репорты должны содержать следующую информацию:
-  краткое резюме вопроса;
 - подробное описание ошибки;
 - ожидаемый результат от её исправления;
 - подробная инструкция, которая поможет разработчику воспроизвести проблему;
 - дополнительная информация о системе пользователя.

Как правило, пользователи редко именно так структурируют свои сообщения. Для устранения этого препятствия GitHub позволяет создавать специальные шаблоны для отчётов, которые облегчат разработчикам взаимодействие с тестерами.

Используйте вики

 Один из важнейших аспектов создания сильного сообщества — предоставление потенциальным участникам максимально полной и подробной информации. Документация о проекте должна содержать следующее:
  • пошаговая инструкция о совместной работе над кодом;
  • стандарты кодирования;
  • структуризация кода;
  • информация о принятых в проекте правилах общения, принятия решений и т. д.
В каждом проекте GitHub уже имеется встроенная вики, которая является идеальным местом для такого контента. Для её успешного ведения следует разделить нагрузку среди всех опытных участников.

Создайте сайт

Несмотря на то что вики — прекрасное место для документации, она не может заменить обычного веб-сайта проекта. Вики удобна прежде всего специалистам, а обычным пользователям будет непросто разобраться в структуре этого ресурса.

GitHub представляет всем проектам бесплатный сервис для создания сайта. Система управления контентом основана на Jekyll, что позволяет легко создать и поддерживать работу сайта.

Используйте системы планирования

К сожалению, в настоящее время GitHub не включает в себя полный набор инструментов для планирования проекта. Однако эта функция весьма востребована и выход из положения есть — воспользоваться сторонним сервисом, который может интегрироваться с GitHub.

Бэкон предлагает два варианта, из которых следует выбрать наиболее подходящий:
ZenHub — комплексная система управления проектами, заметно расширяющая возможности GitHub;
Waffle — платформа в стиле Trello, полностью интегрируемая в GitHub.

Используйте непрерывную интеграцию

Непрерывная интеграция (continuous integration) заключается в автоматической сборке и тестировании продукта в различных средах. На практике это означает, что на отдельной машине постоянно функционирует некая служба, которая получает с GitHub код, выполняет все необходимые операции и предоставляет для анализа результат.

Альтернатива непрерывной интеграции — делать всё в ручном режиме, что требует слишком много ресурсов. Да и непросто найти разработчиков, которые согласятся регулярно выполнять довольно рутинные и неинтересные операции.

Если у проекта нет возможности выделить для этой цели собственный отдельный сервер, то хорошее решение — использовать сайт Travis CI. Следует просто зайти на него при помощи своего аккаунта на GitHub и определить, какие именно отчёты желательно получать. Всё остальное будет сделано автоматически.