Этапы проекта - Code-for-Russia/How-to-start GitHub Wiki

  1. Придумать идею проекта:
  2. Добавить краткое описание идеи проекта в разделе Issues (см шаблон идеи проекта) этого репозитория.
  3. В ходе последующей дискуссии с другими заинтересованными участниками уточнить: название, краткое описание, цели и примерную реализацию. Мы, как сообщество, постараемся пригласить внешнего эксперта для валидации идеи.
  4. Сформировать команду проекта.
  5. Подготовить один или несколько RFC (request for comments) в Google Docs, прикрепив ссылку на него в исходный issue с описанием идеи проекта. RFC содержит технические детали предлагаемого проекта и соответствует следующим критериям:
    • список авторов (username);
    • список рецензентов (хотя бы 3; для первых проектов возможно меньше);
    • содержит мотивационную часть проекта;
    • формулирование проблемы;
    • критерии успеха;
    • описание технической части более детально: архитектура, компоненты, их связи, используемые технологии;
    • список артефактов (deliverables, осязаемых результатов работы) с примерными сроками;
    • цель RFC - пригласить более опытных коллег к обсуждению и для валидации технических аспектов предлагаемой работы. Рецензенты в разумные сроки готовят свои замечания и обсуждают их с авторами. После одобрения рецензентами начинается реализация проекта;
    • любой участник сообщества может комментировать RFC документ, предлагая улучшения или уточняя детали;
    • финальное обсуждение RFC может проходить в формате Zoom/Telegram call'а, в рамках которого проясняются все моменты и уточняется реализация.
  6. Разработка. Этапы разработки могут зависеть от выбора языка программирования, платформы и т.д. Не ограничивая общности, только рекомендуем лучшие практики для работы, которые поддерживаются GitHub:
    • Trunk-based development in Git - упрощенная модель git branching, которая подразумевает 1 главную ветку и коротко живущие ветки разработчиков, которые сливают их в главную ветки через pull requests (PR).
    • PR проходят code review
    • Наличие unit tests для важных участков кода. В идеале - другие типы тестов: интеграционные, нагрузочные и т.п.
    • Continuous Integration/Delivery (CI/CD)
    • Семантическое версионирование релизов
  7. Разворачивание. Подразумевая, что проект представляет собой сервис/сайт/API и т.п. На этом этапе проект требует внешнего финансирования. Источниками могут быть:
  8. Поддержка TBA...