SPI, Service Provider Interface
Ein SPI, Service Provider Interface, ist ein versionierter Vertrag, den der Kern einer Software veröffentlicht und an dem sich Erweiterungen einhängen, ohne eine Zeile am Kern zu ändern.
Der Vertrag ist hier wörtlich gemeint: eine Schnittstelle, die der Kern veröffentlicht und die eine Erweiterung ausfüllt. Was du kundenseitig als Modul buchst, ist technisch ein Plugin. Es bringt eigenes Datenmodell, eigene Rechte, eigene Oberfläche und eigene Hintergrundarbeit mit und hängt sich an genau den Verträgen ein, die es braucht. Am Kern ändert es keine Zeile. Das ist keine Höflichkeit, sondern die Bedingung dafür, dass ein Systemupdate die Erweiterung nicht zerlegt.
Wie viele Verträge es gibt, kannst du nachzählen. Die Vertrags-Referenz führt 216 Stück in 49
Bereichen, von Automation über Datenschutz und Suche bis Versand. 60 davon tragen die Zusage
STABLE, ihre Signatur ändert sich innerhalb einer Hauptversion nicht. Der Rest steht als
EXPERIMENTAL da, also nutzbar, aber noch nicht eingefroren. Registrieren muss man nichts.
Implementieren genügt, eingesammelt wird automatisch.
Die Nummer der Vertragsfläche läuft getrennt von der Systemversion und getrennt von der Version jedes einzelnen Moduls. Drei Zahlen, drei Fragen: Was hat sich im Kern geändert, was in diesem Modul, und trägt der Vertrag noch. Für eine Erweiterung von außen zählt nur die dritte, und dort auch nur die erste Stelle.
Additiv weiterentwickeln heißt konkret das: Auf die 3.0 folgten 27 Minor-Schritte, jeder rein additiv. 3.14 brachte die Co-Editing-Berechtigung an einem Dokument dazu, 3.15 den Umsatz eines Kunden als Beitrag, 3.27 den internen Ortswechsel geführter Bestandseinheiten. Neues kommt dazu, Bestehendes bleibt. Echte Brüche gab es in der ganzen Historie zwei, die 2.0 und die 3.0, und jeder sagt in seinem eigenen Eintrag, was ein Plugin tun muss. Nennt ein Plugin gar keine Vertragsversion, installiert es mit Warnung. Nennt es die falsche Hauptversion, bricht die Installation ab.
Abgesichert wird das durch Prüfungen, die bei jedem Lauf mitgehen. Jede eingefrorene Signatur liegt als Momentaufnahme im Test. Ändert sich im Kern etwas ungeplant, schlägt er fehl, bevor das Release rausgeht. Ein zweiter Test verbietet dem Kern, überhaupt auf ein Plugin zu zeigen.
Wasserdicht war das nicht von Anfang an, und das gehört dazu. Die Zusage hing an den Schnittstellen, aber nicht an den Klassenlisten daneben. Zweimal wuchs dadurch das ausgelieferte Entwickler-Paket unter unveränderter Nummer. Weil der Installer nur die ersten zwei Stellen vergleicht, nimmt er so eine Erweiterung an, und der Riss fällt erst im Betrieb als „Class not found“ auf. Behoben samt Rückfallsperre: Jeder Listeneintrag trägt jetzt seine Vertragsnummer, ein Eintrag ohne ist rot. Die Lehre bleibt, dass ein Vertrag nur so viel wert ist wie der Test, der ihn festhält.
Auch bekannt als: Service Provider Interface.
So sieht das in Octibiz aus
Verwandte Begriffe
Sieh dir an, wie das im System aussieht.
30 Minuten an unserem echten Agentursystem. Keine Folien, keine Begriffsdefinitionen.