Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: how changes in the spec are introduced #488

Merged
merged 57 commits into from
Mar 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
b93329f
added a new documentation
AceTheCreator Oct 7, 2022
d0e4985
Merge branch 'master' into docs
quetzalliwrites Oct 12, 2022
0edff5d
ehnaced docs
AceTheCreator Oct 12, 2022
00ce177
Merge branch 'master' into docs
quetzalliwrites Oct 17, 2022
6de33e5
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Oct 18, 2022
3027eb1
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Oct 18, 2022
0d82923
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Oct 18, 2022
8f6be9e
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Oct 18, 2022
59c57c3
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Oct 18, 2022
ebbbb75
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Oct 18, 2022
fdb5f02
Updated How changes in spec are introduced file
AceTheCreator Oct 18, 2022
6b1f18b
.
AceTheCreator Oct 18, 2022
f4efc63
Merge branch 'master' into docs
quetzalliwrites Oct 19, 2022
1aedfe9
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 7, 2022
08f1e37
Merge branch 'master' into docs
quetzalliwrites Nov 9, 2022
b85233e
updated docs
AceTheCreator Nov 11, 2022
11b44e0
Merge branch 'docs' of github.com:AceTheCreator/community into docs
AceTheCreator Nov 11, 2022
9ffa5b8
Merge branch 'master' into docs
quetzalliwrites Nov 15, 2022
274232b
enhanced the doc
AceTheCreator Nov 18, 2022
9570e24
Merge branch 'docs' of github.com:AceTheCreator/community into docs
AceTheCreator Nov 18, 2022
064543b
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
6b4932d
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
3b9ac8f
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
8e634da
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
5c16bdd
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
1953acf
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
00a9727
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
5dda8d8
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
5d9e1ac
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
2522b6a
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
46dfc2d
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
3040466
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
05dc526
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
791cc4b
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Nov 21, 2022
444b5ed
updated mermaid diagram with valid syntax
AceTheCreator Nov 21, 2022
9ccc457
Merge branch 'master' into docs
quetzalliwrites Nov 22, 2022
fb68107
edits
quetzalliwrites Nov 22, 2022
037a13c
more edits
quetzalliwrites Nov 22, 2022
e7bfcf2
Merge branch 'master' into docs
quetzalliwrites Nov 23, 2022
44e2229
docs readme
AceTheCreator Nov 25, 2022
bc79afc
.
AceTheCreator Nov 25, 2022
4280c3f
Merge branch 'master' into docs
quetzalliwrites Dec 3, 2022
0cfcf5d
Update docs/README.md
AceTheCreator Dec 5, 2022
6b48046
Merge branch 'master' into docs
quetzalliwrites Dec 10, 2022
614911c
Update docs/README.md
AceTheCreator Dec 12, 2022
32a340d
Update docs/README.md
AceTheCreator Dec 12, 2022
8e8874e
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Dec 12, 2022
cccd4b8
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Dec 12, 2022
68df1b4
Update docs/how-changes-in-the-spec-are-introduced.md
AceTheCreator Dec 12, 2022
f2a9a95
Merge branch 'master' into docs
quetzalliwrites Dec 14, 2022
46f790f
Merge branch 'master' into docs
quetzalliwrites Dec 20, 2022
87a1459
Merge branch 'master' of github.com:AceTheCreator/community into docs
AceTheCreator Jan 17, 2023
89b99e4
updated mermaid diagram
AceTheCreator Jan 17, 2023
eab8f24
Merge branches 'docs' and 'docs' of github.com:AceTheCreator/communit…
AceTheCreator Jan 17, 2023
9f13c57
Merge branch 'master' into docs
AceTheCreator Jan 18, 2023
db9a6b9
Merge branch 'master' into docs
quetzalliwrites Jan 23, 2023
ffbf9b6
Merge branch 'master' into docs
AceTheCreator Mar 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## Community Documentation

The community documentation directory helps the community collaboratively maintain a collection of helpful community-related documentation. From becoming an AsyncAPI contributor to becoming a TSC member, and beyond.
73 changes: 73 additions & 0 deletions docs/how-changes-in-the-spec-are-introduced.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@

## How spec changes are introduced
AsyncAPI Initiative always concentrates on the problems rather than the solution. This is because you are generally rather single-minded when you already have a solution in mind to a problem instead of fully diving into the issue, seeing alternatives, and finding the best solution. 

### RFCs & champions
Some changes, however, are "substantial," We ask that these be put through a bit of a design process and produce a consensus among the AsyncAPI contributors/maintainers. The "RFC" (request for comments) process is intended to provide a consistent and controlled path for new features to enter the project.

#### What is an RFC? 
RFC is a document that proposes an idea and serves as high-level documentation of the concept and its thinking.

