Bonjour à tous!
J’espère que vous avez tous passé de bonnes fêtes et que vous êtes prêt pour cette nouvelle année 2019 qui s’annonce riche en évolutions chez Kuzzle!
Ici à Montpellier l’hiver est déjà presque terminé mais malgré les courtes journées nous n’avons pas chômé!
Lire cet article en Anglais: https://blog.kuzzle.io/kuzzle-winter-release-2019
Kuzzle
Intégration du protocol MQTT au cœur
Le cœur de Kuzzle est maintenant en version 1.6. Cette release mineur voit l’arrivée du support du protocole MQTT directement dans le cœur et non plus au travers d’un plugin.
La demande pour ce protocole se faisant croissante, nous avons préféré l’intégrer directement dans Kuzzle afin de simplifier la tâche pour les développeurs d’applications IoT.
Le protocol est désactivé par défaut, pour l’activer il faut modifier votre configuration dans votre kuzzlerc:
{ "server": { "protocols": { "mqtt": { "enabled": true } } } }
Support des alias Elasticsearch
Kuzzle est à présent capable de reconnaître et utiliser les alias Elasticsearch.
Bien qu’il puisse les utiliser comme les autres indexes, leurs création doit se faire directement au travers de l’API d’Elasticsearch.
SDK Javascript exposé dans les plugins
Nous avons décidé d’exposer le SDK JS 6 dans le contexte des plugins. Cette version spéciale du SDK utilise un protocole spécial directement branché sur le cœur de Kuzzle au lieu de passer par la couche réseau.
Ainsi les développeurs de plugins pourront profiter du même confort de développement que les développeurs d’applications client en utilisant les fonctions haut niveau du SDK.
// With old execute() syntax const request = new this.context.constructors.Request({ controller: 'document', action: 'create', index: 'blackmesa', collection: 'lambda-core', body: { gordon: 'freeman' } }); await this.context.accessors.execute(request); // With the embedded SDK await this.context.accessors.sdk.document.create( 'blackmesa', 'lambda-core', { gordon: 'freeman' } );
Utilisation de fonctions pour les hooks et pipes
Il est maintenant possible de passer directement des fonctions aux hooks, pipes ou action de contrôleur dans les plugins.
Jusqu’à présent il était uniquement possible de passer une chaîne de caractère correspondant à une fonction de l’objet plugin.
this.hooks = { 'document:afterCreate': (...args) => this.myFunction(...args) }; this.pipes = { 'document:afterGet': (...args) => this.restrictUser(...args) }; this.controllers = { newController: { myAction: (...args) => this.myAction(...args) } };
Kuzzle Plugin Advanced Boilerplate
Un nouveau boilerplate pour les plugins est disponible.
Il permet aux développeurs de démarrer rapidement le développement d'un plugin tout en respectant les bonnes pratiques, notamment sur la séparation des préoccupations et les tests unitaires.
C’est notre base pour la majorité des plugins Kuzzle que nous développons pour nos clients.
Pour plus de détails, consultez le README sur Github
Nouvelle documentation
Après des mois de rédaction et de peaufinage, la nouvelle version de notre documentation est enfin prête!
Cette nouvelle version a été développé entièrement de façon personnalisée avec metalsmith afin de correspondre au mieux à nos besoins.
Les plus gros changements sont un remaniement complet de la documentation de l’API, du système de plugins et de Koncorde, la documentation de la dernière version de nos SDK avec un maximum d’exemples de code et une recherche Algolia disponible sur l’ensemble de la documentation.
Pour finir, nous avons rédigé des Getting Started en Javascript, Go, C++ et Java pour faciliter la prise en main de nos SDK’s.
N’hésitez pas à aller jeter un coup d'œil, qui sait c’est peut être le jour pour se mettre enfin au Go ? ;)
SDK’s
Cet hiver nous avons beaucoup avancé sur la dernière version de nos SDK et nous sommes très impatient de pouvoir enfin les release officiellement.
Sortie officielle du SDK JS 6
Après des mois de bêta test, la dernière version de notre SDK Javascript a enfin été release officiellement.
Nous conseillons à tous les développeurs d’utiliser cette version si ce n’était pas déjà le cas!
Si vous utilisiez une version bêta du SDK JS 6, pensez à vérifier les breakings changes, notamment:
-
Changement de signature de la méthode document:create
-
Instantiation du SDK avec une classe Protocol
-
Retour de la méthode realtime:subscribe
Vous pouvez dès à présent intégrer la dernière version du SDK en faisant simplement:
> npm install kuzzle-sdk
Premiers SDK communautaires: Dart et Rust
Pour la première fois des contributeurs externes ont développé un SDK pour Kuzzle.
Cela nous a fait très plaisir de voir que la communauté Dart/Flutter soit aussi intéressée par Kuzzle, et nous tenons particulièrement à remercier @prijindal et @stafyniaksacha pour leur travail sur le SDK Dart !
De son côté, @alexandrebouthinon de l’équipe Kuzzle a lui aussi réalisé sur son temps libre un nouveau SDK en Rust ! Nous espérons que la communauté Rust sera contente de savoir qu’elle peut maintenant utiliser Kuzzle plus facilement grâce à l’API haut niveau offerte par ce SDK.
Vous pouvez dès à présent consulter la nouvelle page de listing des SDK sur notre documentation: https://docs.kuzzle.io/sdk-reference/
La documentation pour ces SDK n’est pas encore disponible mais ils sont très similaire au SDK Javascript et suivent scrupuleusement l’architecture de notre API au niveau des contrôleurs et actions ainsi que des différents paramètres.
Javascript/Go/C++/Java: Instantiation avec une classe Protocole
Les SDK s'instancient à présent directement avec un Protocol.
Ainsi les responsabilités sont mieux séparés entre le Protocol qui assure la communication avec Kuzzle et le SDK qui gère les fonctionnalités du mode offline.
Cette évolution est un des dernier breaking change avant la release final des SDKs.
// Javascript const kuzzle = new Kuzzle( new WebSocket('localhost') );
// C++ using namespace kuzzleio; kuzzleio::Kuzzle *kuzzle = new kuzzleio::Kuzzle( new kuzzleio::WebSocket("localhost") );
// Golang kuzzle, _ := kuzzle.NewKuzzle(websocket.NewWebSocket("kuzzle"), nil)
Javascript: Compatibilité avec React Native
Nous avons le plaisir d’annoncer qu’à présent le SDK Javascript est complètement compatible avec la dernière version de React Native!
L’utilisation des Symbol posait problème pour d’anciennes version, cela est maintenant corrigé.
Go/C++/Java: Chasse aux fuites mémoire et stabilité
Afin d’améliorer la robustesse de nos SDK, nous avons cherché et corrigé toutes les fuites mémoires de nos wrappers C et C++.
Ces fuites mémoires étaient également responsable des crashs aléatoires des SDK’s.
A présent les tests fonctionnels du C++ sont lancés avec Valgrind pour s’assurer qu’aucune fuite mémoire n’est présente dans le SDK.
C’est une étape très importante avant la release final car à présent les SDK’s dérivés du C++ commence à être suffisamment stables pour être utilisés en production.
Kuzzle <3 Vue.js
Ceux qui nous connaissent savent que nous ne jurons quasiment que par Vue.js pour développer des applications frontend.
L’Admin Console est un parfait exemple de la symbiose entre un frontend en Vue.js et un backend avec Kuzzle.
Nous travaillons actuellement sur un Getting Started spécialement pour Vue.js, ainsi qu'un How-To complet sur le développement d'une application Todo MVC avec Kuzzle et Vue.js.
Boilerplate Vue.js et CoreUI
Nous utilisons aussi beaucoup CoreUI pour nous faciliter le développement d’applications IoT, c’est pourquoi nous avons créé un boilerplate utilisant Vue.js, CoreUI et le SDK JS 6.
https://github.com/kuzzleio/kuzzle-vuejs-coreui-boilerplate
Ce boilerplate inclus l’authentification des utilisateurs, la gestion des pertes de connexions, l’internationalisation avec I18N et un exemple de tests end-to-end avec Cypress.
Conclusion
Cette fois nous sommes dans la dernière ligne droite pour la sortie officielle de nos SDKs. Cela a été un travail de longue haleine mais nous ne sommes pas peu fier du résultat.
Nous allons à présent pouvoir nous concentrer sur les nouvelles fonctionnalités que nous souhaitons ajouter à Kuzzle, nous vous tiendrons informés ;-)
Nos autres releases: