PROJET AUTOBLOG


Geexxx

Site original : Geexxx

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Ajout de la gestion des liens diaspora:// dans le navigateur dans la prochaine version de diaspora*

jeudi 19 juillet 2018 à 17:54

L’arrivée des liens diaspora://, ou la possibilité de publier un lien vers un message diaspora* qui s’ouvre dans le pod du cliqueur.

Voici une nouvelle fonctionnalité qui arrive bientôt dans diaspora*, et pas des moindres, puisqu’il s’agit de la mise en place d’un nouveau scheme (l’indication d’un protocole, comme https://). La prochaine version de diaspora* permettra à votre navigateur de gérer les liens commençant par diaspora:// !

Qu’est-ce que c’est ? À quoi ça sert ? Pourquoi un enchaînement de questions sonne-t-il mieux quand il y en a trois ? Nous vous expliquons tout !

Mais partons de la question la plus importante : à quoi ça sert, ou dit autrement, quel problème cherchons nous à résoudre ?

Le besoin initial, c’est la possibilité de faire un lien vers un message diaspora*. Vous savez, ce moment où vous dîtes, « tiens, c’est facile, c’est marqué là : https://diaspora-fr.org/posts/3602435« . Et bien, que se passe-t-il quand quelqu’un clique sur cette URL ? Elle est chargée par le navigateur et le message est affiché. Problème : la personne qui a partagé le lien a son compte diaspora* sur le serveur https://diaspora-fr.org. Elle visionne donc le lien depuis ce site internet. Mais les personnes cliquant sur le lien peuvent très bien être inscrites sur d’autres serveurs diaspora* ! Elles se retrouvent donc sur un site où elles ne sont pas connectées (elles n’y ont d’ailleurs pas de compte) et ne peuvent donc pas réagir sur le message. Cela est pénible. Pire, pour les gens qui ne connaissent encore pas bien la décentralisation, cela peut être perturbant : l’interface est similaire, ils pensent avoir été déconnectés, essayent de se reconnecter, comme ce n’est pas leur serveur, cela ne marche pas… Certains vont même se créer un nouveau compte sur l’autre serveur !

D’autres malins se seront rendus compte que le site qui affichent le message n’est pas celui sur lequel ils sont inscrits. Ils essayeront donc de remplacer à la main dans l’URL diaspora-fr.org par framasphere.org par exemple. Problème, l’url contient l’identifiant local du message (posts/3602435). Cela ne donne rien. Cette astuce fonctionne si l’on utilise le GUID, l’identifiant universel du message à travers tout le réseau diaspora*, accessible avec le permalien (l’icône de chaine qui apparait à côté de la date au survol d’un message). Le lien https://diaspora-fr.org/posts/16edcb805c5901368b05074458e9ec8c devient alors https://framasphere.org/posts/16edcb805c5901368b05074458e9ec8c et, si le message est connu du pod framasphere, il devient accessible. Mais cela nécessite d’aller modifier l’URL à la main, pas très pratique.

Une astuce consiste, pour le rédacteur, à mettre les liens dans diaspora* sous la forme [texte du lien](/posts/GUID) c’est à dire sans préciser le nom de domaine. Ce genre de lien est appelé « relatif » et les navigateurs vont automatiquement rajouter le nom de domaine au début. Donc, si j’écris ce lien ainsi, quand j’ouvre le message dans diaspora-fr, le lien commence par https://diaspora-fr.org/posts/..., et quand je l’ouvre dans framasphere, il commencera par https://framasphere.org/posts/....

Et bien voilà ! On a résolu notre problème ! Oui mais… non. D’abord, le rédacteur doit faire l’effort d’utiliser ce format, ce qui n’est pas toujours le cas. De plus, si le serveur du visiteur n’a jamais reçu le message en question, le GUID du lien ne correspondra à rien et une page 404 sera affichée. Autre problème, l’URL /posts/GUID est spécifique à diaspora*, cela ne marche donc pas pour les utilisateurs de la fédération depuis d’autres projets comme Friendica, Hubzilla ou SocialHome. Et surtout, le lien est relatif, donc, il n’est pas possible de le partager à l’extérieur de diaspora*, /posts/GUID n’a pas de sens depuis un site externe, un e-mail ou même un chat ! (Et puis s’amuser à écrire des URLs à la main, c’est pas super sympa et on risque de faire des erreurs).

Non non non, tout cela ne va pas, partager un lien vers un message devrait être plus simple. Et bien bonne nouvelle, maintenant, ça l’est.

Les serveurs diaspora* discutent entre eux grâce à la fédération, un protocole pour les réseaux sociaux décentralisés. On le disait ci-dessus, il est aussi utilisé par Friendica, Hubzilla, SocialHome et ganggo. Voilà quelques temps, le protocole a été amélioré pour permettre l’utilisation de liens diaspora://. Depuis la version 0.7.1.0, diaspora* est donc capable de gérer les liens commençant par diaspora://. Pour continuer notre exemple, voici le lien correspondant : diaspora://diaspora_news@diaspora-fr.org/post/e8c4e7105c5801368b07074458e9ec8c Je saisi ce texte et j’obtiens dans diaspora* après la publication de mon message https://diaspora-fr.org/posts/e8c4e7105c5801368b07074458e9ec8c. Le lien se transforme automatiquement selon le site depuis lequel vous ouvrez ce message. L’immense avantage, c’est que ce lien contient toutes les informations dont les serveurs diaspora* ont besoin pour aller chercher le message s’ils ne le connaissent pas. Il y a en plus du GUID, l’auteur et le serveur d’origine du message. Les serveurs diaspora* sont capables de comprendre que ce lien est un lien vers un message diaspora*, par rapport à l’astuce avec le lien relatif.

C’est donc bien mieux pour le partage de liens dans diaspora* (sachant qu’à l’avenir, il est prévu de transformer automatiquement les liens https://diaspora-fr.org/posts/3602435 en diaspora://diaspora_news@diaspora-fr.org/post/e8c4e7105c5801368b07074458e9ec8c pour ne pas que l’utilisateur ait à faire la manipulation). Oui, mais qu’en est-il de notre problème initial, partager un lien à l’extérieur de diaspora* ?

C’est là toute la raison de ce (très long) message : après avoir enregistré ce nouveau scheme à l’IANA, le code de diaspora* a été modifié et dans la version à venir, un petit bouton a été ajouté dans les paramètres :

Il permet d’indiquer au navigateur que les liens `diaspora://` doivent être ouvert avec le pod que vous choisissez. Lorsque l’on clique dessus, le message suivant apparaît :

Cliquez sur « Ajouter l’application » et voilà ! Essayez maintenant de saisir web+diaspora://diaspora_news@diaspora-fr.org/post/e8c4e7105c5801368b07074458e9ec8c dans la barre d’adresse de votre navigateur. Vous serez redirigé directement vers votre pod ! Il est donc maintenant possible de faire des liens comme celui-ci vers des messages diaspora* depuis n’importe où sur internet, et les personnes qui auront activé ce scheme dans leur navigateur seront redirigés directement vers leur serveur !

Vous voulez en savoir plus sur le sujet ? Toute la discussion est accessible sur le forum diaspora* (en anglais).

Sortie de la deuxième version majeure du protocole de la fédération de diaspora*

mardi 1 août 2017 à 17:19

Prenons un peu de recul et observons pourquoi c’est une grande nouvelle.

Cet article est une traduction du blogpost officiel par la fondation diaspora*

tl;dr : la prochaine version majeure de diaspora* (0.7.0.0) embarquera une nouvelle version majeure (0.2.0) du protocole « The federation » de diaspora*. La sortie de cette version montre que la phase de nettoyage est terminée et que la communauté est à présent capable de faire évoluer ce protocole. Sous licence AGPL 3.0 et à l’épreuve de nombreuses années de production, le protocole et son implémentation sont fiables et robustes. Nous encourageons les projets cherchant à créer le web social à s’y intéresser et nous investirons pour pousser à son adoption notamment en fournissant un outil pour tester automatiquement ses implémentations dans d’autres langages. En dehors de l’implémentation de référence en Ruby, il y a actuellement deux implémentations en PHP, une en Python et une en Go.

L’évolution du protocole depuis 2012

La communauté diaspora* s’occupe du protocole de diaspora* (la fédération) depuis le retrait des fondateurs en Août 2012. À ce moment, le code gérant le protocole de diaspora* était intégré profondément dans le logiciel diaspora* lui-même. Une telle architecture a des défauts majeurs. Pour le projet diaspora* d’abord : elle rend difficile l’isolement et la correction des bogues et il est compliqué de faire évoluer le protocole en maitrisant les risques de régressions. Pour le protocole et son adoption ensuite, car comprendre son fonctionnement impliquait de rétro-ingénieurer le code, complexe, du logiciel diaspora*. Quant-à réutiliser directement ce code dans d’autres projets, cela était presque impossible.

Un protocole qui est difficile à faire évoluer et à réimplémenter est inutile et voué à disparaître. Il est donc très vite devenu essentiel aux yeux de la communauté d’extraire l’implémentation du protocole dans une bibliothèque séparée, qui serait à la fois plus facile à faire évoluer, permettrait de contenir et mieux corriger les bogues, pourrait être reprise et inclue dans les projets qui le souhaitent et servir d’implémentation de référence du protocole pour ceux souhaitant créer une nouvelle implémentation dans un autre langage que Ruby. Une issue a été créée sur github en Août 2014 et le travail d’extraction a commencé. Le code nécessitait d’être en grande partie refactorisé et finalement, une nouvelle implémentation a été écrite quasiment from scratch. Raven24 (Florian Staudacher) puis SuperTux88 (Benjamin Neff) ont travaillé sur cette implémentation pendant plus d’un an. C’était la première grande étape : comprendre tout le code écrit par les fondateurs, et le réécrire dans un projet séparé, pour qu’il soit réutilisable.

Quand la bibliothèque a commencé à être suffisamment stable, le travail d’intégration à diaspora* a commencé. Cette seconde étape a été encore plus difficile. Il a fallu inclure la bibliothèque dans diaspora* puis, bout par bout, remplacer l’ancien code dans diaspora* par des appels à la nouvelle bibliothèque. Cela a commencé par la découverte des contacts des autres pods, effectuée grâce aux standards WebFinger et HCard. C’est chose faite en Juillet 2015 et en Août 2015. Beaucoup de travail a suivi mais, pour faire court, le nettoyage du vieux code et l’intégration du nouveau a été terminé en Juin 2016. C’est finalement avec la sortie de la version majeure 0.6.0.0 de diaspora* que tout ce travail a officiellement été disponible pour tous, le 27 Août 2016, 4 ans jour pour jour après le départ des fondateurs.

Pourquoi aujourd’hui est un grand jour !

Tout ce travail fait pendant ces 4 premières années était essentiel pour partir sur des bases saines. Il a même fait beaucoup de bien aux serveurs, la nouvelle implémentation étant plus robuste et mieux testée donc moins buggée. Mais pour les utilisateurs, aucune nouvelle fonctionnalité visible n’est apparue. Voici pourquoi cette deuxième version majeure est excitante : la phase de nettoyage étant terminée, Benjamin a pu, aidé par Senya, s’attaquer à une partie beaucoup plus intéressante : faire évoluer le protocole. Et des évolutions, dans cette nouvelle version majeure et depuis Août dernier, il y en a eu ! Regardez les notes de versions, elles sont imposantes ! On peut par exemple noter l’ajout de la date de rédaction aux commentaires transités, permettant ainsi d’être certain de les afficher dans le bon ordre et corrigeant donc un bug vieux de plusieurs années !. Il est possible d’afficher sa biographie en publique sur les autres serveurs. On voit aussi apparaître la notion d’évènement, que le protocole est maintenant capable de gérer même si ce n’est pas encore le cas du logiciel diaspora*. Mais la nouveauté la plus importante, c’est l’introduction de la fameuse notion de migration, qui va permettre aux utilisateurs de déplacer leur compte d’un serveur diaspora* a un autre tout en gardant leurs contacts, messages, commentaires… Une des promesses phares du projet diaspora*, qui donne le pouvoir complet à l’utilisateur en lui permettant de partir d’un serveur et d’aller vers un autre quand il le souhaite.

Rétrocompatibilité et adoption

Tous ces changements sont importants et ont une conséquence : cette version majeure n’est pas rétrocompatible avec celle embarquée par les serveurs utilisant une version 0.6.2.0 ou inférieure de diaspora*. Ces derniers ne seront donc pas capable de recevoir les messages envoyés par la future version majeure de diaspora*, la version 0.7.0.0. C’est pourquoi il est extrêment important de mettre à jour les serveurs régulièrement, ce qui est de toute manière impératif pour corriger les failles de sécurité.

Cette version démontre aussi que, forte de ses 4 années d’expérience, la communauté de diaspora* est aujourd’hui capable de mettre à disposition un protocole de réseautage social fiable et évolutif. Ses spécifications sont, évidemment, publiques. La Gem Ruby, implémentation de référence utilisée par diaspora*, est disponible sous licence AGPL 3.0 (documentation, code source), et de nombreuses autres implémentations existent, comme celle en PHP utilisée par Friendica, celle en python utilisée par SocialHome, ou encore celle en Go utilisée par Ganggo. Notez que ces implémentations ne sont pas toutes complètes ni supportées officiellement par le projet diaspora*. Si vous souhaitez participer à l’évolution du protocole ou l’utiliser, n’hésitez pas, venez discuter sur Github, discourse ou sur #diaspora-dev sur IRC !

Keep rocking the free social web!

Réflexion sur l’accès au contenu pertinent de manière personnalisé sur diaspora*

mercredi 6 janvier 2016 à 23:34

Cet article de blog deviendra certainement une discussion sur loomio lorsque j’aurais le temps de le traduire. Pour l’instant, l’écrire en Français est plus facile pour moi. Comme mes réflexions peuvent tout de même intéresser (et qu’on peut préférer lire en Français), je les partage ici. Voir aussi cet ancien article sur le même sujet.

Il y a trop de messages dans nos flux

Un réseau social sert majoritairement à partager et à échanger. S’il est correctement utilisé, il peut même permettre une veille efficace et devenir la principale source d’informations. Il suffit pour cela de suivre suffisamment de personnes postant du contenu intéressant. Malheureusement, il peut vite devenir compliqué de faire le tri dans la montagne de messages qui s’entassent dans notre flux. Le nombre de messages qui nous semblent pertinent peut décroître, jusqu’à tomber bien bas, ce qui fait perdre un temps précieux voire nous fait quitter le service.

L’automatisation n’est pas la solution

La solution de Facebook (je ne sais pas pour Twitter, mais j’imagine qu’il y a une pratique similaire) à ce problème consiste à étudier notre usage et notre activité pour filtrer de manière automatique notre flux en nous proposant principalement les personnes et sujets avec lesquels nous interagissons majoritairement. Cette approche pose un problème de cercle vicieux : nous sommes bien évidemment moins susceptible de cliquer sur un contenu qui ne nous est pas présenté, comme nous n’interagissons pas avec lui il nous sera moins souvent présenté, etc. De plus, elle implique de faire de l’analyse des usages et des données, ce que nous essayons de limiter dans le logiciel Libre pour des raisons de respect de la vie privée. À cela, il faut rajouter le fait qu’un ordinateur peut se tromper. Finalement, personne mieux que nous même n’est capable de savoir si un contenu ne nous intéresse ou pas.

Les hashtags, une solution partielle

Nous avons vu que suivre des personnes intéressantes n’est pas une solution suffisante. Ces personnes peuvent parfois poster du contenu qui ne nous intéresse pas. Pire, certaines personnes peuvent parfois poster un contenu qui nous intéresserait, mais poster majoritairement du contenu sans intérêt. Nous pouvons aussi ignorer complètement l’existence d’une personne qui nous intéresserait beaucoup et ne jamais la découvrir. La solution de Twitter et diaspora* à ce problème est le système de hashtag. On peut ainsi se mettre à suivre non pas des personnes mais des sujets, ce qui résout le problème évoqué ci-dessus. Malheureusement, certaines personnes peuvent squatter un hashtag, voir en ajouter systématiquement des dizaines pour tenter de donner de la visibilité à leur message (cas moins régulier sur Twitter où les tweets sont limités à 140 caractères pour le moment). De plus, il est aussi possible d’utiliser un hashtag pour parler de son contraire. Par exemple, une personne postant un article parlant d’un problème sous #windows pourra accompagner son message d’un commentaire comme « Ca ne serait pas arrivé sous #linux ! ». Si nous sommes intéressé par les messages parlant de #linux et donc nous suivons ce hashtag, ce message apparaîtra dans notre flux, alors même qu’il ne parle que du système de Microsoft.

Les expressions booléennes, une suggestion pour diaspora*

Cette idée me trotte dans la tête depuis des années. En fait, je la décris déjà dans la première suggestion de cet article qui date de 2012 ! Il s’agirait de permettre à l’utilisateur d’écrire une requête avec trois entités différentes : les utilisateurs, les aspects et les tags, ainsi qu’avec trois opérateurs (en plus des parenthèses pour déterminer la priorité) : le ou, le et et le non. Un utilisateur pourrait ainsi rechercher #linux && !#microsoft. La réponse à cette requête serait un flux de tous les messages contenant le tag #linux et ne contenant pas le tag #microsoft. Si on se rend compte en plus qu’un utilisateur spamme le tag #linux, on peut aussi l’enlever de ce flux en rajoutant && !@userSpammer. Et voilà, un flux tout propre avec juste ce qui nous intéresse !

Ces requêtes doivent ensuite pouvoir être épinglées pour se retrouver dans la colonne de gauche de la page des flux, afin de pouvoir être sélectionnée facilement sans avoir à réécrire la requête. On pourrait même vouloir lui donner un nom et la définir comme flux par défaut, et, pourquoi pas, combiner les requêtes entre elle toujours avec les trois opérateurs.

Les questions qu’il reste à trancher pour avoir des spécifications complètes :

Github, langages et trahison

lundi 3 août 2015 à 22:00

Avec un ami nous travaillons actuellement sur un bot IRC en Go (Goxxx).

Quelle ne fut pas ma surprise en constatant qu’après avoir ajouté des fichiers HTML (pour les tests), le projet était désormais considéré par github comme un projet « HTML » au niveau de ses statistiques !
Ce problème peut également se produire sur les dépôt ou sont présents des fichiers/librairies « vendored », développées par des tiers mais inclus au projet pour plus de facilité.

Suite à cette trahison et à quelque recherches sur le web, il y a une solution simple: Il suffit d’ajouter dans le fichier .gitattributes du dépôt une des directives suivante pour les fichiers/patterns à exclure des statistiques :

Exemples :

# Traite les fichiers .rb (ruby) comme étant des fichiers Java
*.rb linguist-language=Java

# Ignore les fichiers présents dans le dossier "project-docs" (Considérés comme de la documentation)
project-docs/* linguist-documentation 

# Ignore les fichiers présents dans le dossier "special-vendored-path" (Considérés comme des fichiers "vendored")
special-vendored-path/* linguist-vendored

pour plus d’informations et de détails: https://github.com/github/linguist#overrides

diaspora v0.5.0.0, deuxième

mercredi 27 mai 2015 à 20:14

La sortie est encore récente, et j’ai depuis mis à jour framasphère. Je me suis dit que ca pouvait être sympa de contacter la presse tech francophone pour essayer de faire un peu de bruit autour de cette sortie, alors j’ai écrit un petit mail aux sites que je connaissais. Comme je ne garde jamais rien pour moi, le voici :

La communauté des contributeurs au projet diaspora* est fière d’annoncer la sortie d’une nouvelle version majeure, la version 0.5.0.0. Diaspora* est un projet Libre d’un réseau social décentralisé et respectueux de la vie privée. Il a été lancé en 2010 par 4 étudiants américains. En Août 2012, ils cédaient la gouvernance du projet à la communauté. Cette nouvelle version est donc la cinquième version majeure publiée par la communauté.

Elle contient de nombreuses améliorations, dont notamment des grosses améliorations de l’expérience utilisateur tant sur desktop que sur mobile, beaucoup de refactoring et de changements sous le capot pour de meilleures performances, de nouvelles actions pour les administrateurs, et toujours des efforts pour améliorer la protection de la vie privée de l’utilisateur (voir ce précédent billet pour des détails sur ce point). L’annonce de la sortie est disponible sur le blog officiel (en anglais).

Avec 785 commits changeant 1336 fichiers, 31671 lignes de code ajoutées et 34509 lignes supprimées par 20 contributeurs différents, cette version est la plus grosse jamais sortie par la communauté. Le dépôt github vient d’ailleurs de dépasser les 10.000 stars, ce qui en fait le 3ème projet Ruby on Rails le plus suivi sur github.

diaspora* a connu un regain d’intérêt en France ces derniers mois, notamment grâce au lancement par Framasoft de leur nœud diaspora* framasphère dans le cadre de leur campagne « Dégooglisons Internet« . Lancé en Octobre dernier, celui-ci approche maintenant les 16.000 utilisateurs. Si vous souhaitez (re)découvrir diaspora*, framasphère est un serveur idéal où s’inscrire. N’oubliez pas de suivre des tags pour voir votre flux se remplir de contenu vous intéressant.