AsyncAPI finds this valuable because it makes prototyping an idea with words easy and flexible rather than immediately diving into an idea. RFCs force champions to explore the idea, document it and create a proposal for bringing it to life.

#### Who is a champion?
A Champion takes ownership of an idea and follows the proposed process to make the idea a reality.

## Spec changes lifecycle
The motivation for the Changes process is to raise the visibility of planned changes and make coordination and planning efforts easier. It is nearly impossible to follow all changes in a big project such as AsyncAPI spec. By providing a mechanism for sharing changes, it is easier for contributors to know what is coming and to ensure that we can address the impacts of changes well before the release date. The spec changes lifecycle consist of 2 parts, as seen below.

### Change process

- The author submits the change proposal by creating a discussion about the proposed changes. The person or group proposing the change is responsible for providing the first draft of the changes. Ideally, it's preferable to make this draft available as a pull request before submitting the Change proposal so the community can evaluate the change. However, starting with an issue is also permitted if the full details are not worked out.

- The contributors/maintainers reviews the proposed change request. The goal of this check is to prove or disprove a problem and guide the discussion toward either rejection or a preferred solution.

- Implement the change. The author doesn't have to be the one to implement the change proposed but keep in mind that it might take a while before someone else does.

- Possibly iterate/refine as the community gets experience with your proposed changes. There may be some additional feedback about design choices that might be adjusted.

- Test implementation to gain confidence. When your change implementation is baked enough, and the solution seems desirable, there will be a compliant implementation with the AsyncAPI libraries and a test to gain confidence.

### How changes are introduced in spec: example

#### feat: added server variable object as a reusable object
Let's see how Daniel Kocot proposed and championed a feature for the next spec release.
- He started a discussion on why his proposal was made. [#707](https://github.com/asyncapi/spec/issues/707)
- He opened a PR for his proposed change, which was reviewed by the contributors/maintainers. [#717](https://github.com/asyncapi/spec/pull/717)
- After review and potential improvement, he did a compliant implementation of his feature with [AsyncAPI JS Parser](https://www.github.com/asyncapi/parser-js) and [spec-json-schemas](https://github.com/asyncapi/spec-json-schemas/pull/250) simply because it's a critical requirement.
- Since the implementation was a success, his proposed change got approved and made it to the next release.

Check out our [how to contribute guide](https://github.com/asyncapi/spec/blob/master/CONTRIBUTING.md) to learn more.

### Release process
This part of the lifecycle aims to describe all details of the process so that any community member can jump in and help coordinate.

- We have four cycles a year for release, and they have a single coordinator.
- Your contribution is made against the `next-spec` branch in 3 repositories.
- The coordinator at the beginning of the cycle checks if there are any release candidates. You know, like PRs that are in the advanced stage and have potential.
- The coordinator keeps a closed watch on what is merged, documents it in release notes, and engages contributors and maintainers of the spec to collaborate on a release.
- Maintainers trigger release when ready, release notes are published, and the world of open source won again.

Learn more about the [release process](https://github.com/asyncapi/spec/blob/master/RELEASE_PROCESS.md#what).

### Release process visual
The image below visualizes the whole process of how changes are introduced to the spec in a single glance.

```mermaid
sequenceDiagram
Copy link
Member

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @derberg what do you mean by the specification looks for release coordinator?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2023-01-11 at 21 18 41

what do you think about my proposal?

also, since you work on this one, and we also plan to release spec 2.6 this months, and we do not have release coordinator, maybe you consider being one, so you will see in action the process? just a hint, no obligation

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what do you think about my proposal?

Makes sense. I'll update the PR

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also, since you work on this one, and we also plan to release spec 2.6 this months, and we do not have release coordinator, maybe you consider being one, so you will see in action the process? just a hint, no obligation

I think this would be a perfect opportunity for me. Thanks for bringing it up

Contributor->>+Specification: Propose RFC as an issue/PR
Maintainers-->>+Contributor: Initial review and request for Champion
Community-->>+Contributor: Initial review and request for Champion
Contributor->>+Specification: Further contribution through different stages to different repositories
Maintainers-->>+Contributor: Possible multiple review rounds
Community-->>+Contributor: Possible multiple review rounds
Contributor->>+Specification: Potential improvement and compliant implementation
Maintainers-->>+Contributor: Proposal acceptance and preperation for next release
Maintainers->>+Community: Request for a release coordinator volunteer
Release Coordinator ->>+ Community: Notify Community that new release cycle starts
Release Coordinator-->>+Specification: Review of possible release candidates
Release Coordinator-->>+Contributor: Indicate what is missing to have things release in current cycle
Release Coordinator->>+Maintainers: Ping maintainers so they are aware of the release candidates
Maintainers-->>+Specification: Publish Release
Release Coordinator ->>+ Community: Notify Community about new release
```