<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Romain&#039;s blog &#187; peerfuse</title>
	<atom:link href="http://blog.p.engu.in/category/peerfuse/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.p.engu.in</link>
	<description>Toute une continuité d&#039;informations inutiles.</description>
	<lastBuildDate>Sun, 02 May 2010 14:50:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Où en est Peerfuse</title>
		<link>http://blog.p.engu.in/2009/03/07/ou-en-est-peerfuse/</link>
		<comments>http://blog.p.engu.in/2009/03/07/ou-en-est-peerfuse/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 11:20:49 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ma vie]]></category>
		<category><![CDATA[MenAreAnts]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/?p=519</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:19db689d9688520ae6d60b66bbac2146038cd63c'><p>Cela fait quelques temps que je n'ai pas donné de nouvelles de <b><a href="http://peerfuse.org">Peerfuse</a></b>, je vais donc corriger ceci.</p>
<h4>Un été actif</h4>
<p>Ainsi que je l'avais raconté dans un <a href="http://blog.p.engu.in/2008/07/14/peerfuse-aux-rmll/">billet précédent</a>, 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.</p>
<p>Le travail a débuté cet été avec l'aide de Eld et <a href="http://txzone.net/blog/">tito</a>, 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 <a href="http://www.nekeme.net">Nekeme Prod.</a> (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.</p>
<p>Une charge de travail assez importante a été réalisée, et la <a href="http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/"> DHT Chimera a été correctement importée</a>. 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.</p>
<p>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.<br />
Ainsi, la DHT s'allège du code réseau de Chimera qui était, il faut bien l'avouer, complètement moisi (<a href="http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/">voir ici</a>).</p>
<p>Peerfuse bénéficie d'ailleurs maintenant d'une meilleure architecture. Chaque partie de l'ancien <i>common</i> (la partie de code commune à peerfuse-net et peerfuse-lan) a été transformée en petites bibliothèques indépendantes. Ainsi nous trouvons maintenant :</p>
<ul>
<li>util — Diverses classes génériques, pour gérer les threads, la config, les mutex, le logging, etc.</li>
<li>net — Contient la classe Network ainsi que diverses autres classes qui constituent la fondation du moteur réseau de Peerfuse.</li>
<li>dht — La fameuse DHT écrite à partir de Chimera, et qui est entièrement fonctionnelle.</li>
<li>ssl — Des classes faisant couche d'abstraction d'OpenSSL, afin d'assurer la sécurité des transmissions dans Peerfuse</li>
<li>scheduler — Un système de tâches planifiées qui a été amélioré afin de tourner sur plusieurs threads</li>
<li>files — Les classes qui gèrent les dossiers et les fichiers, ainsi que leurs contenus et diverses méthodes d'abstraction autour des transferts</li>
<li>fuse — Ce sont les handlers de la libfuse et qui appellent les fonctions Peerfuse</li>
</ul>
<p>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.</p>
<h4>Le desert</h4>
<p>Malheureusement, à partir d'octobre, la dépression causée par divers évènements personnels ma conduit à m'intéresser moins au projet.</p>
<p>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).</p>
<p>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.</p>
<p>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 :)</p>
<h4>Les six derniers mois</h4>
<p>Ça fait longtemps que j'ai pas raconté ma vie ici, donc je vais en profiter, histoire de.</p>
<p>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'<b>AuM</b>. Ce projet est écrit en Python, utilise les libs mechanize et html5lib, je vous laisse imaginer quel genre d'utilité cela peut avoir.<br />
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 <a href="http://www.pycon.fr">PyCon 2009</a>.</p>
<p>En outre, j'ai remis en place <a href="http://menareants.org">Men Are Ants</a>, à 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 <a href="http://pankkake.headfucking.net">pankkake</a>.</p>
<p>J'ai finalement envoyé mes <a href="http://blog.p.engu.in/2008/05/24/patches-pour-ncmpc/">patches pour ncmpc</a> upstream, le projet ayant été depuis repris par un des principaux développeurs de <a href="http://www.musicpd.org">MPD</a>. Il se trouve que la personne, <a href="http://max.kellermann.name/">Max Kellermann</a>, 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 <a href="http://git.musicpd.org/cgit/romain"> contributeur</a>, 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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>Je n'ai pas encore commencé, mais avec un peu de motivation ça peut le faire.</p>
<h4>Conclusion</h4>
<p>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 <a href="http://piggledy.org">lodesi</a>, qui a beaucoup d'idées mais jamais le courage de les réaliser jusqu'au bout.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2009/03/07/ou-en-est-peerfuse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Peerfuse, Chimera, git, mailman et redmine</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/</link>
		<comments>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 13:11:35 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/?p=508</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:c0cb4b3f5fc529703195a9b7fc4517a88da21f46'><p>L'activité de <b><a href="http://peerfuse.org">Peerfuse</a></b> reprends de plein pied.</p>
