From 72128b1f9ba5bee1b0b63618c498924e628190de Mon Sep 17 00:00:00 2001 From: Rob Tuley Date: Thu, 24 Nov 2022 22:01:56 +0000 Subject: [PATCH 1/7] Updates from previous comments --- patterns/1-initial/incubator-pipeline.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patterns/1-initial/incubator-pipeline.md b/patterns/1-initial/incubator-pipeline.md index 7e9211957..eb4fff245 100644 --- a/patterns/1-initial/incubator-pipeline.md +++ b/patterns/1-initial/incubator-pipeline.md @@ -4,7 +4,7 @@ Incubator Pipeline ## Patlet -A team maintains a shared code library that other internal engineers need to use. The other engineers want to make improvements or use their own code. Leveraging an incubator model, the shared library team can establish a lower bar to enter the incubator pipeline and a higher bar to exit the pipeline and become a top-level unit in the library. +A team maintaining a widely shared code library wants to accept contributions from other teams, without lowering the overall quality of their library. Therefore the shared library team uses an incubator pipeline to set a lower bar for contributions to enter and a higher bar to exit and become a top-level unit in the library. ## Problem @@ -16,7 +16,9 @@ The team managing the shared code library needs a way to allow InnerSource contr See [Culture, Behaviors, and InnerSource. A three-part blog series. 3 of 3](https://www.linkedin.com/pulse/culture-behaviors-innersource-three-part-blog-series-3-gil-yehuda/) for the conceptual inspiration for this pattern. -_Note: This may be replaced with a direct story from the dev team who implemented this pattern. Watch this space._ +### Open Source Inspiration + +When describing the pattern, I was inspired by things like the Apache Software Foundation's incubator, as well as Linux Foundation's sandbox/incubator processes used in CNCF, CDF, and other open source foundations. Those help entire projects get into the foundation. In my open source work, I've found those to be very successful. They helped me raise the bar on projects that wanted to get more visibility by getting them into an incubator. Many of those projects graduated and are very successful today, in open source. This pattern here is like a smaller fractal of that pattern -- to help components get into an open source library. ## Context From 6d3e2fc3eb6ab00cdd31a1b287bcb64b69aef626 Mon Sep 17 00:00:00 2001 From: Rob Tuley Date: Thu, 24 Nov 2022 22:10:56 +0000 Subject: [PATCH 2/7] updated rationale --- patterns/1-initial/incubator-pipeline.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/patterns/1-initial/incubator-pipeline.md b/patterns/1-initial/incubator-pipeline.md index eb4fff245..a4a7160b8 100644 --- a/patterns/1-initial/incubator-pipeline.md +++ b/patterns/1-initial/incubator-pipeline.md @@ -14,11 +14,7 @@ The team managing the shared code library needs a way to allow InnerSource contr ## Story -See [Culture, Behaviors, and InnerSource. A three-part blog series. 3 of 3](https://www.linkedin.com/pulse/culture-behaviors-innersource-three-part-blog-series-3-gil-yehuda/) for the conceptual inspiration for this pattern. - -### Open Source Inspiration - -When describing the pattern, I was inspired by things like the Apache Software Foundation's incubator, as well as Linux Foundation's sandbox/incubator processes used in CNCF, CDF, and other open source foundations. Those help entire projects get into the foundation. In my open source work, I've found those to be very successful. They helped me raise the bar on projects that wanted to get more visibility by getting them into an incubator. Many of those projects graduated and are very successful today, in open source. This pattern here is like a smaller fractal of that pattern -- to help components get into an open source library. +See [Culture, Behaviors, and InnerSource. A three-part blog series. 3 of 3](https://www.linkedin.com/pulse/culture-behaviors-innersource-three-part-blog-series-3-gil-yehuda/) for the conceptual inspiration for this pattern. ## Context @@ -60,6 +56,8 @@ Moreover, by defining an incubation process, the shared library team clarifies t 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. +This pattern was inspired by things like the Apache Software Foundation's incubator, as well as Linux Foundation's sandbox/incubator processes used in CNCF, CDF, and other open source foundations. Those help entire projects get into the foundation. They help raise the bar on projects that wanted to get more visibility by getting them into an incubator. Many of those projects graduated and are very successful today, in open source. This pattern here is like a smaller fractal of that pattern -- to help components get into an open source library. + ## Known Instances Being implemented at U.S. Bank. From 9a9ebb77ec23109378590ea1866a0b203029e0cf Mon Sep 17 00:00:00 2001 From: Rob Tuley Date: Thu, 24 Nov 2022 22:13:51 +0000 Subject: [PATCH 3/7] incubator not incubation --- patterns/1-initial/incubator-pipeline.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/patterns/1-initial/incubator-pipeline.md b/patterns/1-initial/incubator-pipeline.md index a4a7160b8..303933f2f 100644 --- a/patterns/1-initial/incubator-pipeline.md +++ b/patterns/1-initial/incubator-pipeline.md @@ -40,21 +40,21 @@ None yet ## Solutions -The shared library team provides an incubator pipeline for their (internal engineering) customers to use. Customer teams who need to augment the shared library can do so by petitioning to enter the incubator pipeline. Additionally, central teams can request contributions into the incubation pipeline. The shared library team maintains an acceptance criterion to get into the pipeline. This may include some demonstration that at least one other team would find the contribution useful, that the contribution could (perhaps with some additional engineering work) be enhanced to conform to the shared library standard. **In other words, no code should enter the incubation pipeline that we know cannot exit it.** +The shared library team provides an incubator pipeline for their (internal engineering) customers to use. Customer teams who need to augment the shared library can do so by petitioning to enter the incubator pipeline. Additionally, central teams can request contributions into the incubator pipeline. The shared library team maintains an acceptance criterion to get into the pipeline. This may include some demonstration that at least one other team would find the contribution useful, that the contribution could (perhaps with some additional engineering work) be enhanced to conform to the shared library standard. **In other words, no code should enter the incubator pipeline that we know cannot exit it.** -Once in the incubation pipeline, the shared library team and contributing teams can select a support agreement that enables teams to use the incubating code, but to understand that its support is less than a top-level component in the library. It is a second-class citizen that is on the way to becoming a first-class citizen. +Once in the incubator pipeline, the shared library team and contributing teams can select a support agreement that enables teams to use the incubating code, but to understand that its support is less than a top-level component in the library. It is a second-class citizen that is on the way to becoming a first-class citizen. -Exiting the incubation pipeline means the code is a first-class citizen and member of the shared library. In this case, the shared library team may not have created the code, and may not have enhanced the code. But they will be willing to support the code as if they created it because it meets the criteria they set for their own code. It is possible that a component fails to graduate the pipeline. In that case, the component would be retired out of the incubation pipeline. +Exiting the incubator pipeline means the code is a first-class citizen and member of the shared library. In this case, the shared library team may not have created the code, and may not have enhanced the code. But they will be willing to support the code as if they created it because it meets the criteria they set for their own code. It is possible that a component fails to graduate the pipeline. In that case, the component would be retired out of the incubator pipeline. ## Resulting Context When a customer-team needs code that the shared library team does not have, they have a path to success. They can create and propose a solution to be included in the incubator pipeline. (They might find an open source solution too.) This does not pose a threat to the shared library team. In fact, it allows the shared library team to grow their library at a faster rate while maintaining quality control by staging the contribution. -Moreover, by defining an incubation process, the shared library team clarifies their criteria for inclusion into the library. This helps new members of their team too. In fact, this allows any engineer who can meet the criteria to become a "member of their team" even if only for a component or two. +Moreover, by defining an incubator process, the shared library team clarifies their criteria for inclusion into the library. This helps new members of their team too. In fact, this allows any engineer who can meet the criteria to become a "member of their team" even if only for a component or two. ## 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. +Incubator 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 incubator status sends the message that the code is not yet good enough but is getting there. This pattern was inspired by things like the Apache Software Foundation's incubator, as well as Linux Foundation's sandbox/incubator processes used in CNCF, CDF, and other open source foundations. Those help entire projects get into the foundation. They help raise the bar on projects that wanted to get more visibility by getting them into an incubator. Many of those projects graduated and are very successful today, in open source. This pattern here is like a smaller fractal of that pattern -- to help components get into an open source library. From 09f35cefcc30f3c31a0cb2954a509b331c0d82a1 Mon Sep 17 00:00:00 2001 From: Rob Tuley Date: Thu, 24 Nov 2022 22:20:44 +0000 Subject: [PATCH 4/7] fix lint --- patterns/1-initial/incubator-pipeline.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/patterns/1-initial/incubator-pipeline.md b/patterns/1-initial/incubator-pipeline.md index 303933f2f..f14f74979 100644 --- a/patterns/1-initial/incubator-pipeline.md +++ b/patterns/1-initial/incubator-pipeline.md @@ -85,5 +85,4 @@ Initial * Michael Schulz * John Sibo * Jennifer Skov -* John Yopp - +* John Yopp \ No newline at end of file From f7593cfb3f2de0f86fd04d8b485306d96d4388ff Mon Sep 17 00:00:00 2001 From: Rob Tuley Date: Thu, 24 Nov 2022 22:22:45 +0000 Subject: [PATCH 5/7] fix lint again --- patterns/1-initial/incubator-pipeline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patterns/1-initial/incubator-pipeline.md b/patterns/1-initial/incubator-pipeline.md index f14f74979..557fbf639 100644 --- a/patterns/1-initial/incubator-pipeline.md +++ b/patterns/1-initial/incubator-pipeline.md @@ -85,4 +85,4 @@ Initial * Michael Schulz * John Sibo * Jennifer Skov -* John Yopp \ No newline at end of file +* John Yopp From da53b591b2049cab1a6107c6db3ea95490475fdc Mon Sep 17 00:00:00 2001 From: Rob Tuley Date: Thu, 24 Nov 2022 23:00:29 +0000 Subject: [PATCH 6/7] add to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8732c64ff..f1ea7d28a 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ Our mission * [Crossing the InnerSource Chasm](/patterns/1-initial/crossing-chasm.md) - *Early InnerSource experiments have been successful. Methods that were successful convincing early teams stop working though when scaling the initiative. This chasm can be crossed by using different methods to reach people at different stages of the innovation curve.* * [Extensions to Manage Contributions at Scale](/patterns/1-initial/extensions-to-manage-contributions-at-scale.md) - *An InnerSource project is receiving too many contributions, making maintenance difficult and resulting in a large code review backlog or premature rejection of new feature contributions. By offering an extension mechanism outside of the core project, the maintainers enable scaling of project capabilities with minimal cost and maintenance overhead.* * [Transitioning Contractor Code to InnerSource Model](/patterns/1-initial/transitioning-contractor-code-to-innersource-model.md) - *Contract developers are often not motivated to engage in InnerSource activities, which may be beyond the scope of their contract. This pattern describes how you can focus on transitioning the contractor project after the fact to an InnerSource project by setting expectations for specific InnerSource-related deliverables as part of the overall project delivery.* +* [Incubator Pipeline](/patterns/1-initial/incubator-pipeline.md) - *A team maintaining a widely shared code library wants to accept contributions from other teams, without lowering the overall quality of their library. Therefore the shared library team uses an incubator pipeline to set a lower bar for contributions to enter and a higher bar to exit and become a top-level unit in the library.*