Peerfuse, Chimera, git, mailman et redmine

L'activité de Peerfuse reprends de plein pied.

Chimera

Le but du mois de juillet était de convertir la DHT Pastry (écrite en Java) pour l'intégrer au code C++ de Peerfuse. La flemme et la laideur du code Java n'aidant pas, les choses étaient restées en état jusqu'il y a deux semaines...

En effet, il y a deux semaines, j'apprends l'existence d'une DHT similaire à Pastry (plus légère), écrite en C, nommée Chimera.

Le portage a débuté la semaine dernière, et je peux dire que je me suis amusé... Ça a bien avancé, la quasi totalité du code se trouve dans diverses classes, mais j'ai été confronté à certains problèmes...

Je dirais que le plus chiant, était ce qui est résumé par une phrase sur le site de Chimera :

Thanks to Perry Lorier for a patch to make Chimera compatible w/ 64 Bit machines!

Non, je ne le remercie pas. En effet, quand on voit qu'ils stockent l'ID dans des unsigned long, type dont la taille varie suivant l'architecture, et qu'ils font diverses opérations de bits en considérant qu'il s'agit de uint32_t, on peut aisément deviner pourquoi ça ne marche pas.

En outre, toujours un problème similaire :

 
/* encode the message */
type = htonl ((unsigned long) message->type);
memcpy (data, &type, sizeof (unsigned long));
size = htonl ((unsigned long) message->size);
memcpy (data + sizeof (unsigned long), &size, sizeof (unsigned long));
memcpy (data + (2 * sizeof (unsigned long)),
                get_key_string (&message->dest),
                strlen (get_key_string (&message->dest)));
memcpy (data + HEADER_SIZE, message->payload, message->size);
size = HEADER_SIZE + message->size;     /*reset due to htonl */
 

Il est facile de comprendre que si on connecte un chimera x86 sur un chimera x86_64, ils risquent de ne pas parler la même langue...

Bref, j'ai fais remonté l'info à Chimera et pour ma part j'ai corrigé tout ça dans Peerfuse...

Git

Afin de développer au mieux le portage de Chimera, j'ai profité des joies de git et ai créé une branche chimera sur mon dépôt local. C'est un vrai bonheur. D'autant plus qu'on peut travailler à plusieurs sur cette branche.

Depuis peu, deux nouveaux contributeurs se sont joint sur Peerfuse, l'un a déjà travaillé sur une implantation de XML-RPC dans Peerfuse afin de faire communiquer le démon peerfuse avec des frontends (en console ou graphiques), le second a pour le moment la tâche de porter peerfuse en ipv6.

Chacun des développeurs de Peerfuse s'est vu doter d'une dépôt public chacun ainsi qu'on peut le voir : http://git.peerfuse.org/

Je trouve vraiment sympatique cette façon de travailler, même si c'est un peu déroutant au départ pour l'utilisateur de Subversion que je suis habituellement.

Mailing lists

La mailing list a été réinstallée, et une seconde spécifique au développement a été créée.

Pour plus d'informations : http://lists.peerfuse.org

Redmine

Enfin, il semblerait que les fichiers TASKS et BUGS présents dans les sources n'étaient pas satisfaisants pour les contributeurs de Peerfuse, ainsi j'ai été contraint d'installer Redmine, une alternative très sympatique à Trac.

Ça donne ceci : http://dev.peerfuse.org.

Conclusion

Peerfuse reprends son souffle et on devrait maintenant avoir tout ce qui faut pour pouvoir travailler vite. Il ne manque plus qu'à remettre en place les buildbots, mais il faudra de toute façon encore quelques semaines avant de retrouver un état stable.

Peerfuse aux RMLL

Le futur de Peerfuse s'annonce radieux. Après plus d'un mois de discussions, une nouvelle version du protocole permettant de meilleurs performances est définie, et va se baser sur Pastry, une DHT qui corresponds à ce que l'on souhaite implémenter.

Le nouveau protocole a été décrit (grossièrement) dans la présentation de Peerfuse aux RMLL08, dont vous pouvez retrouver les slides ici.

Malheureusement, ceci implique une importation de Pastry, qui est écrit en Java, vers le langage utilisé pour Peerfuse qui est le C++.