<h4>Chimera</h4>
<p>Le but du mois de juillet était de convertir la <a href="http://en.wikipedia.org/wiki/Distributed_hash_table">DHT</a> 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...</p>
<p>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 <a href="http://current.cs.ucsb.edu/projects/chimera/">Chimera</a>.</p>
<p>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...</p>
<p>Je dirais que le plus chiant, était ce qui est résumé par une phrase sur le site de Chimera : </p>
<blockquote><p>Thanks to Perry Lorier for a patch to make Chimera compatible w/ 64 Bit machines!</p></blockquote>
<p>Non, je ne le remercie pas. En effet, quand on voit qu'ils stockent l'ID dans des <b>unsigned long</b>, 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 <b>uint32_t</b>, on peut aisément deviner pourquoi ça ne marche pas.</p>
<p>En outre, toujours un problème similaire :</p>
<pre class="c">&nbsp;
<span style="color: #808080; font-style: italic;">/* encode the message */</span>
type = htonl <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span> message-&gt;type<span style="color: #66cc66;">&#41;</span>;
memcpy <span style="color: #66cc66;">&#40;</span>data, &amp;type, <span style="color: #993333;">sizeof</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
size = htonl <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span> message-&gt;size<span style="color: #66cc66;">&#41;</span>;
memcpy <span style="color: #66cc66;">&#40;</span>data + <span style="color: #993333;">sizeof</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span>, &amp;size, <span style="color: #993333;">sizeof</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
memcpy <span style="color: #66cc66;">&#40;</span>data + <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span> * <span style="color: #993333;">sizeof</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>,
                get_key_string <span style="color: #66cc66;">&#40;</span>&amp;message-&gt;dest<span style="color: #66cc66;">&#41;</span>,
                strlen <span style="color: #66cc66;">&#40;</span>get_key_string <span style="color: #66cc66;">&#40;</span>&amp;message-&gt;dest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
memcpy <span style="color: #66cc66;">&#40;</span>data + HEADER_SIZE, message-&gt;payload, message-&gt;size<span style="color: #66cc66;">&#41;</span>;
size = HEADER_SIZE + message-&gt;size;     <span style="color: #808080; font-style: italic;">/*reset due to htonl */</span>
&nbsp;</pre>
<p>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...</p>
<p>Bref, j'ai fais remonté l'info à Chimera et pour ma part j'ai corrigé tout ça dans Peerfuse...</p>
<h4>Git</h4>
<p>Afin de développer au mieux le portage de Chimera, j'ai profité des joies de git et ai créé une branche <i>chimera</i> sur mon dépôt local. C'est un vrai bonheur. D'autant plus qu'on peut <a href="http://lists.peerfuse.org/pipermail/peerfuse-dev/2008-August/000000.html">travailler à plusieurs sur cette branche</a>.</p>
<p>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.</p>
<p>Chacun des développeurs de Peerfuse s'est vu doter d'une dépôt public chacun ainsi qu'on peut le voir : <a href="http://git.peerfuse.org/">http://git.peerfuse.org/</a></p>
<p>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.</p>
<h4>Mailing lists</h4>
<p>La mailing list a été réinstallée, et une seconde spécifique au développement a été créée.</p>
<p>Pour plus d'informations : <a href="http://lists.peerfuse.org">http://lists.peerfuse.org</a></p>
<h4>Redmine</h4>
<p>Enfin, il semblerait que les <a href="http://linuxfr.org/~ploum/27014.html#955094">fichiers TASKS et BUGS</a> présents dans les sources n'étaient pas satisfaisants pour les contributeurs de Peerfuse, ainsi j'ai été contraint d'installer <a href="http://www.redmine.org">Redmine</a>, une alternative très sympatique à Trac.</p>
<p>Ça donne ceci : <a href="http://dev.peerfuse.org">http://dev.peerfuse.org</a>.</p>
<h4>Conclusion</h4>
<p>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.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Peerfuse aux RMLL</title>
		<link>http://blog.p.engu.in/2008/07/14/peerfuse-aux-rmll/</link>
		<comments>http://blog.p.engu.in/2008/07/14/peerfuse-aux-rmll/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 14:25:49 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ma vie]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/?p=507</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:64c1e4b69b3c96efe6dd5782b1a3e70fd30867d0'><p>Le futur de <a href="http://peerfuse.org">Peerfuse</a> 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 <a href="http://research.microsoft.com/~antr/PASTRY/">Pastry</a>, une <a href="http://en.wikipedia.org/wiki/Distributed_hash_table">DHT</a> qui corresponds à ce que l'on souhaite implémenter.</p>
