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

Maturing the extensions pattern #508

Merged
merged 14 commits into from
Dec 21, 2022
Merged

Conversation

Ssukriti
Copy link
Contributor

@Ssukriti Ssukriti commented Dec 5, 2022

For issue : #487 (comment)

This PR updates the initial pattern so we can move it to structured

Ssukriti and others added 8 commits November 28, 2022 18:59

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
@Ssukriti Ssukriti marked this pull request as draft December 5, 2022 18:20
@Ssukriti Ssukriti changed the title Add arch diag and refine some sentences Mature extensions pattern Dec 5, 2022
@Ssukriti Ssukriti marked this pull request as ready for review December 5, 2022 20:18
@spier spier added 2-structured Patterns with existing instances (Please see our contribution handbook for details) 📖 Type - Content Work Working on contents is the main focus of this issue / PR labels Dec 5, 2022
@spier
Copy link
Member

spier commented Dec 5, 2022

Great iteration @Ssukriti. I like the visual!

Will read this in more detail in the coming days and provide feedback then.

One question already:
As part of the description of IBM under "Known Instances", would it make sense to reference any other online material where IBM has been talking about this story?

For example Bill Higgins' talk at the last InnerSource Summit:
https://youtu.be/Lz-tIc2cyRM

@spier
Copy link
Member

spier commented Dec 10, 2022

Hi @Ssukriti.

I have been sick for a couple of days, so didn't have time to review this yet. I will eventually though. Of course anybody else here is also free to review this in the meantime :)

Just two points that had come to mind about this pattern in general:

visual

How could we get your visual into a form that we can keep improving it, as the pattern matures? If we only include the .png then that is a bit hard to do. We haven't solved this problem for other patterns yet either. So this is mostly exploring what solutions other people know about.

I have tried one approach recently which is basically: dedicated folder for the image incl a README that points to the original google drive document. That original is editable, if you have access. If you have seen any working approach for this problem elsewhere, I would love to learn about it.

relation to Incubator Pipeline

Do you see any similarities between your pattern here and the Incubator Pipeline? I have wondering if your plugin mechanism can been seen as some sort of "incubation period" that functionality has go through before it potentially gets the chance to make it into the core.

Note: The Incubator Pipeline is still a draft pattern, as it doesn't have known instances yet. However if it helps we can ask @gyehuda for his input, as he submitted that pattern.

@Ssukriti
Copy link
Contributor Author

Ssukriti commented Dec 10, 2022

@spier on the 3 things mentioned above,

1. Link to online material : Sure I have added that talk from Bill Higgins .

There are also similar architectures to extensions in open source : extensions to tensorflow https://www.tensorflow.org/resources/libraries-extensions , plugins to spacy: https://spacy.io/universe , do you think we can mention that here?

2. Visual images: I like your idea and can follow the same to allow the community to also edit the image . I have added that to PR

3. Incubation pattern: Yes extensions does provide a way for offering an incubation period before new contributions can make it to shared library. It addresses all concerns mentioned in incubation pattern.

Quote from our pattern:
**Extensions provide a filter for new capabilities that may eventually move into the core of the project.** Extensions also act as an **incubation** and community hardening environment, allowing for much of that hardening to happen organically rather than in a costly review process.

we have mentioned in extensions lifecycle :
Create criteria for when an extension can be ported to the primary repository, such as adoption of the extension by internal products and demand for the feature.
Porting process of the extension to the primary repository will follow more stringent code review guidelines as set by library maintainers.

By contribution new features external to common shared library using extensions:

  1. We provide a way for reuse of common infrastructure and boilerplate code from main library, without adding more code and dependencies into the main library. So contributors can just focus on adding the new features and not rewrite entire infrastructure . It also provides a consistent user experience with the same APIs.
  2. It also provides a community scaling mechanism since extension owners are responsible for providing support and maintaining extension.
  3. It allows easy porting into main shared library once extension has gained some use cases, since infrastructure and APIs will be the same and only code quality will need to be improved for the feature added.

This has several advantages over creating completely new repositories from scratch to add new capabilities

Copy link
Collaborator

@robtuley robtuley left a comment

Choose a reason for hiding this comment

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

I think this looks like a good forward iteration on this pattern.

I can help add to the known instances here too as we have a internal inner source product here at Flutter that is undergoing exactly this pattern: a high growth area of the group has thrown 3 new dedicated teams at it to drive features and momentum, this caused all sorts of bottlenecks in existing contribution flow, and now the teams are re-achitecting to build themselves a plugin mechanism so they can experiments with features in a more independent and sandboxed way.

@Ssukriti
Copy link
Contributor Author

@robtuley thank you. Yes that would be great to have more known instances :)

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.

Great work @Ssukriti!
Please see my comments in line.

Once you are done reviewing the feedback, you can already move this pattern to the 2-structured folder.

When you do that, you can also add your pattern to the mindmap already, by following these instructions.

My only suggestion on the info in the mind map is to add something about the maintenance overhead e.g.

  • scale -> (new category) Technical Challenges -> Exploding maintenance overhead -> our pattern

Once you are done, please let me know.

I will take another pass at the pattern and see if I find anything surprizing when reading it in one go.

Then we work in the final version of the visual (that we are working on in parallel), and then this should be good to go live 🚀

@spier
Copy link
Member

spier commented Dec 15, 2022

@Ssukriti and one more thing.

We also discussed possible similarities between your pattern in this PR and the Incubator Pipeline.

My take is:
Let's first get your pattern published in our book.
If we then get to publish the Incubator Pipeline to the book at a later point, we have to work out possible duplications then.

So in short: Just don't worry about this :)

@spier
Copy link
Member

spier commented Dec 15, 2022

@robtuley thanks for chiming in !
What do you think about adding your Known Instance in a PR straight after this pattern goes live in the book? i.e. directly after this PR here is finished?

Could make for a nice follow-up announcement, showcasing how the known instance information can provide value, and motivating other orgs to share their stories too.

@spier spier changed the title Mature extensions pattern Maturing the extensions pattern Dec 15, 2022
Co-authored-by: Sebastian Spier <github@spier.hu>
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.

@Ssukriti all the text looks good to me now. Fantastic work!

Only questions remaining from my end:

  1. Did you take a look at the modified visual? If you like it, would you mind integrating it into this PR?
  2. Did I understand you correctly in that you want to first merge this PR, and then send another PR to move the file and add the pattern to the mindmap?

@Ssukriti
Copy link
Contributor Author

@spier thank you for the edits to the diagram, I have updated the readme and image.
I do not know why the link check is failing, the links are correct.
2. Yes, could you please merge this PR and then I will open new one to move it to structured and add to mindmap

@spier spier merged commit f6611d4 into InnerSourceCommons:main Dec 21, 2022
@spier
Copy link
Member

spier commented Dec 21, 2022

@Ssukriti not sure what happened to the link check either.

PR is merged 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2-structured Patterns with existing instances (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.

None yet

3 participants