From 2ba951db1e58ee203fafaca5454a74bd5aa9bae6 Mon Sep 17 00:00:00 2001 From: caldeirav Date: Tue, 14 May 2024 16:51:53 +0800 Subject: [PATCH 01/16] Initial draft for Developer Portal pattern --- .../1-initial/internal-developer-platform.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 patterns/1-initial/internal-developer-platform.md diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md new file mode 100644 index 000000000..5fdc3cbb2 --- /dev/null +++ b/patterns/1-initial/internal-developer-platform.md @@ -0,0 +1,65 @@ +## Title + +Internal Developer Platform + +## Patlet + +Development teams struggle with inconsistencies in tooling and environments, leading to inefficiencies and reduced productivity. An Internal Developer Platform standardizes development tooling and environments, providing a self-service portal for developers to access the resources they need, when they need them, thereby streamlining workflows and enhancing efficiency. + +## Problem + +The diversity of development tools and environments across teams leads to inconsistencies that hamper efficiency, make onboarding of new developers slow, and complicate project collaboration and scaling. + +## Story (optional) + +(to be done) + +## Context + +This pattern emerges in organizations with multiple development teams working on various projects, where there is a noticeable discrepancy in how development environments are set up, tools are used, and resources are accessed. + +## Forces + +Consistency vs. Flexibility: Balancing the need for standardized tooling and environments with the flexibility required by different teams to innovate and adapt to their specific needs. + +Self-Service vs. Governance: Ensuring developers have the autonomy to access and manage resources while maintaining necessary oversight and compliance. + +Scalability vs. Control: Scaling development efforts across the organization without losing control over the tooling ecosystem and operational overhead. + +## Sketch (optional) + +(to be added) + +## Solutions + +Implement an Internal Developer Platform that acts as a centralized, self-service portal for developers. This platform standardizes development environments, tools, and access to resources, ensuring consistency while offering the flexibility to cater to specific project needs. It includes automation for common tasks, such as setting up development environments, initiating CI/CD pipelines, and deploying applications, making these processes more efficient and less prone to errors. + +## Resulting Context + +Adoption of the Internal Developer Platform leads to streamlined development workflows, improved efficiency, and faster onboarding of new team members. It fosters a culture of collaboration and innovation by removing barriers to resource access and standardizing best practices across teams. + +## Rationale + +The Internal Developer Platform harmonizes the forces of consistency and flexibility by providing a standardized yet customizable set of tools and resources. It supports scalable and controlled growth within the software development lifecycle, enhancing overall productivity and project collaboration + +## Known Instances (optional) + +Pattern under implementation at one large financial institution in North America and with a large public sector agency in Singapore. + +## Status (optional until merging) + +Initial Draft + +## Author(s) (optional) + +Vincent Caldeira + +## Acknowledgments (optional) + +Include those who assisted in helping with this pattern - both for attribution and for possible future follow up. +Though optional, most patterns should list who helped in their creation. + +## Alias (optional) + +If this pattern is also known under a different name than what is listed unter **Title**, please list those alternative titles here. +e.g. if the pattern is named after the problem it solves, a helpful alias might be one that describes the solution that is applied. From 78a3605855896010eee7f9f0d4ef85efbe76b8c2 Mon Sep 17 00:00:00 2001 From: caldeirav Date: Sat, 5 Oct 2024 22:02:08 +0800 Subject: [PATCH 02/16] Pattern revision including diagram --- assets/img/sketch_idp.png | Bin 0 -> 113967 bytes .../1-initial/internal-developer-platform.md | 80 +++++++++++++++--- 2 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 assets/img/sketch_idp.png diff --git a/assets/img/sketch_idp.png b/assets/img/sketch_idp.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5773c4cc15ed4321b297d04b78ee4dce5072b3 GIT binary patch literal 113967 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%0D#$*55GsQ~D$`i)C| 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%0A&4!gk!e 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 Date: Wed, 20 Nov 2024 18:47:12 +0800 Subject: [PATCH 03/16] Improve the connection of the pattern to InnerSource based on comments received --- .../1-initial/internal-developer-platform.md | 54 ++++++++++++++----- 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index 20654ecc6..2fea3eb40 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -4,11 +4,31 @@ Internal Developer Platform ## Patlet -Development teams face inefficiencies due to fragmented tooling, environments, and workflows. An Internal Developer Platform (IDP) provides a centralized, self-service system that standardizes development environments and integrates tools to enhance consistency, collaboration, and developer productivity. By streamlining access to essential resources and services, the IDP accelerates software delivery and reduces cognitive load on developers. +As InnerSource adoption increases throughout an organisation, it is not unusual that project teams start to face inefficiencies in scaling their efforts due to fragmented tooling, environments, and workflows. An Internal Developer Platform (IDP) provides a way to tackle this type of challenges through a centralized, self-service system that standardizes development environments and integrates tools to enhance consistency, collaboration, and developer productivity. + +There is a symbiotic relationship between the IDP and InnerSource as their relationship enhances the scalability and effectiveness of both practices, especially in large organizations. + +### IDP Helps to Scale InnerSource + +**Standardizing Development Practices**: In large organizations, development teams often use varied tools, environments, and processes. This lack of standardization makes it challenging for InnerSource contributors to effectively participate in projects outside their immediate teams. An IDP provides a unified platform that standardizes tools, templates, and workflows, creating a consistent development ecosystem. This in turns helps to accelerate software delivery, reduces cognitive load on developers and ultimately serves as a catalyst for scaling InnerSource practices across large organizations. InnerSource Contributors can quickly adapt and become productive, which is crucial for scaling InnerSource rapidly across diverse teams. + +**Improving Accessibility and Collaboration**: By streamlining access to essential resources and services through a self-service model, IDPs remove barriers that impede collaboration. InnerSource strategies are amplified through the standardization and accessibility provided by an IDP, making cross-team collaboration and innovation more effective. Developers can then more easily find and contribute to shared projects without navigating complex or unfamiliar environments. + +**Breaking Down Silos**: Excessive ownership culture often arises in organizations lacking common platform engineering practices, where individual teams or departments hold disproportionate control over their tools, processes, or codebases. Often in this kind of situation, teams treat their codebase as proprietary and actively discourage contributions from other teams by failing to document code properly, setting up overly restrictive access controls or even dismissing external contributions by blocking pull requests. This creates organisational silos, reducing opportunities for cross-team contributions. An IDP addresses this by promoting shared ownership of platform components leading over time to shared standards and practices, fostering a culture of openness and collaboration, which is at the heart of InnerSource. + +### InnerSource Practices Amplify the Adoption of IDP + +**Channeling Contributions to Platform Development**: InnerSource creates an avenue for developers across the organization to contribute directly to the IDP. For example, they can suggest or implement features that address common pain points or enhance usability. This community-driven approach ensures that the IDP evolves in response to real-world challenges faced by its users, making it more relevant and effective. + +**Encouraging Shared Ownership of the Platform**: Through InnerSource, developers treat the IDP as a shared product rather than something imposed by a centralized team. This increases adoption and engagement, as teams feel a sense of ownership and responsibility for its success. + +**Improving Documentation and Knowledge Sharing**: InnerSource practices naturally encourage contributions to documentation. Teams using the IDP can provide feedback, improve documentation, or add usage examples, ensuring that knowledge is continuously refined and up-to-date. ## Problem -A lack of standardization across development environments and tools introduces inefficiencies, lengthens onboarding time, and complicates project collaboration and scaling. Diverse setups across teams result in inconsistencies, making it difficult to ensure security, governance, and productivity at scale. Additionally, these inefficiencies lead to higher operational overhead and slower innovation cycles. +A lack of standardization across development environments and tools significantly hampers the scalability of InnerSource practices. In fragmented ecosystems, contributors must navigate diverse setups, workflows, and toolchains, creating unnecessary barriers to effective collaboration. This not only increases the cognitive load for developers contributing to projects outside their teams but also limits the organization’s ability to harness the full potential of shared codebases, reusable components, and collective innovation. + +Without a standardized foundation, InnerSource efforts struggle to scale as inconsistencies across teams lead to inefficiencies, delays, and misaligned governance practices. Contributors face challenges in understanding and integrating with unfamiliar environments, while teams resist external contributions due to perceived risks or integration overhead. An Internal Developer Platform (IDP) mitigates these issues by providing a self-service, unified platform that standardizes tools, processes, and environments. This enables InnerSource contributors to focus on delivering value rather than overcoming technical incompatibilities, fostering a culture of collaboration and accelerating the adoption of InnerSource at scale. ## Story (optional) @@ -16,7 +36,7 @@ A lack of standardization across development environments and tools introduces i ## Context -This pattern emerges in organizations with multiple development teams working on different projects. As teams grow and evolve, discrepancies in the setup of development environments and access to resources become more prominent, hampering collaboration, introducing security risks, and reducing developer productivity. The need for uniformity without compromising flexibility drives the adoption of an IDP. +This pattern emerges in organizations with multiple InnerSource development teams working on different projects. As teams grow and evolve, discrepancies in the setup of development environments and access to resources become more prominent, hampering collaboration, introducing security risks, and reducing developer productivity. The need for uniformity without compromising flexibility drives the adoption of an IDP. ## Forces @@ -82,14 +102,22 @@ Key implementation principles: ## Resulting Context -Adoption of an Internal Developer Platform results in: +Adoption of an Internal Developer Platform helps to address directly a number of challenges in scaling InnerSource efforts across large and complex organisations, specifically supporting some of the areas that InnerSource tries to solve for such as: + +**Reducing development silos caused by excessive ownership culture**: An IDP breaks down silos by standardizing tools, environments, and processes across teams. It fosters InnerSource practices, where code and resources are shared across teams, reducing excessive ownership over particular tools or systems. By providing a centralized platform, IDPs make it easier for teams to collaborate, access shared resources, and contribute to each other’s work without the traditional territorial boundaries​. + +**Increasing innovation speed by reducing time spent solving similar issues and fostering healthy code reuse**: IDPs provide a central repository of templates, services, and reusable components, which encourages code reuse across the organization. Developers can access these assets directly from the platform, reducing duplication of effort. By integrating with documentation, APIs, and existing solutions, IDPs streamline the process of leveraging previous work, enabling teams to focus on innovation rather than reinventing the wheel​. + +**Solving project/team dependencies beyond "wait it out" and "build workarounds", thereby reducing engineering bottlenecks**: +IDPs allow teams to self-serve infrastructure, environments, and tools, reducing dependency on other teams to manually provision resources. By centralizing access to infrastructure and automating common processes like CI/CD pipelines, dependencies are less likely to create bottlenecks. + +**Increase quality**: IDPs increase software quality by promoting consistent and standardized practices and providing built-in guardrails for governance, security, and compliance. Automated testing and deployment pipelines ensure that all code adheres to the organization’s quality standards before it goes into production. Moreover, since developers can focus more on solving high-level problems rather than fighting with tooling and environment setup, they have more time to improve code quality​. + +**Increasing employee happiness**: The number one objective of an IDP is to increase Developer happiness, by treating and promoting the platform as an internal product. By reducing friction in the development process, an IDP allows developers to focus on what they do best which is writing code and solving meaningful problems. Self-service capabilities reduce waiting times for resources, while centralized platforms eliminate the complexity of managing disparate tools. This leads to a more streamlined developer experience, which in turn boosts job satisfaction and productivity​. + +**Increasing success of new hires**: IDPs simplify the onboarding process by providing new hires with easy access to pre-configured environments, documentation, and templates. Rather than spending their first weeks figuring out how to set up their development environment or learning which tools to use, new hires can start contributing much faster. The IDP serves as a single point of entry for everything they need, dramatically reducing ramp-up time​. As a result, developer onboarding time (typically measured through time for the first approved commit) is a key metric in IDP implementation and success. -- Stremline development workflow and improved developer efficiency through self-service workflows and standardized environments. -- Enhanced collaboration as InnerSource practices make code and tools more accessible across teams. -- Faster onboarding of new team members on InnerSource projects. -- Faster software delivery due to reduced operational overhead, seamless integration of tools and standardization of development best practices. -- Consistent governance and security policies across all development environments. -- Scalability and flexibility, with the ability to extend the platform as the organization evolves​ +**Building actionable documentation**: An IDP integrates documentation directly into the development workflows via self-service portals. Teams can access API documentation, code examples, and templates from the same place they access tools and environments. This centralization ensures that documentation is kept up-to-date and easily accessible. Furthermore, by encouraging direct InnerSource contributions into the documentation itself (from users), teams can continuously improve documentation based on real-world usage​. ## Rationale @@ -99,11 +127,11 @@ An IDP provides a solution to the competing forces of consistency, flexibility, (known instances to be added) -## Status (optional until merging) +## Status Initial Draft -## Author(s) (optional) +## Author(s) Vincent Caldeira @@ -114,4 +142,4 @@ Though optional, most patterns should list who helped in their creation. ## Alias (optional) -- Developer Self-Service Portal +(known aliases to be added) From f275a75baa7e28318e3ba1fd1aa6350e4811a46b Mon Sep 17 00:00:00 2001 From: caldeirav Date: Wed, 20 Nov 2024 18:49:42 +0800 Subject: [PATCH 04/16] Connecting the pattern to InnerSource better --- .DS_Store | Bin 0 -> 6148 bytes patterns/.DS_Store | Bin 0 -> 6148 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store create mode 100644 patterns/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..eb4de68db71ea5665c384e1937cf9e7efe26867a GIT binary patch literal 6148 zcmeHKyG{c!5S)b+C()!#>0jUvtSEc|Kahl^iwGjnU&VLvY0N$fq9a{sqS@1W?DdXM zH-+~WfGt0FkH8$jKzGEK4^#7f_lezA#E5jBvBx`JaoU|;4wLM^1I``rh7CUW{Nitq z$AfRmq<|EV0#ZN!>rAZaI literal 0 HcmV?d00001 diff --git a/patterns/.DS_Store b/patterns/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..28bb2deef4d1eb481421d21262e6e1db15996ff9 GIT binary patch literal 6148 zcmeHKJ8r`;3?)+!39@+Xs0(z+4TQisK`zj=UJ4k^(02FKbM{0uSNZth|{0@RZz zJ_&k*X^My*zxsnnDA!;D$AE4D?S225$j?4Z?1i zdoKYj768`7F%S`$1{D}o%@#w0j(Ewunm7gqT{N2y&6_nl6!qJ2e(`kC8px3fP=Toe z53y{m{-5A~^#4;5S5$xstV#iGx^s8Lld`tX9%r?-z@Ook^8+`-+$k8m90R=^V`1g^ d(UT&t*c|&caSU`i;!X$hXTWr!QGx$f;08E+6&wHn literal 0 HcmV?d00001 From c55dc436fa4fa2ff9e50d479d6b8d2fafd1b5ef4 Mon Sep 17 00:00:00 2001 From: caldeirav Date: Wed, 20 Nov 2024 18:54:41 +0800 Subject: [PATCH 05/16] Formatting changes --- patterns/1-initial/internal-developer-platform.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index 2fea3eb40..d54e46076 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -54,7 +54,7 @@ This pattern emerges in organizations with multiple InnerSource development team The diagram reflects both the high-level architecture and the workflow of the IDP: -1. Developer Interface Layer (Top Layer) +1. **Developer Interface Layer (Top Layer)** Self-Service Portal: A central access point for developers to interact with the IDP. This portal provides UI/UX for developers to provision environments, initiate CI/CD pipelines, deploy code, and monitor applications. It should have integrations with internal services such as: @@ -63,7 +63,7 @@ Self-Service Portal: A central access point for developers to interact with the - Access to documentation, templates, and tools - Monitoring dashboards -2. IDP Core Components (Middle Layer) +2. **IDP Core Components (Middle Layer)** These components form the operational backbone of the IDP and facilitate the interaction between the developers and the infrastructure. @@ -73,7 +73,7 @@ These components form the operational backbone of the IDP and facilitate the int - **Automation & IaC**: Infrastructure as Code (IaC) to provision resources, manage environments, and automate repeatable processes. - **Plugin Architecture**: A modular system that allows teams to extend the IDP by adding new tools or services via plugins (e.g., integrating with third-party APIs or custom tooling). -3. Platform Services & Resources (Bottom Layer) +3. **Platform Services & Resources (Bottom Layer)** These components are what the IDP exposes to developers through the portal and what it orchestrates. @@ -111,7 +111,7 @@ Adoption of an Internal Developer Platform helps to address directly a number of **Solving project/team dependencies beyond "wait it out" and "build workarounds", thereby reducing engineering bottlenecks**: IDPs allow teams to self-serve infrastructure, environments, and tools, reducing dependency on other teams to manually provision resources. By centralizing access to infrastructure and automating common processes like CI/CD pipelines, dependencies are less likely to create bottlenecks. -**Increase quality**: IDPs increase software quality by promoting consistent and standardized practices and providing built-in guardrails for governance, security, and compliance. Automated testing and deployment pipelines ensure that all code adheres to the organization’s quality standards before it goes into production. Moreover, since developers can focus more on solving high-level problems rather than fighting with tooling and environment setup, they have more time to improve code quality​. +**Increasing quality**: IDPs increase software quality by promoting consistent and standardized practices and providing built-in guardrails for governance, security, and compliance. Automated testing and deployment pipelines ensure that all code adheres to the organization’s quality standards before it goes into production. Moreover, since developers can focus more on solving high-level problems rather than fighting with tooling and environment setup, they have more time to improve code quality​. **Increasing employee happiness**: The number one objective of an IDP is to increase Developer happiness, by treating and promoting the platform as an internal product. By reducing friction in the development process, an IDP allows developers to focus on what they do best which is writing code and solving meaningful problems. Self-service capabilities reduce waiting times for resources, while centralized platforms eliminate the complexity of managing disparate tools. This leads to a more streamlined developer experience, which in turn boosts job satisfaction and productivity​. From b22251c24c79397fd5e6f13bce8c1ba52d64f719 Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Sun, 8 Dec 2024 12:37:18 +0100 Subject: [PATCH 06/16] Formatting of pattern status --- patterns/1-initial/internal-developer-platform.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index d54e46076..6bea4fcb2 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -129,7 +129,7 @@ An IDP provides a solution to the competing forces of consistency, flexibility, ## Status -Initial Draft +* Initial ## Author(s) From 4c5b7ca5c972902b0037c84f3fb1f3812e72e0cf Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Sat, 4 Jan 2025 09:31:20 +0100 Subject: [PATCH 07/16] Adding links to other resources that support this pattern --- patterns/1-initial/internal-developer-platform.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index 6bea4fcb2..cc36d4f08 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -140,6 +140,7 @@ Vincent Caldeira Include those who assisted in helping with this pattern - both for attribution and for possible future follow up. Though optional, most patterns should list who helped in their creation. -## Alias (optional) +## Links -(known aliases to be added) +* [Promoting InnerSource Practices with an Internal Developer Platform](https://www.youtube.com/watch?v=mqeBbQcDjTE&ab_channel=InnerSourceCommons) +* [internaldeveloperplatform.org](https://internaldeveloperplatform.org/) From 4ca41eb22c4138a1070a87d3858bc896a4189b70 Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Sat, 4 Jan 2025 09:33:03 +0100 Subject: [PATCH 08/16] Cleanup title --- patterns/1-initial/internal-developer-platform.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index cc36d4f08..fc3d00913 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -123,7 +123,7 @@ IDPs allow teams to self-serve infrastructure, environments, and tools, reducing An IDP provides a solution to the competing forces of consistency, flexibility, and scalability. By centralizing the management of development environments and tooling while offering self-service capabilities, it balances the needs of both developers and platform teams. InnerSource practices further contribute by fostering a culture of collaboration and reuse across the organization​. It supports scalable and controlled growth within the internal software development community, facilitating the adoption of wider InnerSource practices. -## Known Instances (optional) +## Known Instances (known instances to be added) From ddf1e661cd17428393a27378f708db06870b8703 Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Sat, 4 Jan 2025 09:37:03 +0100 Subject: [PATCH 09/16] Adding ack for Jose --- patterns/1-initial/internal-developer-platform.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index fc3d00913..cc563be7c 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -137,8 +137,7 @@ Vincent Caldeira ## Acknowledgments (optional) -Include those who assisted in helping with this pattern - both for attribution and for possible future follow up. -Though optional, most patterns should list who helped in their creation. +- [Jose Roman Martin Gil](https://github.com/rmarting) for providing early feedback on this pattern and helping to look for organizations that have implemented this pattern ## Links From e9fbfbeb7d832699f2f07358a373a5d1cb97f019 Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Sat, 4 Jan 2025 11:09:20 +0100 Subject: [PATCH 10/16] Removing optional Story block --- patterns/1-initial/internal-developer-platform.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index cc563be7c..44ee4d86f 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -30,10 +30,6 @@ A lack of standardization across development environments and tools significantl Without a standardized foundation, InnerSource efforts struggle to scale as inconsistencies across teams lead to inefficiencies, delays, and misaligned governance practices. Contributors face challenges in understanding and integrating with unfamiliar environments, while teams resist external contributions due to perceived risks or integration overhead. An Internal Developer Platform (IDP) mitigates these issues by providing a self-service, unified platform that standardizes tools, processes, and environments. This enables InnerSource contributors to focus on delivering value rather than overcoming technical incompatibilities, fostering a culture of collaboration and accelerating the adoption of InnerSource at scale. -## Story (optional) - -(to be done) - ## Context This pattern emerges in organizations with multiple InnerSource development teams working on different projects. As teams grow and evolve, discrepancies in the setup of development environments and access to resources become more prominent, hampering collaboration, introducing security risks, and reducing developer productivity. The need for uniformity without compromising flexibility drives the adoption of an IDP. From ca333cf5ad6ca1fdae538bff5f10b598310aace7 Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Fri, 17 Jan 2025 22:31:18 +0100 Subject: [PATCH 11/16] Moving text from Patlet to Rationale section --- .../1-initial/internal-developer-platform.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index 44ee4d86f..544275eef 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -8,22 +8,6 @@ As InnerSource adoption increases throughout an organisation, it is not unusual There is a symbiotic relationship between the IDP and InnerSource as their relationship enhances the scalability and effectiveness of both practices, especially in large organizations. -### IDP Helps to Scale InnerSource - -**Standardizing Development Practices**: In large organizations, development teams often use varied tools, environments, and processes. This lack of standardization makes it challenging for InnerSource contributors to effectively participate in projects outside their immediate teams. An IDP provides a unified platform that standardizes tools, templates, and workflows, creating a consistent development ecosystem. This in turns helps to accelerate software delivery, reduces cognitive load on developers and ultimately serves as a catalyst for scaling InnerSource practices across large organizations. InnerSource Contributors can quickly adapt and become productive, which is crucial for scaling InnerSource rapidly across diverse teams. - -**Improving Accessibility and Collaboration**: By streamlining access to essential resources and services through a self-service model, IDPs remove barriers that impede collaboration. InnerSource strategies are amplified through the standardization and accessibility provided by an IDP, making cross-team collaboration and innovation more effective. Developers can then more easily find and contribute to shared projects without navigating complex or unfamiliar environments. - -**Breaking Down Silos**: Excessive ownership culture often arises in organizations lacking common platform engineering practices, where individual teams or departments hold disproportionate control over their tools, processes, or codebases. Often in this kind of situation, teams treat their codebase as proprietary and actively discourage contributions from other teams by failing to document code properly, setting up overly restrictive access controls or even dismissing external contributions by blocking pull requests. This creates organisational silos, reducing opportunities for cross-team contributions. An IDP addresses this by promoting shared ownership of platform components leading over time to shared standards and practices, fostering a culture of openness and collaboration, which is at the heart of InnerSource. - -### InnerSource Practices Amplify the Adoption of IDP - -**Channeling Contributions to Platform Development**: InnerSource creates an avenue for developers across the organization to contribute directly to the IDP. For example, they can suggest or implement features that address common pain points or enhance usability. This community-driven approach ensures that the IDP evolves in response to real-world challenges faced by its users, making it more relevant and effective. - -**Encouraging Shared Ownership of the Platform**: Through InnerSource, developers treat the IDP as a shared product rather than something imposed by a centralized team. This increases adoption and engagement, as teams feel a sense of ownership and responsibility for its success. - -**Improving Documentation and Knowledge Sharing**: InnerSource practices naturally encourage contributions to documentation. Teams using the IDP can provide feedback, improve documentation, or add usage examples, ensuring that knowledge is continuously refined and up-to-date. - ## Problem A lack of standardization across development environments and tools significantly hampers the scalability of InnerSource practices. In fragmented ecosystems, contributors must navigate diverse setups, workflows, and toolchains, creating unnecessary barriers to effective collaboration. This not only increases the cognitive load for developers contributing to projects outside their teams but also limits the organization’s ability to harness the full potential of shared codebases, reusable components, and collective innovation. @@ -119,6 +103,22 @@ IDPs allow teams to self-serve infrastructure, environments, and tools, reducing An IDP provides a solution to the competing forces of consistency, flexibility, and scalability. By centralizing the management of development environments and tooling while offering self-service capabilities, it balances the needs of both developers and platform teams. InnerSource practices further contribute by fostering a culture of collaboration and reuse across the organization​. It supports scalable and controlled growth within the internal software development community, facilitating the adoption of wider InnerSource practices. +### IDP Helps to Scale InnerSource + +**Standardizing Development Practices**: In large organizations, development teams often use varied tools, environments, and processes. This lack of standardization makes it challenging for InnerSource contributors to effectively participate in projects outside their immediate teams. An IDP provides a unified platform that standardizes tools, templates, and workflows, creating a consistent development ecosystem. This in turns helps to accelerate software delivery, reduces cognitive load on developers and ultimately serves as a catalyst for scaling InnerSource practices across large organizations. InnerSource Contributors can quickly adapt and become productive, which is crucial for scaling InnerSource rapidly across diverse teams. + +**Improving Accessibility and Collaboration**: By streamlining access to essential resources and services through a self-service model, IDPs remove barriers that impede collaboration. InnerSource strategies are amplified through the standardization and accessibility provided by an IDP, making cross-team collaboration and innovation more effective. Developers can then more easily find and contribute to shared projects without navigating complex or unfamiliar environments. + +**Breaking Down Silos**: Excessive ownership culture often arises in organizations lacking common platform engineering practices, where individual teams or departments hold disproportionate control over their tools, processes, or codebases. Often in this kind of situation, teams treat their codebase as proprietary and actively discourage contributions from other teams by failing to document code properly, setting up overly restrictive access controls or even dismissing external contributions by blocking pull requests. This creates organisational silos, reducing opportunities for cross-team contributions. An IDP addresses this by promoting shared ownership of platform components leading over time to shared standards and practices, fostering a culture of openness and collaboration, which is at the heart of InnerSource. + +### InnerSource Practices Amplify the Adoption of IDP + +**Channeling Contributions to Platform Development**: InnerSource creates an avenue for developers across the organization to contribute directly to the IDP. For example, they can suggest or implement features that address common pain points or enhance usability. This community-driven approach ensures that the IDP evolves in response to real-world challenges faced by its users, making it more relevant and effective. + +**Encouraging Shared Ownership of the Platform**: Through InnerSource, developers treat the IDP as a shared product rather than something imposed by a centralized team. This increases adoption and engagement, as teams feel a sense of ownership and responsibility for its success. + +**Improving Documentation and Knowledge Sharing**: InnerSource practices naturally encourage contributions to documentation. Teams using the IDP can provide feedback, improve documentation, or add usage examples, ensuring that knowledge is continuously refined and up-to-date. + ## Known Instances (known instances to be added) From 098e3151827127fdfe079f415876d336b4ec2fad Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Fri, 17 Jan 2025 22:36:55 +0100 Subject: [PATCH 12/16] Splitting up Context into bullets --- patterns/1-initial/internal-developer-platform.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/patterns/1-initial/internal-developer-platform.md b/patterns/1-initial/internal-developer-platform.md index 544275eef..005e91645 100644 --- a/patterns/1-initial/internal-developer-platform.md +++ b/patterns/1-initial/internal-developer-platform.md @@ -16,7 +16,9 @@ Without a standardized foundation, InnerSource efforts struggle to scale as inco ## Context -This pattern emerges in organizations with multiple InnerSource development teams working on different projects. As teams grow and evolve, discrepancies in the setup of development environments and access to resources become more prominent, hampering collaboration, introducing security risks, and reducing developer productivity. The need for uniformity without compromising flexibility drives the adoption of an IDP. +- The organization has development teams working on different projects. These teams are already using InnerSource practices. +- As teams grow and evolve, discrepancies in the setup of development environments and access to resources become more prominent, hampering collaboration, introducing security risks, and reducing developer productivity. +- The teams (as well as the leadership of the organization) are looking to increase consistency in tools and processes without compromising on the flexibility to adapt to project-specific needs. ## Forces From c292445873122f4c2312624da84f2e796f4e0d28 Mon Sep 17 00:00:00 2001 From: Sebastian Spier Date: Fri, 17 Jan 2025 22:47:15 +0100 Subject: [PATCH 13/16] Adding new pattern to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 25fe0f536..b110b0671 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ Our mission * [Managing Capacity for Reviewing Contributions](/patterns/1-initial/capacity-for-contributions.md) - *Reviewing InnerSource contributions takes time and effort. This should be reflected in capacity planning, especially for larger contributions. Expectations and available capacity should be transparent so that contributors understand when their contributions will be reviewed and, if accepted, released.* * [InnerSource Ambassadors](/patterns/1-initial/innersource-ambassador.md) - *When driving InnerSource adoption through a large, decentralized organization it is hard to understand and address the local challenges that come up in different departments and regions. Local volunteers, called InnerSource Ambassadors, provide localized support by promoting InnerSource principles and acting as a communication bridge between their teams and the ISPO.* * [Circle Communities](/patterns/1-initial/circle-communities.md) - *InnerSource adoption is slow in organizations due to limited understanding, engagement, and contextual relevance. Circle Communities address this by fostering synchronous conversations that build connections, close knowledge gaps, and cultivate collaboration and continuous learning.* +* [Internal Developer Platform](/patterns/1-initial/internal-developer-platform.md) - *As InnerSource adoption increases throughout an organisation, it is not unusual that project teams start to face inefficiencies in scaling their efforts due to fragmented tooling, environments, and workflows. An Internal Developer Platform (IDP) provides a way to tackle this type of challenges through a centralized, self-service system that standardizes development environments and integrates tools to enhance consistency, collaboration, and developer productivity.*