<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>hack en stock &#187; MondeLibre</title>
	<atom:link href="http://frederic.logier.org/category/mondelibre/feed/" rel="self" type="application/rss+xml" />
	<link>http://frederic.logier.org</link>
	<description>les aventures d&#039;un gouiker au pays du logiciel libre</description>
	<lastBuildDate>Tue, 17 Jan 2012 21:18:51 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='frederic.logier.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>hack en stock &#187; MondeLibre</title>
		<link>http://frederic.logier.org</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://frederic.logier.org/osd.xml" title="hack en stock" />
	<atom:link rel='hub' href='http://frederic.logier.org/?pushpress=hub'/>
		<item>
		<title>Centralisation des logs Windows vers Linux via syslog</title>
		<link>http://frederic.logier.org/2012/01/12/centralisation-des-logs-windows-vers-linux-via-syslog/</link>
		<comments>http://frederic.logier.org/2012/01/12/centralisation-des-logs-windows-vers-linux-via-syslog/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 20:10:27 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[graylog2]]></category>
		<category><![CDATA[syslog]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=462</guid>
		<description><![CDATA[[Article publié sur linuxfr.org] Intro Lorsqu&#8217;on gère un parc de serveur qui comprend malheureusement des serveurs Windows, on souhaite centraliser leurs logs, voir même recevoir des alertes en fonction du contenu. C&#8217;est simple à faire sous Linux avec rsyslog, avec lequel je transmets les syslogs vers l&#8217;excellent Graylog2. Par contre dans le monde Windows il n&#8217;y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=462&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>[<a href="http://linuxfr.org/users/fredix/journaux/centralisation-des-logs-windows-vers-linux-via-syslog" target="_blank">Article publié sur linuxfr.org</a>]</p>
<h4>Intro</h4>
<p>Lorsqu&#8217;on gère un parc de serveur qui comprend malheureusement des serveurs Windows, on souhaite centraliser leurs logs, voir même recevoir des alertes en fonction du contenu. C&#8217;est simple à faire sous Linux avec rsyslog, avec lequel je transmets les syslogs vers l&#8217;excellent <a href="http://graylog2.org/">Graylog2</a>. Par contre dans le monde Windows il n&#8217;y a pas de serveur syslog natif. J&#8217;avais donc trouvé <a href="http://www.mwagent.com/">MonitorWare Agent</a> un impressionnant logiciel propriétaire qui permet de définir des services qui vont lire n&#8217;importe quel type de logs, puis associer à ces services des ruleset qui vont déclencher une action comme faire suivre les logs vers un serveur syslog. L&#8217;interface graphique permet de créer un nombre de services et de rulesets impressionnants pour enchaîner des actions les plus tordus.<br />
Le seul problème est le coût de la licence à environ 200€ par serveur, ce qui peut être bloquant.</p>
<h4 id="toc_1">NXLOG</h4>
<p>Prêt à laisser tomber, mon collègue et voisin de bureau <a href="https://twitter.com/ponteilla" target="_blank">@ponteilla</a> m&#8217;a judicieusement déniché le logiciel libre <a href="http://nxlog-ce.sourceforge.net/">nxlog</a> qui permet de faire exactement la même chose, sans interface graphique mais ça nous fait pas peur. Après de nombreux tâtonnement et quelques mails sur la liste j&#8217;ai pu transmettre les logs d&#8217;une application qui rotate elle meme ses logs en donnant un nouveau nom au log en cours (gruik)&#8230; Cependant nxlog permet d&#8217;utiliser des wildcard sur les noms des fichiers (*.log par ex) et même d&#8217;être récursif en allant lire tous les logs dans chaque sous répertoire. Un processor transformer permet de formater le log selon la RFC syslog voulue.<br />
<a href="http://nxlog-ce.sourceforge.net/nxlog-docs/en/nxlog-reference-manual.html">La doc</a> montre le workflow très poussé de nxlog qui permet des enchaînements vraiment tordu, genre intégrer un schéduler dans un <a href="http://nxlog-ce.sourceforge.net/nxlog-docs/en/nxlog-reference-manual.html#config_module_schedule">module input</a>, surveiller un fichier de log et le convertir en CVS vers un autre fichier <a href="http://nxlog-ce.sourceforge.net/nxlog-docs/en/nxlog-reference-manual.html#xm_csv_example">xm_csv_example</a>. Il intègre également un <a href="http://nxlog-ce.sourceforge.net/nxlog-docs/en/nxlog-reference-manual.html#lang">langage</a> qui permet par exemple de tester une expression régulière sur un flux en entrée :</p>
<pre><code>if $Message =~ /^Test (\S+)/ log_info("captured: " + $1); </code></pre>
<h4 id="toc_2">Workflow</h4>
<p>En entrée on choisi un input module (fichier, sgbd, syslog, tcp/udp, ..), puis un processor module qui va transformer ou filtrer les datas, puis un output module (sgbd, syslog, tcp/udp, file, ..) enfin via la directive route on enchaîne ces modules entre eux. Je n&#8217;ai que survolé les possibilités du soft, mais au vu de sa richesse et de sa licence GPL/LGPL je suis plutôt surpris de ne pas le trouver dans les dépôts debian/ubuntu.</p>
<h4 id="toc_3">Config basique fichiers de logs (*.log) -&gt; serveur Graylog2 Linux (syslog)</h4>
<p>Voici ma config qui fonctionne. Le serveur Windows communique avec Graylog2 sous Linux via OpenVPN. Pour aider au paramétrage j&#8217;ai lancé sur le Linux un tcpdump pour vérifier que les paquets arrivaient bien, avec la facility voulue :</p>
<pre><code>tcpdump -i tap0 "udp port 514" </code></pre>
<p>Le fichier de conf nxlog.conf</p>
<pre><code>## This is a sample configuration file. See the nxlog reference manual about the</code>
<code>## configuration options. It should be installed locally and is also available</code>
<code>## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html</code>
<code>## Please set the ROOT to the folder your nxlog was installed into,</code>
<code>## otherwise it will not start.</code>
<code>define ROOT C:\Program Files\nxlog</code>
<code># define ROOT C:\Program Files (x86)\nxlog</code>
<code>define CERTDIR %ROOT%\cert</code>
<code>define CONFDIR %ROOT%\conf</code>
<code>define LOGDIR %ROOT%\data</code>
<code>Moduledir %ROOT%\modules</code>
<code>CacheDir %ROOT%\data</code>
<code>Pidfile %ROOT%\data\nxlog.pid</code>
<code>SpoolDir %ROOT%\data</code>
<code>LogFile %ROOT%\data\nxlog.log</code>
<code>LogLevel INFO</code>
<code>&lt;Extension syslog&gt;</code>
<code> Module xm_syslog</code>
<code>&lt;/Extension&gt;</code>
<code>&lt;Input in&gt;</code>
<code> Module im_file</code>
<code> File "C:\monapp\log\\*.log" # lit tous les .log dans tous les sous répertoires !</code>
<code> Exec $Message = $raw_event;</code>
<code> SavePos TRUE</code>
<code> Recursive TRUE</code>
<code>&lt;/Input&gt;</code>
<code>&lt;Processor transformer&gt;</code>
<code> Module pm_transformer</code>
<code> Exec $SyslogFacilityValue = syslog_facility_value("local2");</code>
<code> OutputFormat syslog_rfc3164</code>
<code>&lt;/Processor&gt;</code>
<code>&lt;Output out&gt;</code>
<code> Module om_udp</code>
<code> Host 10.8.0.1 # IP du serveur Linux sur lequel écoute graylog2 </code>server
   Port 514
&lt;/Output&gt;
<code>&lt;Route 1&gt;</code>
<code>Path in =&gt; transformer =&gt; out</code>
<code>&lt;/Route&gt; </code></pre>
<br />Classé dans:<a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a> Tagged: <a href='http://frederic.logier.org/tag/graylog2/'>graylog2</a>, <a href='http://frederic.logier.org/tag/syslog/'>syslog</a>, <a href='http://frederic.logier.org/tag/windows/'>windows</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/462/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=462&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2012/01/12/centralisation-des-logs-windows-vers-linux-via-syslog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>
	</item>
		<item>
		<title>le confort contre la liberté</title>
		<link>http://frederic.logier.org/2011/12/12/le-confort-contre-la-liberte/</link>
		<comments>http://frederic.logier.org/2011/12/12/le-confort-contre-la-liberte/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 08:53:26 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[MondeLibre]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=453</guid>
		<description><![CDATA[[Article publié sur Linuxfr.org] source @zifro Je viens de tomber sur APPLE, LA TYRANNIE DU COOL qui contient cette phrase : Tim Wu, qui compare le succès de Steve Jobs à celui d’Hollywood, en soulignant que l’humanité préfère en général « la facilité et le confort » à la liberté Je vais tenter de décortiquer cette phrase qui [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=453&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>[<a href="http://linuxfr.org/users/fredix/journaux/le-confort-contre-la-libert%C3%A9">Article publié sur Linuxfr.org</a>] source <a href="https://twitter.com/#!/zifro/status/145980942211751936" target="_blank">@zifro</a></p>
<p>Je viens de tomber sur <a href="http://www.arte.tv/fr/Comprendre-le-monde/4285416.html" target="_blank">APPLE, LA TYRANNIE DU COOL</a> qui contient cette phrase :</p>
<blockquote><p>Tim Wu, qui compare le succès de Steve Jobs à celui d’Hollywood, en soulignant que l’humanité préfère en général « la facilité et le confort » à la liberté</p></blockquote>
<p>Je vais tenter de décortiquer cette phrase qui me parait très lumineuse, et possède plusieurs niveaux de profondeur pour nous Linuxiens.</p>
<p>En effet si nous sommes tous d&#8217;accord ici pour dénoncer la perte de nos libertés fondamentales lorsqu&#8217;on utilise un produit Apple, il en est pas de même pour reconnaître la faiblesse du logiciel libre qui ne le rend pas assez attrayant face aux produits Apple/Google. Pour certains le client Apple est idiot, pour d&#8217;autres il est bling bling, pour d&#8217;autres il est anti-microsoft primaire ou bien il peut être tout ça.</p>
<p>Cette histoire de confort me rappelle une histoire, vraie il me semble, sur un test de scientifiques effectué sur des chimpanzés. Ils fournissaient 2 moyens à ceux-ci pour obtenir des bananes. Un très complexe à base de cordes et de poulies et un autre très simple qui permet de prendre les bananes en tendant le bras à travers des barreaux légèrement électrifié. Il s&#8217;est avéré que le stress généré par la peur du courant électrique était moins important que celui généré via le système de poulies pourtant sans douleur.</p>
<p>Rapporté à l&#8217;être humain, cette histoire tend à démontrer qu&#8217;il préférerait le moyen le plus simple pour effectuer des tâches courantes, quelque soit les inconvénients. Donc même si ces tâches sont effectuées via des logiciels libres offrant plus de libertés, elles seront la plupart du temps plus stressante qu&#8217;un logiciel ou surtout qu&#8217;un écosystème propriétaire comme Apple ou Google plus agréable.</p>
<p>Si l&#8217;on admet cette réalité, d&#8217;autant plus pour des personnes dont l&#8217;informatique n&#8217;est qu&#8217;un outil qui ne les occupent qu&#8217;une infime partie de leur temps par rapport à nous, on ne devrait plus perdre du temps à pratiquer le dénigrement ou le mépris envers ces personnes, mais comment rendre les logiciels libres plus agréable.</p>
<h2 id="toc_0">Le cloud</h2>
<p>C&#8217;est un système très justement dénoncé par le risque de perte de la vie privée contenue dans nos données. Il est pourtant le pilier des écosystèmes d&#8217;Apple, de Google, et prochainement de Microsoft. Cet outil permet et permettra encore plus de simplifier la synchronisation des données personnelles, des applications et des personnalisations.<br />
Il est l&#8217;outil indispensable à l&#8217;amélioration du confort de l&#8217;utilisateur, et pourtant nous ne faisons que le dénigrer voir dénoncer la dangerosité d&#8217;un tel système en le baptisant par certains Minitel 2.0</p>
<p>Certains travaillent à concevoir des logiciels libres alternatifs aux outils propriétaires les plus connus basés sur le cloud, comme movim ou diaspora. D&#8217;autres comme la FSFFrance ou tuxfamily proposent d&#8217;héberger des logiciels libres. Même si ces 2 types d&#8217;initiative pourraient conjointement arriver à un début d&#8217;alternative, encore faudrait-il une équipe de techniciens pour maintenir et faire évoluer l&#8217;infrastructure. Or nous l&#8217;avons vu avec l&#8217;APINC et Tuxfamily, ce type de service basé sur le bénévolat est par définition non pérenne.</p>
<p>L&#8217;autre solution est l&#8217;auto-hébergement, ce qui revient à renvoyer à l&#8217;utilisateur la prise en charge des services et donc la complexité de celle-ci. Il va s&#8217;en dire que ce n&#8217;est pas une solution pour le grand public.</p>
<h2 id="toc_1">Solutions</h2>
<p>Des solutions sont à mon avis nécessaire si l&#8217;on veut que le grand public ne doivent pas choisir entre son confort et sa liberté. Pourquoi l&#8217;utilisation du logiciel libre devrait nécessairement passer par une complexité ou une compréhension de l&#8217;informatique ?<br />
Cette question est d&#8217;autant plus critique maintenant car jusqu&#8217;à il y a quelques années l&#8217;usage d&#8217;un logiciel libre comme un navigateur web ou une suite bureautique n&#8217;impliquait pas un grand effort face à la version propriétaire, hormis bien sûr celui de changer ses habitudes. Cependant avec l&#8217;intégration de plus en plus fortes de services au sein des logiciels, la différence entre logiciel propriétaire et logiciel libre est de plus en plus flagrante et ne sera pas en faveur de ces derniers.</p>
<p>Une solution serait qu&#8217;une Fondation du libre possédant une certaine reconnaissance de ses pairs proposent des services. En effet le dilemme du cloud est qu&#8217;il suffit qu&#8217;une entreprise exploite de données personnelles pour que cela suffise à jeter le doute sur la vie privée, que cela soit Google ou Canonical. A priori seul une Fondation ayant en son coeur une éthique, comme la FSF ou la Mozilla Fondation pourraient obtenir la légitimité de l&#8217;exploitation de données personnelles.</p>
<p>L&#8217;autre solution qui est une sorte de Graal, serait de concilier le P2P et les services. Il &#8220;suffirait&#8221; que des services, quel qu&#8217;ils soient, s&#8217;appuient sur une API système, laquelle fonctionnerait en P2P pour distribuer les données découpées, chiffrées et redondées. J&#8217;ai cependant bien peur qu&#8217;un tel système ne voit pas le jour avant très longtemps.</p>
<p>C&#8217;est pourtant à mon avis le prochain défi du logiciel libre, ne plus se contenter de proposer du logiciel, mais aussi des services si possible décentralisés et si possible non gratuit.</p>
<h2 id="toc_2">La gratuité</h2>
<p>La liberté a un coût, la preuve en est que certains s&#8217;en prive en échange de confort et de simplicité. Il est à mon avis dommageable à long terme pour le libre que ce coût soit sur celui du confort d&#8217;utilisation. Le succès d&#8217;Apple montre qu&#8217;un grand nombre de personnes sont prêtes à payer très cher en monnaies, leur confort. Un autre grand nombre de personnes sont prêtes à obtenir ce confort en échange de leur vie privée, chez Facebook ou Google.<br />
Dans les 3 cités, Apple, Facebook, Google, aucun n&#8217;a fait l&#8217;économie du confort.</p>
<p>Il est donc à mon avis nécessaire de diminuer fortement l&#8217;effort nécessaire à utiliser et exploiter les logiciels libres, l&#8217;usage de services liés sera pour cela de plus en plus indispensable. Une grande partie des utilisateurs seraient prêt à payer pour ces services ce qui permettrait d&#8217;une part de financer leur développement et exploitation, mais aussi que les communautés libres qui développent et supportent ces services puisse s&#8217;auto financer.</p>
<p>Quand je vois la part de plus en plus grande que prend l&#8217;informatique connecté à des services en ligne sur des formes aussi variées que des véhicules, des télévisions, console de jeux, téléphone, frigo, maison, etc, et que le libre ne propose aucune alternative à cela hormis dire que c&#8217;est pas bien, je suis très inquiet, certes pas à titre personnel mais pour l&#8217;avenir de tous.</p>
<p>Il sera je pense de plus en plus nécessaire de penser au confort, au financement et donc arriver à créer un écosystème décentralisé libre auto-financé et en terminer avec les tabous des services et de l&#8217;argent.</p>
<br />Classé dans:<a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/453/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=453&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2011/12/12/le-confort-contre-la-liberte/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>
	</item>
		<item>
		<title>un petit retour des JDLL 2011</title>
		<link>http://frederic.logier.org/2011/11/19/un-petit-retour-des-jdll-2011/</link>
		<comments>http://frederic.logier.org/2011/11/19/un-petit-retour-des-jdll-2011/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 20:27:27 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[MondeLibre]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=439</guid>
		<description><![CDATA[mise à jour : Je me rend compte avoir oublié de parler de la conférence sur Illyse l&#8217;association qui souhaite proposer un FAI associatif local sur Lyon et Saint Etienne. Illyse fait parti du projet d&#8217;essaimage lancé par FDN. J&#8217;ai trouvé Jean-François Mourges (que je connais ayant travaillé avec lui ) plutôt bon orateur et ayant [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=439&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><em>mise à jour</em></strong> : Je me rend compte avoir oublié de parler de la conférence sur <a href="http://www.illyse.org/">Illyse</a> l&#8217;association qui souhaite proposer un FAI associatif local sur Lyon et Saint Etienne. Illyse fait parti du projet d&#8217;<a href="http://www.fdn.fr/-Essaimage-.html">essaimage</a> lancé par FDN. J&#8217;ai trouvé Jean-François Mourges (que je connais ayant travaillé avec lui <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) plutôt bon orateur et ayant semble-t-il réussi a s&#8217;entourer d&#8217;une équipe compétente , ce qui est la base de la réussite d&#8217;un projet. Cependant je m&#8217;ajoute aux requêtes qui ont été faite sur une offre VPN. En effet une offre d&#8217;un accès Internet non triple play entre 35 et 40 euros, qui comprend l&#8217;achat d&#8217;un modem ADSL et de 100 euros de frais d&#8217;installation est à mon avis un énorme frein pour pas mal de geeks. Or il serait à mon avis pragmatique de proposer <strong>en plus</strong> une offre VPN (entre 5 et 10 euros par mois par exemple) qui permettrait de financer plus rapidement l&#8217;association. Même si dans l&#8217;idéal on ne devrait pas avoir besoin d&#8217;utiliser un VPN puisque les FAI devraient respecter la neutralité des réseaux, un pragmatisme &#8220;à la Linus&#8221; en phase avec la triste réalité, permettrait, à mon avis, la réussite de ce projet.</p>
<p>Comme chaque année j&#8217;ai fait un tour aux <a href="http://www.jdll.org">JDLL</a> le vendredi et le samedi. Il y a eu des conférences très intéressantes, notamment <a href="http://www.jdll.org/node/165">celle</a> d&#8217; Alexandre de dommelin sur <a href="http://puppetlabs.com/">puppet</a>. J&#8217;ai déjà eu envie d&#8217;utiliser cet outil de gestion automatique des déploiements et des configurations, mais son enthousiasme m&#8217;a convaincu d&#8217;utiliser cet outil indispensable à l&#8217;industrialisation d&#8217;un SI (traçabilité, déploiement automatique, etc).</p>
<p>J&#8217;ai ensuite suivi les conférences sur <a href="http://movim.eu/">movim</a> et <a href="http://wiki.goffi.org/wiki/Salut_%C3%A0_Toi">salut à toi</a> qui sont des réseaux sociaux décentralisés basés sur XMPP. On voit qu&#8217;il y a eu beaucoup de taff derrière ces projets, et qu&#8217;ils mériteraient d&#8217;être financé. Au sujet du financement j&#8217;ai rencontré les petits gars derrière <a href="https://elveos.org/">elveos</a> qui permet de financer les développements de logiciels libre. C&#8217;est typiquement ce genre d&#8217;outil qui manque à notre écosystème depuis longtemps. Mais à mon sens ils devraient ajouter une gestion des ressources humaines en plus des ressources financières. En effet l&#8217;énorme difficulté des développeurs de logiciel libre, outre le financement, est de trouver d&#8217;autres développeurs, administrateur, graphiste, etc.</p>
<p>J&#8217;ai ensuite assisté à la <a href="http://www.jdll.org/node/255">conférence</a> de Benjamin Bayard. Il a vraiment des talents d&#8217;orateur et de vulgarisation. Sur les problématiques aussi fondamentales telles que la neutralité des réseaux, nous mériterions qu&#8217;il touche un plus grand public plutôt que celui des geeks déjà acquis à cette cause.</p>
<p>Pour finir j&#8217;ai été plutôt impressionné par une démonstration d&#8217;<a href="http://fr.opensuse.org/">opensuse</a> sur le stand éponyme. L&#8217;outil <a href="http://openbuildservice.org/">OBS</a> semble à première vue extraordinaire pour générer des paquets vers différentes distributions Linux. Mon netbook va sans doute servir de cobaye.</p>
<p>Peut être que l&#8217;année prochaine j&#8217;aurais assez avancé sur nodecast pour faire une petite conférence, et ainsi éviter de saouler toutes les personnes qui font l&#8217;erreur de me demander quel est mon projet <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Quoi qu&#8217;il en soit, il me parait évident que l&#8217;avenir des prochains services libres s&#8217;annoncent décentralisé et basé sur XMPP. C&#8217;est à mon sens la meilleur voie si l&#8217;ont veut éviter l’hémorragie des utilisateurs vers des services propriétaires centralisés et ce que cela implique en terme de protection de la vie privée. Car il ne sert à rien d&#8217;utiliser des logiciels libres sur son poste de travail si les données sont stockées chez Apple, Google, Facebook, Yahoo, &#8230;</p>
<br />Classé dans:<a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/439/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=439&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2011/11/19/un-petit-retour-des-jdll-2011/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>
	</item>
		<item>
		<title>NCS : un serveur applicatif</title>
		<link>http://frederic.logier.org/2011/11/07/ncs-un-serveur-applicatif/</link>
		<comments>http://frederic.logier.org/2011/11/07/ncs-un-serveur-applicatif/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 10:53:36 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[nodecast]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=429</guid>
		<description><![CDATA[Lors de mon dernier article sur nodecast je terminais sur la possibilité d&#8217;y intégrer un serveur web pour remplacer le serveur ruby Thin qui exposait l&#8217;API HTTP REST. C&#8217;est maintenant chose faite, la libqxt via son module QxtWeb m&#8217;a permis de mettre en œuvre assez simplement un serveur web dans un thread du serveur ncs. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=429&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p id="sites-page-title-header" align="left">Lors de mon dernier article sur nodecast je terminais sur la possibilité d&#8217;y intégrer un serveur web pour remplacer le serveur ruby Thin qui exposait l&#8217;API HTTP REST. C&#8217;est maintenant chose faite, la <a href="http://libqxt.bitbucket.org/doc/0.6/">libqxt</a> via son module <a href="http://libqxt.bitbucket.org/doc/0.6/qxtweb.html">QxtWeb</a> m&#8217;a permis de mettre en œuvre assez simplement un serveur web dans un thread du serveur <a href="https://github.com/nodecast/ncs">ncs</a>. J&#8217;ai migré tout le projet sur <a href="https://github.com/nodecast/">github</a>, le code du serveur est visible ici : <a href="https://github.com/nodecast/ncs/blob/master/http_api.cpp">http_api.cpp</a>. Ce how to m&#8217;a été très utile : <a href="https://sites.google.com/a/embeddedlab.org/community/technical-articles/qt/qt-posts/howtocreateasimplewebserviceusingqtandlibqxt">How to create a simple webservice using qt and libqxt</a></p>
<p>Dans la lancée j&#8217;ai également intégré un serveur XMPP grâce à <a href="http://code.google.com/p/qxmpp/">QXmpp</a>  ce qui permet au client <a href="https://github.com/nodecast/geekast">Geekast </a>d&#8217;effectuer des push en XMPP. Il fonctionne également dans son propre thread. Outre la rapidité de ce protocole face à HTTP, cela va permettre aux clients Geekast d&#8217;avoir une socket persistante avec le serveur ncs et donc permettre à celui-ci de faire du push vers tous les clients connectés. Les usages restent à définir mais cette possibilité ouvre un grand nombre de portes. Par exemple proposer la possibilité d&#8217;agir sur tous ses clients geekast depuis l&#8217;interface web (kill de processus, etc). L&#8217;envoi par HTTP sera toujours présent dans le client, au cas où la connexion XMPP est impossible (firewall, etc).</p>
<p>L&#8217;autre avancée est sur le format de donnée entre le client et le serveur, qui migre du XML vers JSON via <a href="http://libqxt.bitbucket.org/doc/0.6/qxtjson.html">QxtJson</a>. Ainsi le serveur ncs qui reçoit les payload en json peut directement les transformer en <a href="http://api.mongodb.org/cplusplus/current/classmongo_1_1_b_s_o_n_obj.html">bson object</a>, format binaire de MongoDB. Plus besoin de passer par un lourd parsing du xml et des conversions vers des tableaux pour en extraire les données. La <a href="https://github.com/nodecast/ncs/blob/master/nosql.cpp#L147">ligne suivante</a> montre la simplicité d&#8217;une telle conversion :</p>
<pre>bson::bo m_bo_json = mongo::fromjson(json.toStdString());</pre>
<p>Le serveur ncs est donc maintenant autonome, Ruby est uniquement utilisé pour l&#8217;exécution du frontal web en Ruby on Rails.</p>
<p>Pour finir, voici un schéma du fonctionnement interne du serveur ncs.</p>
<p><a href="http://fredix.files.wordpress.com/2011/11/ncs1.png"><img class="alignnone size-full wp-image-434" title="ncs" src="http://fredix.files.wordpress.com/2011/11/ncs1.png?w=620" alt=""   /></a></p>
<br />Classé dans:<a href='http://frederic.logier.org/category/code/'>code</a>, <a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>, <a href='http://frederic.logier.org/category/nodecast/'>nodecast</a> Tagged: <a href='http://frederic.logier.org/tag/mongodb/'>mongodb</a>, <a href='http://frederic.logier.org/tag/qt/'>Qt</a>, <a href='http://frederic.logier.org/tag/xmpp-2/'>xmpp</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/429/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=429&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2011/11/07/ncs-un-serveur-applicatif/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>

		<media:content url="http://fredix.files.wordpress.com/2011/11/ncs1.png" medium="image">
			<media:title type="html">ncs</media:title>
		</media:content>
	</item>
		<item>
		<title>Nodecast : backend asynchrone avec zeromq</title>
		<link>http://frederic.logier.org/2011/08/02/nodecast-backend-asynchrone-avec-zeromq/</link>
		<comments>http://frederic.logier.org/2011/08/02/nodecast-backend-asynchrone-avec-zeromq/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 21:17:03 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[nodecast]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[zeromq]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=397</guid>
		<description><![CDATA[Depuis mon dernier article sur Nodecast il y a 6 mois, de nouvelles idées ont germés qui ont données lieux à une nouvelle et sans aucun doute dernière (on y croit) réécriture du backend. En effet dans mon dernier article je me sers d&#8217;un logiciel propriétaire pour présenter ce que je crois être l&#8217;avenir de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=397&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Depuis mon dernier article sur Nodecast il y a 6 mois, de nouvelles idées ont germés qui ont données lieux à une nouvelle et sans aucun doute dernière (on y croit) réécriture du backend.</p>
<p>En effet dans mon dernier article je me sers d&#8217;un logiciel propriétaire pour présenter ce que je crois être l&#8217;avenir de services sur Internet via des technologies en Peer to Peer. Dans cette architecture P2P je pense que l&#8217;auto-hébergement est alors crédible car les données sont répliquées et leur accès répartie.</p>
<p>C&#8217;est pourquoi j&#8217;ai à nouveau réécris le backend, car dans un contexte où chaque utilisateur est encouragé à s&#8217;auto-héberger, il est nécessaire que le logiciel soit léger, simple à packager et donc avoir le moins de dépendance possible. Lorsque j&#8217;ai découvert <a href="http://zeromq.org">Zeromq</a> j&#8217;ai décidé d&#8217;implémenter avec, la gestion de la file d&#8217;attente et de répartition des jobs pour remplacer le serveur Qpid. Tous les serveurs de file comme Qpid, RabbitMQ ou Redis sont excellent dans un environnement centralisé mais sont à mon avis une contrainte s&#8217;ils sont imposés dans un environnement décentralisé ou réparti.</p>
<p>Zeromq me permet de migrer dans le <a href="https://gitorious.org/nodecast/nodecast-dispatcher">dispatcher</a> la gestion des files, grâce à des sockets ZMQ de type <a href="http://api.zeromq.org/2-1:zmq-socket#toc12">PUSH/PULL</a> gérées dans des threads. L&#8217;usage de Zeromq est in fine plus complexe puisque plus bas niveau qu&#8217;une API fourni avec un serveur de file, mais les possibilités sont quasiment infinie, voir les différents <a href="https://github.com/imatix/zguide/tree/master/examples/">exemples</a> dans de nombreux langages et surtout les nombreuses spécifications de <a href="http://rfc.zeromq.org/">protocoles</a>. A noter que Zeromq ne permet pas de persistance disque comme le font Qpid ou RabbitMQ, cependant une implémentation du protocole <a href="http://rfc.zeromq.org/spec:9">Titanic</a> le permettrait, et il n&#8217;est sans doute pas sorcier de les ajouter en option.</p>
<p>A propos de la persistance des messages, tout dépend du type d&#8217;application gérée, pour un système bancaire il ne peut y avoir de perte de message bien entendu. Au contraire, il me semble avoir lu que les dev du  backend de last.fm avaient choisi une technologie sans persistance pour privilégier la performance.</p>
<h2>Schémas</h2>
<p>Voici le schéma de la nouvelle architecture et du dispatcher</p>
<p><a href="http://fredix.files.wordpress.com/2011/08/architecture2.png"><img class="alignnone size-full wp-image-402" title="architecture2" src="http://fredix.files.wordpress.com/2011/08/architecture2.png?w=620" alt=""   /></a></p>
<h2></h2>
<h2></h2>
<h2><a href="http://fredix.files.wordpress.com/2011/08/dispatcher2.png"><img class="alignnone size-full wp-image-413" title="dispatcher" src="http://fredix.files.wordpress.com/2011/08/dispatcher2.png?w=620" alt=""   /></a></h2>
<h2></h2>
<h2></h2>
<h2>Description</h2>
<p>Ce schéma décrit le fonctionnement interne du processus dispatcher. Les numéros en rouge indiquent le workflow suivi par un job. Même s&#8217;il n&#8217;y a plus de serveur de file dans l&#8217;architecture nodecast, le dispatcher permet d&#8217;en conserver les propriétés grâce d&#8217;une part aux threads et aux envois non bloquant :  la directive ZMQ::NOBLOCK indique à la socket zmq de ne pas attendre de confirmation du destinataire.</p>
<blockquote>
<ol>
<li>L&#8217;API géré par Thin (externe au processus dispatcher) réceptionne les données XML envoyées par les clients nodecast. Le serveur Thin a bindé le port 5555 local, stocke le XML dans GridFS, construit un hash et le push dans la socket <a href="http://api.zeromq.org/2-1:zmq-socket#toc12">ZMQ_PUSH</a>.</li>
<li>Le thread Zreceive est connecté sur le port 5555 via une socket ZMQ:PULL. Avec ce protocole il peut y avoir plusieurs instance du dispatcher connectés, mais un seul recevra un même job. A contrario en <a href="http://api.zeromq.org/2-1:zmq-socket#toc9">ZMQ PUB/SUB</a> tous les subscribers recoivent une copie du job.</li>
<li>Zreceive a créé un <a href="http://api.zeromq.org/2-1:zmq-device">ZMQ_DEVICE</a>. Celui-ci relie la socket ZMQ_PULL vers une socket ZMQ_PUSH. Le device transmet tout ce que reçoit la socket de PULL vers la socket de PUSH. A noter que la socket ZMQ_PUSH est ici de type <a href="http://api.zeromq.org/2-1:zmq-inproc">ZMQ_INPROC</a>, ce n&#8217;est donc pas une socket TCP mais une zone mémoire partagée avec une autre thread.</li>
<li>Un thread Zdispatch est connecté en ZMQ_PULL sur la zone mémoire inproc. Il désérialize les jobs reçu dans un objet BSON puis émet un signal Qt avec la charge créée.</li>
<li>L&#8217;objet Payload reçoit la charge dans un slot. A noter que cet objet possède à une référence vers un objet Nosql ce qui lui permet d&#8217;interroger MongoDB. Dans ce cas il est impératif que le slot Payload ne soit pas appelé alors qu&#8217;il n&#8217;a pas fini ses tâches en cours. Pour cela le <em>QObject::connect</em> qui relie le signal de Zdispatch avec le slot de Payload doit impérativement posséder la directive  <em>Qt::BlockingQueuedConnection</em>. Payload découpe la charge reçue, effectue des traitements, sérialize des objects puis emet des signaux pour chaque worker.</li>
<li>Le thread worker_push possède un slot par signal emit par Payload. Lors de sa construction il a bindé chaque socket ZMQ_PUSH par worker. Il transmet alors la charge en mode non bloquant ZMQ_NOBLOCK.</li>
<li>Chaque worker ZMQ_PULL sur sa socket TCP dédié. Traite puis stocke dans MongoDB.</li>
</ol>
</blockquote>
<h2>Les cadences.</h2>
<blockquote><p>Elles rythmes le workflow, s&#8217;il n&#8217;y avait qu&#8217;une seule cadence ce backend serait synchrone. Cependant on voit très bien plusieurs.</p>
<ol>
<li>Tout d&#8217;abord le serveur Thin, qui transmet le job et retourne aussitôt une réponse au client.</li>
<li>Ensuite le thread Zreceive, retransmet à son rythme les jobs dans une zone mémoire</li>
<li>Le thread Zdispatch lit la zone mémoire puis faire suivre les jobs dans des signaux Qt.</li>
<li>L&#8217;objet Payload transmet les bouts de job dans des signaux vers des slots.</li>
<li>Le thread worker_push envoie à chaque worker sa charge</li>
</ol>
<div>L&#8217;entrée et la sortie du dispatcher sont non bloquante. Si ce dernier plante, le serveur Thin et le worker se rendront compte de rien. De plus contrairement à un serveur classique, les sockets zeromq permettent de lancer des clients même si le serveur n&#8217;est pas lancé. <strong>Si le dispatcher tombe il pourra être relancé sans problème et les workers recevront à nouveau leur jobs</strong>.</div>
</blockquote>
<h2>Conclusions</h2>
<blockquote>
<div>L&#8217;architecture du dispatcher n&#8217;est pas encore optimisée, par exemple les positions 4, 5 et 6 pourraient fusionner. Cependant le Proof Of Concept est concluant, ce backend devrait pouvoir s&#8217;exécuter correctement sur une machine recyclée. Une dernière tâche serait de migrer le serveur Thin dans un thread en Qt afin de simplifier et optimiser encore l&#8217;architecture, ou bien d&#8217;utiliser <a href="http://mongrel2.org/">Mongrel2</a> à la place de Nginx et Thin comme me le conseillait un certain Zed Shaw <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<div>La cible d&#8217;obtenir un backend asynchrone brokerless étant atteinte la prochaine étape est l&#8217;intégration d&#8217;un worker qui permette la synchronisation en P2P des données du backend. L&#8217;objectif est qu&#8217;une instance Nodecast se synchronise avec l&#8217;instance d&#8217;un contact de l&#8217;utilisateur. Gros travail en prespective, les solutions sont nombreuses comme <a href="http://telehash.org/">telehash</a> mais qui ne fourni pas pour l&#8217;instant d&#8217;implémentation en C/C++, ou bien la lib <a href="http://bitdht.sourceforge.net/">bitdht</a> utilisée par entre autre par <a href="http://retroshare.sourceforge.net/">retroshare</a>.</div>
</blockquote>
<div>Bonnes vacances (ou bon courage) aux lecteurs !</div>
<br />Classé dans:<a href='http://frederic.logier.org/category/code/'>code</a>, <a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>, <a href='http://frederic.logier.org/category/nodecast/'>nodecast</a> Tagged: <a href='http://frederic.logier.org/tag/mongodb/'>mongodb</a>, <a href='http://frederic.logier.org/tag/qt/'>Qt</a>, <a href='http://frederic.logier.org/tag/zeromq/'>zeromq</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/397/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=397&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2011/08/02/nodecast-backend-asynchrone-avec-zeromq/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>

		<media:content url="http://fredix.files.wordpress.com/2011/08/architecture2.png" medium="image">
			<media:title type="html">architecture2</media:title>
		</media:content>

		<media:content url="http://fredix.files.wordpress.com/2011/08/dispatcher2.png" medium="image">
			<media:title type="html">dispatcher</media:title>
		</media:content>
	</item>
		<item>
		<title>Nodecast : évolution d&#8217;une architecture web</title>
		<link>http://frederic.logier.org/2011/02/27/nodecast-evolution-dune-architecture-web/</link>
		<comments>http://frederic.logier.org/2011/02/27/nodecast-evolution-dune-architecture-web/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 23:32:28 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[nodecast]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[AMQP]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[Qpid]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=356</guid>
		<description><![CDATA[Après ces quelques mois sans nouvelle, voici un article de mes dernières avancées sur mon projet Nodecast. En effet depuis mon dernier article Nodecast : architecture d&#8217;une application web il y a eu quelques changements d&#8217;implémentation. Constat et évolution Tout d&#8217;abord Gearman qui était idéal sur le papier s&#8217;est avéré très instable à l&#8217;usage, comme [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=356&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Après ces quelques mois sans nouvelle, voici un article de mes dernières avancées sur mon projet <a href="http://nodecast.net" target="_blank">Nodecast</a>. En effet depuis mon dernier article <a href="http://frederic.logier.org/2010/07/21/nodecast-architecture-dune-application-web/" target="_blank">Nodecast : architecture d&#8217;une application web</a> il y a eu quelques changements d&#8217;implémentation.</p>
<h2>Constat et évolution</h2>
<p>Tout d&#8217;abord <a href="http://gearman.org/" target="_blank">Gearman</a> qui était idéal sur le papier s&#8217;est avéré très instable à l&#8217;usage, comme l&#8217;ont constaté d&#8217;autres développeurs sur la liste de diffusion. Ils ont l&#8217;air malgré tout d&#8217;avoir confiance en leur produit car ils vont ouvrir un service d&#8217;hébergement de files d&#8217;attente basé sur German : <a href="http://www.gearmanhq.com/" target="_blank">GearmanHQ</a>.</p>
<p>Après quelques recherches je me suis finalement dirigé vers un serveur de files qui implémente le protocole <a href="http://www.amqp.org/" target="_blank">AMQP</a> ce qui permet de ne pas dépendre d&#8217;un serveur en particulier. Plusieurs serveurs libres l&#8217;implémentent, comme <a href="http://www.rabbitmq.com/" target="_blank">RabbitMQ</a> (racheté par VMware), <a href="http://activemq.apache.org/" target="_blank">ActiveMQ</a> ou <a href="http://qpid.apache.org/" target="_blank">Qpid</a>.</p>
<p>L&#8217;autre problème est venu des workers qui traitent les données envoyées par le client desktop ( <a href="http://gitorious.org/nodecast/nodecast-gui" target="_blank">nodecast-gui</a> ). Le code Ruby était tellement lent qu&#8217;il fallait parfois plus de 1 minute pour effectuer un traitement de parsing et insertion dans <a href="http://www.mongodb.org/" target="_blank">MongoDB</a>. Je pense que le problème venait de la pile Ruby / Mongoid / Mongodb ruby driver et non de Ruby seul, mais il n&#8217;est tout simplement pas concevable que le worker qui intègre dans la base les <a href="http://www.nodecast.net/report/processus/ca049db6-8dff-11df-a587-c80aa903263a" target="_blank">processus utilisateur</a> met plus ou moins 2 minutes pour effectuer 1 traitement avec une charge CPU maximale.</p>
<p>J&#8217;ai donc décidé de récrire les workers ainsi que le dispatcher, en C++ avec l&#8217;aide de Qt. Mes tests en développement sont passés à moins de 1 seconde sur le worker process, le plus lourd&#8230;. Evidemment l&#8217;effort de développement est certes plus conséquent mais les résultats sont largement payant pour que cet investissement technique paye.</p>
<p>Qpid quant à lui s&#8217;est pour l&#8217;instant imposé de lui même, car il est le seul à proposer une API C/C++ fonctionnelle. Des plugins permettent de lui ajouter une persistance sur disque, des fonctionnalités de cluster, du support SSL et XML en natif. Il fait d&#8217;ailleurs partie du coeur de la solution de <a href="http://www.redhat.com/mrg/" target="_blank">Red Hat Enterprise MRG</a>. Cette architecture représentée par le schéma plus bas reste tout de même à valider par l&#8217;épreuve du feu de la production.</p>
<h2>Ingénierie</h2>
<p>Néanmoins il est à mes yeux évident qu&#8217;un service web ayant pour objectif à moyen/long terme la prétention de monter en charge, se doit d&#8217;avoir une architecture <a href="http://en.wikipedia.org/wiki/Scalability" target="_blank">scalable</a> et cela dès sa conception. C&#8217;est toute la différence entre créer un site web et créer une architecture web, ou bien entre le développement logiciel et l&#8217;ingénierie logicielle. Cette dernière implique une réflexion sur les méthodes de travail, les outils à utiliser, qu&#8217;ils soient ceux utilisés par les développeurs que ceux à utiliser dans l&#8217;architecture;  la veille techno, etc. En somme tout ce qui permet d&#8217;optimiser sa productivité, l&#8217;architecture mise en place n&#8217;en sera que le reflet, réussi ou pas, de ces choix&#8230;</p>
<p>Voici un exemple du résultat de l&#8217;ingénierie logiciel avec cette présentation de l&#8217;<a href="https://linuxfr.org/news/architecture-logicielle-de-la-nouvelle-version-de-linuxfrorg" target="_blank">architecture logicielle de la nouvelle version de LinuxFR.org</a> l&#8217;un des plus gros site technique francophone.</p>
<h2>Implémentation</h2>
<p>Pour revenir à Nodecast, les workers utilisent les drivers natifs de memcached, pour invalider le cache dont la page a été mise à jour, de MongoDB et de Qpid, ce qui permet, en ayant aucune couche d&#8217;abstraction intermédiaire d&#8217;obtenir les performances maximales. Le framework <a href="http://qt.nokia.com/products/">Qt</a> permet d&#8217;obtenir une certaine simplification du développement, grâce entre autre aux signaux, même si en effet la bibliothèque Boost intègre cette fonctionnalité.</p>
<p>J&#8217;ai développé <a href="http://gitorious.org/nodecast/nodecast-worker">nodecast-worker</a> de manière relativement générique afin qu&#8217;il instancie la bonne classe worker selon le paramètre &#8211;worker-type fourni en argument :</p>
<pre>nodecast-worker --memcached-ip=127.0.0.1 --memcached-port=11211 
--mongodb-ip 127.0.0.1 --mongodb-base=nodecast_prod --qpid-ip=127.0.0.1 
--qpid-port=5672 --worker-type=process</pre>
<p>L&#8217;usage du serveur de file Qpid, permet outre le fait de rendre les traitements asynchrones, de monter un cluster de worker d&#8217;un même type sans développement particulier. En effet chaque worker s&#8217;abonne à la même file d&#8217;attente Qpid de type <a href="https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/examples/pub-sub/">pub/sub</a> (amq.topic). Une routing key appliquée par le <a href="http://gitorious.org/nodecast/nodecast-dispatcher" target="_blank">dispatcher</a> sert à taguer chaque message envoyé dans la file d&#8217;attente. Ainsi les workers filtrent les messages qui leur sont destiné, par exemple le tag <em>worker.cpu</em> pour le worker qui va traiter les messages qui contiennent les données de CPU envoyées par le client desktop <a href="http://gitorious.org/nodecast/nodecast-gui" target="_blank">nodecast-gui</a>.</p>
<p>Comme il est possible de lancer plusieurs instances worker du même type, chacun des worker dépile la même file taguée ce qui permet de répartir la charge sur plusieurs processus, voir aussi de la répartir sur des machines physiques différentes puisque les workers utilisent des connexions TCP &#8230; !</p>
<p>Pour comprendre les rouages et le potentiel d&#8217;une telle architecture, je conseille la lecture de ces 2 excellents articles sur l&#8217;utilisation d&#8217;un serveur AMQP : <a href="http://blog.zenika.com/index.php?post/2010/12/19/Introduction-a-RabbitMQ-AMQP">Introduction à RabbitMQ &#8211; AMQP Partie I</a> et <a href="http://blog.zenika.com/index.php?post/2010/12/26/Introduction-%C3%A0-RabbitMQ-AMQP-Partie-II">Introduction à RabbitMQ &#8211; AMQP Partie II</a></p>
<p>Pour finir sur cet épisode, ce développement me met de plus en plus la puce à l&#8217;oreille sur la nécessité de développer un framework / service qui permettrait le développement rapide de workers, de les enchaîner, les monitorer en temps réel et de les administrer. Ce framework / service proposerait en outre l&#8217;accès à une multitude de bibliothèques et d&#8217;API vers des services externes afin de pouvoir implémenter n&#8217;importe quelle idée, de manière rapide, stable et scalable. Cela éviterait de devoir redévelopper la roue et de devoir gérer toutes les exceptions inhérente à l&#8217;utilisation d&#8217;API bas niveau (timeout, déconnexion, reprise, exception, start/stop, &#8230;). En quelque sorte un <a href="http://tarpipe.com/" target="_blank">tarpipe</a> OpenSource mais qui permettrait d&#8217;utiliser n&#8217;importe quel langage script ou langage compilé. Comme on dit, je dis ça, je dis rien <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Workflow</h2>
<p>Le schéma suivant montre l&#8217;architecture en court de développement du backend de Nodecast. On y voit les 3 paliers asynchrones par lesquelles transite le traitement d&#8217;un message.</p>
<div id="attachment_358" class="wp-caption alignnone" style="width: 610px"><a href="http://fredix.files.wordpress.com/2011/02/architecture.png"><img class="size-full wp-image-358" title="nodecast architecture" src="http://fredix.files.wordpress.com/2011/02/architecture.png?w=620" alt=""   /></a><p class="wp-caption-text">nodecast architecture</p></div>
<h3>Palier 1</h3>
<p>Le premier palier nécessite 7 étapes.</p>
<ol>
<li>Le client nodecast extrait les données système de la machine, génère un XML et l&#8217;envoie par un POST (ajout) ou un PUT (update) HTTP.</li>
<li>le serveur web Nginx fait suivre la requête vers le cluster web Thin.</li>
<li><a href="http://code.macournoyer.com/thin/" target="_blank">Thin</a> exécute via <a href="http://rack.rubyforge.org/" target="_blank">rack</a> le DSL <a href="http://www.sinatrarb.com/intro" target="_blank">Sinatra</a> qui sert à créer simplement l&#8217;<a href="http://gitorious.org/nodecast/nodecast-api" target="_blank">API REST de nodecast</a>.</li>
<li>Ce dernier vérifie dans MongoDB les droits d&#8217;accès (couple email / token) grâce à un auth basic request HTTP transmis par le client,</li>
<li>Si l&#8217;autorisation a réussie, le code Sinatra stocke le XML dans le <a href="http://www.mongodb.org/display/DOCS/GridFS+Specification" target="_blank">GridFS mongoDB</a>, génère une collection de hash et transmet la charge dans queue dédiée au dispatcher.</li>
<li>Le code sinatra génère un XML de réponse au client.</li>
<li>NGinx le fait suivre au client, ce qui termine du point de vue utilisateur le traitement.</li>
</ol>
<p>L&#8217;objectif de ce palier est d&#8217;être le plus minimaliste possible afin qu&#8217;une autre requête puisse être traité avec le moins d&#8217;attente possible. L&#8217;auth, la conception de la charge, sa transmission et la réponse au client sont malgré tout chacune nécessaire. Dans cette architecture asynchrone il n&#8217;est pas possible de signaler dans la même passe, la bonne fin du traitement à moins de revenir à une architecture synchrone non scalable&#8230; A vrai dire il n&#8217;est de toute manière pas nécessaire de le signaler puisque le service tourne en arrière plan sur le poste utilisateur.</p>
<h3>Palier 2</h3>
<p>La transmission de la charge utilise 2 canaux AMQP direct : <em>dispatcher.update</em> ou d<em>ispatcher.add. </em>Le dispatcher est lancé selon cette ligne de commande :</p>
<pre> nodecast-dispatcher --mongodb-ip 127.0.0.1 --mongodb-base=nodecast_prod 
--qpid-ip=127.0.0.1 --qpid-port=5672</pre>
<ol>
<li>Il écoute les 2 files d&#8217;attente puis lors de la réception d&#8217;une charge, il vérifie l&#8217;existence de l&#8217;hôte à mettre à jour si c&#8217;est un update ou bien créé l&#8217;hôte si c&#8217;est un ajout.</li>
<li>Il injecte ensuite le XML extrait du GridFS dans un QHash Qt. Il sérialise ce QHash et envoie par AMQP la partie dédiée à chaque file de chaque worker concerné (hash["network"] pour le worker network par exemple). En clair, le XML est découpé et chaque morceau est envoyé dans la file d&#8217;attente de chacun des workers.</li>
</ol>
<h3>Palier 3</h3>
<ol>
<li>Tous les workers sont lancés et écoutent la file d&#8217;attente <em>amqp.topic</em> sur leur tag respectif (<em>worker.cpu</em>, <em>worker.load</em>. <em>worker.uptime</em>, <em>worker.network</em>, <em>worker.memory</em>, <em>worker.process</em>).</li>
<li>A réception d&#8217;un message, ils le sérialisent, mettent à jour la base de donnée puis invalident le cache de leur page web associée.</li>
<li>Ils transmettent via syslog leurs statuts et leurs exceptions.</li>
</ol>
<h2>Avenir</h2>
<p>A ce jour les workers process et cpu ont été réécrit et fonctionnent. Il reste l&#8217;implémentation des logs vers syslog ou AMQP afin de tracer les traitements des workers via des streams <a href="http://www.graylog2.org/" target="_blank">Graylog2</a>.</p>
<p>Je souhaite remplacer Memcached par <a href="http://redis.io/" target="_blank">Redis</a> pour profiter de ses très intéressantes fonctionnalités. Migrer le frontal web de Rails 2 vers la version 3. Stabiliser le client desktop et lui ajouter toutes les fonctionnalités de la lib <a href="http://support.hyperic.com/display/SIGAR/Home" target="_blank">SIGAR</a>. Développer un client Android. Terminer le <a href="http://www.entreprise20.fr/2010/09/29/rework-le-manifeste-pour-reapprendre-a-travailler-et-a-gerer/" target="_blank">rework</a> et Dominer le Monde <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />Classé dans:<a href='http://frederic.logier.org/category/code/'>code</a>, <a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>, <a href='http://frederic.logier.org/category/nodecast/'>nodecast</a>, <a href='http://frederic.logier.org/category/web/'>web</a> Tagged: <a href='http://frederic.logier.org/tag/amqp/'>AMQP</a>, <a href='http://frederic.logier.org/tag/mongodb/'>mongodb</a>, <a href='http://frederic.logier.org/tag/qpid/'>Qpid</a>, <a href='http://frederic.logier.org/tag/qt/'>Qt</a>, <a href='http://frederic.logier.org/tag/ruby/'>ruby</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/356/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=356&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2011/02/27/nodecast-evolution-dune-architecture-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>

		<media:content url="http://fredix.files.wordpress.com/2011/02/architecture.png" medium="image">
			<media:title type="html">nodecast architecture</media:title>
		</media:content>
	</item>
		<item>
		<title>De la webification d&#8217;Internet ou la renaissance des applications natives ?</title>
		<link>http://frederic.logier.org/2010/10/24/de-la-webification-dinternet-ou-la-renaissance-des-applications-natives/</link>
		<comments>http://frederic.logier.org/2010/10/24/de-la-webification-dinternet-ou-la-renaissance-des-applications-natives/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 11:48:22 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=336</guid>
		<description><![CDATA[Grande nouvelle, Apple a annoncé enfin un App Store pour les MacOSX. C&#8217;est une des fonctionnalités qui ont fait le succès de l&#8217;iPhone et il est heureux de voir que cela est pris en compte pour les ordinateurs de bureau. Je n&#8217;ai pas retourné ma veste, je suis toujours un inconditionnel de GNU/Linux et je [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=336&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Grande nouvelle, <a href="http://www.apple.com/fr/mac/app-store/" target="_blank">Apple a annoncé enfin un App Store</a> pour les MacOSX. C&#8217;est une des fonctionnalités qui ont fait le succès de l&#8217;iPhone et il est heureux de voir que cela est pris en compte pour les ordinateurs de bureau.<br />
Je n&#8217;ai pas retourné ma veste, je suis toujours un inconditionnel de GNU/Linux et je ne suis pas prêt de changer, hormis de distribution ou lorsque <a href="http://www.haiku-os.org" target="_blank">Haiku</a> intégrera un gestionnaire de dépôts.<br />
Je suis heureux car un des arguments qui ont poussé le web à remplacer petit à petit les applications natives est l&#8217;absence d&#8217;installation. Or le succès de l&#8217;Apple Store sur iPhone démontre que les utilisateurs sont plus attirés par les applications natives que web. Je ne vais pas me répéter, cette démonstration est détaillée dans mon précédent billet <a href="http://frederic.logier.org/2010/06/25/desktop-2-0/" target="_blank">Desktop 2.0</a>.<br />
Il reste à Microsoft de sortir de sa grotte dans laquelle il est entré en 1990, pour enfin proposer leur dépôt de logiciels.<br />
Je suis heureux de ces avancés chez les concurrents, car j&#8217;ai l&#8217;espoir que cela facilite le téléchargement et donc l&#8217;usage des applications natives. En effet je déplore la systématisation du web d&#8217;autant plus sur des domaines où il n&#8217;est clairement pas adapté.<br />
Par effet de bord cela pousse au remplacement des ports dédiés par l&#8217;usage systématique des ports 80 et 443. Exemple l&#8217;assèchement des newsgroups vers des forums web.Utiliser le port 80 fourni un semblant de sécurité à l&#8217;administrateur système, ayant moins de ports à gérer sur ses firewall. Mais c&#8217;est un très mauvais usage, car de fait la gestion de la qualité de service (QoS) et éventuellement du filtrage devient très compliqué à effectuer.<br />
Pour l&#8217;utilisateur c&#8217;est une régression totale. L&#8217;application native offre une parfaite intégration au bureau et permet la communication avec d&#8217;autres applications lancées par lui. En web rien de tout cela, l&#8217;application tourne dans un onglet du navigateur, ce qui est au final beaucoup moins pratique pour la retrouver. Il faut oublier l&#8217;intéraction avec le bureau, il y a bien quelques gadgets comme les notifications en HTML5 qui est encore très loin d&#8217;être utilisé, ou bien via des extensions ce qui revient à &#8230; télécharger des applications !<br />
Dernier point important, ces markets facilitent l&#8217;achat d&#8217;applications. En centralisant le paiement, l&#8217;utilisateur peut acheter et télécharger l&#8217;application en 2 ou 3 clics. Inutile de sortir d&#8217;une grande école de commerce pour y voir l&#8217;avantage sur l&#8217;ancien modèle physique où il faut se rendre chez un distributeur y acheter sa boite&#8230; De même pour les achats numérique ou il faut se rendre sur le site de l&#8217;éditeur et soit lui donner ses informations de carte bleue soit avoir un compte Paypal, on est loin de la facilité et la sécurité d&#8217;un store centralisé. Le succès du store dédié au jeux, <a href="http://store.steampowered.com/" target="_blank">Steam</a> est aussi un autre exemple de l&#8217;intérêt de ce sytème pour les éditeurs et les utilisateurs.<br />
Canonical est le seul éditeur GNU/Linux qui souhaite développer un marché basé sur des applications payantes. En effet même si techniquement GNU/Linux possède depuis de nombreuses années des dépôts rien a été fait pour le transformer en &#8220;market&#8221; afin d&#8217;y développer un marché économique. Il faut bien avouer que les Linuxiens ont un rapport particulier avec l&#8217;argent, proche du tabou sexuel&#8230;Canonical, dont Mandriva aurait bien fait de s&#8217;inspirer il y a lontemps, souhaite donc démontrer qu&#8217;une économie de marché est possible dans un environnementGNU/Linux et je souhaite très fortement qu&#8217;ils y arrivent. D&#8217;une part pour qu&#8217;il y ait des éditeurs sur ce marché, donc des emplois, et des logiciels natifs. Même si ces nouveaux logiciels ne seront pas dans leur majorité libre, quelle importance si cela intéresse des utilisateurs ? De plus rien ne dit que des développeurs de logiciels libres ne puissent pas bénéficier de donations par le biais de cet app store et pourquoi pas en vivre ! On peut également rêver que Canonical fournisse une API afin de pouvoir effectuer des dons directement depuis le logiciel, avec un prélèvement moindre que <a href="http://www.flattr.com" target="_blank">Flattr</a> ou <a href="http://www.paypal.com" target="_blank">Paypal</a><br />
Pour finir voici l&#8217;annonce de <a href="http://www.guildsoftware.com/" target="_blank">Guild software</a>, éditeur du jeux propriétaire et multiplateforme <a href="http://www.vendetta-online.com/" target="_blank">Vendetta Online</a>, qui va utiliser l&#8217;app store d&#8217;Ubuntu. Par contre aucune information sur la possibilité de payer l&#8217;abonnement mensuel directement depuis l&#8217;app store.</p>
<pre>- Vendetta Online on Ubuntu Linux -
For the last few months we've been working with Canonical, the company behind 
Ubuntu Linux, to be one of their featured products in the new Software Center 
being rolled out as part of the Ubuntu 10.10 "Maverick Meerkat" release. This Software 
Center will basically bring app-store type functionality to Linux, something that could 
greatly help the platform in gaining acceptance as a desktop OS, and allow easy access 
to a variety of software that exists outside the open-source world 
(such as commercial videogames).
Vendetta Online should appear in the new Software Center sometime next week. 
We were intended to be a debut partner with the OS launch (on10/10/10), but a few 
delays popped up here and there; those have now been addressed and we're confident 
you'll see our title appear there in the near future.</pre>
<br />Classé dans:<a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>, <a href='http://frederic.logier.org/category/web/'>web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/336/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=336&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2010/10/24/de-la-webification-dinternet-ou-la-renaissance-des-applications-natives/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>
	</item>
		<item>
		<title>De l&#8217;innovation physiquement décentralisée</title>
		<link>http://frederic.logier.org/2010/10/21/de-linnovation-physiquement-decentralisee/</link>
		<comments>http://frederic.logier.org/2010/10/21/de-linnovation-physiquement-decentralisee/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 09:09:50 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=325</guid>
		<description><![CDATA[On parle beaucoup depuis ces dernières années de logiciel décentralisé par opposition au logiciel de type Minitel 2.0. Une simple recherche rappellera les défauts d&#8217;une telle architecture propriétaire et centralisée, façon Facebook, Twitter ou Google. Je faisais parti d&#8217;une association, RubyFrance , dont le but est la promotion du langage Ruby dans la francophonie et [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=325&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On parle beaucoup depuis ces dernières années de logiciel décentralisé par opposition au logiciel de type Minitel 2.0. Une simple recherche rappellera les défauts d&#8217;une telle architecture propriétaire et centralisée, façon Facebook, Twitter ou Google.</p>
<p>Je faisais parti d&#8217;une association, <a href="http://www.rubyfrance.org" target="_blank">RubyFrance</a> , dont le but est la promotion du langage Ruby dans la francophonie et localement. Or je réalise l&#8217;énorme erreur du combat qui était le mien. En effet je réalise qu&#8217;essayer de promouvoir une technologie moderne et innovante tel que Ruby et Rails est une perte de temps dans une région qui a 10 ans de retard sur Paris et où il n&#8217;y a aucune startup ou presque qui s&#8217;y développe !</p>
<p>Avant de vouloir décentraliser le Web il faudrait avant penser à décentraliser le travail. Pourtant le constat à faire est simple, les entreprises et startups dans la capitale ont beaucoup de mal à dénicher des développeurs, or il faudrait peut être réaliser que le coût du logement ne fait qu&#8217;augmenter que ce soit en location ou en achat, les transports qui ne font que se dégrader, le cadre de vie au final est de moins en moins attrayant pour tout le monde à Paris.</p>
<p>J&#8217;ai dans mon réseau de nombreux développeurs et administrateurs systèmes extrêmement compétant qui ne vivent pas dans la capital, et pourtant les startups française s&#8217;entête à ne recruter physiquement que sur Paris, façon 20ème siècle. Etrange façon de voir l&#8217;innovation &#8230;</p>
<p>Il existe pourtant au moins 2 manières de &#8220;dé-Minitiliser&#8221; le travail. Par le télétravail bien entendu, qui n&#8217;a cure des grèves des transports lui&#8230; Il faut cependant que l&#8217;entreprise intègre ce mode de travail, en possédant les outils et l&#8217;organisation adéquate et que cela convienne aux employés concernés. L&#8217;autre solution est de n&#8217;avoir que des bureaux commerciaux sur la capital, et de décentraliser les bureaux techniques en province. Cette 2ème solution n&#8217;offre que des avantages et peut de plus y associer le télétravail pour certains employés.</p>
<p>Cependant comment promouvoir des technologies productive, Méthodes Agiles / Redmine / Git / Ruby on Rails / NoSQL / Linux / &#8230;, lorsque l&#8217;environnement professionnel local reste figé sur des architectures synchrones d&#8217;un autre siècle en PHP / Java / DotNet / SqlServer,  avec comme méthode de développement le cycle en V &#8230; ?</p>
<p>Pour illustrer, j&#8217;avais rencontré à Lyon début 2010, un entrepreneur qui se prenait pour un techos, et qui souhaitait monter un site de recrutement avec webcam (rien de révolutionnaire sauf pour lui). Le tout en PHP / MySQL, ce qui déjà n&#8217;est pas d&#8217;une grande innovation et inutile de parler framework web type <a href="http://www.symfony-project.org/" target="_blank">Symfony</a> ou <a href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a>, inconnus &#8230; J&#8217;ai bien compris que c&#8217;était pour des questions de coût, et qu&#8217;il sous entendait migrer ensuite sur DotNet / SqlServer, parce que c&#8217;est plus sérieux quand même &#8230; De plus monter un tel site n&#8217;était pour lui qu&#8217;un assemblage de briques OpenSource existante, sans grande difficulté&#8230;</p>
<p>Quand on atteint un tel niveau de nullité, il y a quoi à espérer ? Inutile de dire que le site ne verra sans doute jamais le jour, et surtout pas le succès escompté.</p>
<p>Je réalise que j&#8217;ai pris le problème à l&#8217;envers, il est nécessaire de pousser la création d&#8217;un écosystème local d&#8217;entreprises innovantes avant de pousser les technologies associées. Un équivalent Lyonnais de <a href="http://paris.startupweekend.org/" target="_blank">http://paris.startupweekend.org</a> serait le bienvenu !</p>
<br />Classé dans:<a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>, <a href='http://frederic.logier.org/category/web/'>web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/325/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=325&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2010/10/21/de-linnovation-physiquement-decentralisee/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>
	</item>
		<item>
		<title>Desktop 2.0</title>
		<link>http://frederic.logier.org/2010/06/25/desktop-2-0/</link>
		<comments>http://frederic.logier.org/2010/06/25/desktop-2-0/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 19:55:35 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=243</guid>
		<description><![CDATA[Suite à cet article sur ownCloud je souhaite à nouveau écrire sur ce sujet qui me tient à coeur, l&#8217;avenir du Desktop. Par ce titre ironiquo-buzzien je souhaite présenter ce que cela me représente. Qu&#8217;est-ce que le desktop 2.0 ? Historiquement le desktop est composé de logiciels installés sur une machine et qui au mieux [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=243&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Suite à cet article sur <a href="http://linuxfr.org/2010/06/24/27055.html" target="_blank">ownCloud</a> je souhaite à nouveau écrire sur ce sujet qui me tient à coeur, l&#8217;avenir du Desktop. Par ce titre ironiquo-buzzien je souhaite présenter ce que cela me représente.</p>
<p><span id="more-243"></span></p>
<h2>Qu&#8217;est-ce que le desktop 2.0 ?</h2>
<p>Historiquement le desktop est composé de logiciels installés sur une machine et qui au mieux dans certains cas communiquent entre eux. On télécharge le logiciel, on l&#8217;installe, on le paramètre si nécessaire et on l&#8217;utilise. Cette description n&#8217;a pas changé depuis environ 25 ans. Pour une mise en perspective, le web qui est venu bien après, qui est complexe à faire évoluer techniquement et administrativement, a régulièrement évolué et fait un bond en avant avec HTML5 : <a href="http://slides.html5rocks.com/#slide3">http://slides.html5rocks.com/#slide3</a></p>
<p>Le desktop 2.0 pourrait être un desktop qui utilise Internet afin de proposer des fonctionnalités supplémentaires. A priori ca existe déjà, par exemple iTunes qui permet de consulter le store d&#8217;Apple et d&#8217;y faire des achats depuis une interface native. Sauf que iTunes n&#8217;est qu&#8217;un logiciel qui intègre le moteur d&#8217;un navigateur web afin de présenter de manière un peu mieux intégré au desktop le store et surtout de gérer les DRM sur les fichiers achetés&#8230;</p>
<p>L&#8217;intérêt d&#8217;Internet est essentiellement de pouvoir partager et communiquer, consommer n&#8217;étant qu&#8217;une forme particulière de partage sous contrainte.</p>
<p>Mais pour moi il ne représente en aucun cas un but final. Dans les années 2000 on disait &#8220;il FAUT être sur Internet&#8221;. C&#8217;est une perception complètement erronée de l&#8217;outil ce qui a à mon avis complètement pervertie notre conscience. En effet, à l&#8217;époque le contexte était qu&#8217;il fallait y être en ayant un site web. Maintenant en 2010 il FAUT y être en ayant des suites bureautiques en web, des systèmes d&#8217;exploitation en web, et toute une suite de logiciels, en web &#8230;</p>
<p><a href="http://www.joost.com/" target="_blank">Joost</a> le fameux logiciel de vidéo en P2P par les créateurs de Kazaa est mort soit disant car il fallait installer un logiciel&#8230; Bullshit !!! La version full web est tout aussi morte. Joost est mort car il n&#8217;y avait pas de contenu. Et il y en avait pas car le seul contenu autorisé venait que des partenaires &#8230; Ca s&#8217;appelle la télévision ça, ce n&#8217;est pas Internet.</p>
<p>De fait la vision que nous avons d&#8217;Internet n&#8217;a pas changé depuis ses premiers pas ! Une vision très restrictive de l&#8217;outil.</p>
<p>Si le desktop 2.0 ne ressemble pas aux iTunes like, si ce n&#8217;est pas des applications web, qu&#8217;est-ce qu&#8217;il est ?</p>
<h2>Le desktop 2.0 existe déjà</h2>
<p>Plutôt que de décrire la chose avec des métaphores et des descriptions techniques autant prendre l&#8217;exemple parlant du seul gars qui a compris ce que c&#8217;était, qui l&#8217;a même pratiquement inventé et industrialisé à grande échelle : Steve Jobs.</p>
<p>Quoi encore lui ! bin oui &#8230; l&#8217;iPhone c&#8217;est quoi ? C&#8217;est un <strong>ordinateur</strong> (de poche) capable d&#8217;aller sur <strong>Internet</strong> (comme un ordinateur avec un abonnement Internet), et un <strong>kit de développement,</strong> le tout suffisamment bien conçu pour rendre n&#8217;importe quelle application web2 ridicule.</p>
<p>Attention tous les mots de cette phrase ont leur importance, notez d&#8217;ailleurs l&#8217;absence du mot téléphonie, car ne m&#8217;intéresse pas dans le contexte de ce billet. Et d&#8217;ailleurs le <strong>succès</strong> de l&#8217;iPad en rajoute une couche puisqu&#8217;il ne fait pas téléphone &#8230;</p>
<p>l&#8217;iPhone et maintenant l&#8217;iPad implémententent le desktop 2.0, car :</p>
<ul>
<li>Les applications sont <strong>natives</strong>. Ce qui rend &#8220;l&#8217;expérience utilisateur&#8221; (comme on dit), beaucoup plus fun, car cela apporte :
<ul>
<li>La réactivité</li>
<li>L&#8217;intégration au bureau</li>
<li>L&#8217;accès aux extensions matériel actuelles et à venir (3D, GPS, gyroscope, accéléromètre, &#8230;)</li>
</ul>
</li>
</ul>
<p>Et qui dit fun, dit j&#8217;utilise plus facilement qu&#8217;une application web qui ne peut pas avoir ces avantages. Qui dit j&#8217;utilise dit je suis potentiellement prêt à payer.</p>
<ul>
<li>Les applications utilisent <strong>Internet</strong>. Et je parle bien des applications pas uniquement du navigateur web !</li>
<li>Les applications sont faciles à trouver, à installer et à mettre à jour grâce à <strong>l&#8217;AppStore</strong>.</li>
</ul>
<h2>NATIF, INTERNET, STORE</h2>
<p>Ces 3 termes définissent bien la chose. On peut faire un paquet de reproches justifiés à Jobs, par contre on ne peut pas lui enlever la vision qu&#8217;il a eu. Car il ne suffit pas de dire je vais faire un téléphone qui peut aller sur Internet, ca existait déjà avant l&#8217;iPhone. Il faut imaginer ces 3 concepts, faire fabriquer le matériel qui tient la route, développer les logiciels et les services, et intégrer le tout de manière cohérente.</p>
<p>Google a d&#8217;ailleurs bien compris la leçon, et le confirme avec le succès d&#8217;Android.</p>
<h2>Et le PC ?</h2>
<h3>NATIF ?</h3>
<p>De manière historique les applications sont natives, mais pour diverses fausses bonnes raisons (déploiement et mise à jour) beaucoup d&#8217;applications &#8220;professionnelles&#8221; sont uniquement en web (IE6).</p>
<h3>INTERNET ?</h3>
<p>Depuis le début d&#8217;Internet les PC y accèdent. Sauf qu&#8217;ici dans la description du desktop 2.0 je parle des applications. Or il faut bien avouer qu&#8217;à part le navigateur web il n&#8217;y a pas beaucoup d&#8217;applications qui exploitent Internet, même en 2010 !!!</p>
<h3>STORE ?</h3>
<p>Gros point d&#8217;avance pour Linux qui possédait un &#8220;store&#8221; depuis la naissance de Debian au moins, dans les années 90 (et voui). Nous parlons de dépôts. De nos jours toutes les distributions en possèdent un et il permet de plus de mettre à jour tout le système et pas uniquement les applications utilisateurs !</p>
<p>Hormis Linux point de salut du côté de Windows et MacOS, même si des rumeurs d&#8217;appstore pour MacOS X ont circulé.</p>
<h2>Arguments</h2>
<h3>NATIF !</h3>
<p>Parmi les arguments en faveur d&#8217;une application native qui aboutissent à une &#8220;expérience utilisateur&#8221; agréable, il y en a une autre loin d&#8217;être négligeable pour le développeur, la facilité de développement. Il faut certes maitriser la technologie nécessaire à développer une application native, mais d&#8217;une part le choix est vaste sur un PC, et d&#8217;autres part une application web &#8220;équivalente&#8221; va nécessiter la maitrise d&#8217;un paquet de technologies côté client (Javascript, HTML, XML, CSS) pour un résultat bien inférieur et la maîtrise de plusieurs boites à outils nécessaires à débuger tout ça.</p>
<p>Pourquoi est-ce si pénible ? Tout simplement parce que le web n&#8217;a jamais été prévu pour développer des applications mais simplement pour afficher des pages &#8230; Bien sûr l&#8217;HTML5 vise à remédier à ces lacunes, mais cela restera malgré tout en deçà de n&#8217;importe qu&#8217;elle application native correctement développé et intégré. Et ne parlons même pas de l&#8217;exploitation de périphériques matériel ou même de la 3D, webgl commence à peine à être intégré à certains navigateurs web, en 2010 &#8230;</p>
<p>Enfin une botte secrète du web est la compatibilité de l&#8217;application quel que soit l&#8217;OS. Je balaie cela d&#8217;un revers de la main, car du coup on a renvoyé vers le développeur la complexité de la chose ainsi que vers le navigateur, on se rappelle tous des années de lutte à faire respecter les standards afin d&#8217;afficher et pouvoir utiliser correctement une application web&#8230; De plus une bibliothèque comme Qt est multi-plateforme, il n&#8217;y a qu&#8217;à voir Skype ou Opera. Et bien entendu Java (Eclipse, &#8230;)</p>
<p>Pour en revenir au faux exemple de Joost, devoir installer une application n&#8217;est pas une contrainte. Les succès de <a href="http://www.skype.com" target="_blank">Skype</a>, <a href="https://www.dropbox.com" target="_blank">Dropbox</a>, <a href="http://www.spotify.com" target="_blank">Spotify</a>, <a href="http://www.apple.com/fr/itunes/download/" target="_blank">iTunes</a>, &#8230; le prouvent. Le frein est simplement la nullité d&#8217;une mauvaise application.</p>
<h3>INTERNET !</h3>
<p>Un des avantages d&#8217;une application web et ce qui a entre autre expliqué leur explosion est le fait de pouvoir tout stocker côté serveur. L&#8217;utilisateur a ainsi qu&#8217;à se rappeler de son login et mot de passe pour retrouver toutes ses données. Or rien empêche une application native de faire de même ! Elle peut même faire en sorte de stocker en local si une coupure au réseau survient.  C&#8217;est précisément ce que vient combler l&#8217;HTML5 pour les applications web &#8230;..</p>
<p>Les développeurs d&#8217;applications natives pour iPhone ont eux bien compris l&#8217;intérêt et ne s&#8217;en prive pas. Internet devient de fait ce pour quoi il est bon : <strong>stocker, présenter et partager des données</strong>. L&#8217;application native se contente elle de faire ce pour quoi elle est bonne : faire l&#8217;acquisition des données via l&#8217;utilisateur et/ou des extensions matériels (GPS, accéléromètre, gyroscope, &#8230;) et rendre cela agréable en exploitant au maximum les capacités du matériel.</p>
<p>Alors peut être qu&#8217;il y aura un jour une version d&#8217;HTML qui va permettre d&#8217;accéder au GPS &#8230; laule&#8230;</p>
<p>Un exemple concret de l&#8217;intérêt d&#8217;Internet ? Prenons un logiciel natif comme un client mail qui propose des fonctionnalités complémentaires comme la lecture de flux RSS. La personnalisation de ces flux comme l&#8217;ajout et leur catégorisation nécessite un certain temps. Or si vous avez un laptop comme ordinateur secondaire, ou bien celui du boulot, vous devrez refaire ce travail redondant de paramétrage, et je ne parle même pas qu&#8217;un article lu depuis son travail sera marqué non lu chez soi&#8230; Si ce logiciel pouvait sauvegarder sa configuration et ses données sur Internet, il suffirait d&#8217;une simple synchronisation pour se faciliter là vie.</p>
<p>A remarquer que la Mozilla Fondation a très bien compris cela puisque qu&#8217;elle propose l&#8217;extension Firefox sync, ainsi que Google chrome qui gère ça nativement. A leur avantage ces 2 entités ont de très forte compétences en développement client et serveur, ce que n&#8217;a pas forcément le développeur d&#8217;une application desktop lambda. Remarque importante pour la suite de cet article.</p>
<p><strong>STORE !</strong></p>
<p>L&#8217;autre avantage d&#8217;une application web était sur les déploiements et les mises à jour. Cependant grâce aux stores cet argument s&#8217;efface, et pour les OS préhistorique qui ne gère pas encore cette fonctionnalité, il parait trivial d&#8217;ajouter cela au sein même de l&#8217;application &#8230;</p>
<p>De plus un store permet de faciliter la vente de son application, ce qui est loin d&#8217;être négligeable. Côté Linux seul Canonical semble le comprendre et faire un pas dans ce sens. Il semble que le &#8220;petit&#8221; milliard de dollars reversé par Apple aux développeurs iPhone, ait fini par convaincre, il était temps !</p>
<h2>QUEL AVENIR</h2>
<h3>du Desktop</h3>
<p>D&#8217;un côté il va y avoir le fameux Chrome OS qui est là pour renforcer la présence des applications Google. Le truc drôle c&#8217;est qu&#8217;eux ont bien compris les limitations du web, aussi compétent soient-ils, et aussi bien HTML5 soit-il. Donc afin de rendre les applications web plus agréable et pour pouvoir développer tout type d&#8217;application, ce qui est important lorsqu&#8217;on a la prétention de faire un OS grand public, ils proposent le plugin <a href="http://code.google.com/p/nativeclient/" target="_blank">Chrome nativeclient</a> qui va permettre de développer des applications &#8230; natives &#8230; à l&#8217;intérieur de Chrome ! On marche sur la tête ?!</p>
<p>Ou quand le web réinvente le natif afin de combler ses propres lacune tout adaptant à son monde ce qui fait le succès d&#8217;Apple&#8230; Et bien entendu Google étant loin d&#8217;être bête va proposer son &#8220;store&#8221; market pour son OS.</p>
<p>De l&#8217;autre, il est heureux de constater certains réveil, encore une fois via Canonical avec son <a href="https://one.ubuntu.com/" target="_blank">Ubuntu One</a>. Ce service permet de stocker et synchroniser ses données sur Internet via les programmes qui supporte <a href="http://www.freedesktop.org/wiki/Specifications/desktopcouch" target="_blank">desktopcouch</a>. Et ceci est la réponse aux programmeurs qui n&#8217;ont pas les compétences ou l&#8217;envie de développer eux mêmes ces fonctionnalités. Il était temps qu&#8217;un éditeur d&#8217;OS propose ce type d&#8217;API à ses développeurs !</p>
<p>Pour pousser le concept un peu plus loin, je rêverais d&#8217;un OS qui me permette, suite à son installation, de télécharger automatiquement tous les logiciels que j&#8217;utilise sur mon PC principal ainsi que toutes les préférences associées à ces logiciels.</p>
<p>Ces informations personnelles mais pas vraiment critique, pourrait même être partagée via un réseau social si l&#8217;utilisateur le souhaite.</p>
<h3>du Réseau Social</h3>
<p>Ce secteur à la mode a ceci de particulier qu&#8217;il est le révélateur flagrant de cette dualité web / desktop. Par exemple, au départ ces applications web de type Facebook étaient complètement fermées et uniquement accessible depuis un navigateur web. Avec la mode web2, ils se sont ouvert via des API ce qui a permis de faire émerger une multitudes d&#8217;applications natives pour mobile, puis pour PC.</p>
<p>Quand le web redécouvre l&#8217;intérêt du bon vieux client natif&#8230; Cependant on en est toujours sur du vertical, une application dédié à un service.</p>
<p>C&#8217;est ici que débarque le très intéressant <a href="http://socialdesktop.org" target="_blank">social desktop</a> et son <a href="http://socialdesktop.org/ocs/" target="_blank">OCS API</a>, une API qui doit permettre l&#8217;accès des applications natives à des réseaux sociaux. En effet il est complètement aberrant qu&#8217;il faille utiliser une application en particulier pour faire du social ! Cette pratique est complètement transverse est de fait n&#8217;importe quelle application est capable de présenter un intérêt social ! Que cela soit d&#8217;intégrer le service Gitorious dans un IDE, comme QtCreator qui le fait, ou bien intégrer l&#8217;API d&#8217;un site de recettes de cuisine à des logiciels de gestion des courses&#8230;.</p>
<p>Le social est transverse, il est ridicule de devoir utiliser un client dédié ou bien même un serveur en particulier&#8230; Côté serveur le très intéressant microblog décentralisé <a href="http://status.net/" target="_blank">statusnet</a> montre le voie, ainsi que la plateforme sociale décentralisée <a href="http://www.movim.eu/" target="_blank">movim</a>.</p>
<p>A moins que l&#8217;on souhaite que le futur du desktop ne tourne que dans l&#8217;onglet d&#8217;un navigateur web, ce qui est déjà le cas avec Chrome OS, Jolicloud, etc, il reste aux éditeurs d&#8217;OS et de bureaux de proposer des services web décentralisés et des API, afin que n&#8217;importe application desktop puisse enfin sortir des années 1990&#8230;</p>
<p>Pour finir je tiens à poser une question qui peut résumer ce débat.</p>
<p>Les acteurs et organisations du web travaillent à faire évoluer leurs technologies afin de proposer des fonctionnalités les plus proches d&#8217;une application native. Les éditeurs de logiciels natifs et développeurs d&#8217;environnement de bureau travaillent à proposer des fonctionnalités permettant le développement d&#8217;applications qui exploitent les capacités offertes par Internet (web services, cloud, &#8230;).</p>
<p>Entre ces 2 visions quelle est celle qui a le plus court chemin à faire et laquelle est la plus à même de répondre aux <del datetime="2010-06-26T15:10:29+00:00">besoins</del> envies des utilisateurs ? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />Classé dans:<a href='http://frederic.logier.org/category/internet/'>Internet</a>, <a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>, <a href='http://frederic.logier.org/category/web/'>web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/243/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=243&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2010/06/25/desktop-2-0/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>
	</item>
		<item>
		<title>Du modèle économique du libre : status.net wordpress.com shapado.com</title>
		<link>http://frederic.logier.org/2010/06/10/du-modele-economique-du-libre-status-net-wordpress-com-shapado-com/</link>
		<comments>http://frederic.logier.org/2010/06/10/du-modele-economique-du-libre-status-net-wordpress-com-shapado-com/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 22:23:25 +0000</pubDate>
		<dc:creator>fredix</dc:creator>
				<category><![CDATA[MondeLibre]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://frederic.logier.org/?p=203</guid>
		<description><![CDATA[Lors de mes pérégrinations récentes à chercher un microblog libre sans limitation du nombre de caractères, on me fit découvrir http://unlimited.status.net/. J&#8217;ai bien sûr un compte http://identi.ca/ mais la mode de la limitation de caractères lancées par Twitter m&#8217;exaspère au plus au point (c&#8217;est plutôt stressant de limiter sa prose pour gagner 3 caractères afin [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=203&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lors de mes pérégrinations récentes à chercher un microblog libre sans limitation du nombre de caractères, on me fit découvrir <a href="http://unlimited.status.net/" target="_blank">http://unlimited.status.net/</a>. J&#8217;ai bien sûr un compte <a href="http://identi.ca/" target="_blank">http://identi.ca/</a> mais la mode de la limitation de caractères lancées par Twitter m&#8217;exaspère au plus au point (c&#8217;est plutôt stressant de limiter sa prose pour gagner 3 caractères afin de pouvoir poster&#8230;). Bien que répondant à mon besoin, ce sous-domaine est plutôt laid, et les autres sites utilisant le moteur de status.net plus joli comme <a href="http://brainbird.net/" target="_blank">http://brainbird.net/</a> limitent malgré tout à 300 caractères&#8230;</p>
<p>C&#8217;est alors que la lumière fut lorsque je découvris l&#8217;offre de &#8220;cloud&#8221; de StatusNet <a href="http://status.net/signup" target="_blank">http://status.net/signup</a> En effet nul besoin de s&#8217;auto-héberger (mon temps est précieux), cette offre me permet d&#8217;avoir mon propre sous-domaine chez status.net et de l&#8217;administrer selon mon bon vouloir, notamment de faire sauter cette stupide limitation de caractères : <a href="http://fredix.status.net/" target="_blank">http://fredix.status.net/</a></p>
<p>Elle permet aussi d&#8217;héberger sa propre communauté <a href="http://status.net/whos-using-statusnet" target="_blank">http://status.net/whos-using-statusnet</a>, ouverte ou pas, Mozilla ne s&#8217;en est d&#8217;ailleurs pas privé : <a href="http://mozilla.status.net/" target="_blank">http://mozilla.status.net/</a> On dépasse largement avec tout ça le peu que propose Twitter. Cependant si je souhaite des services complémentaires comme les SMS ou XMPP, Status.net va proposer ce mois-ci une offre premium ajoutant un certain nombre d&#8217;options : <a href="http://status.net/cloud" target="_blank">http://status.net/cloud</a> (SMS, XMPP, fichiers, &#8230;) J&#8217;espère que le prix sera abordable !</p>
<p>Je trouve cela très intelligent de leur part, et c&#8217;est une copie du modèle de <a href="http://wordpress.com/" target="_blank">http://wordpress.com/</a>. Un logiciel que l&#8217;on peut s&#8217;installer et héberger soit même, ou bien simplement utiliser la version gratuite, ou la version avec des options payantes. Tout cela avec la garantie de pouvoir récupérer et exploiter ses données à tout instant grâce au code libre téléchargeable.</p>
<p>Cette 3ème voie me semble parfaite pour les logiciels libres qui souhaitent trouver un modèle économique. Il est dommage que pas mal de libristes feignent de l&#8217;ignorer, et préfèrent sacrifier le soutient financier du libre sur l&#8217;autel de l&#8217;auto-hébergement &#8220;pure et pas minitel 2.0&#8243; &#8230;..</p>
<p>J&#8217;estime d&#8217;ailleurs que certaines organisations à but non lucratif devraient s&#8217;en inspirer afin de financer leurs actions et pourquoi pas même leurs développeurs &#8230; Et bien même soyons fou pour financer le développement de services concurrentiels à Google, l&#8217;éthique et la confiance accordées à des organisations type <a href="http://www.fsf.org/" target="_blank">FSF</a> , <a href="http://www.eff.org/" target="_blank">EFF</a> ou <a href="http://foundation.gnome.org/" target="_blank">GNOME Foundation</a> sont d&#8217;une valeur inestimable face à n&#8217;importe quelle entreprise suspecte par définition. Mais ceci est un autre débat <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pour terminer, en plus de status.net et wordpress.com il existe aussi l&#8217;excellent <a href="http://shapado.com/plans" target="_blank">http://shapado.com/</a> logiciel libre de question/réponse qui propose un hébergement avec des options payantes (plutôt chères <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />   )  : <a href="http://shapado.com/plans" target="_blank">http://shapado.com/plans</a> Voici un exemple avec un shapado consacré à android : <a href="http://android.shapado.com/" target="_blank">http://android.shapado.com/</a></p>
<br />Classé dans:<a href='http://frederic.logier.org/category/mondelibre/'>MondeLibre</a>, <a href='http://frederic.logier.org/category/web/'>web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fredix.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fredix.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fredix.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fredix.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fredix.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fredix.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fredix.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fredix.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fredix.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fredix.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fredix.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fredix.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fredix.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fredix.wordpress.com/203/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;blog=3098224&amp;post=203&amp;subd=fredix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frederic.logier.org/2010/06/10/du-modele-economique-du-libre-status-net-wordpress-com-shapado-com/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fc8e5d51ed3c0726b2826e8caeb8017?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fredix</media:title>
		</media:content>
	</item>
	</channel>
</rss>
