Monthly Archive for août, 2008

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.