Épisode 1 : Les arbres préfixes (PHT) comme moteur de recherche

OpenDHT est un système distribué public permettant d’indexer des données sous la forme de paire clé – valeur. La clé représente un identifiant unique et la valeur est le contenant de la donnée.

OpenDHT peut stocker des valeurs tout en répartissant les données sur l’ensemble des nœuds du réseau. La librairie est basée sur l’algorithme « Kademlia » introduit par Maymounkov et Mazières.

technology-x-binary-and-backgrounds-541917

OpenDHT innove en implémentant de nouvelles fonctionnalités comme listen : une opération de notification à la réception de nouvelles valeurs annoncées sur le réseau. Toutefois, les tables de hachage distribuées (DHT) offrent la possibilité d’effectuer uniquement des recherches exactes, sur une clef-précise. Or, l’un des principaux problèmes auxquels le logiciel Ring fait face est la recherche d’utilisateurs. Voici pourquoi l’équipe Ring et une équipe de l’UQAM ont travaillé à la recherche d’une solution pour ce problème.

Le solution utilisée: La PHT ou Prefix Hash Tree

capture2

La solution est inspirée d’un article intitulé Prefix Hash Tree : An Indexing Data Structure over Distributed hash Tables. L’objectif est de créer un arbre dont la structure représente l’information qu’on y ajoute. Les feuilles stockent les clés et les liens de l’arbre servent au routage logique. Le tout repose sur le réseau distribué de la DHT. Cette structure permet une recherche basée sur des mots clefs.

On peut également noter la possibilité de faire exister plusieurs arbres préfixes sur un même réseau. Ce qui servirait par la suite à indexer d’autres données comme des profils Ring ou des services tiers. Il est à noter que l’utilisation du PHT n’est soumise à aucune limitation. En effet, dans un contexte différent, on peut très bien imaginer l’indexation de blogs, d’appareils connectés (domotique), etc.

Cas pratique sur la PHT

Un utilisateur A souhaite rechercher un utilisateur B dont l’identifiant Ring est le suivant : ring:9ad22cac841bed877b8d5f65d4fb2d44bda7fdc4. L’utilisateur A pourra utiliser le PHT pour rechercher l’utilisateur B grâce à des mots clefs comme son prénom, son nom, sa ville de résidence, etc.

À suivre….épisode 2 : l’optimisation des requêtes sur la PHT! 

Ring est maintenant dans Debian

C’est le 30 Juin que Ring fut officiellement accepté dans Debian testing, les dépôts de développement de la prochaine version de Debian: Stretch.

Ceci est une bonne nouvelle pour les utilisateurs de Ring!

Il est donc maintenant possible d’installer Ring à partir des dépôts de votre distribution sans avoir à ajouter ceux de ring.cx.

Ring à la DebConf16 et arrivée dans les dépôts de Debian et Ubuntu

CmYA4fXXgAAyhaf

La 17e édition de la conférence annuelle des développeurs de Debian se déroulait à Cape Town en Afrique du Sud.

Des membres de l’équipe de développement de Ring ont fait le déplacement afin d’y présenter le projet et travailler sur son intégration dans les dépôts officiels de Debian.

Ring dans les dépôts d’Ubuntu et de Debian

Si vous êtes un utilisateur de Debian testing, vous pouvez maintenant installer Ring avec la commande suivante:

– « apt-get install ring »

L’arrivée de Ring dans les dépôts de Debian implique également sa disponibilité dans Ubuntu.

Ring fut intégré dans Ubuntu 16.10 le 2 Juillet 2016.

Des contributeurs de Debian ont déjà commencé à tester Ring sur GNU Debian/kFreeBsd, on peux y espérer un paquet dans un avenir proche.

Une requête accompagnée d’un patch à été envoyée par un utilisateur Debian afin de permettre à Ring de compiler sur Debian Jessie.

Il y aura donc possiblement un backport de Ring dans jessie-backports, ce qui permettra aux utilisateurs de Debian Jessie d’installer Ring depuis les dépôts officiels de Debian.


Présentation de Ring à la DebConf16

Alexandre Viau et Simon Désaulniers ont fait une présentation détaillant la technologie utilisée pour passer des appels de manière décentralisée. Un avant-goût de l’utilisation d’Ethereum pour l’enregistrement de noms d’utilisateur est également exploré.