<p>Le nouveau protocole a été décrit (grossièrement) dans <a href="http://2008.rmll.info/Peerfuse.html">la présentation de Peerfuse</a> aux <a href="http://2008.rmll.info">RMLL08</a>, dont vous pouvez retrouver les <a href="http://peerfuse.net/~rom1/peerfuse.pdf">slides ici</a>.</p>
<p>Malheureusement, ceci implique une importation de Pastry, qui est écrit en Java, vers le langage utilisé pour Peerfuse qui est le C++.</p>
<p>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).<br />
Je n'ose imaginer comment ça serait si on avait écrit Peerfuse, comme j'avais soulevé l'idée au départ, en <a href="http://fr.wikipedia.org/wiki/D_(langage)">langage D</a>.</p>
<p>Notez que le projet utilise maintenant <a href="http://blog.p.engu.in/2008/06/18/de-subversion-a-git/">Git</a>, que le site <a href="http://peerfuse.org">peerfuse.org</a> est temporairement mort, et que vous êtes donc bien invité de venir sur le <a href="irc://irc.freenode.net/peerfuse">canal IRC #peerfuse@freenode</a> si vous souhaitez suivre l'évolution.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/07/14/peerfuse-aux-rmll/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>De subversion à git</title>
		<link>http://blog.p.engu.in/2008/06/18/de-subversion-a-git/</link>
		<comments>http://blog.p.engu.in/2008/06/18/de-subversion-a-git/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 10:42:21 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/?p=505</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:a3f8fe005466bf0123a1eff49d0994e9e059579f'><p>Il a été décidé il y a peu que le projet <b><a href="http://peerfuse.org">Peerfuse</a></b> utiliserait dorénavant le <a href="http://fr.wikipedia.org/wiki/Système_de_gestion_de_versions">système de gestion de version</a> <b><a href="http://git.or.cz/">Git</a></b>.</p>
<p>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.).</p>
<p>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) :</p>
<pre>
$ 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
</pre>
<p>Et.. c'est tout.</p>
<p>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.</p>
<p>Pour plus d'informations sur comment utiliser git, je préfère vous laisser vous référer à la très bonne <a href="http://www.kernel.org/pub/software/scm/git/docs/user-manual.html">documentation de Git</a>.</p>
<p>Je profite de ce bref billet pour rappeler que <a href="http://peerfuse.org/">Peerfuse</a> a besoin de contributeurs.<br />
À ce propos, <a href="http://2008.rmll.info/Peerfuse.html">une conférence se déroulera aux RMLL08 sur Peerfuse</a>, ainsi n'hésitez pas à la regarder si vous êtes intéressé par le projet.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/06/18/de-subversion-a-git/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Peerfuse 0.0 released</title>
		<link>http://blog.p.engu.in/2008/05/12/peerfuse-00-released/</link>
		<comments>http://blog.p.engu.in/2008/05/12/peerfuse-00-released/#comments</comments>
		<pubDate>Mon, 12 May 2008 15:15:59 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/?p=493</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:55a7ab13aff31e82a28c91f282141547779b6c34'><p><b><a href="http://peerfuse.org">Peerfuse</a></b> paraît aujourd'hui dans sa version 0.0.</p>
