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

[doc] Add architecture decision records #4072

Merged
merged 4 commits into from
Sep 30, 2022
Merged

[doc] Add architecture decision records #4072

merged 4 commits into from
Sep 30, 2022

Conversation

adangel
Copy link
Member

@adangel adangel commented Jul 28, 2022

Describe the PR

This is a first draft on adding explicit decision records to our project.
It came up as a question in #3766 about Kotlin usage.

I'm not sure in what details we would need to describe the decisions or which decisions at all. I guess, we need to learn this over time.

Feel free to give feedback or ask questions - the goal is to have the decision records as an agreement and understandable by everybody.

I've integrated these into the doc site, they appear under "Project documentation":
grafik

But since these documents are simple markdown files, they can also be seen directly on github.

@adangel adangel added in:documentation Affects the documentation a:RFC A drafted proposal on changes to PMD, up for feedback form the team and community labels Jul 28, 2022
@adangel adangel changed the title [doc] Add architecture decision records [RFC] [doc] Add architecture decision records Jul 28, 2022
@pmd-test
Copy link

1 Message
📖 No regression tested rules have been changed.

Generated by 🚫 Danger

@oowekyala
Copy link
Member

This is a great idea!

I have a few questions/ topics for general discussion. I'll add my comments to the kotlin ADR as review comments

  • What is the process to accept an ADR? In this PR the new ADRs have status "proposed". Is maintainer consensus enough to make them "accepted"?
  • What's the process to challenge or amend an ADR? Open a GH issue maybe? A PR editing the ADR?

I think we should document these processes in ADR 0... Or at least sketch the expected "lifecycle" of an ADR, with different statuses

I'm wondering about the scope of ADRs. Do "architecture decisions" include eg proposals for large features (like eg JEPs)? Is there a difference with RFC issues? Maybe issues are more implementation related.

Would the following be appropriate topics for ADRs, or am I missing the point:

  • policy on rule contributions (criteria for inclusion and quality standards)
  • policy on language module contributions (same)
  • binary compatibility guarantees (including describing internal packages and @InternalApi)
  • code of conduct

@adangel
Copy link
Member Author

adangel commented Sep 6, 2022

This is a great idea!

I have a few questions/ topics for general discussion. I'll add my comments to the kotlin ADR as review comments

  • What is the process to accept an ADR? In this PR the new ADRs have status "proposed". Is maintainer consensus enough to make them "accepted"?
  • What's the process to challenge or amend an ADR? Open a GH issue maybe? A PR editing the ADR?

I think we should document these processes in ADR 0... Or at least sketch the expected "lifecycle" of an ADR, with different statuses

Good points - I've added a short description what I think could work in the ADR-1. Basically we use PRs to propose new ADRs and modify existing ADRs.
I've not sketched a complete lifecycle, though, just a short description in the "Decision" section.

I'm wondering about the scope of ADRs. Do "architecture decisions" include eg proposals for large features (like eg JEPs)? Is there a difference with RFC issues? Maybe issues are more implementation related.

Hm... I don't think, that large features should be written as ADRs. A feature sounds too specific for me. Maybe if we can come up with a general direction of what PMD should be or shouldn't be, that might be an ADR. E.g. (don't take these examples serious... 😄 ) "PMD will concentrate the work on the core functions needed for static analysis. Any integration into plugins, tools, etc. is out of scope for the project" or "PMD won't use GitHub anymore, because it is not open source" or "PMD will only support languages where free tooling is available" or "PMD will drop support for Windows".

RFC issues... I could imagine, that an ADR could originate from an RFC issue. So that the discussion on the issue leads us to writing the result down as an ADR.

If issues are implementation related, that could be too specific for an ADR.

Would the following be appropriate topics for ADRs, or am I missing the point:

  • policy on rule contributions (criteria for inclusion and quality standards)
  • policy on language module contributions (same)
  • binary compatibility guarantees (including describing internal packages and @InternalApi)
  • code of conduct

I think, these are all good examples for ADRs. I'd say it's a bit of a mixture of architecture and processes (policies).

@adangel adangel added this to the 6.50.0 milestone Sep 6, 2022
Copy link
Member Author

@adangel adangel left a comment

Choose a reason for hiding this comment

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

I'll proceed now and mark our first two ADRs as "Accepted".

Keep in mind, we can still change these decisions - they are not cut in stone.

docs/pages/pmd/projectdocs/decisions/adr-1.md Outdated Show resolved Hide resolved
docs/pages/pmd/projectdocs/decisions/adr-1.md Show resolved Hide resolved
docs/pages/pmd/projectdocs/decisions/adr-2.md Outdated Show resolved Hide resolved
docs/pages/pmd/projectdocs/decisions/adr-2.md Show resolved Hide resolved
@adangel adangel changed the title [RFC] [doc] Add architecture decision records [doc] Add architecture decision records Sep 30, 2022
@adangel adangel merged commit d7de6f5 into pmd:master Sep 30, 2022
adangel added a commit to adangel/pmd that referenced this pull request Sep 30, 2022
adangel added a commit to adangel/pmd that referenced this pull request Sep 30, 2022
[doc] Add architecture decision records pmd#4072
@adangel adangel deleted the doc-adr branch September 30, 2022 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a:RFC A drafted proposal on changes to PMD, up for feedback form the team and community in:documentation Affects the documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants