-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
Update the ADR process #7498
Comments
The process above resembles an Improvement Proposal processes. Please comment, and if some things are not necessary from the ADR perspective (eg too many statuses) we can scrap them. |
The PR should always be merged. In the case of a faulty ADR, we still (should) merge it with a status of
What's a big PR? You mean a verbose ADR? True, the review cycle can be lengthy.
IMHO, this is orthogonal to the actual process. We could theoretically have the same process we do now and just organize better (as you've suggested). I would also propose we use |
big PR - I should find a better phrase. Let's say a complex ADR. Does it sound better? |
While thinking about the
|
Sure. However, from my experience generally ADRs & RFCs aren't versioned. They just have a concise changelog of dates/modifications. |
It will make sense to add versioning instead of superseding the whole ADR. With VC systems / Github we can very efficiently trace the evolution of ADR, which is an advantage in my opinion. If
|
My suggestion would be to start with small, meaningful improvements on the current process and then iterate from there. To me the most cumbersome part of what we currently have is related to statuses. There is stuff that is implemented that is Proposed. I kind of liked the idea of different directories I'm not sure different versions makes sense. It might be better to just deprecate one ADR and write a new one. |
The main purpose here is to make the ADR process more lively by introducing iterations (draft -> last call ... ). I was thinking what is better: having an ADR read-only once it is accepted, or adding versions. If we can have backward compatible changes, then adding versions will show more the evolution of a given ADR. Maybe that's an idea: backward compatible changes can be made as a new version, breaking changes should come as a new ADR? |
Currently we do have ADR's as updatable, but not versioned. As @alexanderbez mentions above, the inline changelog in the ADR serves that purpose, so that it can be updated with small updates as necessary. I also think versioning ADRs overcomplicates, as its hard to know at what point a version is active (proposed/implemented/deprecated). It's also worth nothing that right now, the "problem definition" and initial discovery phase is usually done in a github issue. In our current process, it only transitions to an ADR when there feels to be rough consensus on the high level direction, and worthy of somebody writing up a more formal solution / architecture proposal. I do like the idea of having separate folders for statuses (for readability), but what is still unclear to me is where the commenting / review actually happens if not directly in a PR, as that is the only state in which there can be conversation about an ADR together with explicit references to the content in the document being proposed. |
I don't think this is realistic. ADR-020 had a number of breaking changes (pubkey, sequence field...), I don't think creating a new ADR in those cases would have made sense. Overall, I would favor the current process (it's simple, and fast enough by experience), on top of which we add your recommendation from #7458 (comment): initial PR as |
I think the big takeaway here is to have separate directories for ADRs based on their status -- seems there is consensus on that so let's just do that for now. And we can continue to revise and improve on the process in the future. WDYT @robert-zaremba? |
Sounds reasonable. I would also like to break the rule that a PR to merge has to have an |
The only disadvantage of separate directories is that it looses an edit track in git (when you move a file you loose a track). Though, currently we are doing an ADR in one go, so there is no track anyway. |
That makes sense. So what directories would we have? Maybe:
|
When thinking more about it, ... if we have a clear lists / tables in the README file of ADRs groupped by status, it would provide similar effect, without having to move files. |
I like this approach 👍 |
Funny enough that was going to be my initial counter proposal to this issue :) |
Adding to backlog as it seems there's enough alignment here to proceed with a small PR with the above changes. |
How about wrapping up this task and agreeing on the update:
|
and if we have that agreement, I can do a small PR, and we close the issue. |
Sure @robert-zaremba. Can you start a PR? |
PR created: #7621 |
Summary
During the Architecture call on 2020-10-09 we discussed the current ADR process and when and how we should change an ADR status. We propose to review this current process and see how we can make it more efficient
Problem Definition
This is how it works currently:
This can be an overkill for a complex ADR. Without proper management, it can put some ADRs in a very lengthy cycle, and putting all context into one big discussion. Also, exploring ADRs is more tricky - we need to go through all merged, active PR or closed PR the list of ADRs.
Proposal 1
We can apply an iterative approach. Instead of trying to solve all issues in one PR, we can focus first on:
This will also encourage of creating the ADRs without a clear solution and focusing on problem / a need validation.
ADR status
Proposal: change the status types and status flow:
DRAFT
: an ADR which is work in progress, without a being ready for a general review. This is to present an early work and get an early feedbackREVIEW
: and ADR covering a full solution architectureLAST CALL <date for the last call>
: clear notify that we are close to accept updatesFINAL
: ADR which will represent a currently implemented or to be implemented architecture design.SUPERSEEDED by ADRxxx
: ADR which has been superseded by a new ADR.ABANDONED
: the ADR is no longer pursued by the original authors.NOTE about state change:
ADR sub directories
To easily navigate between files which are in draft / review we can introduce one subdirectory:
wip
- this will collect all ADRs which are in DRAFT or in REVIEWProposal 2
As above, but use versioning for the Final / Accepted ADRs, eg:
For Admin Use
The text was updated successfully, but these errors were encountered: