-
Notifications
You must be signed in to change notification settings - Fork 616
ADR 010: Merge drafts status into experimental #2856
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
Conversation
|
size-limit report 📦
|
Thanks for writing this up, @siddharthkp! @primer/react-reviewers please take a look and leave any feedback on this ADR. I will also add a few reviewers who have a stake in our lifecycle criteria and/or who may have context from working on other Primer libraries. This is a technical decision being made for a product reason, so I think it makes the most sense for @justinbyo to serve as the decision maker. ADR decision maker: @justinbyo Your role as decision maker is to gather feedback, probe for discussion and disagreement, and then make an informed decision based on the feedback, identified risks, and trade-offs about whether to adopt the ADR or not. Your role is not to decide based on your own personally preferred approach. Keep in mind that ADR decisions can be reversed or changed in the future if new information is exposed that make the ADR worth revisiting. You can fulfill your decision maker role by doing the following:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great change. I like that it will align better with PVC statuses.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you so much for writing this up @siddharthkp ✨ I have a few questions
- Would this change affect our practises in PRC, in any way, on creating and releasing components? (Except the path is changing and we will have a bundle with a different name)
- In the component lifecycle docs, it states that
experimental
components often are built outside of Primer - should we re-write this?
Nope, this ADR doesn't propose any changes. (I do want to create a different ADR in the future for that 😅)
Yes! Good spot! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good to me 👍
Lovely! Thank you 🙌🏻 Also created https://github.com/github/primer/issues/1799 so that we don't forget 😊 |
I very much like the consolidation proposed here. The problem statement is spot-on and I think this solution addresses it well. "Draft" is meaningless to the end consumer, and I like that we're consolidating around the component lifecycle. @siddharthkp @broccolinisoup Can you clarify what impact this ADR will have on components labelled "experimental" currently built outside of Primer? Specifically, this statement:
I'm concerned this might create confusion because we have "experimental" components, like DatePicker, that are in the experimental-react-components repo. We're not planning to upstream DatePicker yet, so it will remain "experimental" and also outside the Primer lifecycle and ownership for the foreseeable future. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely makes sense to consider these explorations as experimental
💯
From the side-effects side, I'd separately love to explore alternatives to separate bundles to:
- Reduce the number of total entrypoints
- Provide an easier way to deprecate components, or features of a component
- Provide an easier migration process when moving between versions of a component
Specifically, right now an awkward flow is that in order to deprecate stuff we have to point teams to use a separate entrypoint for a component.
From the consumer side, I think simplifying things into "stable" and "unstable" could help to indicate the stability of an item and our commitment to maintaining its API between minor and patch versions.
|
||
### Side effects | ||
|
||
We should create a new parallel import path for `@primer/react/experimental`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As an alternative, would love to explore other ways of indicating API stability (like through an unstable_*
prefix through the main bundle). It would be great to limit the number of entrypoints that we ship, especially if the intent is to have them move to the main entrypoint over time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am loving this proposal! 💖 Even as a maintainer of PRC, it took me a while to wrap my head around this ~ not sure how the experience was for consumer both Hubbers and non Hubber consumers.
I'm curious to hear Sid's thoughts around this. When I wrote my question, I imagined we would be have "Primer" experimental components as well as experimental-react-components repo and I was proposing to update the docs to particularly reword the line of "experimental components often are built outside of Primer" which is not correct anymore and give more context of "Primer" experimental components. @justinbyo |
That's totally fine :) In the docs today, we say "Proof-of-concept, often built outside of Primer". This qualification of outside/inside Primer is unnecessary because we often build experimental components inside Primer as well. 😅 |
thank you! Co-authored-by: Josh Black <joshblack@github.com>
Agreed! I kept that part out of this ADR because it deserves a discussion of it's own. Spoiler: experimental components should not be coupled with stable components in the same package. |
I'm giving this a 👍 To summarize: I think it solves a very confusing product problem for end consumers. A couple things to keep our eye on that came up, outside the scope of this ADR: First, now that "experimental" is a class of Primer components, we can confidently move away from calling non-Primer components experimental. Currently only two non-Primer components live in the Second, per @joshblack's comment – how we want to handle bundling in the future to:
Third, this issue to update the docs to better reflect the changes in this ADR: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 See this comment for a summary of my approval and a few considerations we need to make moving forward:
Does that mean |
There's an ADR out to make the UI monorepo the place to share non-Primer components. Once it's adopted (which is likely), we'll have to decide what to do with the |
@siddharthkp ADR seems to be approved by the decision maker @justinbyo - Should we merge it? |
@justinbyo @broccolinisoup This issue: https://github.com/github/platform-ux/issues/1227 tracks the plans for the |
Closes https://github.com/github/primer/issues/1463
Rendered markdown →