C'est un travail monstrueux, et malgré la propagande faite par hydromiel et moi aux RMLL, personne ne s'est senti de m'aider à cette tâche. D'ailleurs, dans les discussions que j'ai pu avoir, il semblerait que l'utilisation du langage C++ soit un vrai frein pour les contributeurs (à moins que ça ne soit qu'un prétexte).
Je n'ose imaginer comment ça serait si on avait écrit Peerfuse, comme j'avais soulevé l'idée au départ, en langage D.

Notez que le projet utilise maintenant Git, que le site peerfuse.org est temporairement mort, et que vous êtes donc bien invité de venir sur le canal IRC #peerfuse@freenode si vous souhaitez suivre l'évolution.

De subversion à git

Il a été décidé il y a peu que le projet Peerfuse utiliserait dorénavant le système de gestion de version Git.

Je ne reviendrai pas sur l'intérêt qu'apporte un système de révision distribué (indépendance vis à vis d'un serveur central, l'avantage des branches, facilité pour un contributeur irrégulier de contribuer, etc.).

Je me permets juste de donner quelques opérations à suivre pour importer un dépôt subversion (note: installer préalablement git et git-svn) :

$ mkdir project
$ cd project
$ git svn init -t tags -b branches -T trunk https://svn.example.org/prjt
Initialized empty Git repository in .git/
$ git svn fetch

Et.. c'est tout.

Nous disposons maintenant d'un dépôt git indépendant, contenant l'intégralité de l'historique des commits du subversion. On peut ainsi le mettre à disposition pour que d'autres en profitent, et se mettre à travailler immédiatement.

Pour plus d'informations sur comment utiliser git, je préfère vous laisser vous référer à la très bonne documentation de Git.

Je profite de ce bref billet pour rappeler que Peerfuse a besoin de contributeurs.
À ce propos, une conférence se déroulera aux RMLL08 sur Peerfuse, ainsi n'hésitez pas à la regarder si vous êtes intéressé par le projet.

Serveur de fonctionnaires

J'en conclu donc qu'on ne peut y accéder qu'entre 21h59 et 22h00 ?

Deux patches pour ncmpc

Hier je me suis dis que je pourrais enfin passer à MPD, chose que je voulais faire depuis un moment, afin de remplacer ma solution à la base temporaire mais que je traîne depuis près de deux ans, qui est d'utiliser mplayer et de simuler les playlists avec des dossiers et des liens symboliques.

Après installation de mpd (qui était vraiment triviale), j'ai décidé d'utiliser le client ncmpc. Prise en main triviale, pratique, cependant il me manquait deux fonctionnalités : la sélection visuelle (multi-ligne), et le tri aléatoire au sein d'une même sélection.

J'ai donc fais deux petits patches que j'aurais volontiers remonté upstream, sauf que j'ai appris la chose suivante :

Nobody has been able to contact the ncmpc maintainer, Kaw, since about a year.

N'ayant pas envie de forker pour cet ajout mineur de fonctionnalités, voici les deux patches :

ncmpc

MAJ: Mes patches ont été intégrés upstream, maintenant que le projet a été repris par Max Kellermann.

0540011337 does not exist, try again

Aujourd'hui, je regardais sur l'interface du site de Free pour voir les messages laissés sur ma boite vocale.

liste des messages vocaux

Le premier message étant vide, je n'ai aucune information concernant l'identité de la personne. Machinalement, je sélectionne le numéro de téléphone de la première ligne, et la colle dans un terminal en tapant :

$ host 0540011xxx

Je pense que je suis trop geek.

Peerfuse 0.0 released

Peerfuse paraît aujourd'hui dans sa version 0.0.

En effet, bien qu'utilisable, le numéro de version traduit le fait qu'il est encore pleinement en développement et qu'il ne faut pas l'utiliser en production, ainsi que la présence éventuelle de divers bugs.

En outre, bien que le concept est présenté, divers éléments d'implémentation sont susceptible d'évoluer, comme la DHT utilisée, etc.

Vous pouvez télécharger les sources sur le site de Peerfuse.

Diverses documentations sont présentes à cette adresse.

Le réseau peerfuse-net officiel, Peerfuse.net, est accessible. Vous pouvez lire ici comment le rejoindre.

Enfin, si vous souhaitez nous rejoindre afin de discuter du développement sur le salon IRC #peerfuse@freenode, vous êtes la bienvenue.

Une mailing list est également à votre disposition.

Lancement du réseau peerfuse.net

Hier soir, après de nombreux efforts, le réseau peerfuse.net a été lancé !
Les premiers peers ont rejoint le réseau (que des développeurs et quelques testeurs), et il s'agit bien évidemment d'un réseau "beta", car Peerfuse risque d'évoluer encore fortement (notament au niveau du protocole) cette semaine jusqu'à la sortie de la 0.1.

Nous avons pu procéder à des tests grandeur nature, ce qui n'avait jamais été le cas jusqu'alors (uniquement en local), et la conclusion est la suivante : ça marche !

Enfin... presque. Nous avons tout de même découvert des bugs (dont une partie est corrigée; hier a été une journée particulièrement productive de ce côté là), mais le premier fichier a été transféré avec succès.

Les pairs possédant un certificat et étant connecté au réseau forment la topologie suivante :

sunigav.vaginus.org (1)
|- nivagus.vaginus.org (2)
|- hubb_server (3)
|  `- hubb (4)
|- moonpa.inl.fr (5)
|- lids (6)
`- dehy (7)

Continue reading 'Lancement du réseau peerfuse.net'

Peerfuse 0.1 annoncé pour le 2 mai 2008

Ainsi que les lecteurs attentifs le savent, Peerfuse est un projet de système de fichier distribué pair à pair utilisant la bibliothèque FUSE.

Après quelques mois de développement, la version 0.1 devrait être prête pour le Vendredi 2 mai 2008 !

Beaucoup de travail a été fournis par lodesi et moi même, et le projet est quasiment utilisable. Bien sur, il est loin d'être terminé, seules les fonctionnalités de base sont présentes ;

  • Connexion des pairs entre eux
  • Synchronisation des arbres
  • Transfert des fichiers

Ce sont les fonctionnalités fondamentales qui permettent (malgré un manque côté sécurité) d'utiliser le projet dans son but premier : le partage de fichiers via un système de fichier virtuel.

Les principales fonctionnalités manquantes et qui seront développées après la 0.1 sont :

  • Redondance automatique des fichiers dans le réseau
  • Optimisation des transferts (par la détermination de la qualité d'un lien, etc)
  • Gestion des permissions
  • Utilisation de systèmes cryptographiques d'encryption et de signature relatifs aux permissions des fichiers, afin qu'il soit impossible de lire ou d'écrire des données auxquelles on a pas accès
  • Interface graphique. Ça sera développé en tant que projet à part par hubbb, et permettra d'assurer des fonctionnalités supplémentaires qu'on ne peut pas retrouver avec l'interface de FUSE (comme la constitution des groupes, système de discussion avec les autres pairs (à un pair en particulier, à un groupe ou à tout le monde, ce que je trouve intéressant afin de créer une communauté autour du projet)).
  • Bien sur, afin d'assurer ces fonctionnalités supplémentaires, une petite application ncurse pourra être utilisée à la place de l'interface graphique

Il reste encore beaucoup à faire, et nous espérons que la 0.1 permettra de faire connaître le projet et de trouver des contributeurs.

Dans ce sens est d'ailleurs prévu une petite soirée de lancement le vendredi 2 mai à 19:00, au Dock's café (Paris, XIXe).
N'hésitez pas à venir si vous êtes intéressé par le projet, afin de faire connaissance et de boire quelques bières en discutant de Peerfuse. Quelques t-shirts seront donnés aux futurs contributeurs ;)

Nous vous invitons à nous rejoindre sur le salon IRC #peerfuse@Freenode si vous souhaitez avoir plus d'informations sur le projet ou sur la soirée.
Une mailing list devrait par ailleurs être prochainement créée.

Rapport de l’étude sur la corrélation entre la taille des pénis et les logiciels

D'éminents experts (moi) ont lancé une étude sur le thème "Influence de la taille de son pénis ou de ses seins sur le choix des logiciels utilisés".

Dans ce cadre, les internautes ont été invités pendant un peu plus d'une semaine, à répondre à un questionnaire en ligne.

Preuve de leur engouement pour le sujet, nous avons obtenu 2022 réponses !

Le rapport est en ligne, et ce que l'on peut affirmer, c'est que la preuve est faite qu'utiliser des logiciels libres agrandit la taille du pénis (et vice-versa).

Concentrons-nous sur les deux points majeurs de cette étude que sont les rubriques "Systèmes d'exploitation" et les "Editeurs de texte" :

Continue reading 'Rapport de l’étude sur la corrélation entre la taille des pénis et les logiciels'




Bear