<p>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.</p>
<p>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.</p>
<p>Vous pouvez télécharger les sources sur le <a href="http://peerfuse.org/download.html">site de Peerfuse</a>.</p>
<p>Diverses documentations sont présentes à <a href="http://peerfuse.org/documentation.html">cette adresse</a>.</p>
<p>Le réseau peerfuse-net officiel, <a href="http://peerfuse.net">Peerfuse.net</a>, est accessible. Vous pouvez lire <a href="http://peerfuse.net/howto.html">ici comment le rejoindre</a>.</p>
<p>Enfin, si vous souhaitez nous rejoindre afin de discuter du développement sur le salon IRC <a href="irc://irc.freenode.net/peerfuse">#peerfuse@freenode</a>, vous êtes la bienvenue.</p>
<p>Une <a href="https://peerfuse.org/mailman/listinfo/peerfuse">mailing list</a> est également à votre disposition.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/05/12/peerfuse-00-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lancement du réseau peerfuse.net</title>
		<link>http://blog.p.engu.in/2008/04/25/creation-du-reseau-peerfusenet/</link>
		<comments>http://blog.p.engu.in/2008/04/25/creation-du-reseau-peerfusenet/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 08:00:48 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/2008/04/25/creation-du-reseau-peerfusenet/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:6e73e8fc94e6d37f92f7d888489f4e82b8406d9d'><p>Hier soir, après de nombreux efforts, le réseau <b><a href="http://peerfuse.net">peerfuse.net</a></b> a été lancé !<br />
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 <a href="http://blog.p.engu.in/2008/04/23/peerfuse-sortie-annoncee-le-2-mai-2007/">0.1</a>.</p>
<p>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 : <b>ça marche</b> !</p>
<p>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.</p>
<p>Les pairs possédant un certificat et étant connecté au réseau forment la topologie suivante :</p>
<pre>
sunigav.vaginus.org (1)
|- nivagus.vaginus.org (2)
|- hubb_server (3)
|  `- hubb (4)
|- moonpa.inl.fr (5)
|- lids (6)
`- dehy (7)
</pre>
<p><span id="more-491"></span></p>
<p>Les fichiers contenus actuellement sont :</p>
<pre>
rom1@nivagus ~/Projets/peerfuse/trunk/nivagus/mnt $ ls -lh
total 0
-rw------- 0 lp   lp   9.2M 2008-04-25 00:40 05 La ritournelle.mp3
-rw------- 0 rom1 rom1 5.5M 2008-04-24 22:32 06 BOA_Get There_A Girl.mp3
-rw-r--r-- 0 lp   lp   100M 2008-04-25 01:07 Fragmovie.avi
-rw-r--r-- 0 lp   lp      0 2008-04-25 01:07 One Page Linux Manual.pdf
-rw-r----- 0 rom1 rom1 1.0M 2008-04-24 21:07 random
-rw-r--r-- 0 rom1 rom1 748K 2008-04-23 18:02 Speedy's Coming [Live].mp3
</pre>
<p>Dont le premier fichier a être transféré fut <b>05 La ritournelle.mp3</b>. Attention, il s'agit mieux que de transfert, car en effet une simple utilisation de la commande suivante suffit :</p>
<pre>
rom1@nivagus ~/Projets/peerfuse/trunk/nivagus/mnt $ mplayer 05\ La\ ritournelle.mp3
MPlayer dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Pentium(R) M processor 2.00GHz (Family: 6, Model: 13, Stepping: 8)
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
Can't open joystick device /dev/input/js0: No such file or directory
Can't init input joystick
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing 05 La ritournelle.mp3.
Audio file file format detected.
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 44100 Hz, 2 ch, s16le, 192.0 kbit/13.61% (ratio: 24000->176400)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 401.1 (06:41.0) of 401.0 (06:41.0)  1.8%

