{"id":20514995,"url":"https://github.com/flexberry/rfcs","last_synced_at":"2025-03-05T23:17:31.162Z","repository":{"id":46709035,"uuid":"118867804","full_name":"Flexberry/rfcs","owner":"Flexberry","description":"RFCs for changes to Flexberry","archived":false,"fork":false,"pushed_at":"2023-07-25T10:19:51.000Z","size":40,"stargazers_count":2,"open_issues_count":13,"forks_count":8,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-01-16T09:51:56.747Z","etag":null,"topics":["rfc-process"],"latest_commit_sha":null,"homepage":"https://github.com/flexberry-app-sandbox","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Flexberry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-25T05:40:56.000Z","updated_at":"2023-07-25T10:19:54.000Z","dependencies_parsed_at":"2025-01-16T09:41:15.105Z","dependency_job_id":"156b4578-cb76-43f8-ab02-3936a6f3d852","html_url":"https://github.com/Flexberry/rfcs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flexberry%2Frfcs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flexberry%2Frfcs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flexberry%2Frfcs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flexberry%2Frfcs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Flexberry","download_url":"https://codeload.github.com/Flexberry/rfcs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242117692,"owners_count":20074438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rfc-process"],"created_at":"2024-11-15T21:19:10.656Z","updated_at":"2025-03-05T23:17:31.137Z","avatar_url":"https://github.com/Flexberry.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flexberry RFC\n\nМножество изменений, включая исправления ошибок и текста документации,\nмогут быть выполнены и проверены через обычный механизм пулл реквестов\nна GitHub.\n\nОднако некоторые изменения являются более \"существенными\" и соответственно\nтребуют предварительного проектирования и согласования с основной командой \nразработки платформы Flexberry.\n\nПроцесс запросов на комментарии (RFC - Request For Comments) обеспечивает\nвозможность согласованного и контролируемого принятия существенных \nизменений, касающихся платформы Flexberry.\n\n[Список обсуждаемых RFC](https://github.com/Flexberry/rfcs/pulls)\n\n## Когда необходимо использовать RFC\nНеобходимо использовать процесс RFC в случае желания или необходимости\nвнести более \"существенные\" изменения в любые фреймворки, подсистемы,\nбиблиотеки или документацию, входящие в состав платформы Flexberry.\n\nПонятие \"существенных\" изменений формируется нормами сообщества, но обычно\nвключает в себя следующее:\n\n   - Изменения в архитектуре фреймворков или подсистем, вохдящих в состав\n     платформы.\n   - Публикация нового или изменение существующего API.\n   - Добавление новых возможностей, механизмов или инструментов.\n   - Удаление функционала, вошедшего в опубликованные ранее релизы.\n   - Внедрение новых концепций или соглашений, даже если они не влекут за\n     собой изменения в исходном коде.\n\nПримеры изменений, которые не требуют RFC:\n\n   - Рефакторинг, переименования и т.п.\n   - Добавление или удаление сообщений об ошибках или предупрежденях.\n   - Доработки, связанные исключительно с улучшением качественных \n     показателей (вопросы производительности, поддержка различными\n     браузерами и т.п.).\n   - Изменения, которые никаким образом не могут быть замечены конечными\n     пользователями платформы, а только разработчиками.\n   \nПулл реквесты в какие-либо репозитории платформы с реализацией новых \nвозможностей без предварительного обсуждения через процесс RFC могут быть \nзакрыты с просьбой предварительго создания RFC.\n\n## Получение обратной связи перед созданием RFC\n\nЧасто полезно получить обратную связь перед детальным проектированием и\nнаписанием RFC. **Вы можете создать [обсуждение (issue)] в данном репозитории,\nчтобы организовать \"высокоуровневое\" обсуждение проблемы**. Это может \nпомочь сформулировать конкретное проектное решение в рамках RFC, а также\nпонять необходимость создания RFC.\n\nКроме того, по некоторым вопросам у основной команды разработки платформы\nмогут иметься принципиальные соображения, которые изначально могут быть\nнеочевидны для тех, кто хочет добавить в платформу новые возмжности или \nизменить существующие.\n\n## Что представляет собой процесс RFC\n\nПеред добавлением новых возможностей или \"существенных\" изменений, \nкасающихся платформы Flexberry, необходимо, чтобы в данном репозитории\nбыл добавлен соответствующий RFC в виде файла с использванием\nmarkdown-разметки. После добавления RFC в данный репозиторий он становится\n\"активным\" и может быть реализован, что означает включение соответствующего \nфункционала в те или иные части платформы.\n\n* Сделайте форк репозитория https://github.com/Flexberry/rfcs.\n* Скопируйте файл `0000-template.md` в `text/0000-my-feature.md` (где\n'my-feature' требуется заменить на описание соответствующего функционала\n(на английском языке); номер RFC присваивать на данном шаге не нужно).\n* Заполните RFC. В тексте должно быть достаточно деталей: **RFC, в\nкоторых отсутствует достаточное обоснование, демонстрация понимания\nвлияния на архитектуру соответствующих частей платформы или достаточное \nописание недостатков и альтернатив для предложенного решения, с большой\nвероятностью не будут приняты**.\n* Создайте пулл реквест. В первом комментарии к пулл реквесту необходимо\nнаписать слово \"Выполнено\" (или \"Rendered\") со ссылкой на RFC в Вашем\nрепозитории (в форке данного репозитория) ([Пример]). После создания пулл \nреквеста RFC получит обратную связь от основной команды разработки платформы\nи от всего сообщества в комментариях к пулл реквесту. Автор должен быть готов\nаргументированно отвечать на различные вопросы из комментариев.\n* С учетом высказанных замечаний при необходимости исправьте текст RFC\nв дополнительных коммитах. RFC, которые получили широкую поддержку в виде\nмножества лайков и комментариев, с большей вероятностью будут приняты.\n* В конце концов основная команда разработки платформы примет решение о\nтом, что проектное решение из RFC может быть включено в платформу, либо\nаргументированно отклонит предложенное решение.\n* Для RFC, которые являются кандидатами для включения в платформу, инициируется\nв финальный период, который длится 7 дней. Начало этого периода отмечается\nв виде соответствующего комментария и метки в пулл реквесте RFC. Кроме того,\nв официальном аккаунте платформы Flexberry на [Твиттер], а также в официальных \nгруппах платформы [ВКонтакте] и [Facebook], появится пост о соответствующием \nRFC для привлечения внимания сообщества.\n* RFC может быть изменен на основе обратной связи от основной команды\nразработки платформы или от сообщества. Исправление существенных замечаний \nможет инициировать новый финальный период RFC.\n* RFC может быть отклонен основной командой разработки платформы на основании\nрезультатов публичного обсуждения, если по результатам обсуждения будет\nвыявлено соответствующее обоснование для отклонения. В этом случае один из\nчленов основной команды разработки платформы закрывает соответствующий пулл \nреквест.\n* RFC принимается по завершении финального периода. Основная команда\nразработки платформы в этом случае выполняет мердж пулл реквеста вместе с\nуказанием фактического номера пулл-реквеста в тексте RFC и в названии\nсоответствующего markdown-файла. После этого RFC становится \"активным\".\n\n## Жизненный цикл RFC\n\nКогда RFC становится активным, авторы могут выполнить соответствующую\nреализацию заявленного в RFC функционала или исправлений, создав необходимый \nпулл реквест в соответствующий репозиторий с исходным кодом нужной части\nплатформы. Активный статус RFC еще не означает, что соответствующие правки в\nконечном итоге будут обязательно включены в исходный код платформы. Это лишь\nозначает, что основная команда разработки платформы согласилась с RFC в\nпринципе и согласна включить соответствующие правки в исходный код.\n\nКроме того, активный статус RFC ничего не говорит о приоритете его реализации.\nТакже этот статус не говорит о том, что кто-то вообще работает над реализацией\nсоответствующего функционала RFC.\n\nМодификация активных RFC может быть выполнена при помощи последующих пулл\nреквестов. Мы стремимся к тому, чтобы каждый RFC отражал конечное проектное\nрешение; но природа процесса разработки платформы такова, что мы не можем\nво всех случаях ожидать полного соответствия описанного в RFC проектного\nрешения и конечного результата на уровне исходного кода. Более того, мы\nстараемся поддерживать соответствие каждого документа RFC и функицонала,\nкоторый должен быть реализован согласно имеющемуся плану развития платформы.\nСоответствующие изменения текста документа RFC выполняются в последующих пулл\nреквестах в данный репозиторий.\n\n## Реализация RFC\n\nАвтор RFC не обязан выполнять реализацию заявленных в RFC функционала и\nизменений. Безусловно, автор RFC (как и любой другой разработчик) может\nпредложить реализацию заявленного в RFC функционала в виде соответствующего\nпулл реквеста в нужные репозитории платформы, после того как RFC становится\nактивным.\n\nЕсли Вы заинтересованы реализовать активный RFC, но не знаете, работает ли\nкто-то над соответствующим RFC, не стесняйтесь спросить об этом (например,\nоставив комментарий в обсуждении (issue), связанным с соответствующим RFC).\n\n## Проверка RFC\n\nКаждую неделю основная команда разработки старается проверить некоторые\nиз открытых пулл реквестов с RFC.\n\nО каждом принятом (перешедшим в статус активного) RFC основная команда\nразработки сообщает в официальных аккаунтах и группах в социальных сетях.\nПо каждому активному RFC назначается ответственный из основной команды\nразработки платформы, который будет отслеживать и курировать выполнение\nсоответствующего RFC. Назначение ответственного отражается в комментариях\nк соответствующему пулл реквесту с RFC.\n\n## Примеры\n\n* Примеры пулл реквестов с RFC: https://github.com/emberjs/rfcs/pulls\n* Примеры предварительных обсуждений (issues) перед созданием RFC: https://github.com/emberjs/rfcs/issues\n* Примеры текстов RFC: https://github.com/emberjs/rfcs/tree/master/text\n\n**Создание процесса RFC платформы Flexberry вдохновлено [процессом RFC фреймворка Ember.js](https://github.com/emberjs/rfcs)**.\n\n[Пример]: https://github.com/emberjs/rfcs/pull/294#issue-288248080\n[обсуждение (issue)]: https://github.com/Flexberry/rfcs/issues\n[Твиттер]: https://twitter.com/Flexberry\n[ВКонтакте]: https://vk.com/flexberry\n[Facebook]: https://www.facebook.com/groups/Flexberry/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflexberry%2Frfcs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflexberry%2Frfcs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflexberry%2Frfcs/lists"}