Множество изменений, включая исправления ошибок и текста документации, могут быть выполнены и проверены через обычный механизм пулл реквестов на GitHub.
Однако некоторые изменения являются более "существенными" и соответственно требуют предварительного проектирования и согласования с основной командой разработки платформы Flexberry.
Процесс запросов на комментарии (RFC - Request For Comments) обеспечивает возможность согласованного и контролируемого принятия существенных изменений, касающихся платформы Flexberry.
Необходимо использовать процесс RFC в случае желания или необходимости внести более "существенные" изменения в любые фреймворки, подсистемы, библиотеки или документацию, входящие в состав платформы Flexberry.
Понятие "существенных" изменений формируется нормами сообщества, но обычно включает в себя следующее:
Примеры изменений, которые не требуют RFC:
Пулл реквесты в какие-либо репозитории платформы с реализацией новых возможностей без предварительного обсуждения через процесс RFC могут быть закрыты с просьбой предварительго создания RFC.
Часто полезно получить обратную связь перед детальным проектированием и написанием RFC. Вы можете создать обсуждение (issue) в данном репозитории, чтобы организовать "высокоуровневое" обсуждение проблемы. Это может помочь сформулировать конкретное проектное решение в рамках RFC, а также понять необходимость создания RFC.
Кроме того, по некоторым вопросам у основной команды разработки платформы могут иметься принципиальные соображения, которые изначально могут быть неочевидны для тех, кто хочет добавить в платформу новые возмжности или изменить существующие.
Перед добавлением новых возможностей или "существенных" изменений, касающихся платформы Flexberry, необходимо, чтобы в данном репозитории был добавлен соответствующий RFC в виде файла с использванием markdown-разметки. После добавления RFC в данный репозиторий он становится "активным" и может быть реализован, что означает включение соответствующего функционала в те или иные части платформы.
0000-template.md
в text/0000-my-feature.md
(где
'my-feature' требуется заменить на описание соответствующего функционала
(на английском языке); номер 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 платформы Flexberry вдохновлено процессом RFC фреймворка Ember.js.