Exiting... (End of file)
rom1@nivagus ~/Projets/peerfuse/trunk/nivagus/mnt $
</pre>
<p>La lecture s'est faite de manière tout à fait transparente, sans interruption ni saccade, alors que le transfert se faisait entre <b>dehy</b> et <b>nivagus.vaginus.org</b> (par l'intermédiaire de <b>sunigav.vaginus.org</b>).</p>
<p>Notez la présence de <b>sunigav.vaginus.org</b> au milieu des autres peers. En l'occurence, il s'agit d'un serveur, donc par commodité nous avons connecté la majeur partie de nos pairs à celui-ci. Mais il est tout à fait possible de se connecter à n'importe quel pair du réseau, du moment qu'il n'est pas caché derrière un firewall ou un routeur NAT.</p>
<p>Si vous souhaitez en connaître plus, vous êtes visiter à lire <a href="http://peerfuse.net">http://peerfuse.net</a> (site du <i>réseau officiel</i> de Peerfuse, en opposition à <a href="http://peerfuse.org">http://peerfuse.org</a> qui est le site du projet).</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/04/25/creation-du-reseau-peerfusenet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Peerfuse 0.1 annoncé pour le 2 mai 2008</title>
		<link>http://blog.p.engu.in/2008/04/23/peerfuse-sortie-annoncee-le-2-mai-2007/</link>
		<comments>http://blog.p.engu.in/2008/04/23/peerfuse-sortie-annoncee-le-2-mai-2007/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 07:00:09 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/2008/04/23/peerfuse-sortie-annoncee-le-2-mai-2007/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:cd63f9842d196422fe7e1180420984770ccf72d4'><p><a href="http://blog.p.engu.in/2008/03/12/peerfuse/">Ainsi que les lecteurs attentifs le savent</a>, <b><a href="http://peerfuse.org">Peerfuse</a></b> est un projet de système de fichier distribué pair à pair utilisant la bibliothèque <a href="http://fuse.sourceforge.net/">FUSE</a>.</p>
