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

chore: platform design proposal process #14065

Closed
wants to merge 14 commits into from

Conversation

poulok
Copy link
Member

@poulok poulok commented Jun 26, 2024

Description:
Introduces documentation for the new Platform Design Proposal process.

Related issue(s):

Fixes #13793

Draft version: #13870

edward-swirldslabs and others added 14 commits June 11, 2024 11:31
Signed-off-by: Edward Wertz <edward@swirldslabs.com>
Signed-off-by: Edward Wertz <edward@swirldslabs.com>
Signed-off-by: Edward Wertz <edward@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
…tion of what requires a proposal

Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
Signed-off-by: Kelly Greco <kelly@swirldslabs.com>
@poulok poulok added this to the v0.52 milestone Jun 26, 2024
@poulok poulok self-assigned this Jun 26, 2024
@poulok poulok requested review from a team as code owners June 26, 2024 15:58
@kfa-aguda kfa-aguda self-requested a review June 26, 2024 16:04
Comment on lines +69 to +74
Requests for immaterial changes can be addressed by pushing additional commits to the existing proposal
PR while in `Voting`. Examples of immaterial changes are spelling or grammar errors, wording changes that do not modify
meaning or intent, and formatting changes. Examples of material changes include changes to behaviors or APIs, addition
or removal of diagrams, etc. If any material changes are needed, the PR must be closed and moved to the `Superseded`
status. A new proposal PR is prepared and voting is restarted. The `Superseded` PR must reference the new PR to
create an auditable history.
Copy link
Contributor

@cody-littley cody-littley Jun 26, 2024

Choose a reason for hiding this comment

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

-1

I am strongly opposed to the idea that the PR must be closed after changes.

This defeats the entire purpose of using a PR to do proposals. It creates a ton of extra paperwork, and clears away the comment history. If we want to do proposals like this, it will need to be by decree of management. I don't think I can be convinced vote for this pattern.

Copy link
Member Author

@poulok poulok Jun 26, 2024

Choose a reason for hiding this comment

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

Please see my response on the previous PR where you made this comment.

We are going to try it this way as a starting point.

Copy link
Member

Choose a reason for hiding this comment

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

Do we need a new branch? Or just a new 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.

just a new PR

Copy link
Contributor

Choose a reason for hiding this comment

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

