Nous pensions pouvoir isolés les dépendances entre les API pour développeurs d'application terminal, développeurs de librairie de solution carte, et les développeurs de plugin, avec un découpage spécifique en différents modules proposant
des API: des modules primaires importés de manière unique pour chaque type de développement, et des modules secondaires importées automatiquement par transitivité.
Mais nous rencontrons finalement 2 difficultés avec le découpage envisagé :
- Des dépendances cycliques empêchent les importations des modules par transitivité, ce qui nécessiterait des importations multiples avec des versionings par type de développement.
- Autre élément plus gênant, les isolations apportées sur l'API plugin envisagée, permette que des évolutions apportées sur les API Reader et API Card n'engendrent pas de mettre à jour
les sources des plugins pour qu'ils soient compatibles, mais finalement ce schéma nécessitait encore que les plugins soient recompilés avec les nouvelles références des API Reader et Card, même si leurs sources n'évoluent pas. → cela ne permet pas de répondre
totalement au besoin visé, que même si un intégrateur n'a pas à faire évoluer les codes de ses plugins, qu’ils nécessitent de les recompiler si les API Reader et Card évoluent.
Nous avons identifié la solution pour résoudre ces 2 problèmes, il s'agit pour le développement de plugin, d'au lieu de proposer une API (Application Programming Interface), de plutôt exposer une SPI (Service Provider Interface). Cependant,
il nous parait risqué d'effectuer cette évolution dans le dernier mois qui nous reste avant la sortie de la release 1.0.0.
Nous proposons donc pour la release 1.0.0 de prioriser la stabilité de l'API pour les développeurs d'applications, et le support documentaire.
- Pour la release 1.0.0, nous ne découperons donc pas le Keyple Core en de multiples artifacts, et nous ne spliterons pas les composants du core en de multiple repositories.
- Le découpage sera pour la version d’après, donc la release 2.0.0, nous remplacerons alors la Plugin API par une Plugin SPI afin que les artifacts de plugins spécifiques puissent être
totalement indépendant des versions du Keyple Core. La Plugin SPI reprendra les signatures des méthodes abstraites proposées par la Plugin API: ainsi la transition des plugins construit sur le Core 1.0.0 vers 2.0.0 devrait être aisée. → la promesse sera tenue,
aucune adaptation des plugins ne sera nécessaire même si le Core évolue.
Pierre Terree
Calypso Networks Association
___________________________________________________________________________________
Mail / Skype / Teams : pierre.terree@xxxxxxxxxxxxxx
Mobile Phone : +262 693 11 42 90
WhatsApp : +33 6 16 79 71 12