<p>Après quelques mois de développement, la version <b>0.1</b> devrait être prête pour le <b>Vendredi 2 mai 2008</b> !</p>
<p>Beaucoup de travail a été fournis par <a href="http://piggledy.org">lodesi</a> 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 ;</p>
<ul>
<li> Connexion des pairs entre eux</li>
<li> Synchronisation des arbres</li>
<li> Transfert des fichiers</li>
</ul>
<p>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.</p>
<p>Les principales fonctionnalités manquantes et qui seront développées après la 0.1 sont :</p>
<ul>
<li> Redondance automatique des fichiers dans le réseau</li>
<li> Optimisation des transferts (par la détermination de la qualité d'un lien, etc)</li>
<li> Gestion des permissions</li>
<li> 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</li>
<li> Interface graphique. Ça sera développé en tant que projet à part par <a href="http://goatse.fr">hubbb</a>, 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)).</li>
<li> Bien sur, afin d'assurer ces fonctionnalités supplémentaires, une petite application ncurse pourra être utilisée à la place de l'interface graphique</li>
</ul>
<p>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.</p>
<p>Dans ce sens est d'ailleurs prévu une petite <b>soirée de lancement</b> le <b>vendredi 2 mai</b> à <b>19:00</b>, au <a href="http://www.ledockscafe.com/">Dock's café</a> (Paris, XIXe).<br />
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 <b>Peerfuse</b>. Quelques t-shirts seront donnés aux futurs contributeurs ;)</p>
<p>Nous vous invitons à nous rejoindre sur le salon IRC <a href="irc://irc.freenode.net/peerfuse">#peerfuse@Freenode</a> si vous souhaitez avoir plus d'informations sur le projet ou sur la soirée.<br />
Une mailing list devrait par ailleurs être prochainement créée.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/04/23/peerfuse-sortie-annoncee-le-2-mai-2007/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Peerfuse : Nouveau site</title>
		<link>http://blog.p.engu.in/2008/03/30/peerfuse-nouveau-site/</link>
		<comments>http://blog.p.engu.in/2008/03/30/peerfuse-nouveau-site/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 14:08:09 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/2008/03/30/peerfuse-nouveau-site/</guid>
		<description><![CDATA[Voici le nouveau site de Peerfuse en exclusivité : http://peerfuse.org/ Il va bientôt également y avoir un site pour peerfuse.net qui se concentrera sur le réseau officiel de peerfuse-net, là où peerfuse.org concerne le projet lui même (développement, etc).]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:2a21fcaa472ffc7157565d6e681fd6ddb8eb8793'><p>Voici le nouveau site de <b><a href="http://blog.p.engu.in/2008/03/12/peerfuse/">Peerfuse</a></b> en exclusivité : <a href="http://peerfuse.org/">http://peerfuse.org/</a></p>
<p>Il va bientôt également y avoir un site pour <b>peerfuse.net</b> qui se concentrera sur le réseau officiel de <b>peerfuse-net</b>, là où <b>peerfuse.org</b> concerne le projet lui même (développement, etc).</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/03/30/peerfuse-nouveau-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peerfuse</title>
		<link>http://blog.p.engu.in/2008/03/12/peerfuse/</link>
		<comments>http://blog.p.engu.in/2008/03/12/peerfuse/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 09:47:24 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[INL]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/2008/03/12/peerfuse/</guid>
		<description><![CDATA[Il y a maintenant plus d'un mois j'ai débuté avec lodesi un projet intitulé Peerfuse, qui est un système de fichiers distribué peer-to-peer. Le projet est découpé en deux sous projets distincts (possédant une base de code commune) : peerfuse-net pour un réseau sur Internet avec des inconnus. La principale utilisation à laquelle on pense, [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:b372367406db89913463eb71eb742d02c3290520'><p>Il y a maintenant plus d'un mois j'ai débuté avec <a href="http://piggledy.org">lodesi</a> un projet intitulé <b><a href="http://peerfuse.org">Peerfuse</a></b>, qui est un système de fichiers distribué peer-to-peer.</p>
<p>Le projet est découpé en deux sous projets distincts (possédant une base de code commune) :</p>
<ul>
<li> <b>peerfuse-net</b> pour un réseau sur Internet avec des inconnus. La principale utilisation à laquelle on pense, est un but similaire à Emule, à part qu'au lieu d'avoir un espace par utilisateur, ici tout le monde partage le même espace. Ceci permet l'échange de vidéos, photos, musiques, programmes, images CD de distributions Linux, etc.</li>
<li> <b>peerfuse-lan</b> pour un réseau avec ses propres machines. Il permet par exemple de partager une partition /usr/local entre divers machines. Ainsi chacunes de ces machines possède virtuellement un grand nombre d'applications, et elles ne sont récupérées que lorsqu'on les utilise effectivement.</li>
</ul>
<p>Le principe en surface est simple :</p>
<ul>
<li> C'est un système de fichier, c'est à dire qu'il n'y a pas de GUI (bon en fait on en fera probablement une pour aider à effectuer certaines tâches).<br />
Il suffit donc de lancer peerfuse avec la commande <b>mount</b> sur un point de montage qui sera l'espace partagé.</li>
<li> Il n'y a pas de serveur central, lorsque l'on rejoint le réseau, il suffit de se connecter sur l'un des peers, qui va nous mettre en relation avec tous les autres.</li>
<li> La partition montée est <b>commune</b> à tout le monde. C'est à dire que l'arborescence présente dans le point de montage sera le même pour tout le monde.<br />
Lorsque l'on souhaite partager un fichier avec le reste du monde, il suffit donc de le copier vers le point de montage, et ainsi chaque utilisateur y verra le fichier et pourra le lire ou le copier à son tour (ce qui effectue un téléchargement).</li>
<li> Il y a tout de même un système de permissions, comme sur tout système de fichier unix.<br />
Sur <b>peerfuse-net</b>, chaque peer possède un UID, et chaque fichier qu'il crée aura pour propriétaire cet uid. Après les permissions unix s'appliquent comme d'habitude. Les groupes seront également supportés, avec le principe qu'un utilisateur est propriétaire du groupe au GID = UID. C'est donc lui qui ajoute des personnes à son groupe.<br />
Sur <b>peerfuse-lan</b>, les permissions du système unix sont concervées. Ainsi root sur une machine pourra voir root sur les autres machines.</li>
<li> Une autre puissance de peerfuse est de permettre un travail collaboratif. En effet, les fichiers sont modifiables par ceux qui en ont la permission. Il est ainsi facile d'imaginer qu'un projet soit créé sur un réseau peerfuse, dans un dossier où seul le groupe G a droit d'écriture dessus. Tous les membres de ce groupe pourront modifier et faire évoluer ce projet.<br />
Attention toute fois, pour des projets d'ampleur tels que des logiciels, il est préférable d'utiliser un système de gestion de version tel que <a href="http://fr.wikipedia.org/wiki/Subversion">Subversion</a>. En effet, peerfuse ne gère pas l'historique des versions, ni les accès concurrents à un même fichier (la dernière écriture gagne).</li>
<li> Peerfuse fonctionne en mode déconnecté, c'est à dire que même lorsque l'on est déconnecté du réseau, on peut lancer peerfuse et ajouter des fichiers, en supprimer, en modifier, etc. Lors de la prochaine reconnexion au réseau, les changements seront appliqués.</li>
<li> Tous les échanges sont sécurisés, utilisant SSL pour les connexions.<br />
<b>peerfuse-net</b> renforce encore les systèmes de sécurité, avec signatures de tous les messages et fichiers, encryptage des fichiers accessible que par une partie des utilisateurs (propriétaire ou groupe), certificat délivré par une autorité afin d'assurer l'authenticité de tel utilisateur, etc.</li>
<li> Les transferts seront effectués <b>probablement</b> en UDP pour <b>peerfuse-lan</b>, afin de gagner un débit optimal.</li>
<li> Ces transferts seront effectués dans la limite du possible en streaming. Le but est de pouvoir lire une vidéo de façon totalement transparente même lorsqu'elle n'est pas encore sur la machine locale. Si le débit du transfert est plus rapide que celui de la vidéo, aucune différence ne sera faite.</li>
</ul>
<p>C'est un projet assez novateur et dont les tentatives similaires (mais n'ayant pas le tiers des fonctionnalités que nous proposons) sont toutes tombées à l'eau. Je pense que Laurent et moi avons la volonté suffisante pour que ça ne soit pas le cas avec ce projet.</p>
<p>Cependant, comme on peut l'imaginer, il y a énormément de problèmes de sécurité dans <b>peerfuse-net</b> qui peuvent se poser, en raison de la présence éventuelle de malfaiteurs. Nous en avons déjà résolu une grande partie, mais il reste encore quelques sujets mineurs sur lesquels plancher.</p>
<h4>Développement</h4>
<p>Nous recherchons tout de même des développeurs afin de nous aider sur le projet, car il y a du boulot. Cela dit, je pense qu'on atteindra une première version stable et incomplète de <b>peerfure-lan</b> rapidement, étant donné qu'il ne pose plus de problèmes de sécurité, et qu'il manque uniquement les transferts des fichiers.</p>
<p>Vous pouvez récupérer les sources grâce à :</p>
<pre>$ svn co https://piggledy.org/svn/peerfuse/trunk peerfuse</pre>
<p>Login: <i>anonymous</i><br />
Password: <i>&lt;Enter&gt;</i></p>
<p>Vous trouverez la base commune dans <b>common/</b>, la partie concernant peerfuse-net dans <b>peerfuse-net/</b> et je vous laisse deviner où se trouve le code de peerfuse-lan.<br />
La documentation se trouve dans <b>doc/</b>, cependant ne lisez pas <b>proto.html</b> qui est complètement dépassé maintenant.</p>
<p>Lisez plutôt <b>peerfuse-net/PROTOCOL</b> et <b>doc/pfnet.proto</b>.</p>
<p>N'hesitez pas à nous rejoindre sur le salon IRC <a href="irc://irc.freenode.org/peerfuse">#peerfuse@freenode</a>. Une mailing list sera bientôt mise en place.</p>
<p>Plus d'informations sur <b><a href="http://peerfuse.org">http://peerfuse.org</a></b>.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/03/12/peerfuse/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>TODO</title>
		<link>http://blog.p.engu.in/2008/03/10/todo/</link>
		<comments>http://blog.p.engu.in/2008/03/10/todo/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 20:41:27 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[looooooooool]]></category>
		<category><![CDATA[peerfuse]]></category>

		<guid isPermaLink="false">http://blog.p.engu.in/2008/03/10/todo/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:76beb9d09fea55719de289815ba23d7e871a9f2e'><p><a href='http://blog.p.engu.in/wp-content/uploads/2008/03/todo.png' title='todo.png'><img src='http://blog.p.engu.in/wp-content/uploads/2008/03/todo.thumbnail.png' alt='todo.png' /></a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.p.engu.in/2008/03/10/todo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
