Cela fait quelques temps que je n'ai pas donné de nouvelles de Peerfuse, je vais donc corriger ceci.
Un été actif
Ainsi que je l'avais raconté dans un billet précédent, il se trouve qu'une nouvelle version du protocole a été définie, plus sécurisée, utilisant moins de bande passante et ne nécessitant pas pour chaque pair à connaître tous ceux du réseau, ce qui permet d'avoir des réseaux de tailles non négligeables.
Le travail a débuté cet été avec l'aide de Eld et tito, le premier spécialiste des réseaux peer-to-peer, qui m'a aidé dans la réalisation du protocole, et le second contributeur plus connu pour avoir été président de l'association de jeux vidéos libres Nekeme Prod. (oui leur site est down), et qui a réalisé entre autres un serveur XML-RPC inclus dans Peerfuse, qui permettra à l'avenir de développer des frontends (graphiques ou non) avec une interaction plus user friendly avec Peerfuse.
Une charge de travail assez importante a été réalisée, et la DHT Chimera a été correctement importée. D'ailleurs, je pense que le mot « réécrite » corresponds davantage à ce qui a été effectué. En effet, tout d'abord la DHT était écrite en C, et j'ai adapté tout le code afin de correspondre au style C++ du projet.
En outre, j'ai séparé la partie réseau de la partie DHT, en réécrivant entièrement le moteur réseau de Peerfuse, beaucoup plus souple et extensible.
Ainsi, la DHT s'allège du code réseau de Chimera qui était, il faut bien l'avouer, complètement moisi (voir ici).
Peerfuse bénéficie d'ailleurs maintenant d'une meilleure architecture. Chaque partie de l'ancien common (la partie de code commune à peerfuse-net et peerfuse-lan) a été transformée en petites bibliothèques indépendantes. Ainsi nous trouvons maintenant :
- util — Diverses classes génériques, pour gérer les threads, la config, les mutex, le logging, etc.
- net — Contient la classe Network ainsi que diverses autres classes qui constituent la fondation du moteur réseau de Peerfuse.
- dht — La fameuse DHT écrite à partir de Chimera, et qui est entièrement fonctionnelle.
- ssl — Des classes faisant couche d'abstraction d'OpenSSL, afin d'assurer la sécurité des transmissions dans Peerfuse
- scheduler — Un système de tâches planifiées qui a été amélioré afin de tourner sur plusieurs threads
- files — Les classes qui gèrent les dossiers et les fichiers, ainsi que leurs contenus et diverses méthodes d'abstraction autour des transferts
- fuse — Ce sont les handlers de la libfuse et qui appellent les fonctions Peerfuse
Un intérêt à la séparation des différentes petites libs, c'est que j'ai pu tester la DHT avec le moteur réseau et la libutil, de façon totalement indépendante dans un programme de test, et que ça marche.
Le desert
Malheureusement, à partir d'octobre, la dépression causée par divers évènements personnels ma conduit à m'intéresser moins au projet.
Le travail qui reste à faire est plus chiant qu'autre chose, c'est à dire réécrire une partie du code de Peerfuse pour supporter la nouvelle API réseau et protocolaire (DHT).
Le souci, c'est que Peerfuse en lui même ne compile pas du tout (contrairement aux mini libs), et que cela ne facilite pas le travail des quelques contributeurs intéressés par le projet, et qui du coup n'en foutent pas une.
Donc je pense qu'il me faudrait un bon coup de remotivation pour reprendre le travail que j'ai laissé inachevé en automne dernier. Ça va être dur, parce que j'avais trouvé un moyen pour me pousser à me remettre au travail, mais les quelques conquetes féminines n'ont pas suffit à me remotiver :)
Les six derniers mois
Ça fait longtemps que j'ai pas raconté ma vie ici, donc je vais en profiter, histoire de.
Tout d'abord, j'ai commencé un nouveau projet que je garde secret pour le moment, mais que certaines personnes connaissent sous le nom d'AuM. Ce projet est écrit en Python, utilise les libs mechanize et html5lib, je vous laisse imaginer quel genre d'utilité cela peut avoir.
Mais je reviendrai dessus dans un billet futur, quand sera venu le moment adéquat pour en parler. Je ferai peut-être une conférence dessus fin mai aux PyCon 2009.
En outre, j'ai remis en place Men Are Ants, à sa version 0.4, qui était plus abouti, et abandonne la réalisation de la version 3D isométrique, l'intérêt étant réduit, et n'ayant plus vraiment envie de m'investir dans ce projet. Je corrigerai sans doute néanmoins les quelques bugs que j'ai remarqué lors d'une partie récente avec pankkake.
J'ai finalement envoyé mes patches pour ncmpc upstream, le projet ayant été depuis repris par un des principaux développeurs de MPD. Il se trouve que la personne, Max Kellermann, a été très intéressé par mes patches, m'a demandé d'en faire d'autres, et m'a très gentilment proposé de devenir contributeur, chose que j'ai accepté avec enthousiasme. En effet, je prends plaisir à participer, pour une fois, à un projet d'envergure et que j'utilise tous les jours.
Je n'ai pas encore eu pour le moment l'occasion de faire grand chose, mais je suis intéressé par la réalisation d'un système de plugins chargés dynamiquement, qui permettrait d'étendre les possibilités offertes par MPD, et de rendre plus propre la gestion des modules de sortie audio.
Enfin, je me suis mis en tête de réaliser un agrégateur de flux RSS deux-tiers (comme disent les décideurs), avec un backend qui récupère les données, et un frontend en ncurses (il pourrait y en avoir d'autres) qui se synchronise et (très important) peut récupérer les articles en local, permettant de les lire même en étant offline.
Ceci résoudrait le problème que j'ai à ne pas pouvoir lire mes flux RSS au boulot, puisque j'utilise Akregator, qui est une application graphique KDE qui ne me permet pas de gérer la synchronisation avec mon PC du boulot.
Je n'ai pas encore commencé, mais avec un peu de motivation ça peut le faire.
Conclusion
J'ai donc pas mal de projets en attente, qui sont tous aussi intéressants les uns que les autres, et j'espère ne pas tomber dans le schéma lodesi, qui a beaucoup d'idées mais jamais le courage de les réaliser jusqu'au bout.
Commentaires récents