tag:linuxfr.org,2005:/tags/mongooseim/publicLinuxFr.org : les contenus étiquetés avec « mongooseim »2017-11-05T21:14:13+01:00/favicon.pngtag:linuxfr.org,2005:News/382692017-11-05T13:59:02+01:002017-11-05T17:04:49+01:00MongooseIM 2.1.0, MongoosePush, MongooseICE, TideLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>MongooseIM est une plate‐forme libre de <em>chat</em> ou messagerie instantanée, permettant de construire des applications et clients intégrant des fonctionnalités de messagerie instantanée, qu’ils soient pour le mobile ou pour les ordinateurs de bureau.<br><img src="https://img.linuxfr.org/img/68747470733a2f2f65736c2d776562736974652d70726f64756374696f6e2e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f636f6e74656e745f4d6f6e676f6f7365494d5f6c6f676f2e706e67/content_MongooseIM_logo.png" alt="Logo de la plate‐forme MongooseIM"></p>
<p>La plate‐forme MongooseIM (par <a href="https://www.erlang-solutions.com/">Erlang Solutions</a>) passe en version 2.1.0, faisant un grand pas en avant. Le serveur central MongooseIM, qui donne son nom à la plate‐forme, codé en Erlang sous <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.fr.html">licence GPL v2</a>, a reçu énormément d’attention tant au niveau code qu’au niveau documentation. MongoosePush est un tout nouveau serveur de « Notifications Push » pour les systèmes Apple iOS et Android, codé en <a href="https://fr.wikipedia.org/wiki/Elixir_(langage)">Elixir</a> sous <a href="https://www.apache.org/licenses/LICENSE-2.0">licence Apache 2.0</a>. MongooseICE est un serveur <a href="https://fr.wikipedia.org/wiki/Simple_Traversal_of_UDP_through_NATs">STUN</a> et <a href="https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT">TURN</a>, pour découvrir les adresses IP dans le cadre de communications temps réel pair à pair, ou pour relayer le flux, il est également codé en Elixir sous licence Apache 2.0. Finalement, Tide est une infrastructure de tests de charge en continu, intégré à GitHub.</p></div><ul><li>lien nᵒ 1 : <a title="https://github.com/esl/MongooseIM" hreflang="en" href="https://linuxfr.org/redirect/100885">Dépôt de code source de MongooseIM sur GitHub</a></li><li>lien nᵒ 2 : <a title="https://mongooseim.readthedocs.io/en/latest/" hreflang="en" href="https://linuxfr.org/redirect/100886">Documentation de la plate‐forme MongooseIM</a></li><li>lien nᵒ 3 : <a title="https://github.com/esl/MongoosePush" hreflang="en" href="https://linuxfr.org/redirect/100887">MongoosePush, notifications push, en Elixir, sous Apache 2.0</a></li><li>lien nᵒ 4 : <a title="https://github.com/esl/MongooseICE" hreflang="en" href="https://linuxfr.org/redirect/100888">MongooseICE, STUN & TURN, en Elixir, sous Apache 2.0</a></li><li>lien nᵒ 5 : <a title="http://tide.erlang-solutions.com/" hreflang="en" href="https://linuxfr.org/redirect/100889">Tide, infrastructure de tests de charge en continu</a></li><li>lien nᵒ 6 : <a title="https://linuxfr.org/news/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0" hreflang="fr" href="https://linuxfr.org/redirect/100890">« La plate‐forme MongooseIM est disponible en version 2.0.0 » sur LinuxFr.org</a></li><li>lien nᵒ 7 : <a title="https://www.erlang-solutions.com/products/mongooseim.html" hreflang="en" href="https://linuxfr.org/redirect/100891">La page « Produit » de MongooseIM, sur erlang-solutions.com</a></li><li>lien nᵒ 8 : <a title="https://www.erlang-solutions.com/resources/case-studies.html#boost-your-engine-growth-with-chat-and-social-value-19" hreflang="en" href="https://linuxfr.org/redirect/100892">Boost your engine growth with chat and social value, PDF mini livre blanc</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#petit-bout-dhistoire-et-de-contexte">Petit bout d’histoire et de contexte</a></li>
<li><a href="#mongooseim210">MongooseIM 2.1.0</a></li>
<li><a href="#mongoosepush-et-mongooseice">MongoosePush et MongooseICE</a></li>
<li><a href="#tide">Tide</a></li>
<li><a href="#minilivre-blanc-sur-la-construction-et-la-croissance-dapplications-de-messagerie-instantan%C3%A9e">Mini‐livre blanc sur la construction et la croissance d’applications de messagerie instantanée</a></li>
<li><a href="#feuille-de-route-roadmap-%C3%A0-court-et-moyen-terme">Feuille de route (« <em>roadmap</em> ») à court et moyen terme</a></li>
<li><a href="#appel-de-laventure">Appel de l’aventure</a></li>
</ul><h2 id="petit-bout-dhistoire-et-de-contexte">Petit bout d’histoire et de contexte</h2>
<p>Dans ses version 1.<em>x</em>, c’est‐à‐dire de 1.0 à 1.6, MongooseIM était un serveur discret et autonome. Puis, avec sa version 2.0, MongooseIM a pivoté vers une plate‐forme homogène et cohérente. Généralement une plate‐forme permet de construire quelque chose par dessus et, plus précisément, la plate‐forme MongooseIM permet de construire des applications de messagerie instantanée (<em>chat</em>) en utilisant ses composants logiciels.</p>
<p>Les composants logiciels sont basés sur des standards ouverts tels que XMPP, REST, OpenAPI et JSON. Cette plate‐forme convient au déploiement de serveurs XMPP fédérés standards prêts à l’emploi, aussi bien qu’aux entreprises (de la <em>startup</em> en amorçage ou « solo‐preneuriat », au grand groupe ou à la <a href="https://fr.wikipedia.org/wiki/Licorne_(%C3%A9conomie)">licorne</a>) pour construire leur propre application de messagerie instantanée (ou application fournissant tout autre service, auquel on ajoute de la messagerie instantanée). Le serveur MongooseIM permet de connecter plusieurs dizaines de millions d’utilisateurs.</p>
<p>Les composants livrés avec la plate‐forme MongooseIM 2.0 étaient (et sont toujours) :</p>
<ul>
<li>
<a href="https://github.com/esl/amoc">amoc</a> : <em>A Murder of Crows</em>, outil de test massivement parallèle en Erlang sous licence Apache 2.0 ;</li>
<li>
<a href="https://github.com/esl/escalus/">Escalus</a> : client XMPP en Erlang sous licence Apache 2.0 ;</li>
<li>
<a href="https://github.com/robbiehanson/XMPPFramework">XMPPFramework</a> : bibliothèque XMPP en Objective-C pour iOS (tiers) ;</li>
<li>
<a href="https://github.com/inaka/Jayme">Jayme</a> : bibliothèque REST en Swift pour iOS par Inaka ;</li>
<li>
<a href="https://github.com/igniterealtime/Smack">Smack</a> : bibliothèque XMPP en Java pour Android par IgniteRealTime (tiers) ;</li>
<li>
<a href="https://github.com/square/retrofit">Retrofit</a> : bibliothèque REST en Java pour Android par Square (tiers) ;</li>
<li>
<a href="https://github.com/esl/mangosta-ios">Mangosta iOS</a> et <a href="https://github.com/esl/mangosta-android">Mangosta Android</a> : clients iOS et Android, libres sous licence Apache 2.0, orientés « <em>team chat</em> » (comme Slack, HipChat, MatterMost, Rocket.Chat, Zulip, Let’s Chat, Cisco Spark, Matrix/Riot, Ring, Gitter, Flock, Keybase, Microsoft Teams, Google Hangouts Chat, Unify Circuit, RingCentral Gip, Zang Spaces, Mitel MiTeam, Flowdock, etc.), et social (comme <a href="//linuxfr.org/tags/movim/public">Movim</a> et <a href="//linuxfr.org/tags/s%C3%A0t/public">Salut à Toi</a>).</li>
</ul><p>Portée par cette logique de plate‐forme, MongooseIM 2.0 avait aussi apporté une API REST (OpenAPI avec du JSON), à la fois pour les <em>back‐ends</em>/serveurs à des fins de contrôle et d’échange de données dans l’infrastructure, et aussi pour le frontal/client/app pour simplifier et fluidifier le développement pour les <em>non‐aficionados</em> de XMPP.</p>
<p>La version 2.1 est le renforcement de cette posture de plate‐forme, améliorant l’existant et apportant encore de nouveaux composants logiciels à l’écosystème. Le futur de cette plate‐forme est suggéré à la fin de cet article, dans la partie feuille de route, ouverte à votre influence.<br><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6f70656e617069732e6f72672f77702d636f6e74656e742f75706c6f6164732f73697465732f332f323031362f31302f4f70656e4150495f50616e746f6e652e706e67/OpenAPI_Pantone.png" alt="OpenAPI" title="Source : https://www.openapis.org/wp-content/uploads/sites/3/2016/10/OpenAPI_Pantone.png"></p>
<h2 id="mongooseim210">MongooseIM 2.1.0</h2>
<p>Cette version 2.1.0 est un grand pas en avant en termes de qualité. Le focus a été porté sur la cohérence du code et de la documentation.</p>
<p>Voici un survol très rapide des changements majeurs :</p>
<ul>
<li>compatibilité Erlang/OTP 20 ;</li>
<li>recherche plein texte sur MAM (<em>Message Archive Management</em>) ;</li>
<li>XMPP <em>pipelining</em> ;</li>
<li>distribution Erlang chiffrée par TLS (à l’intérieur d’une grappe de serveurs — <em>cluster</em>) ;</li>
<li>accumulateurs, méta‐données sur les messages pour une inspection et une traçabilité plus fines ;</li>
<li>authentification par jeton Web JSON ;</li>
<li>passage à <em>rebar3</em> ;</li>
<li>configuration des groupes (<em>pools</em>) pour SGBDR ;</li>
<li>bien meilleure <a href="https://coveralls.io/github/esl/MongooseIM">couverture de tests</a> (69 % à ce jour) ;</li>
<li>améliorations de MAM, MUC light et nos API REST (OpenAPI+JSON) côté serveur et côté client ;</li>
<li>énormément de travail de fond sur la documentation.</li>
</ul><p>Pour les plus voraces en détails :</p>
<ul>
<li>
<a href="https://github.com/esl/MongooseIM/releases/tag/2.1.0beta1">changements 2.1.0beta1</a> ;</li>
<li>
<a href="https://github.com/esl/MongooseIM/releases/tag/2.1.0beta2">changements 2.1.0beta2</a> ;</li>
<li>
<a href="https://github.com/esl/MongooseIM/releases/tag/2.1.0">changements 2.1.0</a>.</li>
</ul><h2 id="mongoosepush-et-mongooseice">MongoosePush et MongooseICE</h2>
<p>MongoosePush est un tout nouveau serveur de « <em>Notifications Push</em> » pour appareils iOS et Android. Ces notifications passent par les serveurs tiers APNS (<em>Apple Push Notification Service</em>) et FCM (<em>Firebase Cloud Messaging</em>, anciennement GCM pour <em>Google Cloud Messaging</em>) pour atteindre l’appareil. Vous pouvez l’utiliser avec la <a href="https://xmpp.org/extensions/xep-0357.html">XEP-0357 : <em>Push Notifications</em></a>. Sinon, il est possible d’utiliser le module <a href="https://mongooseim.readthedocs.io/en/latest/modules/mod_aws_sns/"><em>mod_aws_sns</em></a> passant par Amazon AWS SNS (<em>Simple Notification Service</em>) ou le module générique de notifications par HTTP <a href="https://mongooseim.readthedocs.io/en/latest/modules/mod_http_notification/"><em>mod_http_notification</em></a>.</p>
<p>MongooseICE est un serveur STUN et TURN, donc il permet deux choses dans le cadre de communications binaires temps réel pair à pair : découvrir les adresses IP des appareils désirant entrer en communication, ou de relayer le flux binaire entre les deux appareils. Cela aide énormément à l’établissement des appels voix et vidéo et aussi du partage d’écran, par exemple. Ce type de serveur est généralement couplé avec MongooseIM qui route la partie « <em>signalling</em> » par <a href="https://fr.wikipedia.org/wiki/Jingle_(protocole)">Jingle</a>.</p>
<p>MongoosePush et MongooseICE sont tous les deux des serveurs autonomes et indépendants, pouvant fonctionner en dehors de la plate‐forme MongooseIM. Il sont tous les deux codés en Elixir et sont tous les deux placés sous licence Apache 2.0.<br><img src="https://img.linuxfr.org/img/68747470733a2f2f75706c6f61642e77696b696d656469612e6f72672f77696b6970656469612f636f6d6d6f6e732f7468756d622f392f39352f584d50505f6c6f676f2e7376672f32323070782d584d50505f6c6f676f2e7376672e706e67/220px-XMPP_logo.svg.png" alt="XMPP"></p>
<p>Le schéma de composants de la plate‐forme MongooseIM ressemble désormais à ceci :<br><img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f65736c2f4d6f6e676f6f7365494d2f6d61737465722f646f632f4d6f6e676f6f7365494d5f506c6174666f726d5f636f6d706f6e656e74732e706e67/MongooseIM_Platform_components.png" alt="Plate‐forme MongooseIM : composants logiciels" title="Source : https://raw.githubusercontent.com/esl/MongooseIM/master/doc/MongooseIM_Platform_components.png"></p>
<h2 id="tide">Tide</h2>
<p>Tide est une infrastructure que l’on a développée en interne chez Erlang Solutions, en relation étroite avec l’équipe MongooseIM. Il nous sert pour les tests de charge en continu. Nous passons donc au stade public.</p>
<p>Tide s’intègre au processus de développement sur Git (GitHub). Chaque fusion (<em>merge</em>) d’une demande d’intégration (<em>pull request</em>) est testée et graphée. Cela nous permet de détecter toute régression en termes de performance. L’analyse n’est pas aisée et nécessite toujours de l’expertise humaine.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f746964652e65726c616e672d736f6c7574696f6e732e636f6d2f6368617274732f62696461696c795f6c6173745f796561722e706e67/bidaily_last_year.png" alt="Amélioration des performances à travers le temps" title="Source : http://tide.erlang-solutions.com/charts/bidaily_last_year.png"></p>
<p>Ce graphe montre un des progrès de MongooseIM sur l’année en cours. Il mesure le TTD (<em>Time To Delivery</em>) d’une grappe de serveurs MongooseIM, c’est‐à‐dire la durée entre l’instant où le message de l’expéditeur est reçu et l’instant où il est renvoyé au destinataire. Il ne prend pas en compte le réseau entre l’utilisateur et la grappe de serveurs MongooseIM.</p>
<p>Pour l’instant Tide est réservé à un usage dédié à la plate‐forme MongooseIM et nous pensons ouvrir cette infrastructure à nos clients et, éventuellement, à d’autres usages.</p>
<h2 id="minilivre-blanc-sur-la-construction-et-la-croissance-dapplications-de-messagerie-instantanée">Mini‐livre blanc sur la construction et la croissance d’applications de messagerie instantanée</h2>
<p>Ce mini‐livre blanc, au format PDF, <em><a href="https://www.erlang-solutions.com/resources/case-studies.html#boost-your-engine-growth-with-chat-and-social-value-19">Boost your engine growth with chat and social value</a></em> (Augmentez la puissance de votre moteur de croissance avec de la valeur autour de la messagerie instantanée et du social) est dédié aux décideurs des entreprises et administrations, type directeur technique ou DSI, PDG, fondateurs de start‐ups… Il évolue autour des applications de messagerie instantanée ou applications intégrant de la messagerie instantanée.</p>
<p>La problématique solutionnée par ce papier tourne autour des mêmes doutes et risques que l’on retrouve dans ces types d’entreprises. Comment séduire une base d’utilisateurs autour de votre application en construction ? Que faire pour auto‐entretenir cette communauté ? Comment créer une dynamique de viralité ?</p>
<p>À travers des modélisations telles que les « <em>Pirate Metrics</em> » (AARRR) ou la loi de Metcalfe, je m’efforce de mettre en évidence les effets attendus des fonctionnalités majeures de la messagerie instantanée. Cela permettra aux stratèges de reconnecter la réalité de la messagerie instantanée au <em>business</em> qu’ils sont en train de bâtir.<br><img src="//img.linuxfr.org/img/68747470733a2f2f6d656469612e6c6963646e2e636f6d2f6d70722f6d70722f414149415f77444741414141415141414141414141413359414141414a44557a4f44466b5a6a4e684c5445775a6d45744e445269596931684e7a51774c54673059545a694d5755325a4463345a412e706e67/AAIA_wDGAAAAAQAAAAAAAA3YAAAAJDUzODFkZjNhLTEwZmEtNDRiYi1hNzQwLTg0YTZiMWU2ZDc4ZA.png" alt="Boost your engine growth with chat and social value" title="Source : https://media.licdn.com/mpr/mpr/AAIA_wDGAAAAAQAAAAAAAA3YAAAAJDUzODFkZjNhLTEwZmEtNDRiYi1hNzQwLTg0YTZiMWU2ZDc4ZA.png"></p>
<h2 id="feuille-de-route-roadmap-à-court-et-moyen-terme">Feuille de route (« <em>roadmap</em> ») à court et moyen terme</h2>
<p>MongooseIM 2.1.1 sera une version d’optimisation et de maintenance. Elle sera probablement rendue publique avant la fin de l’année, en fonction des retours que l’on recevra. On peut déjà annoncer toujours plus de qualité, de performance et de documentation.</p>
<p>Ensuite, les versions MongooseIM 3.x livreront la capacité de déployer MongooseIM à l’échelle planétaire, avec du « géo‐clustering ». Cela permet aux utilisateurs d’une région de se connecter de manière transparente à une grappe de serveurs locale, afin de réduire la latence du réseau utilisateur, et de bénéficier d’un routage ultra‐rapide entre régions.<br><img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f65736c2f4d6f6e676f6f7365494d2f6d61737465722f646f632f757365722d67756964652f4d6f6e676f6f7365494d5f776f726c776964655f6172636869746563747572652e706e67/MongooseIM_worlwide_architecture.png" alt="MongooseIM à l’échelle planétaire" title="Source : https://raw.githubusercontent.com/esl/MongooseIM/master/doc/user-guide/MongooseIM_worlwide_architecture.png"></p>
<h2 id="appel-de-laventure">Appel de l’aventure</h2>
<p>Si vous avez le temps et le courage de jouer avec MongooseIM, MongoosePush, MongooseICE et Tide, nous serons heureux d’en discuter ouvertement avec vous. Devant la variété de nos composants logiciels, vous trouverez sans doute votre bonheur, si vous souhaitez « hacker ». La documentation est continuellement ouverte à toute suggestion, bien évidemment.</p>
<p>Vous souhaitez contribuer, influencer ?</p>
<ul>
<li>donnez des étoiles, si vous le voulez : <a href="https://github.com/esl/MongooseIM">https://github.com/esl/MongooseIM</a> ;</li>
<li>générez du « <em>follow</em> », quand vous pouvez : <a href="https://twitter.com/MongooseIM">https://twitter.com/MongooseIM</a> ;</li>
<li>écrivez vos commentaires, autant que vous le souhaitez : <a href="https://github.com/esl/MongooseIM/issues">https://github.com/esl/MongooseIM/issues</a>.</li>
</ul></div><div><a href="https://linuxfr.org/news/mongooseim-2-1-0-mongoosepush-mongooseice-tide.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/112972/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/mongooseim-2-1-0-mongoosepush-mongooseice-tide#comments">ouvrir dans le navigateur</a>
</p>
NÿcoDavy DefaudPierre JarillonRyDroidhttps://linuxfr.org/nodes/112972/comments.atomtag:linuxfr.org,2005:News/376292016-12-12T08:25:33+01:002022-03-07T20:49:27+01:00La plate‐forme MongooseIM est disponible en version 2.0.0Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>La plate‐forme MongooseIM est disponible en version 2.0.0 ! Pour information ou rappel, c’est une plate‐forme de messagerie mobile instantanée, massivement extensible, dont le cœur est basé sur XMPP (Jabber). Elle permet de bâtir des applications de clavardage, ou de simplement déployer la partie serveur pour une communauté, association, entreprise ou administration, en utilisant des clients XMPP/Jabber standards. Cette version 2.0.0 est une étape majeure dans le développement de MongooseIM, les nouveautés sont spécialement conçues et contribuées pour les développeurs (<em>backend</em>, iOS et Android), également les administrateurs systèmes et <em>devops</em>.</p>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-content_MongooseIM_logo.png" alt="MongooseIM platform"></p>
<p>Survol des nouveautés, détaillées en seconde partie :</p>
<ul>
<li>pivot : d’un serveur isolé vers une plate‐forme complète client‐serveur ;</li>
<li>
<a href="https://fr.wikipedia.org/wiki/Publish-subscribe">PubSub</a>, ou « <em>publish‐and‐subscribe</em> » ;</li>
<li>MUC light, la discussion de groupe simplifiée ;</li>
<li>une API REST pour les clients et pour les serveurs ;</li>
<li>contributions significatives aux bibliothèques XMPP/Jabber :
<ul>
<li>
<a href="https://github.com/robbiehanson/XMPPFramework">XMPPFramework</a> pour iOS,</li>
<li>
<a href="https://github.com/igniterealtime/Smack">Smack</a> pour Android ;</li>
</ul>
</li>
<li>documentation revue et augmentée ;</li>
<li>des tests fonctionnels et performance en continu.</li>
</ul>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-220px-XMPP_logo.svg.png" alt="Powered by XMPP"></p>
</div><ul><li>lien nᵒ 1 : <a title="https://github.com/esl/MongooseIM" hreflang="en" href="https://linuxfr.org/redirect/98477">Dépôt GitHub du serveur MongooseIM</a></li><li>lien nᵒ 2 : <a title="https://www.erlang-solutions.com/products/mongooseim.html" hreflang="en" href="https://linuxfr.org/redirect/98478">Page produit MongooseIM sur erlang-solutions.com</a></li><li>lien nᵒ 3 : <a title="https://www.erlang-solutions.com/resources/download.html" hreflang="en" href="https://linuxfr.org/redirect/98479">Téléchargement</a></li><li>lien nᵒ 4 : <a title="http://mongooseim.readthedocs.io/" hreflang="en" href="https://linuxfr.org/redirect/98480">Documentation</a></li><li>lien nᵒ 5 : <a title="https://github.com/robbiehanson/XMPPFramework" hreflang="en" href="https://linuxfr.org/redirect/98481">Bibliothèque XMPPFramework pour iOS</a></li><li>lien nᵒ 6 : <a title="https://github.com/igniterealtime/Smack" hreflang="en" href="https://linuxfr.org/redirect/98482">Bibliothèque Smack pour Android (igniterealtime)</a></li><li>lien nᵒ 7 : <a title="https://github.com/inaka/Jayme" hreflang="fr" href="https://linuxfr.org/redirect/98483">Bibliothèque Jayme pour iOS</a></li><li>lien nᵒ 8 : <a title="https://github.com/square/retrofit" hreflang="en" href="https://linuxfr.org/redirect/98484">Bibliothèque Retrofit pour Android</a></li><li>lien nᵒ 9 : <a title="https://github.com/esl/escalus" hreflang="en" href="https://linuxfr.org/redirect/98485">Client XMPP/Jabber escalus</a></li><li>lien nᵒ 10 : <a title="https://github.com/esl/amoc" hreflang="en" href="https://linuxfr.org/redirect/98486">Test de charge amoc</a></li><li>lien nᵒ 11 : <a title="https://www.erlang-solutions.com/blog/mongooseim-platform-2-0-0-higher-value-and-lower-friction.html" hreflang="en" href="https://linuxfr.org/redirect/98633">MongooseIM platform 2.0.0: higher value and lower friction (pour les décideurs)</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<ul>
<li>
<a href="#toc-les-nouveaut%C3%A9s-en-d%C3%A9tail">Les nouveautés en détail</a><ul>
<li><a href="#toc-pivot-dun-serveur-isol%C3%A9-vers-une-plateforme-homog%C3%A8ne-et-coh%C3%A9rente">Pivot : d’un serveur isolé vers une plate‐forme homogène et cohérente</a></li>
<li><a href="#toc-pubsub-ou-publishandsubscribe-du-social-en-tempsr%C3%A9el">PubSub ou Publish‐and‐Subscribe : du social en temps réel</a></li>
<li><a href="#toc-muclight-ou-le-groupchat-simplifi%C3%A9-et-optimis%C3%A9">MUC light, ou le « group chat » simplifié et optimisé</a></li>
<li>
<a href="#toc-une-api-rest-pour-les-clients-et-pour-les-serveurs">Une API REST pour les clients et pour les serveurs</a><ul>
<li><a href="#toc-api-rest-pour-les-clients">API REST pour les clients</a></li>
<li><a href="#toc-api-rest-pour-les-serveurs">API REST pour les serveurs</a></li>
</ul>
</li>
<li>
<a href="#toc-contributions-aux-biblioth%C3%A8ques-mobiles-ios-et-android">Contributions aux bibliothèques mobiles, iOS et Android</a><ul>
<li><a href="#toc-xmppjabber">XMPP/Jabber</a></li>
<li><a href="#toc-api-rest">API REST</a></li>
</ul>
</li>
<li><a href="#toc-documentation-revue-et-augment%C3%A9e">Documentation revue et augmentée</a></li>
</ul>
</li>
<li><a href="#toc-passez-%C3%A0-laction">Passez à l’action</a></li>
<li><a href="#toc-la-suite">La suite ?</a></li>
</ul>
</li>
</ul>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-mongoose_top_banner_800.jpeg" alt="Les mangoustes de MongooseIM"></p>
<h3 id="toc-les-nouveautés-en-détail">Les nouveautés en détail</h3>
<h4 id="toc-pivot-dun-serveur-isolé-vers-une-plateforme-homogène-et-cohérente">Pivot : d’un serveur isolé vers une plate‐forme homogène et cohérente</h4>
<p>Ceci va grandement faciliter la vie des développeurs et intégrateurs. Avant, le serveur XMPP/Jabber MongooseIM était livré tout seul. Pour l’intégrer, il fallait chercher les composants logiciels serveur ou client qui avaient les mêmes fonctionnalités. Et l’on en trouvait, mais la disponibilité de ces fonctionnalités était relativement inégale sur l’ensemble des composants. Donc, il fallait coder+contribuer la fonctionnalité manquante sur les composants pour lesquels celle‐ci manquait. Et pour nos clients c’était très rageant ! Cela faisait perdre beaucoup de temps et cela donnait une mauvaise image de XMPP/Jabber : le paysage était ressenti comme incohérent, voire obsolète, en tout cas frustrant.</p>
<p>Depuis le début de l’année 2016, nous contribuons activement aux bibliothèques client Smack pour Android et XMPPFramework pour iOS : nous codons les mêmes fonctionnalités que celles existant sur le serveur MongooseIM. Donc, une fonctionnalité prise en charge côté serveur existe dorénavant côté bibliothèque client. Bien sûr, nous avons testé et validé l’interopérabilité, en codant de vrais clients. Ceci retire une belle épine du pied des développeurs, sauvant beaucoup de temps de codage, intégration et test. L’ensemble des composants que nous codons et auxquels contribuons est donc maintenant complètement cohérent et homogène (en plus d’être libre et à code ouvert), plus de questions à se poser, tout va beaucoup plus vite.</p>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-oSJnFqJslfCg.png" alt="Les composants de la plate‐forme MongooseIM"></p>
<p>Voici les composants de la « plate‐forme » :</p>
<ul>
<li>le serveur XMPP/Jabber MongooseIM est développé en Erlang sous licence GPL v2 par Erlang Solutions ;</li>
<li>les bibliothèques sont :
<ul>
<li>pour la partie XMPP/Jabber, nous contribuons activement à ces deux projets majeurs : <a href="https://github.com/robbiehanson/XMPPFramework">XMPPFramework</a> en Objective-C pour iOS, sous licence BSD, et <a href="https://github.com/igniterealtime/Smack">Smack</a> de la communauté <a href="https://www.igniterealtime.org/"><em>igniterealtime</em></a> (développant également le célèbre et très facile <a href="https://github.com/igniterealtime/Openfire">Openfire</a>) en Java pour Android, sous licence Apache 2.0,</li>
<li>pour la partie API REST : <a href="https://github.com/inaka/Jayme">Jayme</a> d’<a href="http://inaka.net/">Inaka</a> pour iOS en Swift, sous licence Apache 2.0, et <a href="https://github.com/square/retrofit">Retrofit</a> de <a href="https://squareup.com/">Square</a> en Java pour Android, sous licence Apache 2.0 ;</li>
</ul>
</li>
<li>
<a href="https://github.com/esl/escalus">escalus</a>, le client XMPP/Jabber en Erlang sous licence Apache 2.0, par Erlang Solutions ;</li>
<li>
<a href="https://github.com/esl/amoc">amoc</a>, l’outil de test de charge en Erlang sous licence Apache 2.0 par Erlang Solutions ;</li>
<li>
<a href="https://www.erlang-solutions.com/products/wombat-oam.html">WombatOAM</a>, l’outil d’opérations et de maintenance des systèmes Erlang et Elixir (propriétaire) par Erlang Solutions.</li>
</ul>
<p>Bientôt, peut‐être, si nous recevons de la demande :</p>
<ul>
<li>Icicle, un serveur ICE, standard ouvert de l’IETF, pour la traversée des NAT et le relai de flux média (STUN + TURN) : en gros, MongooseIM avec le client peut déjà faire le <em>signalling</em> c’est‐à‐dire la négociation de l’appel (faire sonner, décrocher, raccrocher) ; ensuite, les clients peuvent faire de la voix et/ou vidéo en P2P, ou pair à pair, mais lorsqu’il y a des NAT, cela se complique énormément et un serveur ICE est la solution pour faire transiter la voix et la vidéo ;</li>
<li>Platypus, serveur de notifications (vers APNS et GCM), basé sur le standard ouvert <a href="https://xmpp.org/extensions/xep-0357.html">XEP-0357 : <em>Push Notifications</em></a>, donc déjà disponible dans les bibliothèques client conseillées ;</li>
<li>Mangosta, des clients mobiles libres pour iOS et Android, orientés « <em>chat</em> » et social, très modernes en termes de fonctionnalités, mais très peu aboutis en termes d’interface utilisateur ; les clients Mangosta ne sont à ce stade que des démonstrations technologiques, offrant une « expérience utilisateur » pas encore soignée ;</li>
<li>Tide, un environnement de tests de charge en continu, que l’on a montré au POSS (<em>Paris Open Source Summit</em>) 2016.</li>
</ul>
<p>En résumé, la plate‐forme MongooseIM est cohérente et homogène, donc vous sauvera énormément de temps d’intégration. Elle continuera de s’étendre en fonction de vos besoins.</p>
<h4 id="toc-pubsub-ou-publishandsubscribe-du-social-en-tempsréel">PubSub ou Publish‐and‐Subscribe : du social en temps réel</h4>
<p>Les « innovateurs » vont bondir de joie ! Un des problèmes des protocoles et autres « solutions » de messagerie instantanée, c’est que tout est (trop) centré sur le message instantané (et la présence), il n’existe que peu de place pour d’autres types d’interactions temps réel. Donc peu de possibilité de créer ou « innover » de nouvelles expériences utilisateur.</p>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-OjrrkaJarGsv.png" alt="XMPP PubSub Publish-and-Subscribe"></p>
<p>PubSub ou <em>Publish‐and‐Subscribe</em> (peut‐on traduire par « publier et souscrire » ?) est bien connu de tous les développeurs. Il s’agit ici de l’implémentation du PubSub standardisé de XMPP/Jabber : <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060 : <em>Publish‐Subscribe</em></a>. Vous êtes encouragés à (re)lire au passage l’excellent série <em>Parlons XMPP</em> de <em>Goffi</em>, en particulier <a href="//linuxfr.org/users/goffi/journaux/parlons-xmpp-episode-8-pubsub-et-pep"><em>Parlons XMPP — épisode 8 — PubSub et PEP</em></a>. Ce PubSub de XMPP permet, <strong>entre autres</strong>, d’ajouter des fonctionnalités de réseaux sociaux, comme le font <a href="https://movim.eu/">Movim</a> et <a href="https://salut-a-toi.org/"><em>Salut à Toi</em></a> (Libervia) et <a href="https://github.com/jappix">Jappix</a>.</p>
<p>En effet, la tendance est la suivante : le modèle « réseau social avec en fonctionnalité secondaire une messagerie » atteint ses limites (Facebook, Twitter et Instagram) et est un marché complètement saturé. On voit donc émerger le modèle « messagerie instantanée avec réseau social », inversant cette approche. Car la messagerie instantanée est encore et toujours en croissance, dans un contexte ou les applications et leur monétisation sont en ralentissement. Les « <em>chatbots</em> » et « intégrations » sont quelques‐uns des catalyseurs actuels de cette croissance. Nous poussons donc logiquement ce modèle « messagerie instantanée avec réseau social », avec une démonstration technologique sans prétention et en supportant les efforts de Movim.</p>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-it3PalwEz2U8.png" alt="Movim et le microblogging social sur PubSub"><br>
Ici un exemple de publication d’article avec photo, suivi de commentaires, le tout dans un client XMPP sur le Web. Movim utilise PubSub pour cette partie sociale.</p>
<h4 id="toc-muclight-ou-le-groupchat-simplifié-et-optimisé">MUC light, ou le « group chat » simplifié et optimisé</h4>
<p>Ceci est notre contribution pour les utilisateurs, pour une bien meilleure expérience. Le standard MUC ou <em>Multi‐User Chat</em>, le « <em>group chat</em> » ou salon de discussion, souffre de gros défauts de conception. <a href="https://xmpp.org/extensions/xep-0045.html">XEP-0045 : <em>Multi‐User Chat</em></a> a été conçu à la fin des années 90 et au début 2000. À cette époque, la connexion au réseau des réseaux était temporaire, car elle se faisait à travers les modems téléphoniques et précédait l’arrivée massive de connexions fixes permanentes, telles que l’ADSL et le câble, et le smartphone constamment connecté via réseaux mobiles et Wi‐Fi.</p>
<p>Les MUC se reposent donc entièrement sur la présence. Ce qui a pour effet direct ce problème majeur : quand vous perdez votre connexion (tunnel, changement de réseau, mode économie d’énergie, etc.), vous êtes déconnecté du MUC. Ce n’est que lorsque vous pouvez enfin vous reconnecter que vous pouvez (éventuellement automatiquement) rejoindre à nouveau vos salons (ou pas, car c’est une option). Vous « perdez » (vous ne recevez jamais) alors tous les messages échangés dans vos salons durant cette période d’ombre.</p>
<p>Côté serveur, cela génère énormément de présences à diffuser en permanence, consommant de la bande passante à tous les participants. De plus, les utilisateurs reçoivent constamment ces pollutions visuelles de présences « <em>on</em> » et « <em>off</em> » (ce n’est pas toujours une option). Pour finir dans les défauts de MUC, pour les développeurs, la XEP présente de nombreux cas d’usages quasiment jamais implémentés ou pas du tout utilisés par les utilisateurs <a href="https://fr.wiktionary.org/wiki/finals">finals</a>, complexifiant énormément les développements.</p>
<p>Perte de messages, pollution de présence, sur‐complexité : voici les peines dont ne souffrent pas la plupart des messageries modernes du marché du vrai monde de la vie réelle.</p>
<p>Nous avons donc retiré les présences du cœur du <em>group chat</em> (les présence sont de toute façon accessibles individuellement, au niveau du compte, en dehors du contexte d’un <em>group chat</em>). Donc, l’utilisateur souscrit à un salon indépendamment de sa connectivité réseau. Le bénéfice direct est que s’il perd sa connexion, il recevra toujours tous les messages du <em>group chat</em> dans son archive (<a href="https://xmpp.org/extensions/xep-0313.html">XEP-0313 : <em>Message Archive Management</em></a>). Donc, il pourra tout lire après une reconnexion transparente. Ainsi, pas de pertes de messages et pas de bruit de présences non plus.</p>
<p>Nous avons également nettoyé tous les cas d’usages marginaux. La résultante est un <em>group chat</em> ultra simple : MUC <em>light</em> (léger). C’est l’expérience utilisateur que tout le monde attend depuis si longtemps. Côté serveur, nous avons aussi mis la solution dans une grappe de serveurs (<em>cluster</em>), ce qui a pour effet technique de consommer beaucoup moins de bande passante, d’être beaucoup plus tolérant aux pannes et d’être beaucoup plus extensible. Côté client, nous l’avons implémenté, contribué et testé dans Smack pour Android et XMPPFramework pour iOS, prêt au développement client. Vos utilisateurs apprécieront sans aucun doute.</p>
<p>Nous avions contribué <a href="https://mongooseim.readthedocs.io/en/latest/open-extensions/muc_light/">les spécifications de <em>MUC light</em></a> à la XSF début 2015, qui l’a prise en compte fin 2015, sous forme de <a href="https://xmpp.org/extensions/xep-0369.html">XEP-0369 : <em>Mediated Information eXchange</em> (MIX)</a>. La XSF en est toujours à un stade expérimental, avec très peu d’implémentations permettant l’avancement raisonné de la spécification. MIX n’entre toutefois pas en conflit avec MUC light : MIX servira un très large panel de cas d’usages, alors MUC light est très concentré sur un <em>group chat</em> optimal et simple, facile à développer et à maintenir, avec du code de qualité tournant en très large production actuellement. <a href="https://mongooseim.readthedocs.io/en/latest/open-extensions/muc_light/">MUC light est une spécification ouverte</a>.</p>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-2hqwyoWBXsxN.png" alt="Journaux de présences sur un MUC fréquenté"><br>
Exemple de MUC rempli de présences, sans réelles discussions. Pollutions visuelles au mieux, surconsommation de bande passante au pire. Cette copie d’écran ne montre pas les pertes de messages.</p>
<h4 id="toc-une-api-rest-pour-les-clients-et-pour-les-serveurs">Une API REST pour les clients et pour les serveurs</h4>
<p><img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-Rc0qoMVY1aZ6.png" alt="Une API REST pour tous les développeurs"></p>
<h5 id="toc-api-rest-pour-les-clients">API REST pour les clients</h5>
<p>Ceci devrait faire plaisir à beaucoup de développeurs de clients, qu’ils soient sur mobile ou sur le Web. Un des principaux problèmes est que XMPP et XML perdent du terrain, puisqu’énormément de développeurs se tournent plutôt vers des API REST avec du format JSON. Un autre problème est que la programmation asynchrone est parfois difficile ou incomprise. Il devient par conséquent difficile de trouver des développeurs XMPP.</p>
<p>Nous livrons donc une API REST très simple avec format JSON. Elle va s’étendre avec le temps, selon vos besoins. Avec cette API REST, la barrière d’entrée est abaissée et la courbe d’apprentissage amoindrie. Il vous sera donc plus facile d’embaucher les développeurs qu’il vous faut.</p>
<p>Notez bien : nous conservons le cœur XMPP/Jabber propre à MongooseIM et nous nous engageons publiquement à continuer de supporter les communautés XMPP. Nous n’offrons qu’un nouveau choix d’interface.</p>
<p>Dans notre documentation, nous introduisons donc <a href="https://mongooseim.readthedocs.io/en/2.0.0/REST-API/">ce qu’est un JID</a>, ou <em>Jabber ID</em>, ou adresse XMPP, de la forme <em>user@domain</em> (comme une adresse de courriel). Et nous livrons une <a href="https://mongooseim.readthedocs.io/en/2.0.0/swagger/index.html?client=true">documentation Swagger</a>, simple et facile à lire, standard de fait.<br>
<img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-aWNtDqPG5ppt.png" alt="Doc de l’API REST côté client"></p>
<h5 id="toc-api-rest-pour-les-serveurs">API REST pour les serveurs</h5>
<p>Une API REST existe aussi pour les développeurs <em>back‐end</em>, les administrateurs système et <em>devops</em>, directeurs techniques et architectes système. Jusqu’à aujourd’hui, il était possible d’utiliser le système de <em>hooks</em> et la ligne de commande pour intégrer MongooseIM dans une infrastructure existante. C’était assez difficile…</p>
<p>Donc, nous avons fourni une <a href="https://mongooseim.readthedocs.io/en/2.0.0/http-api/http-administration-api-documentation/">API REST API côté serveur</a> et les avantages sont certains : il est beaucoup plus facile de coder et d’intégrer MongooseIM avec les autres composants serveurs.<br>
<img src="https://linuxfr.org/images/historique/images_perdues/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0-ehRQhsr1IFSo.png" alt="Documentation de l’API REST côté serveur"></p>
<h4 id="toc-contributions-aux-bibliothèques-mobiles-ios-et-android">Contributions aux bibliothèques mobiles, iOS et Android</h4>
<p>Ceci s’adresse aux développeurs sur mobile, iOS et Android. Le problème se situait dans l’incohérence entre des bibliothèques libres tierces pour les clients et le serveur MongooseIM : une fonctionnalité pouvait apparaître sur un composant, mais pas les deux autres. Difficile dans ces conditions d’avancer vite et proprement dans le développement de votre application : besoin de coder, intégrer, tester et contribuer.</p>
<p>Alors, nous avons contribué les fonctionnalités disponibles dans le serveur MongooseIM aux bibliothèques iOS XMFFFramework et Android Smack. Nos contributions se reposent sur de vrais clients qui intègrent respectivement ces deux bibliothèques. Maintenant, il est beaucoup plus rapide de coder une application complète.</p>
<h5 id="toc-xmppjabber">XMPP/Jabber</h5>
<p>Les contributions portent sur :</p>
<ul>
<li>
<a href="https://github.com/robbiehanson/XMPPFramework">XMPPFramework</a> pour iOS ;</li>
<li>
<a href="https://github.com/igniterealtime/Smack">Smack</a> pour Android.</li>
</ul>
<h5 id="toc-api-rest">API REST</h5>
<p>Ces bibliothèques n’ont été qu’intégrées :</p>
<ul>
<li>
<a href="https://github.com/inaka/Jayme">Jayme</a> pour iOS ;</li>
<li>
<a href="https://github.com/square/retrofit">Retrofit</a> pour Android.</li>
</ul>
<h4 id="toc-documentation-revue-et-augmentée">Documentation revue et augmentée</h4>
<p>Suite à discussions et commentaires avec les communautés et clients, la <a href="https://mongooseim.readthedocs.io/en/2.0.0/">documentation</a> a reçu beaucoup de soin :</p>
<ul>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/user-guide/MongooseIM-High-level-Architecture/"><em>Architecture de haut niveau</em></a> ;</li>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/Roadmap/"><em>Feuille de route</em></a> ;</li>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/Contributions/"><em>Nos contributions</em></a> ;</li>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/Differentiators/"><em>Éléments différenciants</em></a> ;</li>
<li>spécifications ouvertes :
<ul>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/open-extensions/muc_light/"><em>MUC light</em></a>,</li>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/open-extensions/token-reconnection/"><em>Token-based reconnection</em></a> ;</li>
</ul>
</li>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/operation-and-maintenance/Cluster-management-considerations/"><em>Considérations sur la gestion d’un cluster</em></a> ;</li>
<li>
<a href="https://mongooseim.readthedocs.io/en/2.0.0/developers-guide/mod_muc_light_developers_guide/"><em>Guide du développeur MUC light</em></a>.</li>
</ul>
<h3 id="toc-passez-à-laction">Passez à l’action</h3>
<p>Vous souhaitez contribuer, influencer ?</p>
<ul>
<li>donnez des étoiles, si vous le voulez : <a href="https://github.com/esl/MongooseIM">https://github.com/esl/MongooseIM</a> ;</li>
<li>générez du « <em>follow</em> », quand vous pouvez : <a href="https://twitter.com/MongooseIM">https://twitter.com/MongooseIM</a> ;</li>
<li>écrivez vos commentaires, autant que vous le souhaitez : <a href="https://github.com/esl/MongooseIM/issues">https://github.com/esl/MongooseIM/issues</a>.</li>
</ul>
<h3 id="toc-la-suite">La suite ?</h3>
<p>Avez‐vous besoin d’un serveur ICE pour la voix et la vidéo ? Icicle pourrait vous être utile. Vous nécessitez absolument d’un serveur de <em>push notifications</em> ? Platypus peut vous servir. Vous désirez faire tourner des tests de charge en continu ? Tide vous aiderait sans doute. Nous avons besoin de vos avis pour prioriser nos activités.</p>
<p>Nous sommes en cours de développement de clients libres pour Android et iOS. Nous nous orientons vers de la messagerie de troisième génération, donc plus proche des propriétaires Slack, HipChat (ce dernier est basé sur XMPP) et des libres MatterMost et Rocket.Chat, hélas non basés sur XMPP/Jabber.</p>
<p>Pour rappel ou pour information :</p>
<ul>
<li>la <strong>première génération</strong> était centrée sur la présence et le PC de bureau via connexion par modem. Exemples : <strong>ICQ</strong>, MSN, AIM, Yahoo! Messenger, Gadu-Gadu, QQ, NateOn. Cette génération est révolue ;</li>
<li>la <strong>seconde génération</strong> était centrée sur les appareils mobiles, proche de l’expérience SMS/MMS. Exemples : <strong>WhatsApp</strong>, WeChat, LINE, Google Talk / Hangouts, KakaoTalk, Viber. Cette génération va arriver en fin de vie ;</li>
<li>la <strong>troisième génération</strong> est centrée sur le <em>group chat</em> et le multi‐appareil, les intégrations et les <em>chatbots</em>. Exemples : <strong>Slack</strong>, HipChat, Otalk, Kaiwa, Zulip, Mattermost, Let’s Chat, Rocket.Chat. Cette génération est en pleine explosion.</li>
</ul>
</div><div><a href="https://linuxfr.org/news/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/110441/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/la-plate-forme-mongooseim-est-disponible-en-version-2-0-0#comments">ouvrir dans le navigateur</a>
</p>
NÿcoDavy Defaudpalm123Nils RatusznikBenoît SibaudBAudFlorent ZaraM5oulhttps://linuxfr.org/nodes/110441/comments.atomtag:linuxfr.org,2005:News/369032015-11-27T01:56:45+01:002016-12-08T15:10:47+01:00Le serveur XMPP MongooseIM est disponible en version 1.6Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>MongooseIM, le serveur XMPP/Jabber massivement <em>scalable</em> en erlang (utilisé par WhatsApp), et entièrement open source et <em>open standards</em>, est disponible en version 1.6. La dernière version 1.5 avait été publiée en fin 2014, et la version de maintenance 1.5.1 début 2015, depuis nous nous sommes énormément concentrés sur les projets de nos clients. Cette toute nouvelle version 1.6 de MongooseIM marque le tournant d'une nouvelle dynamique d'équipe, et un engagement à plus de régularité et de prédictibilité.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f65736c2d776562736974652d70726f64756374696f6e2e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f636f6e74656e745f4d6f6e676f6f7365494d5f6c6f676f2e706e67/content_MongooseIM_logo.png" alt="MongooseIM platform" title="Source : https://esl-website-production.s3.amazonaws.com/uploads/content_MongooseIM_logo.png"></p>
<p>Au menu des changement majeurs :</p>
<ul>
<li>prise en charge de Riak ;</li>
<li>plein de friandises pour DevOps ;</li>
<li>énormément de nettoyage et stabilisation.</li>
</ul></div><ul><li>lien nᵒ 1 : <a title="https://github.com/esl/MongooseIM" hreflang="en" href="https://linuxfr.org/redirect/95691">MongooseIM sur GitHub</a></li><li>lien nᵒ 2 : <a title="https://www.erlang-solutions.com/resources/download.html" hreflang="en" href="https://linuxfr.org/redirect/95692">Téléchargement</a></li><li>lien nᵒ 3 : <a title="https://mongooseim.readthedocs.org/en/latest/" hreflang="en" href="https://linuxfr.org/redirect/95693">Documentation</a></li><li>lien nᵒ 4 : <a title="https://hub.docker.com/r/mongooseim/mongooseim-docker/" hreflang="en" href="https://linuxfr.org/redirect/95694">Image Docker</a></li><li>lien nᵒ 5 : <a title="https://groups.google.com/d/forum/mongooseim-announce" hreflang="en" href="https://linuxfr.org/redirect/95695">Liste de diffusion des annonces</a></li><li>lien nᵒ 6 : <a title="https://www.erlang-solutions.com/blog/mongooseim-1-6-riak-devops-love-and-so-much-more.html" hreflang="en" href="https://linuxfr.org/redirect/95698">Article du blog de Erlang Solutions</a></li><li>lien nᵒ 7 : <a title="https://www.erlang-solutions.com/products/mongooseim.html" hreflang="en" href="https://linuxfr.org/redirect/95699">Page produit MongooseIM sur le site de Erlang Soutions</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li>
<a href="#les-nouveaut%C3%A9s">Les nouveautés !</a><ul>
<li><a href="#riak">Riak</a></li>
<li><a href="#friandises-pour-devops">Friandises pour DevOps</a></li>
<li><a href="#image-docker">Image Docker</a></li>
<li><a href="#le-plein-dam%C3%A9liorations-sympa">Le plein d'améliorations sympa</a></li>
</ul>
</li>
<li>
<a href="#et-apr%C3%A8s">Et après ?</a><ul>
<li><a href="#s%C3%A9rie-16x-de-maintenance">Série 1.6.x de maintenance</a></li>
<li><a href="#17-et-suivantes">1.7 et suivantes</a></li>
</ul>
</li>
<li>
<a href="#quelques-invitations">Quelques invitations</a><ul>
<li><a href="#liste-de-diffusion-des-annonces">Liste de diffusion des annonces</a></li>
<li><a href="#contribuez">Contribuez</a></li>
<li><a href="#influencez-la-feuille-de-route">Influencez la feuille de route !</a></li>
</ul>
</li>
</ul></li>
</ul><h3 id="les-nouveautés">Les nouveautés !</h3>
<h4 id="riak">Riak</h4>
<p>MongooseIM 1.6 prend en charge Riak, la base de données NoSQL distribuée codée en erlang aussi. Pour l'instant, ce ne sont que quatre modules :</p>
<ul>
<li>authentification ;</li>
<li>Message Archive Management (MAM, <a href="http://xmpp.org/extensions/xep-0313.html">XEP-0313</a>), pour les conversations un-à-un ;</li>
<li>vCards (<a href="http://xmpp.org/extensions/xep-0054.html">XEP-0054</a>) ;</li>
<li>Private XML storage (<a href="http://xmpp.org/extensions/xep-0049.html">XEP-0049</a>).</li>
</ul><p>Les autres modules arriveront plus tard.</p>
<h4 id="friandises-pour-devops">Friandises pour DevOps</h4>
<p>La version 1.6 propose une infrastructure de supervision et de métriques très puissante. MongooseIM repose sur <a href="https://github.com/Feuerlabs/exometer">Exometer</a> pour l'instrumentation. Cette infrastructure permet de remonter des métriques tant au niveau du système d'exploitation que de la machine virtuelle Erlang, en plus des métriques métier. Ces métriques peuvent ensuite alimenter des grapheurs et des systèmes d'analyse tel que <a href="http://grafana.org/">Grafana</a> ou <a href="https://www.elastic.co/products/kibana">Kibana</a>.</p>
<p>Cette fonctionnalité permet d'améliorer grandement la visibilité des DevOps pour gérer des systèmes de toute taille. D'autres domaines peuvent aussi tirer bénéfice de cette augmentation du nombre de données à analyser (big data, analyse, science des données), et ainsi avoir une meilleure compréhension des utilisateurs finaux, pour à terme pouvoir trouver des opportunités d'amélioration de l'expérience utilisateur, des compétences métier et de marchés à développer.</p>
<p>De plus, le nettoyage des données de session en base de données lors de l'extinction d'un nœud a été amélioré. Ces améliorations permettront de faciliter l'utilisation d'autres bases de données dans le futur et d'apporter une gestion plus facile de clusters pour les DevOps.</p>
<p>Il est aussi désormais possible de changer le niveau de journalisation dynamiquement avec un chemin de log personnalisé. Pour les DevOps, une fois de plus, cette fonctionnalité aide à renforcer les logs et à simplifier le déploiement, l'administration et l'analyse.</p>
<h4 id="image-docker">Image Docker</h4>
<p>Vous pouvez déployer facilement votre propre image <a href="https://www.docker.com/">Docker</a> de MongooseIM. Faites attention cependant, cette image est encore expérimentale et est amenée à s'améliorer au cours du temps. Pour la récupérer, <a href="https://hub.docker.com/r/mongooseim/mongooseim-docker/">rendez-vous sur sur le hub Docker</a>. Essayez cette image, et faites des retours ou posez vos questions ou propositions d'amélioration. Sentez vous aussi libre de <em>forker</em> l'image depuis GitHub : <a href="https://github.com/ppikula/mongooseim-docker">https://github.com/ppikula/mongooseim-docker</a>.</p>
<h4 id="le-plein-daméliorations-sympa">Le plein d'améliorations sympa</h4>
<p>L'investissement technique massif produit lors du développement de cette version implique que nous pouvons continuer à livrer un meilleur MongooseIM à la communauté open source : ainsi des changements ont été apportés au cœur de l'application et les suites de test ont été intégrées, également dans l'espoir d'attirer plus de contributeurs de la communauté.</p>
<p>Quelques unes des améliorations apportées :</p>
<ul>
<li>les XEP prises en charge sont documentées sur <a href="https://github.com/esl/MongooseIM">https://github.com/esl/MongooseIM</a> ;</li>
<li>refactoring importants : mécanismes d'authentification mechanism, c2s (client-to-server), MAM simplifié (Message Archive Management) ;</li>
<li>prise en charge de Erlang/OTP 18 ;</li>
<li>meilleure conformité aux RFC & XEP.</li>
</ul><p>Les <a href="https://github.com/esl/MongooseIM/releases">notes de versions complètes de MongooseIM</a> sont lisibles sur le dépôt de code source.</p>
<h3 id="et-après">Et après ?</h3>
<p>MongooseIM 1.6 continuera d’apporter son lot d’améliorations comme par exemple :</p>
<ul>
<li>un bon nombre de métriques métier puissantes ;</li>
<li>de la flexibilité pour les DevOps ;</li>
<li>une base de code solide et stable pour les développeurs serveur et dorsal ;</li>
<li>plus de conformité aux standards pour les développeurs client ;</li>
<li>un gros jeu de tests pour tous et de l'automatisation.</li>
</ul><h4 id="série-16x-de-maintenance">Série 1.6.x de maintenance</h4>
<p>Une version de maintenance 1.6.1 sera publiée (et potentiellement une 1.6.2 ensuite) qui inclura une meilleure prise en charge de Riak et, bien évidemment, les corrections de bugs habituelles, les optimisations et les améliorations générales.</p>
<h4 id="17-et-suivantes">1.7 et suivantes</h4>
<p>Le cycle de développement de la version 1.7 a déjà commencé ! Un intérêt tout particulier sera porté sur le <em>cloud</em>, le mobile et les tests. Plus d'efforts seront investis dans le calendrier des versions afin qu'il soit plus prédictible (ce qui est en fait déjà en cours).</p>
<h3 id="quelques-invitations">Quelques invitations</h3>
<h4 id="liste-de-diffusion-des-annonces">Liste de diffusion des annonces</h4>
<p>Nous avons créé un liste de diffusion publique pour les annonces majeures. Pas plus de un ou deux courriels par mois, les archives sont ouvertes. Souscrivez ici : <a href="https://groups.google.com/d/forum/mongooseim-announce">https://groups.google.com/d/forum/mongooseim-announce</a></p>
<p>Cliquez sur le bouton bleu "Join group" :</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f65736c2d776562736974652d70726f64756374696f6e2e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f636f6e74656e745f4a6f696e5f4d6f6e676f6f7365494d2d616e6e6f756e63655f6d61696c696e672d6c6973742e706e67/content_Join_MongooseIM-announce_mailing-list.png" alt="Rejoindre la liste de diffusion MongooseIM-announce" title="Source : https://esl-website-production.s3.amazonaws.com/uploads/content_Join_MongooseIM-announce_mailing-list.png"></p>
<p>Puis cliquez sur "Email delivery preference" et "Notify me for every new message" :</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f65736c2d776562736974652d70726f64756374696f6e2e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f636f6e74656e745f486f775f746f5f6a6f696e5f4d6f6e676f6f7365494d2d616e6e6f756e63655f6d61696c696e672d6c6973742e706e67/content_How_to_join_MongooseIM-announce_mailing-list.png" alt="Liste de diffusion MongooseIM-announce" title="Source : https://esl-website-production.s3.amazonaws.com/uploads/content_How_to_join_MongooseIM-announce_mailing-list.png"></p>
<h4 id="contribuez">Contribuez</h4>
<p>Nous avons reçu de superbes contributions ces derniers mois, et nous voudrions remercier tous les développeurs ayant participé à MongooseIM 1.6 : @rgrinberg, @vooolll, @syhpoon, @mweibel, @Stelminator, @larshesel, @ruanpienaar, @aszlig, @jonathanve, @gmodarelli.</p>
<h4 id="influencez-la-feuille-de-route">Influencez la feuille de route !</h4>
<p>Nous vous encourageons à commenter, nous dire ce que vous pensez de cette version, et où nous devrions aller dans le futur. Vous pouvez aussi soumettre des "<em>Issues</em>" sur GitHub, ou forker et faire des <em>pull requests</em>. Nous serions heureux d'en parler et de les inclure dans la branche principale.</p></div><div><a href="https://linuxfr.org/news/le-serveur-xmpp-mongooseim-est-disponible-en-version-1-6.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/107454/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/le-serveur-xmpp-mongooseim-est-disponible-en-version-1-6#comments">ouvrir dans le navigateur</a>
</p>
NÿcoLucasBenoît SibaudM5oulNils Ratusznikhttps://linuxfr.org/nodes/107454/comments.atom