Blog
Ist InnerSource komisch geschrieben?

You will find a few related hits in Google if you search for "Inner Source", but back in the early days, no related hits where found. So, it was decided to call it InnerSource to get better reach!
Was ist InnerSource?
InnerSource kann definiert werden als die Anwendung von Open-Source-Softwareentwicklungsprinzipien innerhalb der internen Softwareentwicklungsprozesse eines Unternehmens. Dabei werden die wertvollen Erfahrungen aus Open-Source-Projekten genutzt und an den Kontext der internen Softwareentwicklung in Unternehmen angepasst.
Ähnlich wie der Begriff "Open Source" fördert InnerSource die Zusammenarbeit innerhalb einer Organisation. Sie nutzen öffentlich verfügbare Software, die häufig von Entwicklern bei ihrer täglichen Arbeit verwendet wird, und ermöglichen Rückmeldungen, einschließlich Anfragen für neue Funktionen, Fehlerbehebungen und Änderungen, wodurch die Zusammenarbeit ähnlich wie bei Open-Source-Projekten gefördert wird.
InnerSource arbeitet nach vier Grundprinzipien, die hier kurz zusammengefasst sind. Weitere Einzelheiten finden Sie unter InnerSource Commons. InnerSource Commons ist eine von der Gemeinschaft getragene Organisation, deren Ziel es ist, die Übernahme von InnerSource-Praktiken zur Verbesserung der Softwareentwicklung in Unternehmen zu fördern und zu erleichtern. Sie bietet eine Plattform für Wissensaustausch, Zusammenarbeit und die Entwicklung wertvoller Ressourcen für die InnerSource-Gemeinschaft.
- Offenheit: Offenheit in InnerSource-Projekten sorgt für Zugänglichkeit und vereinfacht Beiträge. Es handelt sich um gut dokumentierte Projekte, die es jedem in der Organisation leicht machen, sie zu entdecken, zu verstehen und daran teilzunehmen. Die Kontaktinformationen des Host-Teams sind leicht zugänglich, und die Absicht, InnerSource-Beiträge anzunehmen, wird über die entsprechenden Kanäle kommuniziert, was die erfolgreiche Zusammenarbeit fördert.
- Transparenz: Transparenz ist für eine effektive Zusammenarbeit mit InnerSource von grundlegender Bedeutung. Gastteams müssen klare Einblicke in die Richtung des Projekts, die Anforderungen, den Fortschritt und die Entscheidungsprozesse gewähren. Die Kommunikation sollte detailliert und auch für Personen außerhalb des Kernteams zugänglich sein, um Beiträge von Gastteams zu ermöglichen.
- Vorrangige Mentorenschaft: InnerSource setzt auf Mentorenschaft von Host-Teams für Gast-Teams, die von vertrauenswürdigen Committern geleitet werden. Diese Mentorenschaft befähigt die Mitarbeiter der Gastteams, sich in die Projekte des Gastgeberteams einzubringen und diese effektiv zu verändern. Host-Teams sollten der Mentorenschaft Vorrang einräumen, Gastmitarbeitern bei Bedarf helfen und nützliche Beziehungen innerhalb der Organisation pflegen.
- Freiwilliger Beitrag zum Code: InnerSource lebt von der freiwilligen Teilnahme, bei der sich Gast- und Gastgeberteams bereitwillig engagieren. Gastteams steuern Code für Gastgeberteams bei und nehmen diese Beiträge freiwillig an. Dieser freiwillige Ansatz gewährleistet die Übereinstimmung mit den Zielen jedes Teams. So können Gastgeberteams Beiträge akzeptieren, die mit ihrer Mission übereinstimmen, und Gastteams können Beiträgen Priorität einräumen, die ihren Zielen dienen. Die vollständige Zusammenarbeit erstreckt sich auch auf Code-Beiträge, um den Nutzen von InnerSource zu maximieren.
Warum InnerSource und die Probleme, die es löst
Wenn Sie InnerSource in Ihrem Unternehmen einführen, ist es wichtig, dass Sie Ihre Ziele definieren und verstehen, welche Probleme InnerSource lösen kann. Klare Ziele helfen den Menschen, sich mit InnerSource zu identifizieren und sich effektiv zu engagieren.
Sind Sie bestrebt, die Developer Velocity zu verbessern, gemessen am Developer Velocity Index (DVI) (1), der mit einem schnelleren Umsatzwachstum, höheren Aktionärsrenditen, mehr Innovationen und einer höheren Kundenzufriedenheit korreliert? Oder fördern Sie eine kollaborative Denkweise und legen Wert auf Wissensaustausch und Zusammenarbeit? Vielleicht liegt Ihr Schwerpunkt darauf, traditionelle Grenzen durch DevOps-Praktiken zu überwinden. Wenn Sie Ihren wahren Nordstern für InnerSource identifizieren, können Sie die Implementierung auf die spezifischen Herausforderungen und Ziele Ihres Unternehmens zuschneiden.
Vorteile von InnerSource
Die Vorteile des Einsatzes von InnerSource sind beträchtlich und umfassen:
1. Abmilderung teamübergreifender Abhängigkeiten: Wenn Teams isoliert arbeiten und nur an ihren individuellen "Projekten" oder "Repositories" arbeiten, ohne ihre Arbeit gemeinsam zu nutzen, führt dies häufig zu Code-Duplizierung in mehreren Bereichen. Dies führt zu vergeudetem Aufwand, da die Mitarbeiter unabhängig voneinander an denselben Problemen arbeiten, und kann auch zu subtilen Abweichungen im Verhalten bei identischen Lösungen führen. InnerSource fördert den Wissensaustausch und die Zusammenarbeit an gemeinsamen Lösungen, wodurch die Redundanz des Codes erheblich reduziert und die Effizienz gesteigert wird.
2. Abhängigkeiten effektiv auflösen: In größeren Organisationen gibt es in der Regel einen ständigen Kampf um die Zuweisung von Ressourcen und die Festlegung von Prioritäten. Dies führt oft zu Kämpfen, die nicht im unmittelbaren Fokus des Teams liegen. InnerSource hilft, indem es den Teams Einblick in die verfügbaren Software-Ressourcen und Kontakte innerhalb des Unternehmens gibt. Diese Transparenz ermöglicht es den Teams, gemeinsam an der Verbesserung des Codes zu arbeiten oder neue Funktionen hinzuzufügen, und zwar mit der Zustimmung der ursprünglichen Eigentümer, ohne auf Entscheidungen zur Priorisierung warten zu müssen. Dies erfordert zwar eine gewisse anfängliche Koordination, ist aber oft zeitsparender als das Warten auf Prioritätsentscheidungen.
Interaktionsmodell
Da wir Gemeinschaften um Projekte herum aufbauen, sehen Sie, dass Kommunikation der Schlüssel ist. In dieser asynchronen Welt, ganz zu schweigen von den Zeitzonenunterschieden und der organisationsübergreifenden Zusammenarbeit, liegt es auf der Hand, dass Sie Ihre Anleitung klar und leicht zu finden einrichten müssen. GitHub bietet eine umfassende Reihe von dokumentierten Prinzipien und Praktiken, die Ihnen den Einstieg in die Zusammenarbeit mit der Community erleichtern. Diese Ressourcen decken verschiedene Aspekte ab, von der Festlegung von Verhaltensrichtlinien über die Erstellung von Community-Profilen bis hin zur Verwendung von Pull-Request-Vorlagen. Darüber hinaus bietet GitHub eine Reihe von Kommunikationstools, die eine effektive Zusammenarbeit innerhalb Ihrer Community unterstützen. Sie können auf diese wertvollen Ressourcen unter github communities zugreifen.
- Produktteam: Das ursprüngliche Produktteam spielt eine zentrale Rolle bei der Entwicklung und Pflege des Kernprojekts. Sie sind die Hauptentscheidungsträger, die festlegen, welche Beiträge angenommen oder abgelehnt werden sollen. Darüber hinaus geben sie externen Mitarbeitern wertvolle Ratschläge und stehen ihnen als Mentoren zur Seite, um sicherzustellen, dass das Projekt mit seinen Zielen übereinstimmt und seine Gesamtqualität erhalten bleibt.
- Product Owner: Der Product Owner legt die übergreifende Vision, die Ziele und die Prioritäten des Projekts fest. Er arbeitet eng mit dem ursprünglichen Produktteam zusammen, um sicherzustellen, dass die Beiträge mit den Zielen des Projekts übereinstimmen. Oft setzen sie auf der Grundlage der Bedürfnisse der Benutzer und der Marktnachfrage Prioritäten für bestimmte Funktionen oder Erweiterungen.
- Vertrauenswürdige Committer: Vertrauenswürdige Committer sind Einzelpersonen oder Teammitglieder, die das Projekt verstehen und sich das Vertrauen der Gemeinschaft verdient haben. Ihre Hauptaufgabe besteht in der Überprüfung und Genehmigung von Beiträgen externer Mitwirkender. Darüber hinaus spielen sie eine wichtige Rolle bei der Betreuung und Anleitung der Mitwirkenden, um die kontinuierliche Qualität und Konsistenz des Projekts zu gewährleisten.
- Mitwirkende: Mitwirkende sind externe Personen oder Teams, die wertvolle Beiträge zum Projekt leisten wollen. Sie reichen aktiv Code, Fehlerkorrekturen oder neue Funktionen zur Überprüfung und Integration in das Projekt ein. Durch die Suche nach Feedback und die Zusammenarbeit innerhalb der Projektgemeinschaft treiben sie die Entwicklung und Verbesserung des Projekts voran.
- Verbraucher: Die Verbraucher, zu denen Endbenutzer und Interessengruppen gehören, sind die Nutznießer der Projektfunktionalität. Sie nutzen das Projekt oder Produkt, das durch die gemeinsamen Bemühungen des ursprünglichen Produktteams, externer Mitwirkender und vertrauenswürdiger Committer entstanden ist. Indem sie diese Beiträge nutzen, erfüllen sie ihre Bedürfnisse, geben Feedback zur Benutzerfreundlichkeit und profitieren von laufenden Verbesserungen.
InnerSource-Muster
Die InnerSource Patterns sind eine wertvolle Ressource, die umsetzbare Erkenntnisse und Best Practices für die Implementierung der InnerSource-Prinzipien in die Softwareentwicklungsprozesse eines Unternehmens bietet. Diese Muster dienen als Fahrplan zur Erleichterung der effektiven Zusammenarbeit, des Wissensaustauschs und der Projektbeiträge und spiegeln die erfolgreiche Dynamik von Open-Source-Communities wider. Durch die Nutzung dieser Muster können Unternehmen ihre Entwicklungsabläufe optimieren, eine Kultur der Transparenz kultivieren und Innovationen durch kollektive Anstrengungen vorantreiben. Jedes Muster bietet einen strukturierten Ansatz zur Bewältigung bestimmter Herausforderungen und macht die Einführung von InnerSource zu einem gut geführten und effizienten Unterfangen. Sie können diese Muster im Detail unter InnerSource Commons Patterns erkunden.
Ein besonders bemerkenswertes Muster, das bei der Revolutionierung von Arbeitsplätzen durch InnerSource hervorsticht, ist das "Gig Marketplace"-Muster.
Gig-Marktplatz-Muster
Das "Gig Marketplace"-Muster ist darauf ausgerichtet, organisatorische Silos abzubauen, indem ein interner Marktplatz für Aufgaben oder Projekte eingerichtet wird. Dieser innovative Ansatz ermöglicht es Teams, flexibel und effizient zusammenzuarbeiten, indem sie Fachwissen oder Dienstleistungen abteilungsübergreifend anbieten und nachfragen. Dieses Muster fördert den freien Fluss von Fähigkeiten und Ressourcen und ermöglicht es den Teams, Herausforderungen zu bewältigen und Projekte schnell abzuschließen, während gleichzeitig eine Kultur der Zusammenarbeit und des Wissensaustauschs gefördert wird.
Anwendungsgebiete für InnerSource
Cloudinfrastruktur
Die Landschaft der Cloud-Architektur entwickelt sich weiter und wird immer komplizierter. Insbesondere beobachten viele Unternehmen die Entstehung von Cloud Centers of Excellence (CCoE). Diese Einrichtungen sind in erster Linie für die Verwaltung der gemeinsamen Infrastruktur in Cloud-Umgebungen zuständig. Neben der Verwaltung der Infrastruktur sind sie von entscheidender Bedeutung für die Überwachung der Sicherheit und die Gewährleistung ihrer kontinuierlichen Aufrechterhaltung. Innerhalb der CCoEs werden die auf diese Aufgaben spezialisierten Teams gemeinhin als Plattformteams bezeichnet.
Moderne Cloud-Infrastrukturen folgen häufig dem Hub-and-Spoke-Modell, das durch das Cloud Adoption Framework (CAF) von Microsoft veranschaulicht wird. In diesem Modell stellt der Hub die zentralisierte Komponente dar, die für die Überwachung und Regulierung des ein- und ausgehenden Datenverkehrs verantwortlich ist. Im Gegensatz dazu stellen die Speichen isolierte Arbeitslasten dar, in denen Teams ihre Software oder Anwendungen ausführen können. Diese Speichen sind eng mit dem Hub verbunden. In der Regel obliegt es den Workload-Teams, die von ihnen benötigte spezifische Infrastruktur zu erstellen und zu verwalten.
Um sicherzustellen, dass die Workload-Teams die Compliance-Standards einhalten, stattet das Plattformteam sie mit wichtigen Bausteinen für die Erstellung der Infrastruktur aus. Diese Bausteine stehen allen Teams zur Verfügung, die Infrastrukturressourcen benötigen, einschließlich des Plattformteams. Die Bausteine werden häufig mit Tools wie Bicep oder Terraform erstellt, die beide die Erstellung von Modulen unterstützen, die in Repositories wie Azure Container Registry oder Terraform Cloud gehostet werden können.
Entscheidend ist, dass der Quellcode dieser Bausteine für alle Teams zugänglich ist und jedes Teammitglied Änderungen oder Aktualisierungen beitragen kann. Zur Qualitätskontrolle und zur Sicherstellung der kontinuierlichen Einhaltung der Standards müssen jedoch alle Änderungen an den Bausteinen vom Plattformteam genehmigt werden. Dieser Mechanismus stellt sicher, dass die Bausteine weiterhin den erforderlichen Standards entsprechen. Im Rahmen von InnerSource fungiert das Plattformteam als vertrauenswürdiger Committer, der diese gemeinschaftlichen Beiträge überwacht.
Verwendung von Paketen
In der heutigen Landschaft der Softwareentwicklung sind Pakete unverzichtbar geworden. Sowohl Frontend- als auch Backend-Anwendungen verlassen sich stark auf diese Pakete. Viele dieser Pakete sind quelloffen und werden von engagierten Personen akribisch gepflegt. Sie finden ihre Hosting-Plattformen in Paketmanagern wie NuGet und NPM, wobei GitHub eine der bekanntesten Plattformen für das Hosting dieser Open-Source-Pakete ist.
Das Fundament von GitHub beruht auf den Prinzipien der Erfahrung von Entwicklern und der Open-Source-Zusammenarbeit. Diese Ausrichtung bedeutet, dass der Quellcode zahlreicher Pakete für jedermann zugänglich ist und die Beiträge einer großen Gemeinschaft von Entwicklern ermöglicht. Änderungen an diesen Paketen durchlaufen Prüfungs- und Genehmigungsprozesse, die in der Regel von Paketbetreuern überwacht werden - engagierten Gruppen von Personen, die kontinuierlich zur Entwicklung und Pflege der Pakete beitragen.
Neben den Open-Source-Paketen verlassen sich Unternehmen auch auf unternehmensspezifische Pakete. Diese Pakete umfassen oft spezielle Funktionen, wie Authentifizierungs- oder Protokollierungsmethoden. Anstatt dass jedes Team diese Funktionalitäten unabhängig neu erfindet, folgen Unternehmen einem ähnlichen Prinzip: Sie erstellen Pakete, die von mehreren Teams gemeinsam genutzt werden können. Diese Pakete sind über Plattformen wie Azure DevOps Artifacts oder GitHub Packages verfügbar.
Wenn mehrere Teams innerhalb eines Unternehmens diese gemeinsamen Pakete verwenden, ist es wichtig, dass sie die Flexibilität haben, bei Bedarf Anpassungen und Verbesserungen vorzunehmen. Indem sie die gleichen Open-Source-Prinzipien wie bei externen Paketen anwenden, fördern diese Organisationen auf natürliche Weise eine Gemeinschaft von regelmäßigen Mitwirkenden. Innerhalb dieser Gemeinschaft werden Einzelpersonen zu vertrauenswürdigen Committern, die für die Überprüfung und Genehmigung von Änderungen an diesen wichtigen gemeinsamen Paketen verantwortlich sind und so sicherstellen, dass sie stabil und auf die Bedürfnisse des Unternehmens abgestimmt bleiben.
Anwendungen
Wie Infrastruktur- und Open-Source-Pakete können auch Anwendungsentwickler einen Open-Source-Ansatz verfolgen. Open-Source-Anwendungen dienen oft als Alternativen zu bekannten Anwendungen, z. B. Photoshop und The Gimp. Einige Unternehmen entscheiden sich sogar dafür, die von ihnen verwendeten Tools als Open-Source zu veröffentlichen, um sie für alle zugänglich zu machen. Auf diese Weise machen sie sich die kollektive Kraft der Gemeinschaft zunutze, um diese Anwendungen zu verbessern. Die gleichen Prinzipien, die für Open-Source-Pakete gelten, werden auf Open-Source-Anwendungen ausgedehnt und ermöglichen es jedem, neue Funktionen beizusteuern oder Fehler zu beheben. Vertrauenswürdige Committer spielen eine entscheidende Rolle bei der Überprüfung und Genehmigung dieser Änderungen.
Stellen Sie sich nun vor, dass diese Open-Source-Prinzipien, die von leidenschaftlichen Menschen vertreten werden, auf Unternehmenssoftware angewendet werden. Stellen Sie sich vor, die Anwendungen in einem Unternehmen wären für jeden zugänglich, und alle Mitarbeiter könnten zur Software des Unternehmens beitragen.
Dieser Ansatz fördert die Zusammenarbeit zwischen Teams und Abteilungen, bricht Silos effektiv auf und fördert den Wissensaustausch. Es ist ein Rezept für innovative Lösungen, da ein breiterer Kreis von Augen die Codebasis prüft und möglicherweise Fehler, Sicherheitsschwachstellen oder Designmängel in einem frühen Stadium entdeckt. InnerSource ermutigt die Entwickler, ihr Fachwissen und ihre bewährten Verfahren weiterzugeben, wodurch das allgemeine Kompetenzniveau Ihres Teams angehoben und das Risiko des Wissensverlusts beim Ausscheiden von Mitarbeitern gemindert wird.
Die Verteilung von Wissen und Verantwortung macht das Unternehmen weniger anfällig für Abhängigkeiten von Schlüsselpersonen. Wenn ein Entwickler ausscheidet, können andere einspringen, um den Code zu pflegen und zu verbessern. Die Förderung von InnerSource kultiviert eine Kultur der Offenheit und Transparenz, die sich auf das gesamte Unternehmen auswirkt und die Unternehmenskultur und die Moral der Mitarbeiter verbessert.
Zusammenfassung
Dieser Artikel befasst sich mit InnerSource, einer Praxis, die Open-Source-Prinzipien auf die interne Softwareentwicklung in Unternehmen überträgt. InnerSource fördert die Zusammenarbeit und das Feedback unter Wahrung der Sicherheitsgrenzen. Es beruht auf vier Grundprinzipien: Offenheit, Transparenz, priorisiertes Mentoring und freiwillige Code-Beiträge. Diese Prinzipien richten sich an organisatorische Herausforderungen wie die Verbesserung der Entwicklungsgeschwindigkeit und die Förderung der Zusammenarbeit.
Zu den Vorteilen von InnerSource gehören die Verringerung der Abhängigkeiten zwischen den Teams und die Lösung von Problemen bei der Ressourcenzuweisung in größeren Organisationen. Es fördert die Zusammenarbeit, den Wissensaustausch und die Effizienz. Der Artikel beschreibt auch ein rollenbasiertes Interaktionsmodell, an dem das Original Product Team, der Product Owner, Trusted Committers, Contributors und Consumers beteiligt sind, die alle gemeinsam an der Entwicklung und Pflege von Projekten arbeiten.
InnerSource hilft Ihnen beim Aufbau einer integrativen Organisation, in der die Mitarbeiter ihr Fachwissen zur Geltung bringen können, und bietet einen modernen Arbeitsansatz, der mit den Vorlieben und Werten der jüngeren Generationen übereinstimmt. Es fördert die Flexibilität, die funktionsübergreifende Zusammenarbeit, den Wissensaustausch und die Einbeziehung aller, was die Arbeitszufriedenheit, die Innovation und die Flexibilität des Unternehmens verbessern kann.
(1): Warum Ihre IT-Organisation die Erfahrung der Entwickler in den Vordergrund stellen sollte
Verfasst von
Arjan van Bekkum
I am passionate about problem-solving for customers with the help of technology I love to learn new techniques, technologies and ways to improve myself. The endless possibilities are beyond our imagination. If you want to do more than just get the job done, you need to listen, ask, learn, and challenge.
Contact



