<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Commentaires sur : Peerfuse, Chimera, git, mailman et redmine</title>
	<atom:link href="http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/</link>
	<description>Toute une continuité d&#039;informations inutiles.</description>
	<lastBuildDate>Sun, 11 Jul 2010 07:45:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>Par : Où en est Peerfuse &#124; Romain's blog</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/comment-page-1/#comment-3540</link>
		<dc:creator>Où en est Peerfuse &#124; Romain's blog</dc:creator>
		<pubDate>Sat, 07 Mar 2009 11:21:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.p.engu.in/?p=508#comment-3540</guid>
		<description>[...] charge de travail assez importante a été réalisée, et la  DHT Chimera a été correctement importée. D&#039;ailleurs, je pense que le mot « réécrite » corresponds davantage à ce qui a été [...]</description>
		<content:encoded><![CDATA[<div class='microid-http+http:sha1:270e3b2436330128c0b3621f3d441502b5856686'>[...] charge de travail assez importante a été réalisée, et la  DHT Chimera a été correctement importée. D&#8217;ailleurs, je pense que le mot « réécrite » corresponds davantage à ce qui a été [...]</div>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Martin</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/comment-page-1/#comment-2311</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Wed, 20 Aug 2008 13:07:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.p.engu.in/?p=508#comment-2311</guid>
		<description>En effet, la taille du code est tout à fait limitée. J&#039;aurais pensé à un projet plus conséquent. Mes remarques n&#039;ont donc pas lieu d&#039;être ici.</description>
		<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:5a3572225feae5d76f886ec96adba9f4c77d1df8'>En effet, la taille du code est tout à fait limitée. J&#8217;aurais pensé à un projet plus conséquent. Mes remarques n&#8217;ont donc pas lieu d&#8217;être ici.</div>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Romain</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/comment-page-1/#comment-2305</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Wed, 20 Aug 2008 08:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.p.engu.in/?p=508#comment-2305</guid>
		<description>Entre nous, la qualité de leur code est suffisamment mauvaise pour que je puisse aisément penser qu&#039;on corrigera les bugs et le style général du code plus rapidement qu&#039;eux.

En effet, ainsi que je l&#039;ai indiqué plus haut, j&#039;ai reçu d&#039;eux une réponse comme quoi leur code était stable, en production, mature. Or je pense qu&#039;il n&#039;en est rien. D&#039;une part, il y a les bugs tels que celui que j&#039;ai décris qui montre que ça n&#039;est pas suffisamment testé sur des systèmes variés. Ensuite, on trouve un grand nombre de variables membres ou paramètres de fonctions non usitées (destiné à un usage ultérieur). C&#039;est étrange de laisser ça dans un code packagé censé être abouti.

Je me permet de rappeler que leur dernière release date de 2006.

Je pense donc qu&#039;il n&#039;y aura pas d&#039;évolutions futures de leur côté, probablement d&#039;éventuelles correction de bugs.

Mais je pense également que, si évolution de leur côté il y a, on aura bien fait évoluer notre code avant le leur, qu&#039;on compte inclure des fonctionnalités non présentes dans Chimera, qu&#039;on a corrigé déjà quelques bugs (et que je n&#039;ai pas encore reçu de réponse à mon mail pour les remonter).

Je pense donc que le choix d&#039;intégrer Chimera à Peerfuse et de le maintenir nous même est bon. Maintenant et de toute façon, la taille de leur code n&#039;est pas monstrueuse, tu as une dizaine de fichiers, dont quelques uns qui vont disparaître (ou ont déjà disparu).

Pour information, voici le nombre de lignes de code de Peerfuse (Chimera compris, commentaires et lignes vides non comprises) :

&lt;pre&gt;
common          cpp=8758
peerfuse-net    cpp=2419
peerfuse-lan    cpp=1872
total: 
&lt;/pre&gt;

Et voici le nombre de lignes de Chimera :

&lt;pre&gt;
dht             cpp=2433
&lt;/pre&gt;

On a donc 13049 lignes au total, dont 2433 pour Chimera, ce qui représente 18% du code, ce qui n&#039;est en soi pas énorme.</description>
		<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:332bea11868a466b7e0e9e7adccf3ce7f389886e'>Entre nous, la qualité de leur code est suffisamment mauvaise pour que je puisse aisément penser qu&#8217;on corrigera les bugs et le style général du code plus rapidement qu&#8217;eux.</p>
<p>En effet, ainsi que je l&#8217;ai indiqué plus haut, j&#8217;ai reçu d&#8217;eux une réponse comme quoi leur code était stable, en production, mature. Or je pense qu&#8217;il n&#8217;en est rien. D&#8217;une part, il y a les bugs tels que celui que j&#8217;ai décris qui montre que ça n&#8217;est pas suffisamment testé sur des systèmes variés. Ensuite, on trouve un grand nombre de variables membres ou paramètres de fonctions non usitées (destiné à un usage ultérieur). C&#8217;est étrange de laisser ça dans un code packagé censé être abouti.</p>
<p>Je me permet de rappeler que leur dernière release date de 2006.</p>
<p>Je pense donc qu&#8217;il n&#8217;y aura pas d&#8217;évolutions futures de leur côté, probablement d&#8217;éventuelles correction de bugs.</p>
<p>Mais je pense également que, si évolution de leur côté il y a, on aura bien fait évoluer notre code avant le leur, qu&#8217;on compte inclure des fonctionnalités non présentes dans Chimera, qu&#8217;on a corrigé déjà quelques bugs (et que je n&#8217;ai pas encore reçu de réponse à mon mail pour les remonter).</p>
<p>Je pense donc que le choix d&#8217;intégrer Chimera à Peerfuse et de le maintenir nous même est bon. Maintenant et de toute façon, la taille de leur code n&#8217;est pas monstrueuse, tu as une dizaine de fichiers, dont quelques uns qui vont disparaître (ou ont déjà disparu).</p>
<p>Pour information, voici le nombre de lignes de code de Peerfuse (Chimera compris, commentaires et lignes vides non comprises) :</p>
<pre>
common          cpp=8758
peerfuse-net    cpp=2419
peerfuse-lan    cpp=1872
total:
</pre>
<p>Et voici le nombre de lignes de Chimera :</p>
<pre>
dht             cpp=2433
</pre>
<p>On a donc 13049 lignes au total, dont 2433 pour Chimera, ce qui représente 18% du code, ce qui n&#8217;est en soi pas énorme.</p></div>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Martin</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/comment-page-1/#comment-2291</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Tue, 19 Aug 2008 22:29:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.p.engu.in/?p=508#comment-2291</guid>
		<description>En effet, Romain, tu as bien fait de te renseigner des évolutions à venir du projet dont vous créez une nouvelle branche qu&#039;il ne sera plus possible, du fait d&#039;un autre langage de programmation, de réintégrer dans le projet initial. Cependant, il serait utile de garder la possibilité de récupérer leurs futures corrections de bugs éventuels, notamment en utilisant des outils de contrôle de version et de comparaison des fichiers corrects (je ne connais pas &lt;em&gt;git&lt;/em&gt;, mais en matière de comparaison à deux et à trois fichiers, je recommande &lt;em&gt;Araxis Merge Professionnal&lt;/em&gt;, le meilleur outil que j&#039;ai trouvé dans ce domaine, après en avoir évalué une vingtaine, voici quelques années).

Néanmoins, je continue à penser que faire grossir dès le départ du projet la base du code à maintenir risque de rendre le projet très rapidement difficile à maintenir et ralentissant d&#039;autant plus son développement.</description>
		<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:5a3572225feae5d76f886ec96adba9f4c77d1df8'>En effet, Romain, tu as bien fait de te renseigner des évolutions à venir du projet dont vous créez une nouvelle branche qu&#8217;il ne sera plus possible, du fait d&#8217;un autre langage de programmation, de réintégrer dans le projet initial. Cependant, il serait utile de garder la possibilité de récupérer leurs futures corrections de bugs éventuels, notamment en utilisant des outils de contrôle de version et de comparaison des fichiers corrects (je ne connais pas <em>git</em>, mais en matière de comparaison à deux et à trois fichiers, je recommande <em>Araxis Merge Professionnal</em>, le meilleur outil que j&#8217;ai trouvé dans ce domaine, après en avoir évalué une vingtaine, voici quelques années).</p>
<p>Néanmoins, je continue à penser que faire grossir dès le départ du projet la base du code à maintenir risque de rendre le projet très rapidement difficile à maintenir et ralentissant d&#8217;autant plus son développement.</p></div>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Romain</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/comment-page-1/#comment-2234</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Sun, 17 Aug 2008 23:02:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.p.engu.in/?p=508#comment-2234</guid>
		<description>Pour ton premier commentaire, en effet je suis très friand du uint32_t qui me permet de m&#039;assurer de la taille de la variable concernée.
En effet, dans un projet bas niveau comme peerfuse, il est impératif de savoir quelle est la taille des variables en question. C&#039;est très important lorsque tu mets en place un protocole réseau qui ne soit pas textuel.

Pour ce qui est du port de Chimera en C++, j&#039;ai tout d&#039;abord envoyé un mail à l&#039;équipe de développement qui m&#039;a répondu ceci :

&lt;blockquote&gt;
Hi Romain.

The chimera code is very stable, and we are not expecting any significant code releases in the near future. We currently use it as the foundation for several p2p related projects at our lab, and have been very happy with it.

Ben
&lt;/blockquote&gt;

On peut donc conclure que leur code n&#039;évoluera plus. De toute façon, ce dit code n&#039;est pas d&#039;une qualité exemplaire, et dans mon portage j&#039;ai été amené à l&#039;améliorer. On trouve d&#039;ailleurs des choses bizarres telles que :

&lt;pre lang=&quot;c&quot;&gt;
/* send the message */
if (!retry)
        ret = network_send (state, host, data, size, msgprop-&gt;ack);
else
        ret = network_send (state, host, data, size, msgprop-&gt;ack);
&lt;/pre&gt;


Enfin, on va être amené à améliorer Chimera pour y inclure des mécanismes d&#039;optimisation du routage tels qu&#039;il y en a dans Pastry.

Je pense qu&#039;avoir notre propre code de la DHT nous permettra une liberté plus grande que si on essaie de rester sync upstream, ce qui de toute façon ne servira à rien, puisque d&#039;après eux il n&#039;y aura plus d&#039;évolution. J&#039;ai néanmoins envoyé un mail afin de les prévenir du problème x86_64.</description>
		<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:332bea11868a466b7e0e9e7adccf3ce7f389886e'>Pour ton premier commentaire, en effet je suis très friand du uint32_t qui me permet de m&#8217;assurer de la taille de la variable concernée.<br />
En effet, dans un projet bas niveau comme peerfuse, il est impératif de savoir quelle est la taille des variables en question. C&#8217;est très important lorsque tu mets en place un protocole réseau qui ne soit pas textuel.</p>
<p>Pour ce qui est du port de Chimera en C++, j&#8217;ai tout d&#8217;abord envoyé un mail à l&#8217;équipe de développement qui m&#8217;a répondu ceci :</p>
<blockquote><p>
Hi Romain.</p>
<p>The chimera code is very stable, and we are not expecting any significant code releases in the near future. We currently use it as the foundation for several p2p related projects at our lab, and have been very happy with it.</p>
<p>Ben
</p></blockquote>
<p>On peut donc conclure que leur code n&#8217;évoluera plus. De toute façon, ce dit code n&#8217;est pas d&#8217;une qualité exemplaire, et dans mon portage j&#8217;ai été amené à l&#8217;améliorer. On trouve d&#8217;ailleurs des choses bizarres telles que :</p>
<pre lang="c">
/* send the message */
if (!retry)
        ret = network_send (state, host, data, size, msgprop->ack);
else
        ret = network_send (state, host, data, size, msgprop->ack);
</pre>
<p>Enfin, on va être amené à améliorer Chimera pour y inclure des mécanismes d&#8217;optimisation du routage tels qu&#8217;il y en a dans Pastry.</p>
<p>Je pense qu&#8217;avoir notre propre code de la DHT nous permettra une liberté plus grande que si on essaie de rester sync upstream, ce qui de toute façon ne servira à rien, puisque d&#8217;après eux il n&#8217;y aura plus d&#8217;évolution. J&#8217;ai néanmoins envoyé un mail afin de les prévenir du problème x86_64.</p></div>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Martin</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/comment-page-1/#comment-2229</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Sun, 17 Aug 2008 19:47:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.p.engu.in/?p=508#comment-2229</guid>
		<description>Par ailleurs, je m&#039;étonne que vous ayez choisi de &lt;em&gt;porter&lt;/em&gt; le code de &lt;em&gt;Chimera&lt;/em&gt; en C++. Aurais-je mal compris&#160;?

En effet, cela vous limitera très rapidement dans les évolutions futures du projet&#160;: vous devrez impérativement maintenir le code de &lt;em&gt;Chimera C++&lt;/em&gt;, ce qui vous alourdira votre tâche de développement de manière conséquente. Puisque le C et C++ peuvent être compilés de manière compatible, on aurait pu envisager de &lt;em&gt;lier&lt;/em&gt; la partie &lt;em&gt;Chimera&lt;/em&gt; en langage C à un ensemble de classes d&#039;encapsulation de votre cru, faire un simple &lt;em&gt;wrapper&lt;/em&gt;, en somme. Ensuite, le projet principal utilise le &lt;em&gt;wrapper&lt;/em&gt; et non plus &lt;em&gt;Chimera&lt;/em&gt; directement. Ceci vous permet en plus de pouvoir remplacer &lt;em&gt;Chimera&lt;/em&gt; par une autre technologie à l&#039;avenir, si jamais le &lt;em&gt;wrapper&lt;/em&gt; est écrit de manière suffisamment indépendante et plutôt lié aux besoins de votre application plutôt qu&#039;aux disponibilités de la bibliothèque qu&#039;il utilise.

Car maintenir ce &lt;em&gt;wrapper&lt;/em&gt; coûte moins cher, en temps de développement, que de reporter de nouveau une nouvelle version de &lt;em&gt;Chimera&lt;/em&gt; en C++, ce qui vous permet de vous concentrer sur la valeur ajoutée spécifique à votre projet, plutôt que de devoir convertir en boucle des projets tiers.

Enfin, concernant &lt;em&gt;Redmine&lt;/em&gt; dont j&#039;ai découvert l&#039;existence récemment, l&#039;expérience peut être intéressante à suivre. En effet, installer encore une autre technologie logicielle (&lt;em&gt;Ruby on Rails&lt;/em&gt;) sur un serveur peut, à force, imposer une maintenance d&#039;autant plus complexe de l&#039;administration du projet. D&#039;ailleurs, dans les grandes équipes de développement (où &quot;grandes&quot; est subjectif), on dédié une personne à temps partiel ou temps plein, voire plus d&#039;une personne au bon fonctionnement du système de contrôle de version et de collaboration en équipe.</description>
		<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:5a3572225feae5d76f886ec96adba9f4c77d1df8'>Par ailleurs, je m&#8217;étonne que vous ayez choisi de <em>porter</em> le code de <em>Chimera</em> en C++. Aurais-je mal compris&nbsp;?</p>
<p>En effet, cela vous limitera très rapidement dans les évolutions futures du projet&nbsp;: vous devrez impérativement maintenir le code de <em>Chimera C++</em>, ce qui vous alourdira votre tâche de développement de manière conséquente. Puisque le C et C++ peuvent être compilés de manière compatible, on aurait pu envisager de <em>lier</em> la partie <em>Chimera</em> en langage C à un ensemble de classes d&#8217;encapsulation de votre cru, faire un simple <em>wrapper</em>, en somme. Ensuite, le projet principal utilise le <em>wrapper</em> et non plus <em>Chimera</em> directement. Ceci vous permet en plus de pouvoir remplacer <em>Chimera</em> par une autre technologie à l&#8217;avenir, si jamais le <em>wrapper</em> est écrit de manière suffisamment indépendante et plutôt lié aux besoins de votre application plutôt qu&#8217;aux disponibilités de la bibliothèque qu&#8217;il utilise.</p>
<p>Car maintenir ce <em>wrapper</em> coûte moins cher, en temps de développement, que de reporter de nouveau une nouvelle version de <em>Chimera</em> en C++, ce qui vous permet de vous concentrer sur la valeur ajoutée spécifique à votre projet, plutôt que de devoir convertir en boucle des projets tiers.</p>
<p>Enfin, concernant <em>Redmine</em> dont j&#8217;ai découvert l&#8217;existence récemment, l&#8217;expérience peut être intéressante à suivre. En effet, installer encore une autre technologie logicielle (<em>Ruby on Rails</em>) sur un serveur peut, à force, imposer une maintenance d&#8217;autant plus complexe de l&#8217;administration du projet. D&#8217;ailleurs, dans les grandes équipes de développement (où &laquo;&nbsp;grandes&nbsp;&raquo; est subjectif), on dédié une personne à temps partiel ou temps plein, voire plus d&#8217;une personne au bon fonctionnement du système de contrôle de version et de collaboration en équipe.</div>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Martin</title>
		<link>http://blog.p.engu.in/2008/08/17/peerfuse-chimera-git-mailman-et-redmine/comment-page-1/#comment-2228</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Sun, 17 Aug 2008 19:36:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.p.engu.in/?p=508#comment-2228</guid>
		<description>Note cependant qu&#039;il n&#039;existe pas, en C ou C++, de type inhérent au langage concernant la taille mémoire associée, ni même son format de stockage. Ainsi, sur les plateformes sur lesquelles j&#039;ai travaillées, &quot;int&quot; peut être 16, 32, 64 et même 128 bits.

Certes, définir sur chacune des plateformes des types spécifiques, comme on a l&#039;habitude de faire, votre équipe y compris, semble-t-il, avec des &quot;uint32_t&quot;, ou tout simplement &quot;u32&quot;, &quot;s32&quot;, etc. est possible, mais cela reste une rustine et il n&#039;est pas toujours possible de le faire aisément et de manière performante pour tous les types dits &quot;simples&quot;, même si, il est vrai, le C++ offre des mécanismes tels que la généricité.

Toujours est-il que pour compiler un code spécifique à une plateforme donnée, il faut compter sur l&#039;implémentation du langage sur la plateforme avec des options spécifiques aux types relatives à la compilation (forcer les entiers longs sur 32 bits, par exemple), et éventuellement fournir son propre code de redéfinition des types (selon la plateforme, implémenter différemment chaque &quot;s32&quot;, &quot;u32&quot;, etc.)

Bref, même si manifestement la solution retenue par l&#039;équipe de développement de Chimera et du correcteur du défaut apparaissant en 64 bits ne semble pas des plus adroites, on ne peut que te l&#039;accorder, toutes les autres solutions possibles ont elles aussi leurs limites.</description>
		<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:5a3572225feae5d76f886ec96adba9f4c77d1df8'>Note cependant qu&#8217;il n&#8217;existe pas, en C ou C++, de type inhérent au langage concernant la taille mémoire associée, ni même son format de stockage. Ainsi, sur les plateformes sur lesquelles j&#8217;ai travaillées, &laquo;&nbsp;int&nbsp;&raquo; peut être 16, 32, 64 et même 128 bits.</p>
<p>Certes, définir sur chacune des plateformes des types spécifiques, comme on a l&#8217;habitude de faire, votre équipe y compris, semble-t-il, avec des &laquo;&nbsp;uint32_t&nbsp;&raquo;, ou tout simplement &laquo;&nbsp;u32&#8243;, &laquo;&nbsp;s32&#8243;, etc. est possible, mais cela reste une rustine et il n&#8217;est pas toujours possible de le faire aisément et de manière performante pour tous les types dits &laquo;&nbsp;simples&nbsp;&raquo;, même si, il est vrai, le C++ offre des mécanismes tels que la généricité.</p>
<p>Toujours est-il que pour compiler un code spécifique à une plateforme donnée, il faut compter sur l&#8217;implémentation du langage sur la plateforme avec des options spécifiques aux types relatives à la compilation (forcer les entiers longs sur 32 bits, par exemple), et éventuellement fournir son propre code de redéfinition des types (selon la plateforme, implémenter différemment chaque &laquo;&nbsp;s32&#8243;, &laquo;&nbsp;u32&#8243;, etc.)</p>
<p>Bref, même si manifestement la solution retenue par l&#8217;équipe de développement de Chimera et du correcteur du défaut apparaissant en 64 bits ne semble pas des plus adroites, on ne peut que te l&#8217;accorder, toutes les autres solutions possibles ont elles aussi leurs limites.</p></div>
]]></content:encoded>
	</item>
</channel>
</rss>
