{"id":19259253,"url":"https://github.com/concourse/rfcs","last_synced_at":"2026-03-01T11:33:39.576Z","repository":{"id":31452372,"uuid":"127932765","full_name":"concourse/rfcs","owner":"concourse","description":"An open process for designing substantial changes to Concourse.","archived":false,"fork":false,"pushed_at":"2025-10-24T14:47:01.000Z","size":327,"stargazers_count":54,"open_issues_count":5,"forks_count":39,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-10-24T16:29:54.584Z","etag":null,"topics":["rfc"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/concourse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-04-03T15:55:26.000Z","updated_at":"2025-10-24T14:47:06.000Z","dependencies_parsed_at":"2025-04-25T20:25:13.158Z","dependency_job_id":"fd80ceb0-f289-45b9-999b-d2efcf3b781d","html_url":"https://github.com/concourse/rfcs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/concourse/rfcs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Frfcs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Frfcs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Frfcs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Frfcs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/concourse","download_url":"https://codeload.github.com/concourse/rfcs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Frfcs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29968506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T10:55:55.490Z","status":"ssl_error","status_checked_at":"2026-03-01T10:55:55.175Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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"],"created_at":"2024-11-09T19:15:51.225Z","updated_at":"2026-03-01T11:33:39.560Z","avatar_url":"https://github.com/concourse.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Concourse RFCs\n\nThe Concourse project uses the RFC (request for comments) process for\ncollaborating on substantial changes to Concourse. RFCs enable contributors to\ncollaborate during the design process, providing clarity and validation before\njumping to implementation.\n\n\n## When the RFC process is necessary\n\nThe RFC process is necessary for changes which have a substantial impact on end\nusers, operators, or contributors. \"Substantial\" is subjective, but it\ngenerally includes:\n\n* Changes to core workflow functionality (pipelines, tasks, new concepts).\n* Changes to how Concourse is packaged, distributed, or configured.\n* Changes with significant architectural implications (new runtimes, auth\n  schemes, etc.).\n* Changes which modify or introduce officially supported interfaces (HTTP APIs, external integrations, etc).\n\nAn RFC is not necessary for changes which have narrow scope and don't leave\nmuch to be discussed:\n\n* Bug fixes and optimizations with no semantic change.\n* Small features which only impact a narrow use case and affect users in an\n  obvious way.\n\nThe RFC process aims to prevent wasted time and effort on substantial changes\nthat end up being sent back to the drawing board. If your change takes minimal\neffort, or if you don't mind potentially scrapping it and starting over, feel\nfree to skip this process. Do note however that pull requests may be closed\nwith a polite request to submit an RFC.\n\nIf you're not sure whether to open an RFC for a change you'd like to propose,\nfeel free to [ask in `#dev`](https://discord.gg/MeRxXKW)!\n\n\n## Submitting an RFC\n\n1. Fork this repository.\n\n1. Copy the `000-example` RFC template, naming it something like\n   `000-my-proposal`.\n\n1. Write your proposal in `000-my-proposal/proposal.md`.\n\n    * Consult the [Concourse design principles](DESIGN_PRINCIPLES.md) to guide\n      your design.\n\n    * Include any dependent assets (examples, screenshots) under your RFC\n      directory.\n\n1. Submit a pull request. The pull request number determines the RFC number.\n\n    * Keep the description light; your proposal should contain all relevant\n      information. Feel free to link to any relevant GitHub issues, since that\n      helps with networking.\n\n1. Rename the proposal directory to match the pull request number, e.g.\n   `123-my-proposal`.\n\n   For convenience, update the PR description to link to the rendered proposal\n   in the pull request body like so:\n\n   ```\n   [Rendered](https://github.com/{YOUR NAME}/rfcs/blob/{YOUR BRANCH}/123-my-proposal/proposal.md)\n   ```\n\n1. Feel free to review your own RFC and leave comments and questions as you\n   reason about the problem and reach key decisions. Doing so helps build a\n   public record of the decision-making process.\n\n1. The RFC will be assigned to a member of the [**core** team][core-team]. The\n   assignee is responsible for providing feedback and eventually shepherding\n   the RFC through the [resolution process](#resolution). Reach out to your\n   RFC's assignee if you need any help with the RFC process.\n\n1. Collect user feedback and votes (GitHub reactions) for your own RFC by\n   linking to it in issues or contexts where it is relevant. Please be\n   respectful of other RFC authors and avoid vote brigading; diversity of\n   perspective is more important than having the most votes.\n\n   The [Concourse website](https://concourse-ci.org) lists open RFCs ranked by\n   GitHub reactions in order to increase exposure to end users. The goal of\n   ranking them is to focus attention on the RFCs most relevant to the\n   community, increasing clarity through user feedback and accelerating them to\n   resolution.\n\n1. Amend your proposal in response to feedback by pushing more commits to your\n   fork. Whenever possible, please make meaningful commits that summarize the\n   changes and reasoning (rather than rebasing and force-pushing all the time).\n\n\n## Reviewing RFCs\n\nConcourse users and contributors are encouraged to review RFCs alongside\nmembers of the core team. Feedback from diverse perspectives is necessary for\ndetermining a proposal's efficacy, impact, and priority. Reviewing RFCs is also\ngreat practice for [joining the core team][joining-a-team] someday!\n\nReviewers should focus on resolving open questions, surfacing risks and\ndrawbacks, and providing constructive critique of the overall approach. The\n[Concourse design principles](DESIGN_PRINCIPLES.md) serve as a guiding hand to\ndetermine the proposal's alignment with the Concourse philosophy.\n\nReviewers should leave questions and comments on individual lines via PR review\nso that discussions may be threaded and marked as resolved. Leaving GitHub\nreactions also helps to measure consensus without cluttering the comment thread\nif you don't have much more to add.\n\n\n### Resolution\n\nThe review process should lead to consensus from three different perspectives:\n\n* Members of the **core** team have determined whether the proposal fits with\n  the Concourse design principles and whether the changes sufficiently improve\n  the product.\n* The **maintainers** have determined whether the proposal is worth\n  maintaining, i.e. whether the benefits of the proposal outweigh any technical\n  tradeoffs, or if it introduces an unsustainable maintenance burden.\n* Enough community input has been provided to validate the need and efficacy of\n  the proposal.\n\nOnce the review status stabilizes and clarity has been reached, the core team\nassignee will grant the RFC one of the following labels:\n\n* **resolution/merge**: the proposal will be merged; there are no outstanding\n  objections, and implementation can begin as soon as the RFC is merged.\n* **resolution/close**: the proposal will be closed.\n* **resolution/postpone**: resolution will be deferred until a later time when\n  the motivating factors may have changed.\n\nThese labels initiate a two-week quiet period, and any final feedback will be\nsought by bumping the RFC to the top of the RFC table on the Concourse website.\nNo further changes should be made to the proposal during this period.\n\nIf there is a challenge to the resolution during the quiet period the label may\nbe removed at the discretion of the assignee, and the RFC process will continue\nas before.\n\n\n## Implementing an RFC\n\nWhen an RFC is merged the core team assignee is responsible for opening an\nissue on the [Concourse repository](https://github.com/concourse/concourse) to\nkeep track of its implementation. The issue can be lightweight and just\nreference the RFC. The assignee must also add a link to the issue at the top of\nthe RFC's proposal document.\n\nThe [**maintainers** team][maintainers-team] is responsible for determining the\nproposal's priority by adding a **priority/high**, **priority/medium**, or\n**priority/low** label to the RFC's issue. Priority is an approximation of\noverall value and desired timeline for implementation.\n\nAn RFC author is not necessarily responsible for its implementation, though\nthey may volunteer. If the maintainers have sufficient bandwidth they may place\nit on their roadmap by prioritizing the issue in a GitHub project. Otherwise\nthe maintainers will add a **help wanted** label to the issue.\n\nIn any case, contributors may volunteer to implement a proposal provided that\nwork has not already begun. If you would like to volunteer, please leave a\ncomment on the issue to let others know!\n\nFrom there, the implementation process falls under the normal [Concourse\ndevelopment process][contributing].\n\n\n## Revising an RFC\n\nRFCs represent the planning phase. An RFC's proposal is not the source of truth\nfor the feature's documentation, and should not be revised to keep up with\nlater iterations after the initial proposal is implemented. A new RFC should be\nproposed for subsequent changes instead.\n\nIf an RFC is merged and later changes are deemed necessary prior to final (i.e.\nnon-experimental) implementation, a follow-up PR may be submitted that updates\nthe proposal in-place. In this case the RFC author must include a MAJOR.MINOR\nrevision number in the proposal and maintain a brief summary of changes at the\nbottom of the proposal.\n\n\n## License\n\nAll RFCs, and any accompanying code and example content, will fall under the\nApache v2 license present at the root of this repository.\n\n\n[joining-a-team]: https://github.com/concourse/governance#joining-a-team\n[core-team]: https://github.com/concourse/governance/blob/master/teams/core.yml\n[maintainers-team]: https://github.com/concourse/governance/blob/master/teams/maintainers.yml\n[contributing]: https://github.com/concourse/concourse/blob/master/CONTRIBUTING.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconcourse%2Frfcs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconcourse%2Frfcs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconcourse%2Frfcs/lists"}