{"id":20263008,"url":"https://github.com/cppmicroservices/rfcs","last_synced_at":"2025-03-03T19:57:54.427Z","repository":{"id":36482740,"uuid":"139403709","full_name":"CppMicroServices/rfcs","owner":"CppMicroServices","description":"RFCs for changes to CppMicroServices","archived":false,"fork":false,"pushed_at":"2024-12-18T18:39:07.000Z","size":1429,"stargazers_count":0,"open_issues_count":9,"forks_count":8,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-01-14T04:42:48.000Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/CppMicroServices.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-07-02T07:00:34.000Z","updated_at":"2024-12-18T18:39:11.000Z","dependencies_parsed_at":"2024-06-05T20:31:36.645Z","dependency_job_id":"d200157d-bc24-4400-8482-752eb04ffe12","html_url":"https://github.com/CppMicroServices/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/CppMicroServices%2Frfcs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CppMicroServices%2Frfcs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CppMicroServices%2Frfcs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CppMicroServices%2Frfcs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CppMicroServices","download_url":"https://codeload.github.com/CppMicroServices/rfcs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241731745,"owners_count":20010781,"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":[],"created_at":"2024-11-14T11:32:54.567Z","updated_at":"2025-03-03T19:57:54.400Z","avatar_url":"https://github.com/CppMicroServices.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# CppMicroServices RFCs\n\nMany changes, including bug fixes and documentation improvements can be\nimplemented and reviewed via the normal GitHub pull request workflow.\n\nSome changes though are \"substantial\", and we ask that these be put\nthrough a bit of a design process and produce a consensus among the\nCppMicroServices core team.\n\nThe \"RFC\" (request for comments) process is intended to provide a\nconsistent and controlled path for new features to enter the framework.\n\n[Active RFC List](https://github.com/CppMicroServices/rfcs/pulls)\n\n## When you need to follow this process\n\nYou need to follow this process if you intend to make \"substantial\"\nchanges to CppMicroServices or its documentation. What constitutes a\n\"substantial\" change is evolving based on community norms, but may\ninclude the following.\n\n   - A new feature that creates new API surface area.\n   - The removal of features that already shipped as part of the release.\n   - The introduction of new idiomatic usage or conventions, even if they\n     do not include code changes to CppMicroServices itself.\n\nSome changes do not require an RFC:\n\n   - Rephrasing, reorganizing or refactoring\n   - Additions only likely to be _noticed by_ other implementors-of-CppMicroServices,\ninvisible to users-of-CppMicroServices.\n\nIf you submit a pull request to implement a new feature without going\nthrough the RFC process, it may be closed with a polite request to\nsubmit an RFC first.\n\n## Gathering feedback before submitting\n\nIt's often helpful to get feedback on your concept before diving into the\nlevel of API design detail required for an RFC. **You may open an\nissue on this repo to start a high-level discussion**, with the goal of\neventually formulating an RFC pull request with the specific implementation\ndesign.\n\n## What the process is\n\nIn short, to get a major feature added to CppMicroServices, one must first get the\nRFC merged into the RFC repo as a markdown file. At that point the RFC\nis 'active' and may be implemented with the goal of eventual inclusion\ninto CppMicroServices.\n\n* Fork the RFC repo http://github.com/CppMicroServices/rfcs\n* Copy `0000-template.md` to `text/0000-my-feature.md` (where\n'my-feature' is descriptive. don't assign an RFC number yet).\n* Fill in the RFC. Put care into the details: **Typically, RFCs will have\nconvincing motivation, demonstrate understanding of the impact of the design,\nand detail the drawbacks or alternatives**.\n* You can also choose to flesh out the design more formally - detailing the\nRequirements, Use Cases Analysis, Design Cases, Architectural Design etc.\n* Submit a pull request. As a pull request the RFC will receive design\nfeedback from the core team and the larger community, and the author should\nbe prepared to revise it in response.\n* In a subsequent commit to the pull request, fill in the **RFC PR** header\nof the document `text/0000-my-feature.md` with the URL of the pull request.\n* At some point after the submission of the pull request, \nRFCs that are candidates for inclusion in CppMicroServices will enter a\n\"final comment period\" (FCP) lasting about two weeks. At-least three members of\nthe core team will comment on the RFC during this window, if they hadn't done before.\nThe beginning of this period will be signaled with a comment and tag on the RFC's\npull request.\n* An RFC may be rejected by the core team after the FCP and comments have been made\nsummarizing the rationale for rejection. A member of the core team should then close\nthe RFC's associated pull request.\n* An RFC may be accepted after the FCP.  A core team member\nwill rename the RFC from `text/0000-my-feature.md` to `text/XXXX-my-feature.md`,\nwhere `XXXX` represents `the count of already approved pull requests + 1`. For example,\nif the last approved RFC was named `text/0037-foo-feature.md`, the current approved\nRFC will be renamed `text/0038-bar-feature.md`. Then, that member will merge the RFC's\nassociated pull request, at which point the RFC will become 'active'.\n\n## The RFC life-cycle\n\nOnce an RFC becomes active then authors may implement it and submit the\nfeature as a pull request to the CppMicroServices repo. Becoming 'active'\nis not a rubber stamp, and in particular still does not mean the feature will\nultimately be merged; it does mean that the core team has agreed to it in\nprinciple and are amenable to merging it.\n\nFurthermore, the fact that a given RFC has been accepted and is\n'active' implies nothing about what priority is assigned to its\nimplementation, nor whether anybody is currently working on it.\n\nModifications to active RFC's can be done in followup PR's. We strive\nto write each RFC in a manner that it will reflect the final design of\nthe feature; but the nature of the process means that we cannot expect\nevery merged RFC to actually reflect what the end result will be at\nthe time of the next major release; therefore we try to keep each RFC\ndocument somewhat in sync with the Framework feature as planned,\ntracking such changes via followup pull requests to the document.\n\n## Implementing an RFC\n\nThe author of an RFC is not obligated to implement it. Of course, the\nRFC author (like any other developer) is welcome to post an\nimplementation for review after the RFC has been accepted.\n\nIf you are interested in working on the implementation for an 'active'\nRFC, but cannot determine if someone else is already working on it,\nfeel free to ask (e.g. by leaving a comment on the associated issue).\n\n**CppMicroServices' RFC process owes its inspiration to the [Rust RFC process] and [Ember RFC process]**\n\n[Rust RFC process]: https://github.com/rust-lang/rfcs\n[Ember RFC process]: https://github.com/emberjs/rfcs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcppmicroservices%2Frfcs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcppmicroservices%2Frfcs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcppmicroservices%2Frfcs/lists"}