-
Notifications
You must be signed in to change notification settings - Fork 183
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
[Pattern Draft] Internal Developer Platform #720
base: main
Are you sure you want to change the base?
Conversation
💖 Thanks for opening this pull request! 💖 The InnerSource Commons community really appreciates your time and effort to contribute to the project. Please make sure you have read our Contributing Guidelines. If you are submitting a new pattern, the following things will help get your pull request across the finish line! 🏁
This project has a small number of maintainers, volunteering their time to this project. So please be patient and we will get back to you as soon as we can. If we don't acknowledge this pull request after 7 days, feel free to chat to us about it in our Slack workspace. |
hi @caldeirav . Thank you for sharing this pattern with us, even including a sketch and everything! Amazing start! The pattern contains a lot of detail about how the IDP should be structured, and implemented. What I am missing is a stronger connection to InnerSource. As in, what are the type of InnerSource challenges that the IDP helps to solve? For concepts like an IDP that are already pretty widely adopted (e.g. Backstage and all), we sometimes face this challenge when trying to describe the impact of the concept as a pattern. We want to clarify whether the concept is "a useful Engineering practice in general" or if it is specifically supporting some of the areas that InnerSource tries to solve for. Some of the typical reasons for applying InnerSource can e.g. be found here. Please don't get me wrong, I am not saying that the IDP concept can not be an InnerSource pattern. It is likely more about identifying (and highlighting in the pattern) how this connects to InnerSource. If it helps I could also try to highlight individual sections in the pattern where I feel we could try to connect it more clearly to InnerSource? Please let me know if that would help. |
Hi @spier, thank you, it is always helpful to have third party reviews because from my perspective I suspect a lot of the "connections" you describe between the IDP practice and InnerSource happened organically through experience. I would definitely like to make this clearer for readers. First and foremost, we just had a community talk on the subject (recording now available here) and we shared about the symbiotic relationship between IDP and InnerSource from two angles:
But let's tie this to some of the concrete challenges referred to in the link you shared here: Reduce development silos caused by excessive ownership culture Increase innovation speed by reducing time spent solving similar issues by fostering healthy code reuse Increase development speed by better cross-team collaboration Solve project/team dependencies beyond "wait it out" and "build workarounds", thereby reducing engineering bottlenecks Increase quality Increase employee happiness Increase success of new hires Build actionable documentation I would definitely like to have your advice on 1) Whether the above makes sense and clarifies your ask (or if you still see gaps) and 2) What would be the best way to integrate the additional information into the pattern template? And also accessorily what the best way is to get this pull request through while still getting feedback from potential contributors. Thank you for your feedback! |
Hi! I would like to share some thoughts about this new pattern. I agree with @spier that reading the pattern is not easy to connect with InnerSource, as most of the benefits are related to software delivery lifecycles, standardization procedures or self-services for developers. Those things can be done applying InnerSource or not. On the other hand, thinking about InnerSource patterns, I found IDPs as a good way to implement other very well-know pattern: InnerSource Portal. The InnerSource portal can provide that centralized space to share across the organization and teams the different services, products, or repositories to attract contributors or build a community around them. So, an IDP can be the way to implement that pattern, including the benefits described by @caldeirav in the previous comment. So, I see the InnerSource Portal as the pattern and IDPs as the implementation of that pattern. Could IDPs be included in the [solutions and implementations] section as another implementation? It should require to summarize this content to fit into that pattern. Does it make sense? What do you think? |
|
||
Adoption of an Internal Developer Platform results in: | ||
|
||
- Stremline development workflow and improved developer efficiency through self-service workflows and standardized environments. |
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.
typo: Stremline --> Streamline
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.
- Stremline development workflow and improved developer efficiency through self-service workflows and standardized environments. | |
- Streamline development workflow and improved developer efficiency through self-service workflows and standardized environments. |
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.
Thanks for highlighting. Corrected with the last commit.
@rmarting thanks for reviewing! Here are my replies:
The "secret sauce" of the IDP is actually the orchestration layer that helps to define / encapsulate organisational practices and make them more consistent across the organisation. Scaling an Inner Source program beyond a few projects / streams is extremely difficult without this type of platform engineering capability. My understanding of patterns is that they can and probably should include best practices of implementing and scaling Inner Source i.e. the relationship between Inner Source and the pattern can very well be asymmetric (in this case, Inner Source requires IDP for scale, but IDP does not necessarily imply Inner Source). I hope this makes sense and maybe if it is still not obvious just let me know if rewriting with the above in mind can help make the relationship more obvious. My organisation is actually working on several implementations (early stage) as we speak so I am pretty convinced we will have some actual examples / references to validate this pattern in the future. |
@caldeirav Good job! The pattern is now more clearly connected to InnerSource values and principles. I liked the way is described and connected. For my side, looks great! I would like to spread this pattern to more people to confirm it as a valid pattern. During last InnerSource Summit 2024 there were different sessions related to IDPs, Platform Engineering, Developer Satisfaction and InnerSource as the way to spread knowledge and increase collaboration between teams. IMHO those sessions are evidences confirming IDP as an InnerSource pattern. Maybe @mcobby, @dterol23 , @wasadigi and @ebdabbs want to share their ideas about this new pattern. And they could think adding them as known instances or acknowledgments of this pattern. What do you think? |
|
||
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. | ||
|
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.
It could be good add a References
chapter to link this pattern with others that could be related, such as:
Maybe others could be listed here too. Ideas?
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.
Sure, why not. I think we already have some other patterns that have used a References section like this.
You can also include links to other patterns as part of the regular text. i.e. if there is an area in this pattern where we naturally talk about the relationship between IDP and InnerSource Portal, we could add the link there.
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.
@rmarting I am trying to get this pattern merged, so that it can more easily be linked to. Therefore we might not add this link to the InnerSource Portal now.
However we can leave this comment thread open if you like, so that we might remember it when we improve the pattern in the future (e.g. when we add Known Instances etc).
I haven't had time yet to review the latest version of this. Really sorry about that :( However I noticed this talk at the recent ISC Summit: I especially found the quote "InnerSource as an IDP catalyst" relevant to this pattern (around minute 7:08 in the video). Maybe phrasing it the other way around, "IDP as an InnerSource Catalyst", would make for a great title for this pattern? |
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 for your great work on this so far @caldeirav.
I think the content is great already, and we should merge this swiftly now to make it available in our repository, so that other organizations can more easily find this content.
I left some specific suggestions inline, which I hope should be straightforward to work in.
Once that is done please let me know, so that I can get this merged.
After that let's discuss how to find orgs (Known Instances) that also see this "symbiotic relationship between the IDP and InnerSource" and are already using this pattern.
PS: I was trying to remove the two .DS_Store
files but don't have permissions to push to your branch. Could you remove those?
|
||
Adoption of an Internal Developer Platform results in: | ||
|
||
- Stremline development workflow and improved developer efficiency through self-service workflows and standardized environments. |
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.
- Stremline development workflow and improved developer efficiency through self-service workflows and standardized environments. | |
- Streamline development workflow and improved developer efficiency through self-service workflows and standardized environments. |
|
||
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. | ||
|
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.
Sure, why not. I think we already have some other patterns that have used a References section like this.
You can also include links to other patterns as part of the regular text. i.e. if there is an area in this pattern where we naturally talk about the relationship between IDP and InnerSource Portal, we could add the link there.
|
||
## 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. |
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 broke these up into bullets, so that readers can use this like a checklist.
I did some rewording, however I tried to keep the intended meaning. Please check if it worked :)
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. |
Question:
What do you mean by "access to resources"? An example could help here.
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.
In your ISC community talk you mention that 99% of the work has to happen before setting up the IDP itself. i.e. self-service functionality for the developers has to be developed first, before it can be exposed through an IDP.
Therefore I think we should capture these pre-conditions here, in the form of additional elements of the Context section.
For example:
- the organization has a DevEx team (aka platform development team), tasked to improve developer productivity by reducing friction from suboptimal tools and processes
- at least some self-service style functionality has already been developed by the DevEx team
### 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. | ||
|
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.
The Palet should stay pretty short (max 2 sentences describing problem and solution). Like the shortest possible summary of what this pattern is about.
Therefore we should move this extra text somewhere else in the pattern.
For the time being you could move this to the "Rationale" section, what do you think?
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. |
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.
While this seems a bit too long for a Patlet, I suggest to leave it as is for now. We can adapt this once we add more Known Instances and feedback from other orgs, before making this pattern available in our online book. (maturity level "Structured")
Hi @caldeirav, and happy new year :) I just wanted to follow-up on this pattern again. I cleaned up the PR as much as I could on my own. The remaining things I cannot do, as I cannot push to If you have time, it would be great if you could review the last 3-4 inline comments. Hopefully they won't be that much work for you to resolve. If you don't have time to work on this, just let me know. In that case I can finish this on my own (by creating a new branch/PR that I can push to). Thanks again for sharing your idea with us here! |
Proposing the Internal Developer Platform under the maturity 1-Initial to start getting contributions across the InnerSource Commons.
The pattern will be presented and discussed in our upcoming community call: "Promoting InnerSource Practices with an Internal Developer Platform"