Skip to content

Flexberry/rfcs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

Flexberry RFC

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

Однако некоторые изменения являются более "существенными" и соответственно требуют предварительного проектирования и согласования с основной командой разработки платформы Flexberry.

Процесс запросов на комментарии (RFC - Request For Comments) обеспечивает возможность согласованного и контролируемого принятия существенных изменений, касающихся платформы Flexberry.

Список обсуждаемых RFC

Когда необходимо использовать RFC

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

Понятие "существенных" изменений формируется нормами сообщества, но обычно включает в себя следующее:

  • Изменения в архитектуре фреймворков или подсистем, вохдящих в состав платформы.
  • Публикация нового или изменение существующего API.
  • Добавление новых возможностей, механизмов или инструментов.
  • Удаление функционала, вошедшего в опубликованные ранее релизы.
  • Внедрение новых концепций или соглашений, даже если они не влекут за собой изменения в исходном коде.

Примеры изменений, которые не требуют RFC:

  • Рефакторинг, переименования и т.п.
  • Добавление или удаление сообщений об ошибках или предупрежденях.
  • Доработки, связанные исключительно с улучшением качественных показателей (вопросы производительности, поддержка различными браузерами и т.п.).
  • Изменения, которые никаким образом не могут быть замечены конечными пользователями платформы, а только разработчиками.

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

Получение обратной связи перед созданием RFC

Часто полезно получить обратную связь перед детальным проектированием и написанием RFC. Вы можете создать обсуждение (issue) в данном репозитории, чтобы организовать "высокоуровневое" обсуждение проблемы. Это может помочь сформулировать конкретное проектное решение в рамках RFC, а также понять необходимость создания RFC.

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

Что представляет собой процесс RFC

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

  • Сделайте форк репозитория https://github.com/Flexberry/rfcs.
  • Скопируйте файл 0000-template.md в text/0000-my-feature.md (где 'my-feature' требуется заменить на описание соответствующего функционала (на английском языке); номер RFC присваивать на данном шаге не нужно).
  • Заполните RFC. В тексте должно быть достаточно деталей: RFC, в которых отсутствует достаточное обоснование, демонстрация понимания влияния на архитектуру соответствующих частей платформы или достаточное описание недостатков и альтернатив для предложенного решения, с большой вероятностью не будут приняты.
  • Создайте пулл реквест. В первом комментарии к пулл реквесту необходимо написать слово "Выполнено" (или "Rendered") со ссылкой на RFC в Вашем репозитории (в форке данного репозитория) (Пример). После создания пулл реквеста RFC получит обратную связь от основной команды разработки платформы и от всего сообщества в комментариях к пулл реквесту. Автор должен быть готов аргументированно отвечать на различные вопросы из комментариев.
  • С учетом высказанных замечаний при необходимости исправьте текст RFC в дополнительных коммитах. RFC, которые получили широкую поддержку в виде множества лайков и комментариев, с большей вероятностью будут приняты.
  • В конце концов основная команда разработки платформы примет решение о том, что проектное решение из RFC может быть включено в платформу, либо аргументированно отклонит предложенное решение.
  • Для RFC, которые являются кандидатами для включения в платформу, инициируется в финальный период, который длится 7 дней. Начало этого периода отмечается в виде соответствующего комментария и метки в пулл реквесте RFC. Кроме того, в официальном аккаунте платформы Flexberry на Твиттер, а также в официальных группах платформы ВКонтакте и Facebook, появится пост о соответствующием RFC для привлечения внимания сообщества.
  • RFC может быть изменен на основе обратной связи от основной команды разработки платформы или от сообщества. Исправление существенных замечаний может инициировать новый финальный период RFC.
  • RFC может быть отклонен основной командой разработки платформы на основании результатов публичного обсуждения, если по результатам обсуждения будет выявлено соответствующее обоснование для отклонения. В этом случае один из членов основной команды разработки платформы закрывает соответствующий пулл реквест.
  • RFC принимается по завершении финального периода. Основная команда разработки платформы в этом случае выполняет мердж пулл реквеста вместе с указанием фактического номера пулл-реквеста в тексте RFC и в названии соответствующего markdown-файла. После этого RFC становится "активным".

Жизненный цикл RFC

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

Кроме того, активный статус RFC ничего не говорит о приоритете его реализации. Также этот статус не говорит о том, что кто-то вообще работает над реализацией соответствующего функционала RFC.

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

Реализация RFC

Автор RFC не обязан выполнять реализацию заявленных в RFC функционала и изменений. Безусловно, автор RFC (как и любой другой разработчик) может предложить реализацию заявленного в RFC функционала в виде соответствующего пулл реквеста в нужные репозитории платформы, после того как RFC становится активным.

Если Вы заинтересованы реализовать активный RFC, но не знаете, работает ли кто-то над соответствующим RFC, не стесняйтесь спросить об этом (например, оставив комментарий в обсуждении (issue), связанным с соответствующим RFC).

Проверка RFC

Каждую неделю основная команда разработки старается проверить некоторые из открытых пулл реквестов с RFC.

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

Примеры

Создание процесса RFC платформы Flexberry вдохновлено процессом RFC фреймворка Ember.js.

About

RFCs for changes to Flexberry

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •