Skip to content

pattern draft: Incubator Pipeline #338

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

Merged
merged 25 commits into from
Nov 24, 2022
Merged

Conversation

gyehuda
Copy link
Contributor

@gyehuda gyehuda commented Jul 19, 2021

This is the first draft.

[Update]:
Quick link to rendered markdown

This is the first draft.
@spier spier changed the title Create new pattern draft pattern draft: Incubator Pipeline Jul 20, 2021
@spier spier added the 📖 Type - Content Work Working on contents is the main focus of this issue / PR label Jul 20, 2021
@spier spier linked an issue Jul 23, 2021 that may be closed by this pull request
@spier spier self-assigned this Aug 6, 2021
@spier
Copy link
Member

spier commented Aug 7, 2021

In the first round of review I am just making some fixes to the markdown.
I will commit them straight away, as they won't be controversial.

Then I will run other CI checks (via GitHub Actions), just to confirm that there aren't any other issues with the formatting.

Once that is done, I will add some suggestions for content changes for you to review. This last step might take me a couple of days.

Copy link
Member

@spier spier left a comment

Choose a reason for hiding this comment

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

This is a fantastic pattern already @gyehuda!

Great work following along the template and filling out all sections.

I left some specific comments inline in the review.

Some general ideas to improve the pattern:

  • can you expand on the problem that the contributing team is solving for themselves, and their motivation to enter the incubator rather than rolling their own project outside of the UI component?
  • in conversations you mentioned that using the UI components library might be a policy in the company. In that case this would belong into the Context, as it allows readers of the pattern to check if they have this situation.
  • consolidating terminology
    • I noticed that there were various words used for the different teams (shared library team | customer team | central team | user teams). It might be worth consolidating these terms, so that it is always clear which team is meant.
    • A similar consolidation could be done on other terms e.g. "top-level unit vs first-class citizen". While always using the same term for the same concept will make the text a bit more boring to read, it will make it more clear to the readers what is wht.
    • As an intermediary step prior to consolidation one could also create a little glossary at the end, just to double check which essential terms are used interchangeably.

I know that this is a lot of feedback and I don't want this PR review to become too long. I would much rather merge this pattern as Initial relatively quickly, so that it becomes easier for others to discover the pattern and contribute.

We could achieve this by time-boxing the remaining review period.
e.g. "We will continue the improve/review cycle until August 15th. After that we merge what we have and continue further feedback in subsequent PRs."

What do you think about that approach?


## Sketch (optional)

None yet
Copy link
Member

Choose a reason for hiding this comment

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

Some ideas for helpful visualizations:

a) different stages of incorporation of a contributed UI component

The Solutions section describes different stages of maturity, with quality gates separating one stage from the next. This could e.g. be visualized similar to this (source file):

Incubator Pipeline Visualization

b) sample visualization of how the incubating components look like for consumers

When a consumer of the central UI components want to figure out whether a given component is a first-class or a second-class (incubating) component, how would they do that?

e.g. will incubating component be listed differently in the documentation, or flagged somehow, so that it is clear that the support for these components is different than the one for the first-class component?

## Rationale

Incubation pipelines allow participants to view code as potential and improving assets. Too often, people see code as being good enough or not good enough. In reality, code can become better. Formally putting code in an incubation status sends the message that the code is not yet good enough but is getting there.

Copy link
Member

Choose a reason for hiding this comment

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

Your blog post mentions:

This approach is, in some way, a blend of existing InnerSource patterns: the Contracted-Contributor (an agreement), Gig-Marketplace (if the UIC team invites incubees), and the Review-Committee (acceptance after incubation) pattern.

Those are great observations in the blog post that would be good to translate into the pattern somehow.

Maybe they could be integrated in to the Rationale like this:
a) Which other patterns is the Incubator Pipeline related to (or even taking inspiration from)?
b) How and why is the Incubator Pipeline a pattern in its own right?

One could add a link to the 30 Day Warranty pattern as well, as that sounds similar to the support agreement in the incubator.

These teams are held to meet certain standards (e.g., UI teams ensure all components comply with accessibility standards, can be themed and placed on the UI grid in a manner consistent with other components and company requirements; pipeline and install scripts might require certain boilerplate code for compliance logging or security controls, etc.).

However, the shared code library team does not want engineers to “roll their own” solutions either. But the user-teams may have needs not met by the shared library team’s code. Since they are engineers, they’ll want to create or find their own solutions. Doing that threatens the shared library team and creates multiple solutions. Whereas that’s sometimes okay, in some cases companies want to use InnerSource to maintain consistency without stifling innovation.

Copy link
Member

Choose a reason for hiding this comment

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

@gyehuda I just had one other thought:
Is it essential for this pattern to work that the library in question is modular, so that contributions from an out-group that are under incubation can be kept "separate" from the rest of the code?

If so, then this would belong into the Context as it would help readers to understand "do I have this situation?".

Copy link
Member

Choose a reason for hiding this comment

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

In the meantime we have this new plugin that talks about extensions/plugins to enable InnerSource. Could be worth linking to. https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/extensions-to-manage-contributions-at-scale.md

gyehuda and others added 3 commits September 20, 2021 11:32
Co-authored-by: Sebastian Spier <github@spier.hu>
Co-authored-by: Sebastian Spier <github@spier.hu>
Co-authored-by: Sebastian Spier <github@spier.hu>
@spier
Copy link
Member

spier commented Dec 10, 2021

@gyehuda one thought about this PR:
PRs that are open for extended periods run the risk of becoming stale, and eventually unmergable. Typically because author or reviewer have moved on, or the context in which the pattern was first created has changed too much.

Another disadvantage particular to new patterns in PRs (rather than improvements of existing patterns) is, that many readers won't find these new patterns when they are hidden in PRs, as they mostly view the patterns in the main brach of our repo.

Therefore I am wondering what the smallest possible increment on this PR would be that allows us to merge it, so that the new Incubator Pipeline pattern becomes available in the main branch for everybody to read?

One proposal from me:

  • merge this branch as is but keep all review comments in this PR open. Add a link from the pattern to this PR, so that we can work in the feedback from the open comments in future improvements to this pattern.

Would that work? Or would you favor another approach?

@spier spier added the 1-initial Donuts, Early pattern ideas, ... (Please see our contribution handbook for details) label Jan 24, 2022
@robtuley
Copy link
Collaborator

One proposal from me:

merge this branch as is but keep all review comments in this PR open. Add a link from the pattern to this PR, so that we
can work in the feedback from the open comments in future improvements to this pattern.
Would that work? Or would you favor another approach?

I'm going to action this. I can raise another PR to add some of the comments content in.

@robtuley robtuley merged commit abd575c into InnerSourceCommons:main Nov 24, 2022
@robtuley
Copy link
Collaborator

Updates for this pattern are now continued in #489

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1-initial Donuts, Early pattern ideas, ... (Please see our contribution handbook for details) 📖 Type - Content Work Working on contents is the main focus of this issue / PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Proposing the Incubator pattern.
3 participants