Plugin-Spezifikation-Draft
Es müssen wohl erst einmal Namen definiert werden für folgende Sachverhalte:
Was ist ein "Plugin"? Ist das eine einzelne Pluginklasse? Oder ist das ein Paket von potentiell mehreren Pluginklassen, die man als zip-File installiert?
Wie unterscheidet man das? Im folgenden gehe ich einfach davon aus, dass das ganze Paket ein "Plugin" ist, das mehrere Klassen enthalten kann, die ExtensionPoints bedienen.
Plugins
Attribute
Ein Plugin hat mehrere Attribute, die im folgenden erläutert werden.
Name
Jedes Plugin hat einen Namen, den kein anderes Plugin haben darf. Der Name des Plugins reicht aus, um ein bestimmtes Plugin zu identifizieren. Der Name des Plugins muss folgendem regulären Ausdruck genügen: /fehltnoch/
Abhängigkeiten
Ein Plugin darf Abhängigkeiten haben.
Version
Jedes Plugin muss eine Version angeben. Eine Version besteht aus drei ganzen positiven Zahlen durch Punkte getrennt.
Beispiele:
- 0.1.0
- 2.0.4
- 0.0.0
Die Bedeutung dieser drei Zahlen ist wie folgt:
Erste Zahl:
major version
Zweite Zahl:
minor version
Dritte Zahl:
build
Damit Nutzer sinnvoll auf Plugins mit einer bestimmten Version verweisen können, muss folgende Regelung für die Vergabe von Versionsnummern eingehalten werden.
Änderungen einer der Zahlen sollen nur stattfinden wenn:
build
wenn sich das Plugin nur in einem Implementationsdetail, das keine Auswirkungen für die Nutzung des Plugins durch andere hat, ändert
minor
wenn das Plugin neue Features rückwärtskompatibel hinzufügt, so dass Dritte keine Veränderungen vornehmen müssen.
major
wenn das Plugin nicht rückwärtskompatible Änderungen enthält, so dass Software Dritter nicht länger funktioniert