Un enregistrement de la présentation est disponible dans les archives de debian-meetings:
http://meetings-archive.debian.net/pub/debian-meetings/2016/debconf16/Decentralized_communications_with_Ring.webm


OpenDHT dans Debian expérimental

OpenDHT à été développé pour répondre aux besoins de Ring mais le projet demeure tout de même indépendant et pourrait être utilisé par d’autres applications.
Le paquet libopendht a fait son apparition dans Debian expérimental pendant la DebConf.

Les prochaines itérations du paquet vont inclure le programme dhtnode, qui permet d’exécuter un noeud OpenDHT.

Le programme permet à la communauté d’héberger des nœuds OpenDHT sans avoir à exécuter dring, le daemon Ring, qui est plus lourd en dépendances que dhtnode.

Savoir-faire Linux commanditaire Bronze: Mini Compte Rendu du Sommet Drupal Nord

Maxime Turcotte, notre consultant en logiciels libres nous a gentiment réalisé un petit compte-rendu sur ses 4 jours au Drupal Nord qui ont eu lieu le 16 et 19 juin dernier à Montréal.

ClQmc9DUoAAj2TH

On retiendra, selon ses commentaires, que l’évènement aura accueilli environ 300 personnes sur les quatre jours. En grande majorité des visiteurs venus de l’extérieur de Montréal.

Une trentaine de personnes étaient inscrites aux formations du jeudi. Celles qui n’y étaient pas, on profité de ce temps mort pour préparer leurs présentations du lendemain.

On retiendra aussi la conférence donnée par Bart Feenstra et spécialement débarqué des Pays-Bas pour l’occasion. Les échanges auront tourné autour des standards PHP proposés par le groupe de réflexion PHP-FIG.

En plus des 20 autres conférences proposées le samedi, une autre excellente conférence a été donnée par Cathy Theys de Chicago autour des réflexions engagées par la communauté Drupal aussi bien au niveau du marketing, que du recrutement mais encore de la gestion de projet.

À ce propos, les audios sont disponibles ici : http://www.drupalnorth.org/en/session/thoughtfulness-and-drupal

Enfin, le dernier jours s’est terminé sur un sprint lors duquel une trentaine de codeurs expérimentés et débutants étaient présents pour apporter leurs contributions personnelles au coeur de Drupal.

Sans oublier les collations, les pizzas et le ukulele!!!

0e8c49bb-6bc1-4f8e-a9b2-c27e23ee086f_0

Relier son application à FranceConnect avec le logiciel libre LemonLDAP::NG

Développé depuis 2014 sous l’égide de la DINSIC, FranceConnect est la nouvelle plate-forme d’authentification à destination des citoyens français pour simplifier l’accès à l’administration en ligne.

Annoncé officiellement il y a quelques jours par le secrétaire d’État chargé de la réforme de l’État et de la simplification, FranceConnect est déjà utilisé par de nombreuses administrations.

Le protocole OpenID Connect

C’est le protocole OpenID Connect qui a été retenu pour FranceConnect, choix risqué en 2014 car le standard n’en était qu’à ses débuts, mais il a depuis fait ses preuves, comme en témoigne son adoption par Google.

J’ai eu l’occasion de présenter ce protocole dans différentes conférences, comme à la LDAPCon en novembre dernier :

LDAPCon2015_OpenIDConnect-Diapos

L’avantage d’avoir opté pour un standard comme OpenID Connect, c’est que cela permet d’utiliser n’importe quel logiciel ayant implémenté ce standard pour se relier à FranceConnect.

lemonldap-ng-france-connect

Depuis la version 1.9 de LemonLDAP::NG, on peut utiliser OpenID Connect, soit comme client (Relying Party), soit comme fournisseur (OpenID Provider).  Une application compatible avec LemonLDAP::NG peut donc alors très facilement récupérer une identité via FranceConnect sans développement supplémentaire !

Configuration de LemonLDAP::NG

Nous allons configurer LemonLDAP::NG comme client OpenID Connect. Pour cela il faut tout d’abord paramétrer le service OpenID Connect :

  • Gérer les règle de redirections (Apache ou Nginx) pour le chemin /oauth2/
  • Choisir « OpenID Connect » comme module d’authentification
  • Définir l’identifiant de l’entité (par défaut l’URL du portail)
  • Laisser les valeurs par défaut pour les points d’accès OAuth2
  • La configuration d’une clé de signature n’est pas nécessaire

