Vous trouverez sur cette page tout un tas d’informations sur ce qu’est ce mystérieux outil. Voici un résumé de ce que propose cette extension, vous trouverez plus de détails dans la FAQ plus bas.
LiveNotif c’est
- Une extension pour navigateur web
- Un outil pour notifier une communauté lorsqu’un évènement se produit
- Un remplacement aux fonctions réputées défectueuses proposées par certaines plateformes
- Un système modulable qui s’adapte à son environnement
FAQ
A qui est destinée cette extension ?
Elle est destinée principalement aux communautés pour rester au courant de l’activité du leader de celle-ci. Un usage typique serait pour avertir les abonnés d’un vidéaste lorsqu’il publie de nouvelles vidéos. Elle peut être utilisée individuellement mais n’est pas adapté pour un tel usage (le système nécessite un serveur pouvant donc représenter un certain coût qui, pour une seule personne, peut se révéler être un gaspillage).
En bref, cette extension est destinée à être un remplacement aux fonctions (souvent réputées défectueuses)proposées par certaines plateformes.
Comment utiliser l’extension ?
/!\ L’extension toute seule ne sert à rien. Elle a également besoin d’un serveur pour fonctionner (voir plus bas).
Il faut donc commencer par configurer le serveur, je n’expliquerai pas la procédure ici: une documentation complète arrivera prochainement.
Vient ensuite le tour de l’extension. Elle est disponible sur GitHub uniquement en une version vierge et non-installable. Il est nécessaire de la configurer, l’empaqueter et la signer sur la plateforme développeur du navigateur cible (voir les procédures sur les sites respectifs).
Enfin, il faut distribuer cette “version” configurée de l’extension. Pour Chrome, il est nécessaire de passer par le Chrome Web Store. Cependant Mozilla n’accepte pas ce genre d’extensions sur son propre store, il faut donc l’héberger manuellement :/
Si vous avez d’aide, regardez plus bas ;)
Un problème ? Une suggestion ? Un message d’amour ?
N’hésitez absolument pas à poser vos questions, à me suggérer de nouvelles fonctionnalités ou à me signaler les problèmes et bugs via les différentes sections prévues:
- Bugs/problèmes -> https://github.com/siffreinsg/livenotif/issues
- Suggestions, idées, … -> La ou la
- N’importe quoi -> Par mail
Quels navigateurs sont compatibles ?
Les navigateurs actuellement testés et supportés sont Chrome et Firefox. Cette liste s’agrandira prochainement pour intégrer au mieux Opera, Vivaldi, Edge et Safari. Si d’autres navigateurs sont demandés, un portage sera envisagé.
Pourquoi un serveur est-il nécessaire ?
Au tout début de la vie de l’extension, aucun serveur n’était utilisé. Chaque instance de l’extension effectuait ses propres requêtes d’informations vers les serveurs des plateformes supportées. Lors du développement, le nombre d’utilisateurs potentiels n’avait pas été considéré causant bien des problèmes lors de la phase de test. Après quelques heures de fonctionnement, aucune instance ne fonctionnait… elles avaient atteint très rapidement le seuil maximal de requêtes (rate limit). Vous ne comprenez pas ? Faisons quelques mathématiques !
Sachant que chaque instance effectuait une requête par plateforme et par activité toutes les 2 minutes. Une seule plateforme était supportée à l’époque et 2 requêtes étaient effectuées (une pour les vidéos et une pour les streams). Nous en arrivons donc à 2 requêtes toutes les 2 minutes soit 60 requêtes par heure. Sur un échantillon de 1000 utilisateurs cela représente 60 000 requêtes par heure soit 1 440 000 par jour. Aucune plateforme que je connaisse n’accepterait une telle surcharge !
Il a fallut ajouter un élément au système: un cache. C’est un petit programme hébergé sur un serveur qui garde en mémoire une information (ou plus) pour la redistribuer plus rapidement et plus efficacement. Ainsi le paramètre du nombre d’utilisateur ne rentre plus en compte dans l’équation et, si nous reprenons les chiffres cités plus haut, 1 440 requêtes seulement sont effectués chaque jour.
Dans la 2e version de l’addon, les requêtes étaient donc effectuées vers le serveur cache. Ce qui n’est plus exactement le cas maintenant mais nous verrons cela plus tard :p
Puis-je avoir confiance en ce serveur cache ?
Il est vrai que dans ce genre de système, plus on ajoute de noeuds au système, plus la confiance en ces noeuds dans être grande. En ajoutant ce serveur cache, un noeud a été ajouté au système rendant cette question totalement légitime. C’est donc à vous de voir ! Le code source est disponible sur GitHub, vous pouvez y faire un tour et vérifier l’intégrité du programme ;)
Après toutes ces versions, à quel point le système complet est optimisé ?
Tout d’abord, un système de cache a été mis en place (voir plus haut) optimisant les requêtes. Ensuite ce même système de cache a été optimisé pour économiser des ressources et donc supporter plus de requêtes en même temps. En parallèle, l’extension en elle même a été optimisée pour utiliser le moins possible les ressources de l’utilisateur (notamment la bande passante).
Jusque là, la communication entre le client et le serveur restait peu performante et peu adapté. Le plus gros problème était que le serveur devait attendre que le client effectue une requête pour communiquer des informations. Ce qui veut également dire que le client devait faire des requêtes très régulièrement pour se tenir au courant, mais dans le lot 99% des requêtes sont totalement inutiles.
La dernière grosse optimisation fut de trouver une alternative à cette communication. C’est chose faite puisque dorénavant la communication est prise en charge par des websockets. Sans rentrer dans les détails (Wikipédia le fera mieux que moi), un websocket permet au serveur de communiquer au client sans que celui ci le demande préalablement (et vice versa). Ainsi l’extension ne fait que “dormir” la plupart du temps, elle est reveillée uniquement quand nécessaire, c’est à dire quand le serveur envoie des informations utiles.
Quelles technologies mystérieuses se cachent derrière cette extension ?
La plupart ont été citées plus haut, mais voici un résumé tout de même.
- Les WebSocket pour la communication client-server
- Le JavaScript pour l’extension (l’HTML et le CSS pour les interfaces utilisateur)
- Le TypeScript dans un environnement NodeJS pour le serveur cache
- Ce polyfill pour faciliter le développement de l’extension
A l’aide !
Si vous êtes allergique aux lignes de commande, à la configuration de trucs incompréhensibles, aux mots ésotériques qu’on retrouve sur cette page ou que vous n’avez juste pas le temps, ce n’est pas grave ! Je peux faire tout ce travail à votre place: de la configuration à la maintenance en passant par l’hébergement :) En plus de mon aide, vous aurez la priorité dans les demandes d’ajouts de fonctionnalités.
Tout ce que je demande en contre-parties c’est une expression de votre générosité (rémunération, avantages, …) et la prise en charge des coûts liés à l’utilisation de serveurs (environ 5-10€/mois).
Contactez-moi, ce sera un plaisir de vous répondre :)