I acknowledge that you have the authority to overrule this vote (and so it's not a true veto). But I don't think I can vote anything but -1 in this circumstance.

Copy link
Member

Choose a reason for hiding this comment

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

Our process must be optimized for efficiency in building understanding and gaining rough consensus.

On the one hand, having to take a bunch of extra steps to close a PR, open a new one, go to another page, mark one as superseded by the other and put one in draft or voting stage, is not something I'd really want to do. It seems like some of that could be optimized out.

On the other hand, the friction of taking those steps will cause me to put things in draft before it goes to vote, and have to really work on the design and building consensus before it goes to a vote. And that means I am more likely to put the extra effort in and actually make it easier and more productive for people to review and vote. Hopefully this is not the first time they've seen it and they're already primed to vote +1 before I even convert it from draft to ready for review.

If that is true, then maybe the extra friction of closing a failed PR isn't that big of a deal, because it shouldn't happen very often if I only moved to vote after the draft had been widely reviewed.

So I think if we put our energy into good drafts and good conversations on drafts then the voting stage should be mostly a formal affair, and not where most conversation will happen.

Copy link

Node: HAPI Test (Smart Contract) Results

 72 files   72 suites   24m 31s ⏱️
617 tests 617 ✅ 0 💤 0 ❌
671 runs  671 ✅ 0 💤 0 ❌

Results for commit f754275.

Copy link

Node: HAPI Test (Restart) Results

3 tests   3 ✅  7m 50s ⏱️
3 suites  0 💤
3 files    0 ❌

Results for commit f754275.

Copy link

Node: HAPI Test (Time Consuming) Results

19 tests   19 ✅  22m 41s ⏱️
 4 suites   0 💤
 4 files     0 ❌

Results for commit f754275.

Copy link

Node: HAPI Test (Crypto) Results

 24 files   24 suites   12m 33s ⏱️
362 tests 362 ✅ 0 💤 0 ❌
369 runs  369 ✅ 0 💤 0 ❌

Results for commit f754275.

Copy link

Node: HAPI Test (Node Death Reconnect) Results

3 tests   3 ✅  5m 41s ⏱️
3 suites  0 💤
3 files    0 ❌

Results for commit f754275.

Copy link

Node: HAPI Test (Token) Results

 20 files   20 suites   5m 55s ⏱️
265 tests 265 ✅ 0 💤 0 ❌
340 runs  340 ✅ 0 💤 0 ❌

Results for commit f754275.

Copy link

Node: HAPI Test (Misc) Results

 51 files   51 suites   21m 2s ⏱️
357 tests 357 ✅ 0 💤 0 ❌
375 runs  375 ✅ 0 💤 0 ❌

Results for commit f754275.

Copy link

Node: Unit Test Results

  1 545 files    1 545 suites   2h 58m 58s ⏱️
108 587 tests 108 528 ✅ 59 💤 0 ❌
116 881 runs  116 822 ✅ 59 💤 0 ❌

Results for commit f754275.

Comment on lines +99 to +100
1. The proposal has been in the Voting state for at least 3 business days. Business days are defined as SwirldsLabs
working days and excludes weekends and company holidays.
Copy link
Member

Choose a reason for hiding this comment

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

I don't really like defining business days as SwirldsLabs working days. This won't fly in the open source world. I think we should say something more definitive like 72 hrs if posted Mon-Thurs or 96 hrs if posted on Fri-Sun. Or something like that.

Copy link
Member Author

@poulok poulok Jun 26, 2024

Choose a reason for hiding this comment

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

Why can't we publish the company holidays on the website? That way it is transparent and public, and no one feels like they need to come in on an off day to review something.

Copy link
Member Author

Choose a reason for hiding this comment

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

If we do nix the Swirlds Labs holidays, I prefer specifying the time in business days defined as M-F. This is more intuitive to people.

Copy link
Member

Choose a reason for hiding this comment

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

yes, just call it business days.

Copy link
Member

Choose a reason for hiding this comment

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

As an open source project, SL calendar doesn't have any pre-eminent role. Plus, the dates have on or off are not consistent -- our colleagues in Europe or other nations have completely different holidays.

Copy link
Member Author

Choose a reason for hiding this comment

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

I will modify the language to specify business days as M-F, no holidays taken into account.

## Voting on A Proposal

Votes follow the [Apache Voting](https://www.apache.org/foundation/voting.html#expressing-votes-1-0-1-and-fractions)
scheme. Votes are cast in comments on the PR on a range between -1 to -0, +0 to +1 with the following semantics:
Copy link
Member

Choose a reason for hiding this comment

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

How are votes cast? Are they on an inline comment like Cody did above? Or are they in the general comments on the "Conversation" tab?

Copy link
Member Author

Choose a reason for hiding this comment

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

I'm flexible. Do you think this needs to be explicitly stated?

Copy link
Member Author

Choose a reason for hiding this comment

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

Maybe it should be stated explicitly. Cody's "-1" inline comment could be interpreted as a vote against the entire proposal, or just expressing his opinion about that one item and not a vote against the proposal in general.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it won't hurt to explicitly state this. I just made the mistake of approving with a vote, which turned out to not be the way to do it.

Copy link
Contributor

@kfa-aguda kfa-aguda left a comment

Choose a reason for hiding this comment

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

+0.6, with my reservation documented here #13870 (comment)

must be editable (i.e. no images). The only exception is for images that are generated by code, like the wiring diagram.
These may be drawn on to indicate the intended changes and included as an image.

If any APIs were developed in code as part of the design process, it may be included in the proposal directly or in the
Copy link
Member Author

Choose a reason for hiding this comment

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

I don't think code in this directory will be picked up as code or included in coverage since it won't compile.

@poulok
Copy link
Member Author

poulok commented Jun 26, 2024

+0.6, with my reservation documented here #13870 (comment)

Please do not "approve" the PR unless your vote is a +1

must be editable (i.e. no images). The only exception is for images that are generated by code, like the wiring diagram.
These may be drawn on to indicate the intended changes and included as an image.

If any APIs were developed in code as part of the design process, it may be included in the proposal directly or in the
Copy link
Member Author

Choose a reason for hiding this comment

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

I don't think code in this directory will be picked up as code or included in coverage since it won't compile.

@poulok poulok requested a review from kfa-aguda June 26, 2024 17:32
Comment on lines +99 to +100
1. The proposal has been in the Voting state for at least 3 business days. Business days are defined as SwirldsLabs
working days and excludes weekends and company holidays.
Copy link
Member

Choose a reason for hiding this comment

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

yes, just call it business days.


1. The proposal has been in the Voting state for at least 3 business days. Business days are defined as SwirldsLabs
working days and excludes weekends and company holidays.
2. The proposal must have at least three +1 votes from platform code owners.
Copy link
Member

Choose a reason for hiding this comment

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

I had a discussion with @netopyr today regarding apis that might be used by other teams (services, smart contracts, ...). How do we handle that? I want that an api change in base is reviewed by that parties, too.

Copy link
Member Author

Choose a reason for hiding this comment

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

All impacted parties should be coordinated with before the voting phase to ensure that the proposed API makes sense for all stakeholders. This is part of the Architectural Acceptance phase that is outside the scope of this process.

@hendrikebbers
Copy link
Member

+1 While I would not call it 100% complete or perfect, having this initial process defined is a really good start.

@cody-littley
Copy link
Contributor

-1

In response to #14065 (comment), making it clear that I am voting against the proposal as a whole. Core reason is the requirement to close and reopen the PR after each modification.

Comment on lines +36 to +37
contain diagrams and supporting materials. Diagrams must be created with DrawIO and exported in SVG format. All content
must be editable (i.e. no images). The only exception is for images that are generated by code, like the wiring diagram.
Copy link
Contributor

Choose a reason for hiding this comment

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

Why lock the tool used to generate diagrams? For example, there are easier and more automated tools than drawIO for generating UML diagrams. As providing a diagram is in service of the people reading the proposal, it should be up to the owner to choose which tool balances the effort and is more suitable for creating them case by case.

Copy link
Contributor

Choose a reason for hiding this comment

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

Also, when using Intellij, it is easy to paste an image, and it automatically adds and links the file to the document in the position you pasted the image. It facilitates adding the image, but the images are generated in PNG format, not SVG

Copy link
Contributor

Choose a reason for hiding this comment

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

I also agree that making drawIO a hard requirement is super limiting.

Copy link
Member Author

@poulok poulok Jun 27, 2024

Choose a reason for hiding this comment

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

There are two reasons for naming drawIO as the diagram tool of choice:

  1. consistency
  2. it's a free tool available to all, and is therefore open-source friendly

The company made this decision a couple of years ago that all diagrams in the repo would be created with drawIO for these reasons.

Copy link
Member

Choose a reason for hiding this comment

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

One of my secret desires is to create a new open alternative to draw.io that is both really great to use and has deep integration into github and IntelliJ. Sigh.

The core argument for Draw.io is that anyone can edit it. If we just take a PNG and check it in, then if someone else creates a PR to modify the diagram, they have to recreate it in their tooling to be able to edit it. I think the pain of using draw.io is much less than the pain of having to rebuild a diagram.

The wiring diagram (which is called out as an exception) is different because it can be auto-generated from source, so anyone can edit it.

Copy link
Member

Choose a reason for hiding this comment

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

I'm already a victim of this policy as I used Lucid to draw a beautiful diagram of shining awesomeness, and now I will have to rebuild it in the dull colors and fonts of Draw.io. Boo.

But I agree with the policy despite that, because no-one else (outside SL) has a hope of contributing to that diagram. And that's wrong. So I should stop using Lucid. Sigh.

Copy link
Member Author

Choose a reason for hiding this comment

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

Lucid can export diagrams in drawIO format =)

Copy link
Contributor

Choose a reason for hiding this comment

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

I understand the reasoning. Still missing the possibility of using:

Or even the diagrams generated by IntelliJ, seems like a loss.

@mxtartaglia-sl
Copy link
Contributor

+0.6.
A lot of good things.
My reservation is something already happened: Losing the conversation history when opening multiple pull requests might negatively impact the quality of the discussions.

@poulok
Copy link
Member Author

poulok commented Jun 28, 2024

Superseded by #14083

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Superseded
Development

Successfully merging this pull request may close these issues.

Platform Design Proposal Process Documentation
7 participants