Il reste ensuite à inscrire FranceConnect comme fournisseur OpenID Connect :

  • Créer les métadonnées JSON (non fournies par FranceConnect), par exemple (valeurs de la plate-forme de développement) :
{
"issuer": "https://fcp.integ01.dev-franceconnect.fr",
"authorization_endpoint": "https://fcp.integ01.dev-franceconnect.fr/api/v1/authorize",
"token_endpoint": "https://fcp.integ01.dev-franceconnect.fr/api/v1/token",
"userinfo_endpoint": "https://fcp.integ01.dev-franceconnect.fr/api/v1/userinfo",
"end_session_endpoint":"https://fcp.integ01.dev-franceconnect.fr/api/v1/logout"
}
  • Déclarer les attributs de l’identité pivot à collecter, par exemple : given_name, family_name, birthdate
  • Dans les options, renseigner le client_id et client_secret fourni par FranceConnect (voir l’étape suivante), et le scope lié aux attributs demandés, par exemple : openid email profile birth

Enregistrement auprès de FranceConnect

Pour que votre instance de LemonLDAP::NG puisse être reliée à FranceConnect, il faut formuler une demande officielle via ce formulaire.

Il est important de fournir l’URL de callback, qui par défaut dans LemonLDAP::NG est http://auth.example.com/?openidcallback=1. Mais vous devrez adapter cette URL avec votre propre nom de domaine, et si besoin d’autres paramètres en fonction des modules utilisés dans LemonLDAP::NG.

FranceConnect vous fournira alors les valeurs de client_id et client_secret dont vous avez besoin dans la configuration de LemonLDAP::NG.

C’est terminé !

LemonLDAP::NG est désormais configuré pour s’authentifier sur FranceConnect. Si certaines choses ne fonctionnent pas, référez-vous à la documentation technique disponible sur le site.

Les attributs collectés lors de l’authentification sont disponibles dans la session SSO et peuvent être transmis par LemonLDAP::NG aux applications de différentes façons : en-têtes HTTP, CAS, OpenID Connect ou SAML.

À vous de jouer !

Le logiciel libre au service des communautés de Montréal

Voici, pour la petite histoire.

En juillet 2016, Savoir-faire Linux est approché par le Santropol Roulant qui connaît quelques problèmes techniques de sa plate-forme de gestion pour son service auprès des personnes âgées et à mobilité réduite.

Le Santropol Roulant est reconnu dans le milieu communautaire montréalais pour fournir chaque jour plus d’une centaine de repas sains, nutritifs et équilibrés.

hg

L’outil utilisé, en plus d’être obsolète, ne permettait plus de gérer le service de la popote roulante de façon optimale.

Dans ce contexte, difficile de tenir compte des spécificités de chacun, de servir au mieux les clients et d’accompagner au mieux les bénévoles. Difficile aussi de mettre en place une plate-forme de gestion des données efficace avec un petit budget.

Alors, comment tenir compte de tous les besoins des clients afin de pouvoir les servir correctement ?

Face aux contraintes budgétaires et aux difficultés d’assurer un engagement bénévole durable pour la plate-forme, Savoir-faire Linux a eu l’idée de proposer une assistance technique au Santropol.

À l’initiative de la Maison du Logiciel Libre (ML2), le projet a pu être diffusé auprès des étudiant(e)s des universités participantes et auprès des communautés.

Ainsi, les Pyladies Montréal (une communauté de progammeuses en Python) ont été emballées par l’idée de contribuer à la plate-forme qui servirait l’ensemble de la communauté.

Par conséquent, le 21 avril 2016, SFL et ML2 ont organisé un hackaton dans les locaux de l’entreprise où programmeurs et programmeuses de niveau intermédiaire et avancé étaient conviés à participer à l’évènement.

32 commits, 12 contributeurs et 10 pull-requests ont été comptabilisés.

Quant au directeur général, Cyrille Béraud, celui-ci n’a pas caché pas son enthousiasme: « le projet Santropol est vraiment un exemple parfait de ce que pourrait faire le logiciel libre en matière d’économie sociale et de développement des communautés. »

Pour plus d’information:https://github.com/savoirfairelinux/santropol-feast