Another world ‽ - seb35’s blog2024-02-11T02:34:29+01:00urn:md5:70dee6f1fc053a5e3374878073ac9f13DotclearArchéo Lex S02E01urn:md5:add6c2893e861d357bd83ee89c3e2ce82018-09-17T00:31:00+02:002018-10-21T17:00:15+02:00Seb35Archéo LexGitlégistique<p>Au départ, Archéo Lex n’était qu’un prototype (voir la première saison <a href="http://blog.seb35.fr/billet/Arch%C3%A9o-Lex,-Pure-Histoire-de-la-Loi-fran%C3%A7aise,-pour-%C3%A9tudier-son-%C3%A9volution" hreflang="fr" title="Archéo Lex, Pure Histoire de la Loi française, pour étudier son évolution">S01E01</a> et <a href="http://blog.seb35.fr/billet/Gen%C3%A8se-d%E2%80%99Arch%C3%A9o-Lex" hreflang="fr" title="Genèse d’Archéo Lex">S01E02</a>). Quatre ans après, beaucoup d’octets ont traversé les internets, Archéo Lex fait désormais partie d’un petit paysage de ce que l’on pourrait appeler la légistique numérique libre ; et si on devait en faire un TrucTech, ça pourrait être “Libre LawTech”. Aujourd’hui, l’ensemble des codes est présent sur le site <a href="https://archeo-lex.fr/codes">archeo-lex.fr</a>, ils sont sont mis à jour quotidiennement et ce site voit son interface simplifée. Par ces trois améliorations, Archéo Lex devient réellement utilisable par les utilisateurs autres que les geeks, et notamment par les juristes et archéologues du droit.</p> <p>Au sens strict, Archéo Lex est le programme qui lit la <a href="https://www.dila.premier-ministre.gouv.fr/repertoire-des-informations-publiques/les-donnees-juridiques">base LEGI</a> et la transforme en dépôts Git, qui est à la fois un format couramment utilisé en informatique pour suivre les différentes versions d’un texte et un ensemble d’outils assez puissants pour suivre les évolutions du texte. Plus exactement, Archéo Lex n’utilise plus directement la base LEGI officielle (au format XML), mais passe par l’intermédiaire du projet <a href="https://github.com/Legilibre/legi.py">legi.py de Changago</a> qui transforme la base LEGI officielle en une base de données SQL – SQLite plus exactement – c’est-à-dire un format déjà beaucoup plus manipulable (<a href="https://github.com/Legilibre/Archeo-Lex/issues/31">discussion sur l’intégration de legi.py</a>). Plus généralement, la base de données SQL créée par legi.py permet de répondre à beaucoup de questions qu’on peut se poser sur les lois, sous réserve toutefois de connaître le language SQL : combien y-a-t-il de lois au total ? combien en vigueur ? combien par type de loi ? combien sur tel intervalle de temps ? combien de sections et d’articles en moyenne ? durée de vie d’une loi ? quelles sont les lois parues un 31 décembre ? etc.</p>
<p>Au sens large, Archéo Lex représente aussi l’interface sur le site <a href="https://archeo-lex.fr/codes">archeo-lex.fr</a>. Cette interface a été conçue à partir d’un logiciel libre de visualisation de dépôts Git, <a href="http://gitlist.org">GitList</a>, à l’origine utilisé pour visualiser du code informatique, transformé pour visualiser des textes de loi. Quoique qu’une première simplification de l’interface ait été faite il y a quatre ans, une deuxième passe a été faite récemment pour encore retirer certaines fonctionnalités peu utiles aux textes de loi.</p>
<p>Dans l’écosystème de la légistique numérique libre, Archéo Lex est désormais au milieu d’une chaîne de traitement des textes de loi : de même que legi.py agit en amont d’Archéo Lex, il y a désormais <a href="https://github.com/Legilibre/SedLex">SedLex</a> qui agit en aval, spécifiquement dans la projection d’amendement sur un texte en vigueur, issu d’Archéo Lex. Pour cette opération, SedLex a besoin d’une certaine qualité sur les textes fournis, notamment sur la numérotation des alinéas.</p>
<p>Avant d’aborder la liste des principales améliorations à Archéo Lex et à l’interface, mentionnons les communautés actuelles autour de la légistique numérique libre :</p>
<ul>
<li><a href="https://legilibre.fr">Légilibre</a> tout d’abord, communauté de personnes et de logiciels qui s’intéressent au traitement numérique de la loi, qui s’est créée fin 2016,</li>
<li><a href="https://www.regardscitoyens.org">Regards Citoyens</a> et notamment le projet <a href="https://www.lafabriquedelaloi.fr">La Fabrique de la Loi</a> qui permet de visualiser la loi en fabrication au Parlement,</li>
<li>le <a href="https://www.parlement-ouvert.fr">Bureau ouvert</a>, rendez-vous informels à l’Assemblée nationale qui permettent (pour résumer rapidement) de discuter de la thématique de la démocratie via les outils numériques.</li>
</ul>
<h3>Améliorations apportées à Archéo Lex</h3>
<p>Dans le programme Python créant les dépôts Git donc.</p>
<ul>
<li>Performance : jusqu’à l’année dernière, les gros codes mettaient jusqu’à 60h à être calculés (=à créer le dépôt Git du code), l’ensemble des 103 codes met désormais 5h30 à être calculé. Cela s’est fait notamment en optimisant les appels SQL et en créant un <a href="https://github.com/Legilibre/Archeo-Lex/issues/32">cache de sections</a> (=par exemple ne pas re-calculer la partie réglementaire si elle n’a pas changé d’une version à l’autre) ;</li>
<li>Formats de texte : il est désormais possible d’enregistrer plusieurs variations d’un même texte dans un même dépôt Git, par exemple une variation avec tout le texte dans un seul fichier et une variation avec un article par fichier (de part la compression, cela ne prend que très peu de place supplémentaire) ;</li>
<li>Abstraction du code d’Archéo Lex : c’est purement informatique, mais cela permet de pouvoir ajouter relativement facilement des variantes, que ce soit avec une syntaxe autre que Markdown ou une autre organisation des fichiers ou même un autre système de gestion de versions ;</li>
<li>Articles manquants : par le jeu des sections / sous-sections ayant des intervalles de vigueur se chevauchant, il est arrivé qu’il manque des articles, c’est désormais réparé ;</li>
<li>Articles et sections morts-nés : ce sont les articles et sections qui devaient entrer en vigueur dans le futur mais qui ont été abrogés avant, et qui n’ont donc jamais été en vigueur ; ceux-ci ont donc une date de début de vigueur postérieure à leur date de fin de vigueur, ce sont des cas particuliers à traiter correctement ;</li>
<li>Dates dans Git : étant donné que Git est à la base un outil informatique, il manipule par défaut des dates entre 1970 et 2100, ce qui est insuffisant pour les textes de loi, surtout pour la période pré-1970 (mais il faut aussi utiliser la date du 22 février 2222 qui signifie « date d’entrée en vigueur future à une date non-déterminée) ; il a fallu gérer dans Archéo Lex <a href="https://github.com/Legilibre/Archeo-Lex/issues/47">l’écriture bas niveau du format Git</a> sans passer par les outils standards (pour écrire un timestamp négatif) ; toutefois les dépôts Git créés ainsi ne sont pas compatibles avec certaines plateformes comme GitHub et cela reste donc une option à activer explicitement ;</li>
<li>Amélioration de la syntaxe et de la typographie : retrait de nombreuses balises HTML qui polluent le texte, normalisation des paragraphes (afin de bien compter les alinéas notamment, quoique cela n’est pas encore garanti), nettoyage des tableaux HTML.</li>
</ul>
<h3>Améliorations apportées à l’interface</h3>
<p>Sur le site <a href="https://archeo-lex.fr/codes">archeo-lex.fr</a> donc.</p>
<ul>
<li>Épuration de l’interface : en plus de la liste des versions et de l’affichage du texte intégral d’une version, seules deux autres fonctions restent : les diffs, principale plus-value de la loi sous Git, et ce que j’ai appelé « texte annoté » (mais je ne suis pas satisfait du nom si vous avez de meilleures propositions) ; cette dernière permet de retrouver quand a eu lieu la dernière modification de chacune des lignes afin de retrouver la date de l’introduction d’une disposition (en informatique, cette fonctionnalité s’appelle « blamer », dans l’idée de retrouver qui a introduit le bug sur telle ligne, je n’aime pas ce nom qui n’est pas des plus positifs) ;</li>
<li>Diffs mot-à-mot : par défaut les diffs créés par Git sont ligne par ligne, c’est bien, mais le mot-à-mot, c’est mieux ; ceci est expérimental et ne fonctionne pas lorsqu’il y a trop de calculs à effectuer ; ces diffs sont créés avec l’algorithme de Ratcliff-Obershelp qui permet de trouver les parties communes à deux textes afin d’avoir des diffs plus lisibles qu’avec d’autres algorithmes ; toutefois certains sont encore difficiles à lire, n’hésitez pas à recenser des exemples et des propositions d’amélioration ;</li>
<li>Dates Git : en cohérence avec les dépôts Git créés avec des dates pré-1970, l’interface comprend ces dates ; c’est donc une des rares interfaces à être compatible avec ces dates.</li>
</ul>
<h3>Prochaines améliorations</h3>
<p>Désormais, les 103 codes (73 en vigueur et 30 abrogés) sont présents sur le site <a href="https://archeo-lex.fr/codes">archeo-lex.fr</a>, dans une qualité très correcte. Les erreurs que j’observe désormais sont plutôt dans les données de la base LEGI que dûes à un mauvais traitement d’Archéo Lex.</p>
<p>Les prochaines améliorations sont :</p>
<ul>
<li>une inscription des métadonnées et variations présente dans chaque dépôt Git afin de faciliter sa gestion,</li>
<li>l’ajout de liens internes voire externes avec la bibliothèque <a href="https://framagit.org/parlement-ouvert/metslesliens">metslesliens</a>,</li>
<li>l’ajout des quelques 3000 lois sur le site archeo-lex.fr, ainsi que de la centaine de lois organiques, de la vingtaine de lois constitutionnelles et de la Constitution,</li>
<li>l’ajout des versions initiales des lois, dont le texte est contenus dans la base JORF et non LEGI.</li>
</ul>
<h3>Utilisation par les juristes</h3>
<p>De part les améliorations sur la qualité et la fréquence de mise à jour, le site est probablement prêt pour être réellement utilisé par les juristes, notamment afin de retrouver quand a été introduite ou modifiée une disposition donnée, en complément de Légifrance.</p>
<p>Les mises à jour sont programmées les jours de semaine vers 21h (la DILA fournit la base LEGI du jour vers 20h30) et, à ce qu’il semble, contiennent les textes consolidés jusqu’au JORF du jour, soit les textes en vigueur à partir du lendemain selon les délais normaux.</p>
<p>Amis juristes, n’hésitez pas à me <a href="https://www.seb35.fr/contact">faire part de vos suggestions</a> pour améliorer l’interface ou pour demander des fonctionnalités nouvelles !</p>//blog.seb35.fr/post/Arch%C3%A9o-Lex-S02E01#comment-form//blog.seb35.fr/feed/atom/comments/14Plans comptables français en Open Data au format CSV et GNUCashurn:md5:d96091ed02c44e3d40933383769903fe2017-12-27T18:35:00+01:002017-12-28T15:46:05+01:00Seb35comptabilitéOpen Data<p>GNUCash est un logiciel de comptabilité parmi d’autres. Il a pour avantages d’être libre et gratuit, ainsi que de gérer la comptabilité en partie double – c-à-d la comptabilité professionnelle.</p>
<p>Il a pour inconvénient d’être plutôt orienté vers la comptabilité anglo-saxonne. Toutefois, en y chargeant un bon PCG français (plan comptable général), on peut l’utiliser pour y faire de la comptabilité française. Je dis PCG parce que c’est probablement le plan comptable le plus courant, mais les associations utiliseront la variante PCA (plan comptable associatif).</p> <p>D’après mes recherches, je n’ai trouvé <a href="http://gnucash.assos.free.fr">qu’un site proposant un plan comptable français</a>, et il ne semble y avoir que le PCA (associations). J’avais besoin du PCG lors de la création de notre entreprise il y a 2 ans, je l’ai donc extrait <a href="http://www.anc.gouv.fr/cms/sites/anc/accueil/normes-francaises/reglementation-sectorielle.html" hreflang="fr" title="Plans comptables français sur le site de l’Autorité des Normes Comptables">du PDF officiel</a> de manière automatique (donc reproductible). Ces derniers jours, suite à une conversation avec mon père à propos de la comptabilité, je me suis attelé à publier ce travail pour <em>rendre disponible en Open Data différents plans comptables dans leurs dernières versions</em> : PCG et PCA dans les formats CSV et GNUCash.</p>
<p>Chacun de ces format est utile :</p>
<ul>
<li>le CSV qui est générique et portable, par exemple si d’autres logiciels de comptabilité veulent utiliser ce fichier pour générer leur propre format,</li>
<li>le format GNUCash qui est directement utilisable par les utilisateurs de <a href="http://www.gnucash.org">GNUCash</a>.</li>
</ul>
<p>Je compte y ajouter rapidement les « PCA associations GERP » et « PCA fondations/fonds de dotation » légèrement différents du PCA associations, et peut-être ultérieurement le plan comptable des assurances ou d’autres plans comptables s’il y en a d’autres.</p>
<p>Outre le fait que cela rend le PCG disponible sur GNUCash – ce qui est déjà très utile – cela permet également de pouvoir comparer facilement les différentes évolutions de la règlementation comptable. Par exemple, en faisant la différence sur les fichiers CSV des différentes consolidations du PCG (par exemple en utilisant le logiciel <a href="http://meldmerge.org" hreflang="en" title="Logiciel de comparaison de fichiers Meld">Meld</a>), on peut visualiser les quelques changements, assez mineurs (copie d’écran ci-dessous).</p>
<p><a href="//blog.seb35.fr/post/Plans-comptables-fran%C3%A7ais-en-Open-Data-au-format-CSV-et-GNUCash/public/Capture_Meld_differences_PCG.png" title="Capture_Meld_differences_PCG.png"><img src="//blog.seb35.fr/public/.Capture_Meld_differences_PCG_m.png" alt="Capture_Meld_differences_PCG.png" title="Capture_Meld_differences_PCG.png, déc. 2017" /></a></p>
<hr />
<p><strong>Liens directs :</strong></p>
<p>Format GNUCash :</p>
<ul>
<li><a href="https://github.com/Seb35/plans-comptables-francais/raw/master/PCG_2014-03/v2017-01-01/PCG_2014-03_v2017-01-01_%C3%A9tendu-gnucash.xml">PCG consolidé au 1er janvier 2017, avec le maximum de détails</a></li>
<li><a href="https://github.com/Seb35/plans-comptables-francais/raw/master/PCA_99-01/associations/PCA_99-01_associations_v2009-12-03_issu_du_PCG_2014-03_v2017-01-01_%C3%A9tendu-gnucash.xml">PCA issu du PCG consolidé au 1er janvier 2017, avec le maximum de détails</a></li>
</ul>
<p>Format CSV :</p>
<ul>
<li><a href="https://github.com/Seb35/plans-comptables-francais/raw/master/PCG_2014-03/v2017-01-01/PCG_2014-03_v2017-01-01.csv">PCG consolidé au 1er janvier 2017</a></li>
<li><a href="https://github.com/Seb35/plans-comptables-francais/raw/master/PCA_99-01/associations/PCA_99-01_associations_v2009-12-03_issu_du_PCG_2014-03_v2017-01-01.csv">PCA issu du PCG consolidé au 1er janvier 2017</a></li>
</ul>
<p>Code et autres fichiers :</p>
<ul>
<li><a href="https://github.com/Seb35/plans-comptables-francais" hreflang="fr">Dépôt GitHub</a></li>
</ul>//blog.seb35.fr/post/Plans-comptables-fran%C3%A7ais-en-Open-Data-au-format-CSV-et-GNUCash#comment-form//blog.seb35.fr/feed/atom/comments/13De la créationurn:md5:a43e2afd03ef13eb5491f765f3fb0e5c2015-10-04T16:04:00+02:002015-10-04T16:04:00+02:00Seb35entreprenariatlogiciels libresMediaWikiWordPress<p>Il fallait un billet inaugural, le voici. L’idée mijotait depuis un bon moment quand j’ai franchi le cap : j’ai créé mon entreprise de conseil en logiciel libre. Plus exactement, cela fait six mois que j’ai doucement commencé mon activité. Aujourd’hui, ce billet fait le point sur ce début d’expérience, puis termine sur un petit cadeau libre.</p> <p>Pour résumer un peu la genèse de tout cela, cela fait dix ans que je côtoie fortement le logiciel libre et les cultures libres – en fait j’ai découvert le logiciel libre via la culture libre qu’est Wikipédia. J’utilise GNU/Linux depuis mon <a href="https://fr.wiktionary.org/wiki/antépénultième" hreflang="fr">antépénultième</a> génération d’ordinateur (distributions Ubuntu et Mint, entre autres), j’utilise bien sûr les nombreux logiciels libres fournis avec ces distributions Linux, et j’ai joué un peu avec des micro-serveurs (Raspberry Pi, DreamPlug, c’est d’ailleurs ce dernier qui vous sert ce site), et j’administre des serveurs depuis cinq ans. J’ai suivi fortement le développement du logiciel MediaWiki – faisant fonctionner Wikipédia – et ai pris l’habitude de découvrir des logiciels, de les modifier si besoin, allant de la compilation d’un noyau Linux à la modification du JavaScript d’un site.</p>
<p>Après la soutenance de ma thèse de maths appliquées et après un moment de réflexion, j’ai commencé à me lancer dans l’aventure, pour faire de mon métier du conseil en logiciels libres. Cela part des constats suivants :</p>
<ol>
<li>Il y a de très nombreux logiciels libres, très certainement beaucoup plus que de logiciels propriétaires,<sup>[<a href="//blog.seb35.fr/post/De-la-cr%C3%A9ation#pnote-12-1" id="rev-pnote-12-1">1</a>]</sup></li>
<li>Quoiqu’il il existent de nombreux forums sur Internet pour obtenir de l’aide sur des logiciels libres, un accompagnement plus professionnel peut être souhaité, en particulier par des entreprises, pour couvrir l’ensemble de l’installation d’un logiciel, de la définition du besoin à la formation des utilisateurs, suivi d’un accompagnement sur la durée.</li>
</ol>
<p>Dans mon cas, je propose du conseil sur des applications Web que je connais bien (MediaWiki, WordPress principalement) : installation, configuration, formation, suivi, ainsi que développement d’extensions pour ces logiciels. Bien que je m’intéresse plus spécifiquement à ces deux logiciels, je connais de nombreux autres logiciels sur lesquels je peux également faire du conseil, de la formation, voire du développement.<sup>[<a href="//blog.seb35.fr/post/De-la-cr%C3%A9ation#pnote-12-2" id="rev-pnote-12-2">2</a>]</sup></p>
<p>Et bien sûr, selon l’esprit collaboratif des logiciels libres, j’essaye toujours de contribuer à l’amélioration des logiciels que j’utilise : retour de bugs, correction de bugs, amélioration de la documentation… Par exemple, pour WordPress, j’ai fortement amélioré l’import depuis SPIP (je publierai bientôt le plugin), j’ai rapporté deux bugs sur CiviCRM, je contribue à la documentation et traduction de MediaWiki, etc.</p>
<p>Enfin, le petit cadeau libre : une <a href="http://wiki.seb35.fr/WordPress_plugin_Synchronised_Pages" hreflang="en" title="WordPress plugin Synchronised Pages">extension WordPress</a> que j’ai développée sur mon temps libre. Ce qu’elle fait : imaginons que vous ayez à faire le site web d’un festival comprenant de nombreux événements, ayant tous un titre, une description, un lieu, un prix, etc. Un événement un peu comme <a href="http://www.sevenadur.org/2014/" hreflang="fr" title="Festival Sevenadur 2014">Sevenadur</a> à Rennes, puisque je me suis occupé du site pendant 5 ans :-) Vous pouvez soit passer une journée à saisir toutes les pages (#vécu), soit utiliser un modèle de page et générer toutes les pages d’un coup grâce à cette extension. Cette extension a été développée selon les nombreux standards modernes de qualité : sécurité, internationalisation, ergonomie, documentation, suivi des versions. N’hésitez pas à <a href="https://github.com/Seb35/Synchronised-Pages/releases" hreflang="en" title="Téléchargement de l’extension Synchronised Pages sur GitHub">tester cette extension</a>, à <a href="https://github.com/Seb35/Synchronised-Pages/issues" hreflang="en" title="Gestionnaire de bugs de Synchronised Pages sur GitHub">faire des retours dessus</a>, voire même à <a href="https://github.com/Seb35/Synchronised-Pages/pulls" hreflang="en" title="Page des demandes d’intégration pour Synchronised Pages sur GitHub">proposer des améliorations</a>.</p>
<p>Si vous avez une demande de prestation sur un logiciel libre, <a href="https://www.seb35.fr/contact" hreflang="fr" title="Contact">contactez-moi</a> pour en discuter.</p>
<div class="footnotes"><h4 class="footnotes-title">Notes</h4>
<p>[<a href="//blog.seb35.fr/post/De-la-cr%C3%A9ation#rev-pnote-12-1" id="pnote-12-1">1</a>] Rédigeant cela, je me suis posé la question naïve : « Combien y a-t-il de logiciels libres et non-libres ? ». Je peux seulement affirmer qu’il y a au moins <a href="https://directory.fsf.org/wiki/Main_Page" hreflang="en" title="Répertoire des logiciels libres de la FSF">15 000 logiciels libres</a>.</p>
<p>[<a href="//blog.seb35.fr/post/De-la-cr%C3%A9ation#rev-pnote-12-2" id="pnote-12-2">2</a>] J’aime les challenges. Par exemple, j’ai installé le logiciel Phabricator le mois dernier et deux jours après j’avais développé une extension.</p>
</div>//blog.seb35.fr/post/De-la-cr%C3%A9ation#comment-form//blog.seb35.fr/feed/atom/comments/12De la matérialité du numériqueurn:md5:faa42aabf319b299599d9514a8557c9b2015-03-03T19:24:00+01:002015-07-30T15:23:44+02:00Seb35philosophie du numériquehackingsysadmin<p>Avant d’aborder l’idée elle-même et pour illustrer mon propos, je vais commencer par présenter une anecdote et suivra ensuite le fond de ma pensée. Le début du billet est un peu technique (mais ça n’est pas grave si vous comprenez pas tout), la suite est plus philosophique.</p>
<p>Il y a quelque temps, je voulais que la musique stockée sur mon ordinateur puisse être jouée ailleurs dans mon appartement, et plus spécifiquement depuis mon petit serveur qui trône sur une étagère du salon et sur lesquel je peux brancher de bonnes enceintes, meilleures que celles de mon ordinateur. (Bien sûr, je pourrais aussi les brancher directement sur mon ordinateur, mais ça compte pas :) En résumé, je veux que la musique stockée sur mon ordinateur soit entendue là-bas.
<img title="Voilà le petit serveur sur lesquel est branché des enceintes." style="margin: 1em auto; display: block;" alt="Voilà le petit serveur sur lesquel est branché des enceintes." src="//blog.seb35.fr/post/De-la-mat%C3%A9rialit%C3%A9-du-num%C3%A9rique/public/dreamplug_avec_une_enceinte.jpg" width="300" /></p> <p>Pour ce faire, il y a moult possibilités de faire, mais dans tous les cas il va nous falloir un réseau entre les deux, ce qui est ici le cas avec les quelques prises réseau de la Freebox. Ensuite, il y a deux grandes familles de solutions :</p>
<ol><li>soit les fichiers son sont transférés via le réseau depuis l’ordinateur vers le petit serveur qui se chargera de les jouer et fera sortir directement la musique sur les enceintes branchées dessus,</li>
<li>soit les fichiers sont lus sur l’ordinateur et le son est transporté jusqu’au petit serveur qui se chargera simplement de faire sortir le son dans les enceintes.</li>
</ol>
<p>Comme je suis pas sûr d’être clair, voilà les schémas. (Je vous l’accorde, ils sont plus schématiques que jolis.)
<img title="Illustration des deux possibilités techniques" style="margin: 1em auto; display: block;" alt="Illustration des deux possibilités techniques" src="//blog.seb35.fr/post/De-la-mat%C3%A9rialit%C3%A9-du-num%C3%A9rique/public/schema_serveur_audio.png" /></p>
<p>J’ai commencé par tester la première solution, plus facile <em>techniquement parlant</em> (attention, c’est technique) : transférer en SSH les fichiers son sur le petit serveur, installer le serveur de son PulseAudio, installer ogg123 (ou autre) pour lire un fichier son en ligne de commande. Et hop! presque magiquement, le son de mon ordinateur se joue à distance. 2 minutes de satisfaction, puis le morceau s’arrête, il faut alors transférer le morceau suivant, lancer ogg123 et c’est reparti pour 2 minutes :) Rapidement, on déchante :) ça n’est pas pratique de faire cette manip toutes les deux minutes, même pour un geek (et même si ça pourrait s’automatiser un peu, je trouve le montage assez disgracieux dans l’idée).</p>
<p>J’ai donc exploré la deuxième solution, il s’agit d’utiliser PulseAudio dans ses capacités client-serveur au travers d’un réseau, c’est-à-dire que le petit serveur propose de faire sortir par les enceintes le son qu’il reçoit et de l’autre côté l’ordinateur émet le son là-bas au lieu de le faire sortir directement. J’ai cherché quelque temps car je ne comprenait pas bien la <a href="http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/" hreflang="en">doc de PulseAudio</a>, d’autant que là encore il y a plusieurs façons de faire. Je vous épargne les détails, mais j’ai finalement trouvé un <a href="http://manurevah.com/blah/en/p/PulseAudio-Sound-over-the-network" hreflang="en">billet de blog</a> kivabien. Une fois le tout fonctionnant, je peux choisir sur l’ordinateur si je diffuse le son directement dans les enceintes intégrées ou à distance sur le petit serveur. Et là, magie encore, ça fonctionne :) Ce qui fait drôle aussi est que je suis en WiFi et que le musique arrive quand même à passer de mon ordinateur au petit serveur (oui, c’est logique, mais ça semble quand même magique :) Cette solution est beaucoup plus pratique car il suffit de cocher la case "Lire le son à distance", ça fonctionne aussi pour tous les sons et pas seulement pour ma bibliothèque de musique, par exemple les vidéos depuis YouTube ou les films, et ça permet de régler le volume depuis l’ordinateur, etc. C’est donc beaucoup plus pratique.</p>
<p>Pourquoi je raconte tout ça ? Souvent — et c’est normal car tout ça n’existait pas vraiment il y a juste 25 ans — le numérique est difficilement appréhendable par nous autres humains (qui ne sommes pas nés dans l’univers numérique). Une chose qui rend cette matière difficile est l’absence de matérialité du numérique : quoiqu’on puisse toucher un ordinateur ou une tablette, ça ne sert pas à grande chose de juste la toucher ; au contraire, il faut accepter de communiquer au moyen des interfaces (clavier, souris, écran tactile) et rentrer dans sa logique propre, immatérielle, pour la dompter.</p>
<p>Dans mon anecdote, la chose créée à la fin est tangible : ça émet du son. Un peu matériellement aussi, le son est stocké au départ sur l’ordinateur, sur son disque dur. Entre les deux solutions possibles, la matérialité peut s’exprimer brutalement aussi : dans le premier cas, je peux éteindre mon ordinateur et la musique va continuer de se jouer, dans le deuxième cas la musique s’arrêtera. On pourrait comparer ces situations à "je demande à un orchestre de jouer" et "je joue moi-même la musique". Plus finement ensuite, sur la "matérialité" des choses qui sont transportées sur le réseau, il s’agit soit de <em>fichiers informatiques</em> dans le premier cas, soit de <em>son numérique</em> dans le deuxième cas. Une chose encore : autant on peut toucher un cable réseau, autant ça devient beaucoup moins possible pour toucher les ondes WiFi, même si les deux permettent la même chose : transporter des données. Tous ces détails sur les processus internes feront qu’il sera plus ou moins compliqué de comprendre le système dans son entièreté d’un point de vue extérieur, a fortiori si on n’est pas habitué au numérique.</p>
<p>Une autre expérience qu’il convient de mentionner ici : j’ai fait fonctionner l’année dernière un système sur le <a href="https://commons.wikimedia.org/wiki/File:Raspberry_Pi_with_a_battery.JPG?uselang=fr">petit ordinateur Raspberry Pi</a> qui permet d’émettre Wikipédia en WiFi, localement autour du Raspberry Pi, ceci sans Internet car Wikipédia était stocké sur une clé USB. <a href="https://commons.wikimedia.org/wiki/File:Wikipedia_hors-ligne_2xA5.pdf">Lorsque je présentais le système</a>, je décomposais :
</p>
<ol><li>voici un petit ordinateur, c’est quasiment la même chose qu’un ordinateur classique ou un smartphone,</li>
<li>voici une clé USB où est stocké Wikipédia en français, ça fait 25 Gio environ,</li>
<li>voici une clé WiFi (en USB) qui va nous permettre au Raspberry Pi d’émettre du WiFi,</li>
<li>et finalement voici une batterie (initialement conçue pour recharger les smartphones en USB), on la branche.</li>
</ol>
<p>Et là, quelques voyants commencent à clignoter et au bout d’une minute, le réseau WiFi "Wikipedia" apparaît. Magie :) Pour le faire comprendre mieux, je dis que j’ai diffusé Wikipédia dans le métro lyonnais un jour avec des amis, alors même qu’il n’y avait même pas la 3G, donc pas Internet. On peut même imaginer diffuser Wikipédia en WiFi dans un sous-marin, alors même que presque aucune onde extérieure ne peut passer à travers l’eau :)</p>
<p>Depuis quelques temps, et surtout depuis que je manipule des petits ordinateurs (DreamPlug, Raspberry Pi), cette question de la matérialité du numérique me fascine assez : alors que les tâches faites sur un ordinateur classiques restent "virtuelles", le fait de faire faire des tâches très spécifiques et très matérielles à un ordinateur sans écran les rend beaucoup plus palpables ; privé de la vue (d’un écran), il faut trouver d’autres moyens de dialoguer avec ces êtres numériques. Ça fait peut-être un peu envolée lyrique de dire ça, mais je considère presques ces expériences numérico-matérielles comme des <em><a href="https://fr.wikipedia.org/wiki/Performance_%28art%29" hreflang="fr">performances</a> numériques</em> : allier la technologie numérique à des phénomènes matériels voire sensoriels en vue de faire découvrir quelque chose au spectateur. Ainsi, le numérique ne reste pas des 0 et des 1 dans leur univers mais il influe et se propage dans l’espace physique : il devient de vraies ondes dans le cas du Raspberry Pi (et même si la plupart des humains ne sentent pas les ondes, c’est un phénomène physique) ou du son audible dans le cas du système décrit auparavant.</p>
<p>Donc, si vous me voyez en vrai, il est possible que j’ai activé le Wikipédia-en-WiFi et que je me sois transformé en homme-qui-diffuse-Wikipédia-autour-de-lui. Et similairement à l’expérience audio, un développeur nantais a créé une application (<a href="https://itunes.apple.com/fr/app/louise/id944043403?l=fr&mt=8">Louise</a>) pour diffuser sa propre musique autour de soi pour en faire profiter les autres <a href="http://www.franceinfo.fr/emission/le-17-20-numerique/2014-2015/louise-l-application-des-melomanes-dragueurs-21-01-2015-15-51" hreflang="fr">[et peut-être même draguer grâce à ça disent certains :]</a>.</p>//blog.seb35.fr/post/De-la-mat%C3%A9rialit%C3%A9-du-num%C3%A9rique#comment-form//blog.seb35.fr/feed/atom/comments/11Genèse d’Archéo Lexurn:md5:0dd0fbd95bc45b09680683575261e6bc2014-12-30T17:09:00+01:002015-07-30T15:11:17+02:00Seb35Archéo LexGitlégistique<p>Lorsqu’il fut découvert en août 2014 via Twitter et <a href="http://www.regardscitoyens.org/" hreflang="fr">Regards Citoyens</a>, plusieurs furent intéressés par le concept d’<a href="http://blog.seb35.fr/post/Arch%C3%A9o-Lex%2C-Pure-Histoire-de-la-Loi-fran%C3%A7aise%2C-pour-%C3%A9tudier-son-%C3%A9volution" hreflang="fr">Archéo Lex</a> : « <em>visionner facilement les codes de loi français et leur évolution</em> », avec une traduction en language tech : « <em>versionner sous Git en syntaxe Markdown les codes de loi français</em> ». Je présente dans ce billet la genèse d’Archéo Lex et discuterait dans le prochain billet des évolutions futures possibles.</p> <h5>Naissance de l’idée</h5>
<p>À la base, j’avais personnellement un besoin en tant qu’utilisateur et n’ai pas trouvé d’outil sur internet y répondant : je devais renouveller la police d’assurance de mon appartement et il était écrit dans les petites lignes qu’il serait assuré contre le terrorisme. N’ayant pas envie de l’assurer contre ce risque (position philosophique toussa) et de payer en conséquence, je suis allé voir le <a href="http://legifrance.gouv.fr/affichCode.do?cidTexte=LEGITEXT000006073984" hreflang="fr">code des assurances</a>. Celui-ci stipule, si je comprends bien, qu’il est obligatoire pour les assurances habitation de protéger contre ce risque. Bon, soit, pas moyen d’y échapper.</p>
<p>J’aurai pu en rester là, mais je me suis demandé quand avait eu lieu cette modification. Sur Légifrance, code des assurances, j’ai donc parcouru les articles et sections et navigué entre les différentes versions historiques, et ça n’était pas très pratique. Pour la petite histoire, l’assurance contre le terrorisme est régie par les articles <a href="http://legifrance.gouv.fr/affichCode.do?idSectionTA=LEGISCTA000019113080&cidTexte=LEGITEXT000006073984" hreflang="fr">L422-1 et suivants</a>, coûtait <a href="http://legifrance.gouv.fr/affichTexte.do?cidTexte=LEGITEXT000021200946" hreflang="fr">3,30€ par contrat en 2010</a>, et a été <a href="http://archeo-lex.fr/git/Code_des_assurances/commit/f5d27198438627a5542d02589d274bb463087d24#L364L2189" hreflang="fr">introduite le 20 mars 1988</a> (ce lien mène vers archeo-lex.fr). De là est née l’idée de mettre les codes sur une seule page – pour chercher facilement dans tout le code – et de les versionner – pour suivre leur évolution. Git, pour le versionnement, s’est imposé rapidement (répandu, pratique, loué par tout le monde, et comprend l’outil <code>git blame</code> pour recherche qui a écrit quoi) associé à la syntaxe légère Markdown (lisible et répandue, même si d’autres syntaxe légères existent aussi).</p>
<h5>Réalisation technique du prototype</h5>
<p>J’ai réalisé le prototype d’Archéo Lex fin juillet 2014 en environ 5 jours en y travaillant seul, de la naissance de l’idée au prototype fonctionnel. Si cela a été aussi rapide, c’est que j’ai réutilisé dans ce contexte ce sur quoi j’avais travaillé dix jours auparavant dans un autre contexte.</p>
<p>Cet autre contexte s’appelle <a href="http://www.kiwix.org/" hreflang="fr">Kiwix</a>+<a href="http://www.gutenberg.org/" hreflang="fr">Gutenberg</a>. Sur l’invitation d’Emmanuel Engelhart, créateur de Kiwix, et grâce au soutien de <a href="https://www.wikimedia.ch/fr" hreflang="fr">Wikimedia CH</a>, de la <a href="http://fondationorange.com/" hreflang="fr">Fondation Orange</a> et de <a href="http://framasoft.org/" hreflang="fr">Framasoft</a>, j’avais participé mi-juillet à la création de fichiers ZIM, habituellement utilisés pour contenir tout Wikipédia pour de la lecture hors-ligne, mais cette fois-ci contenant la bibliothèque numérique Gutenberg contenant des textes dans le domaine public. À quatre personnes, dans un studio loué pour l’occasion à Lyon, on a mangé des nouilles (surtout) et codé du Python. Le résultat est désormais publié et accessible, et <a href="http://library.kiwix.org/gutenberg_mul_all_2014-11/A/The%20Children%27s%20Book%20of%20Birds.41141.html" hreflang="en">voici un exemple de livre</a> (il y a des versions epub pour liseuses et des versions ZIM pour Android et ordinateur via Kiwix).</p>
<p>En gros, ce projet Kiwix+Gutenberg lit la base XML de Gutenberg, récupère les métadonnées, les affiche dans une jolie interface, et en parallèle récupère les epub et HTML de Gutenberg, les uniformise et les intègre dans le fichier ZIM. Archéo Lex fait sensiblement la même chose : il lit la base LEGI, récupère les métadonnées, assemble les codes avec un soupçon de Markdown et les intègre ensuite dans Git. Quoique j’ai recommencé <em>from scratch</em> le code Python, on retrouve la même architecture et les mêmes librairies utilisées.</p>
<p>Avec le recul, j’ai beaucoup apprécié de travailler sur ce projet Kiwix+Gutenberg (bénévolement mais tous frais payés) et également de transposer les mêmes méthodes et savoir-faire dans un autre contexte. Cela est dû en grande partie à l’ouverture et à la philosophie du logiciel libre. J’y reviendrai dans le prochain billet, mais j’aimerais beaucoup pouvoir réussir à vivre (juste vivre) grâce à la création de logiciels libres.</p>
<h5>Communication</h5>
<p>En tant que geek et hacker, la communication est un concept que j’aurai fui il y a quelque temps (communication prêt-à-penser, publicité promouvant la consommation, marketing acéré, etc.). Toutefois, depuis Snowden, j’ai revu ma position (et la communauté geek/hacker aussi je crois) : même si les logiciels libres ont plein de qualités (leur sécurité, leur décentralisation, leur philosophie de partage, leurs communautés, etc.), il est une qualité dont ils manquent souvent et qui leur fait défaut pour être plus répandus au sein du grand public : leur beauté extérieure, c’est-à-dire leur design, leur utilisabilité, l’explication de ce qu’ils font exactement, leur promotion, la qualité de leur documentation, etc. Bien sûr, tout cela est en partie fait, mais pas suffisamment pour avoir une bonne image globale et faire que les utilisateurs les choisissent en priorité (dernièrement, j’ai encore rencontré une personne qui a été surprise que mon Linux ne soit pas en ligne de commande).</p>
<p>Pour en revenir à Archéo Lex, j’ai passé une après-midi avec ma sœur, non-technicienne de l’informatique, pour discuter de la façon de présenter les choses et pour choisir un nom. Je lui dois beaucoup pour la clarté et la concision du billet de blog introductif, pour ce qui est directement visible, mais plus globalement pour le discours non-technique de présentation. Et finalement, je suis heureux de voir que cette clarté ait été efficace.</p>
<h5>Futur</h5>
<p>Depuis août, Archéo Lex n’avait pas tellement évolué, mais je m’y remet depuis quelques jours, entre autres à la suite du programme <a href="http://openlaw.fr/" hreflang="fr">OpenLaw</a>, et je viens d’ouvrir le site <a href="http://archeo-lex.fr/" hreflang="fr">archeo-lex.fr</a> qui contiendra à terme tous les codes. Essentiellement, le futur d’Archéo Lex dépendra en grande partie des attentes des utilisateurs (oui, vous! :). J’exposerai les possibilités dans un futur billet, mais n’hésitez pas à <a href="https://github.com/Seb35/Archeo-Lex/issues">ouvrir des discussions</a> sur Github (en attendant d’avoir une liste de discussion dédiée).</p>//blog.seb35.fr/post/Gen%C3%A8se-d%E2%80%99Arch%C3%A9o-Lex#comment-form//blog.seb35.fr/feed/atom/comments/10Archéo Lex, Pure Histoire de la Loi française, pour étudier son évolutionurn:md5:cf001c1fe0f01db529ab30281034b5032014-08-04T16:12:00+02:002014-08-04T16:53:30+02:00Seb35Open DataGitlégistiqueMarkdownOpen Data<p>Est-ce que vous avez déjà eu envie de parcourir les différentes versions des lois ? ou de suivre leur évolution ? ou de rechercher de quand datait l’introduction d’une certaine notion dans la loi ? C’est cette dernière interrogation qui m’a poussé à créer la semaine dernière un outil permettant d’ordonner toutes les versions d’une loi (et les codes en particulier) dans un format pratique pour pouvoir naviguer facilement entre toutes ces versions.</p>
<p>Plus exactement, chaque texte législatif est un simple fichier texte rédigé en syntaxe Markdown (c’est-à-dire du texte simple avec une syntaxe spécifique surtout pour structurer les titres et les listes) et versionné sous Git, permettant d’utiliser toute la panoplie d’outils de Git pour faire des comparaisons entre versions, retrouver la première version, etc.</p>
<p>Vous pouvez voir le résultat sur le code qui m’a servi à tester l’outil (code que j’affectionne particulièrement :-), le code de la propriété intellectuelle :</p>
<p style="padding-left:3em"><a href="https://github.com/Seb35/CPI" hreflang="fr" title="Code de la propriété intellectuelle">https://github.com/Seb35/CPI</a></p> <p>Par exemple, vous pouvez <a href="https://github.com/Seb35/CPI/commit/50283dda63cef5a45a992d649b4d2ff2b1f7b546" hreflang="fr" title="Visualisation de la transposition de la directive européenne 93/98 en droit français entrant en vigueur le 1er juillet 1995">visualiser la version</a> qui a transposé en droit français la directive européenne <a href="http://eur-lex.europa.eu/legal-content/FR/NOT/?uri=CELEX:31993L0098" hreflang="fr" title="Directive européenne 93/98">93/98</a> faisant passer de 50 à 70 ans la durée des droits patrimoniaux (les dates correspondent aux dates de <a href="http://www.legifrance.gouv.fr/Bases-de-donnees/Contenus/Codes-et-textes-consolides" hreflang="fr" title="Explication de la consolidation des textes législatifs français">consolidation des textes</a>, d’où la date du 1er juillet 1995, même si la loi modificatrice <a href="http://legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000381069" hreflang="fr" title="Loi 97-283">97-283</a> a été publiée le <a href="http://www.senat.fr/dossier-legislatif/s94950264.html" hreflang="fr" title="Dossier législatif sur la création de la loi 97-283 sur le site du Sénat">28 mars 1997</a>, c’est un cas d’entrée en vigueur rétroactive). Pour ceux qui n’ont pas l’habitude de Git, les lignes blanches sont le contexte (lignes identiques dans l’ancienne et la nouvelle version), le rose correspond à l’ancienne version et le vert à la nouvelle ; vous pouvez rajouter plus de contexte en cliquant sur les flèches à côté des lignes.</p>
<p>Ce type de visualisation peut servir à toute personne qui s’intéresse à la loi et à son évolution : citoyens, étudiants, associations (citoyennes, de consommateurs, etc.), historiens… Le législateur pourrait également trouver intéressant ce type de visualisation.</p>
<p>Le programme, nommé <em>Archéo Lex</em> – <em>Pure Histoire de la Loi française</em> – se trouve sur <a href="https://github.com/Seb35/Archeo-Lex" hreflang="fr" title="Archéo Lex sur Github">Github</a>. Il s’agit pour l’instant d’une première version – écrite en 5 jours – pouvant comporter des bugs, devant être améliorée et possiblement refondue. N’hésitez pas à proposer des améliorations ou faire des commentaires sur l’utilisabilité de ce type de visualisation, en commentaire de ce billet de blog ou <a href="https://github.com/Seb35/Archeo-Lex/issues" hreflang="fr" title="Gestionnaire de bugs pour Archéo Lex">sur le site Github</a>.</p>
<p>PS : Je remercie la <a href="http://www.dila.premier-ministre.gouv.fr" hreflang="fr" title="Direction de l’information légale et administrative (DILA)">Direction de l’information légale et administrative (DILA)</a> pour la <em>très bonne qualité des données et métadonnées</em> mises à disposition, cela rend ce processus automatique simple et agréable à écrire ; j’ai connu des métadonnées de moins bonne qualité qui rendent ce genre de programme difficile à écrire et de mauvaise qualité en raison de nombreuses exceptions. Le <a href="http://legifrance.gouv.fr/Droit-francais/Guide-de-legistique" hreflang="fr" title="Guide de légistique sur Légifrance">guide de légistique</a> de <a href="http://legifrance.gouv.fr" hreflang="fr" title="Légifrance">Légifrance</a> est également un bon complément pour mieux comprendre les principes de rédaction et d’organisation du droit.</p>
<p>PS2 : Je ne m’intéressais pas particulièrement à l’Open Data avant ce projet, et je <a href="http://www.regardscitoyens.org/apprenons-des-echecs-de-la-dila-episode-1-comment-faire-de-lopen-data" hreflang="fr" title="Billet de blog de Regards Citoyens sur l’ouverture des données de la DILA">découvre</a> que celui-ci doit énormément à <a href="http://www.regardscitoyens.org/" hreflang="fr" title="Regards Citoyens">Regards Citoyens</a> (et d’autres ?) pour avoir poussé pour que la base des textes législatifs LEGI de la DILA soit accessible en Open Data, et ce depuis un mois. Je remercie donc Regards Citoyens pour leur travail et la DILA pour avoir fait le bon choix. J’espère que ces deux institutions apprécieront le résultat d’Archéo Lex.</p>//blog.seb35.fr/post/Arch%C3%A9o-Lex%2C-Pure-Histoire-de-la-Loi-fran%C3%A7aise%2C-pour-%C3%A9tudier-son-%C3%A9volution#comment-form//blog.seb35.fr/feed/atom/comments/8Installation de Debian 7 sur DreamPlugurn:md5:98ffaa1e6a35a8e8e75ef58eda14e4be2014-03-06T03:22:00+01:002014-03-10T20:50:56+01:00Seb35GNU/LinuxbugDebianDreamPlug <p>Depuis trois jours, j’installe <a href="https://www.debian.org/News/2013/20130504.fr.html" hreflang="fr">Debian 7</a> sur un <a href="https://en.wikipedia.org/wiki/DreamPlug" hreflang="en">DreamPlug</a>. Il avait auparavant le Debian 6 d’usine fourni par Marvell, mais cela commençait à devenir vieux : sécurité de moins en moins assurée, noyau Linux 2.6, évolution des versions des logiciels, etc. À partir de Debian 7, Debian <a href="http://www.cyrius.com/debian/kirkwood/sheevaplug/" hreflang="en">prend en charge directement les DreamPlugs</a>, ou disons la famille des GuruPlugs. J’ai donc tenté la mise à jour qui n’a pas été de tout repos. Je retrace ci-après les grandes étapes et surtout les problèmes que j’ai rencontrés.</p>
<p>Ce qui suit s’applique au passage du Debian 6 customisé Marvell au Debian 7 naturel en passant par l’installeur Debian naturel, et en écrasant tout le système préexistant. Il est peut-être possible de faire une mise à jour simple avec <code>apt-get dist-upgrade</code>, mais il y aurait peut-être des problèmes du fait qu’il faudrait probablement mettre à jour en même temps U-Boot, le bootloader, en 2012.04 et Debian (j’ai eu des problèmes de par le passé à vouloir mettre à jour U-Boot en gardant Debian 6). Cet article tente de donner (presque) toutes les commandes qui ont été nécessaires à cette installation de Debian 7 sur DreamPlug.</p>
<h3>Préparation</h3>
<p>Je supposerai dans la suite que vous disposez, outre le DreamPlug, d’un autre ordinateur sous GNU/Linux relié au DreamPlug au moyen d’une connexion <abbr lang="en" title="Universal Asynchronous Receiver Transmitter">UART</abbr>/<abbr lang="en" title="Joint Test Action Group">JTAG</abbr> ↔ <abbr lang="en" title="Universal Serial Bus">USB</abbr> (vendue avec le DreamPlug ou à l’unité). Sur cet ordinateur, vous pouvez utiliser l’utilitaire <code>minicom</code> (fourni dans un paquet Debian et probablement disponible ailleurs aussi). Si vous avez un autre plug computer que le DreamPlug, ne suivez pas directement ces instructions et reportez-vous à ces <a href="http://www.cyrius.com/debian/kirkwood/sheevaplug/" hreflang="en">autres documents</a>. Bien sûr, il va sans dire mais ça va mieux en le disant qu’il est très souhaitable de faire une sauvegarde des données existantes du DreamPlug avant l’installation de Debian 7.</p>
<p>Martin Michlmayr a écrit <a href="http://www.cyrius.com/debian/kirkwood/sheevaplug/" hreflang="en">plusieurs documents sur les plugs computers</a>, dont les DreamPlugs qui nous intéressent, et en particulier un guide de <a href="http://www.cyrius.com/debian/kirkwood/sheevaplug/install/" hreflang="en">mise à jour vers Debian 7</a>. La première étape importante est de <a href="http://www.cyrius.com/debian/kirkwood/sheevaplug/uboot-upgrade/" hreflang="en">mettre à jour Das U-Boot</a>, le bootloader des DreamPlugs, vers la version 2011.12-3 ou plus récente. Pour ma part, j’ai utilisé la version <a href="https://packages.debian.org/wheezy/u-boot" hreflang="en">2012.04.01-2 de Debian 7</a> en téléchargeant ce paquet et en utilisant la version spécialement compilée pour le DreamPlug (copier le bon fichier <var>u-book.kwb</var> sur une partition accessible à U-Boot, par exemple sur une carte <abbr lang="en" title="Secure Digital">SD</abbr> ou une clé <abbr lang="en" title="Universal Serial Bus">USB</abbr> formatée en ext2, ext3 ou <abbr lang="en" title="File Allocation Table">FAT</abbr>32 -- de mémoire l’ext4 n’est pas lu par les vieilles versions de U-Boot antérieures à 2010).</p>
<p>Avant de se lancer dans cette mise à jour de U-Boot, j’ai également mis sur une partition accessible à U-Boot l’installeur de Debian 7 récupéré <a href="https://packages.debian.org/wheezy/debian-installer-7.0-netboot-armel" hreflang="en">dans l’archive Debian</a> (copier les <var>uImage</var> et <var>uInitrd</var> spécifiques au DreamPlug ; leur donner des noms spécifiques plutôt que d’écraser les fichiers existants, par exemple <var>uImageD7</var> et <var>uInitrdD7</var>). Noter qu’une bonne pratique est de vérifier les sommes de contrôle des paquets téléchargés lorsque c’est possible pour prévenir toute corruption des paquets ; pour Debian, les sommes <abbr lang="en" title="Message Digest 5">MD5</abbr>, <abbr lang="en" title="Secure Hash Algorithm">SHA</abbr>-1 et <abbr lang="en" title="Secure Hash Algorithm">SHA</abbr>-256 sont indiquées sur la page de téléchargement et peuvent être vérifiées avec <code>md5sum</code>, <code>sha1sum</code> et <code>sha256sum</code>.</p>
<h3>Mise à jour de U-Boot</h3>
<p>Une fois le DreamPlug redémarré et observé au travers de la connexion série <abbr lang="en" title="Universal Asynchronous Receiver Transmitter">UART</abbr>/<abbr lang="en" title="Joint Test Action Group">JTAG</abbr>, il faut arrêter le lancement du système en appuyant sur une touche (par défaut on a trois secondes pour ce faire). Ensuite peuvent être affichées les variables d’environnement U-Boot pour vérification :<br />
<code>Marvell>> print</code><br />
ou<br />
<code>Marvell>> printenv</code></p>
<p>La variable d’environnement la plus importante est <var>bootcmd</var> qui est celle qui sera exécutée lors des lancements automatiques, et <var>bootargs</var> est également importante puisqu’elle contient les arguments qui seront passés au noyau Linux. Il est possible d’exécuter du code inscrit dans d’autres variables d’environnement U-Boot en appellant <code>run NOM-VARIABLE</code> ; cela permet de décomposer les instructions de démarrage en plusieurs sous-sections.</p>
<p>Pour lancer la mise à jour de U-Boot, il faut commencer par lancer le sous-système <abbr lang="en" title="Universal Serial Bus">USB</abbr> de U-Boot :<br />
<code>Marvell>> usb start</code><br />
puis chercher la partition sur laquelle vous avez mis les fichiers <var>u-boot.kwb</var> et les <var>uImageD7</var>/<var>uInitrdD7</var> de l’installeur Debian. Si vous ne savez pas, vous pouvez essayer successivement les numéros de 0 à 5 (?) dans les commandes suivantes jusqu’à trouver les fichiers :<br />
<code>Marvell>> ext2ls usb 0</code><br />
(Si la partition est en ext2 ou ext3 ; si la partition est en <abbr lang="en" title="File Allocation Table">FAT</abbr>32, ce sera <code>fatls</code> et <code>fatload</code> dans la suite.)</p>
<p>Pour mettre à jour U-Boot, il faut exécuter la séquence qui suit. Bien sûr, le <code>usb NUMÉRO</code> est issu de l’étape précédente. Attention, en cas d’interruption au milieu, il est possible que le DreamPlug ne redémarre pas, assurez-vous qu’il n’y a pas d’orage, que le courant ne sera pas coupé, etc.<br />
<code>Marvell>> ext2load usb NUMÉRO 0x0800000 u-boot.kwb<br />
Marvell>> sf probe 0<br />
Marvell>> sf erase 0x0 0x60000<br />
Marvell>> sf write 0x0800000 0x0 0x60000</code></p>
<p>Enfin, redémarrez le DreamPlug et arrêtez à nouveau le démarrage.<br />
<code>Marvell>> reset</code></p>
<h3>Installation de Debian 7</h3>
<p>Si vous avez bien mis les deux fichiers d’installation de Debian 7 <var>uImageD7</var> et <var>uInitrdD7</var> sur une partition accessible à U-Boot, chargez ces deux fichiers en mémoire (sinon il est encore temps de les mettre sur une clé <abbr lang="en" title="Universal Serial Bus">USB</abbr> à partir d’un autre ordinateur).<br />
<code>Marvell>> usb start<br />
Marvell>> ext2load usb NUMÉRO 0x00800000 uImageD7<br />
Marvell>> ext2load usb NUMÉRO 0x01100000 uInitrdD7<br />
Marvell>> setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most<br />
Marvell>> bootm 0x00800000 0x01100000</code></p>
<p>Ensuite, l’installeur Debian va se lancer, vous poser des questions pendant un petit quart d’heure et prendra ensuite quelques heures pour installer le système Debian 7. Je n’ai pas eu de problèmes lors de cette étape mis à part un avertissement à la fin de l’installation prévenant que le bootloader ne pouvait pas être mis à jour, mais cela peut être ignoré puisqu’on a fait la mise à jour à l’étape précédente. J’ai ensuite redémarré le système, ce qui n’était peut-être pas la meilleure idée : s’il est proposé de lancer directement le système à la suite, sautez sur l’occasion et passez au dernier titre ci-après pour compiler un noyau « sans NAND_ORION » – j’expliquerai ce que c’est.</p>
<h3>Problème d’identification de la machine par Linux : machid</h3>
<p>Normalement, l’installeur Debian a déposé dans le dossier <var>/boot</var> du système le noyau (3.2.0-4-kirkwood pour moi) et le système Debian 7 devrait normalement se charger avec la séquence suivante de U-Boot :<br />
<code>Marvell>> usb start<br />
Marvell>> ext2load usb NUMÉRO 0x00800000 uImage<br />
Marvell>> ext2load usb NUMÉRO 0x01100000 uInitrd<br />
Marvell>> setenv bootargs 'console=ttyS0,115200 rw root=/dev/sda1 rootdelay=10 panic=10'<br />
Marvell>> bootm 0x00800000 0x01100000</code><br />
Notez que le <var>/dev/sda1</var> est peut-être à remplacer si votre système racine a été installé sur une autre partition, et que les <var>uImage</var> et <var>uInitrd</var> ont peut-être d’autres noms.<br />
Notez aussi que vous pouvez automatiser le processus de lancement en fixant une fois pour toutes la variable d’environnement <var>bootargs</var> et surtout <var>bootcmd</var>, cette dernière avec :<br />
<code>Marvell>> setenv bootargs 'printenv; usb start; ext2load usb NUMÉRO 0x00800000 uImage; ext2load usb NUMÉRO 0x01100000 uInitrd; bootm 0x00800000 0x01100000'<br />
Marvell>> saveenv</code></p>
<p>En lançant ce noyau Linux Debian 7, celui-ci (le noyau Linux) répond dès le début qu’il ne reconnait pas le matériel :
</p>
<pre style="border:solid black 1px; padding:5px; display:inline-block; margin-left:5px;">Error: unrecognized/unsupported machine ID (r1 = 0x00000dde).
Available machine support:
ID (hex) NAME
00000690 Marvell DB-88F6281-BP Development Board
00000691 Marvell RD-88F6192-NAS Development Board
00000692 Marvell RD-88F6281 Reference Board
0000078c Marvell 88F6281 GTW GE Board
00000a76 Marvell eSATA SheevaPlug Reference Board
00000831 Marvell SheevaPlug Reference Board
00000a63 Marvell GuruPlug Reference Board
[...]
00000b1e HP t5325 Thin Client
ffffffff Marvell Kirkwood (Flattened Device Tree)
Please check your kernel config and/or bootloader.
</pre>
<p>Puisque j’ai recherché les causes de ceci, je vais vous en faire profiter :-) Linux s’attend à reçevoir une indication sur le type de matériel sur lequel il se trouve ; dans le cas des processeurs ARM, ces numéros sont référencés dans le fichier <a href="https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/arch/arm/tools/mach-types" hreflang="en">arch/arm/tools/mach-types</a> du noyau Linux. Dans notre cas, le DreamPlug a le numéro hexadécimal 0xdde (=3550) (ne cherchez pas dans la liste de Linux, il n’y est pas :/ il est sur le <a href="http://www.arm.linux.org.uk/developer/machines/list.php?id=3550" hreflang="en">site officiel de ARM</a>). La version U-Boot de Debian indique donc le bon identifiant de matériel, mais Linux ne le connait pas.</p>
<p>L’ancienne version de U-Boot (Marvell customisée) donnait à Linux l’identifiant hexadécimal 0xa63 (=2659), le GuruPlug étant très proche du DreamPlug. C’est donc ce que nous allons faire. Pour cela, il faut configurer la variable d’environnement U-Boot <var>machid</var> à 0xa63 :<br />
<code>Marvell>> setenv machid a63<br />
Marvell>> saveenv</code><br />
Sur les forums, il est évoqué aussi la variable arcNumber mais il semble que cela était pour les (très) vieilles versions de U-Boot (d’ailleurs arcNumber n’apparaît pas dans les sources de U-Boot, contrairement à machid). L’option Flattened Device Tree est censée être une unification des configurations matérielles pour le futur, mais elle n’a pas fonctionné pour moi (le noyau ne se lance pas) et l’expérience est identique pour <a href="http://www.madore.org/~david/linux/dreamplug.html" hreflang="en">David Madore</a> (que je remercie vraiment au passage car c’est lui qui m’a débloqué grâce à cette page dans les deux gros problèmes que j’ai rencontrés, avec quelques autres recherches sur le Web pour les instructions précises).</p>
<p>Une fois ces commandes exécutées, le démarrage de Linux se lance bien. Du moins dans mon cas pendant les 15 secondes suivantes.</p>
<h3>Arrêt du chargement du noyau lors de l’initialisation du NAND Orion, inexistant sur DreamPlug</h3>
<p>Le chargement du noyau Debian (3.2.0-4-kirkwood) s’arrêtait systématiquement après "console [ttyS0] enabled" dans la fonction "nand_read_byte". Plus exactement, c’est le watchdog qui retourne ce message toutes les 22 secondes. Pour être plus précis, c’est avec la fonction "orion_nand_probe" que les problèmes se posent. Voici mon log d’erreur exact :
</p>
<pre style="border:solid black 1px; padding:5px; display:inline-block; margin-left:5px;">[ 11.167148] console [ttyS0] enabled
[ 38.208674] BUG: soft lockup - CPU#0 stuck for 22s! [swapper:1]
[ 38.214621] Modules linked in:
[ 38.217690]
[ 38.219183] Pid: 1, comm: swapper
[ 38.223641] CPU: 0 Not tainted (3.2.0-4-kirkwood #1 Debian 3.2.54-2)
[ 38.230380] PC is at nand_read_byte+0xc/0x10
[ 38.234673] LR is at nand_command+0x184/0x1c4
[ 38.239051] pc : [<c0207e6c>] lr : [<c020ace0>] psr: 60000013
[ 38.239056] sp : df82be80 ip : c020ab5c fp : 00000000
[ 38.250593] r10: 00000000 r9 : 00000000 r8 : ffffffff
[ 38.255844] r7 : ffffffff r6 : df8c4800 r5 : 000000ff r4 : df8c4a20
[ 38.262400] r3 : e08aa000 r2 : 00000081 r1 : ffffffff r0 : 00000000
[ 38.268958] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
[ 38.276300] Control: 0005397f Table: 00004000 DAC: 00000017
[ 38.282093] [<c00137c4>] (unwind_backtrace+0x0/0xe0) from [<c0065068>] (watchdog_timer_fn+0xe0/0x134)
[ 38.291361] [<c0065068>] (watchdog_timer_fn+0xe0/0x134) from [<c0043c94>] (__run_hrtimer+0x118/0x1ec)
[ 38.300628] [<c0043c94>] (__run_hrtimer+0x118/0x1ec) from [<c00444bc>] (hrtimer_interrupt+0xf4/0x23c)
[ 38.309903] [<c00444bc>] (hrtimer_interrupt+0xf4/0x23c) from [<c001a3a8>] (orion_timer_interrupt+0x20/0x30)
[ 38.319701] [<c001a3a8>] (orion_timer_interrupt+0x20/0x30) from [<c0065958>] (handle_irq_event_percpu+0x7c/0x23c)
[ 38.330015] [<c0065958>] (handle_irq_event_percpu+0x7c/0x23c) from [<c0065b40>] (handle_irq_event+0x28/0x38)
[ 38.339895] [<c0065b40>] (handle_irq_event+0x28/0x38) from [<c0067d04>] (handle_level_irq+0xac/0xbc)
[ 38.349077] [<c0067d04>] (handle_level_irq+0xac/0xbc) from [<c0065328>] (generic_handle_irq+0x28/0x44)
[ 38.358438] [<c0065328>] (generic_handle_irq+0x28/0x44) from [<c000ee14>] (handle_IRQ+0x60/0x84)
[ 38.367266] [<c000ee14>] (handle_IRQ+0x60/0x84) from [<c000db34>] (__irq_svc+0x34/0x78)
[ 38.375314] [<c000db34>] (__irq_svc+0x34/0x78) from [<c0207e6c>] (nand_read_byte+0xc/0x10)
[ 38.383627] [<c0207e6c>] (nand_read_byte+0xc/0x10) from [<c020ace0>] (nand_command+0x184/0x1c4)
[ 38.392372] [<c020ace0>] (nand_command+0x184/0x1c4) from [<c020a150>] (nand_scan_ident+0x16c/0xa94)
[ 38.401466] [<c020a150>] (nand_scan_ident+0x16c/0xa94) from [<c020be9c>] (nand_scan+0x48/0x68)
[ 38.410128] [<c020be9c>] (nand_scan+0x48/0x68) from [<c040048c>] (orion_nand_probe+0x120/0x1b0)
[ 38.418876] [<c040048c>] (orion_nand_probe+0x120/0x1b0) from [<c01ef9e0>] (platform_drv_probe+0x14/0x18)
[ 38.428403] [<c01ef9e0>] (platform_drv_probe+0x14/0x18) from [<c01eeb10>] (driver_probe_device+0xd4/0x198)
[ 38.438107] [<c01eeb10>] (driver_probe_device+0xd4/0x198) from [<c01eec34>] (__driver_attach+0x60/0x84)
[ 38.447550] [<c01eec34>] (__driver_attach+0x60/0x84) from [<c01ed798>] (bus_for_each_dev+0x50/0x84)
[ 38.456645] [<c01ed798>] (bus_for_each_dev+0x50/0x84) from [<c01ee40c>] (bus_add_driver+0x9c/0x218)
[ 38.465740] [<c01ee40c>] (bus_add_driver+0x9c/0x218) from [<c01eeedc>] (driver_register+0xa0/0x12c)
[ 38.474836] [<c01eeedc>] (driver_register+0xa0/0x12c) from [<c01efbb4>] (platform_driver_probe+0x18/0x68)
[ 38.484454] [<c01efbb4>] (platform_driver_probe+0x18/0x68) from [<c00085a4>] (do_one_initcall+0x90/0x168)
[ 38.494079] [<c00085a4>] (do_one_initcall+0x90/0x168) from [<c03e882c>] (kernel_init+0xbc/0x164)
[ 38.502917] [<c03e882c>] (kernel_init+0xbc/0x164) from [<c000ee98>] (kernel_thread_exit+0x0/0x8)
</pre>
<p>Après recherches, et en particulier la page de <a href="http://www.madore.org/~david/linux/dreamplug.html" hreflang="en">David Madore</a>, une <a href="http://forums.fedoraforum.org/showthread.php?t=284430" hreflang="en">page de forum de Fedora 17</a> et la discussion liée <a href="https://lists.fedoraproject.org/pipermail/arm/2012-October/004139.html" hreflang="en">sur la liste ARM de Fedora</a> et probablement <a href="https://wiki.debian.org/DreamPlugTesting" hreflang="en">ici aussi</a>, il apparaît que le DreamPlug n’a pas le périphérique NAND Orion (contrairement à d’autres plug computers de la famille GuruPlug) mais le noyau essaye quand même de lire ce périphérique. Plus précisément, ce périphérique est géré par le module <var>orion_nand</var> du noyau. La solution évoquée pour Fedora et qui fonctionnait était de blacklister ce module. Pour Debian 7, cela ne fonctionnait pas d’après mes tests, d’autant que le module <var>orion_nand</var> chez Debian est un module intégré (built-in), impossible à désactiver donc. Pour Debian, ce problème correspond au <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=717470" hreflang="en">bug 717470</a>, rapporté pour les noyaux à partir de 3.9.x, et j’ai rencontré le problème également avec le noyau 2.6.x de Debian 7.</p>
<p>D’après <a href="http://www.madore.org/~david/linux/dreamplug.html" hreflang="en">David Madore</a>, il faut compiler un noyau sans la directive de compilation <var>CONFIG_MTD_NAND_ORION</var>, et il apparaît que cela fonctionne effectivement pour le noyau Linux 3.2.x de Debian 7. Je détaille ci-après le mode opératoire pour compiler ce noyau fonctionnel sur DreamPlug. Je me suis permis de ne pas changer le nom du noyau (pas de « +nonand » ajouté au nom du noyau) étant donné que ce noyau est presque pareil que celui de Debian 7 à une directive de compilation (et donc réutiliser tous les autres modules) près et surtout que ça ne voulait pas compiler lorsque je changeai <var>abi.abiname</var> dans <var>debian/config/defines</var> (exception Python lors de l’exécution de <code>make -f debian/rules source</code>). À part ça, j’ai suivi <a href="https://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage" hreflang="en">HowToRebuildAnOfficialDebianKernelPackage</a> sur le wiki Debian. (note : c’est la première fois que je compilai un noyau, il y a sûrement matière à mieux compiler ce noyau-ci.)</p>
<p>Pour éviter d’avoir à faire du cross-build depuis une autre architecture, le plus simple (qui a fonctionné pour moi) est de charger le système Debian 7 avec le noyau 2.6 de Marvell (<a href="https://code.google.com/p/dreamplug/downloads/list">téléchargeable ici</a>). Redémarrer le DreamPlug et exécuter dans U-Boot :<br />
<code>Marvell>> usb start; ext2load usb NUMÉRO 0x00800000 uImage_dreamplug_v10_Aug-28-2012; bootm 0x00800000</code></p>
<p>Une fois connecté en root à Debian, exécutez :<br />
<code>$ apt-get install fakeroot build-essential devscripts quilt u-boot-tools<br />
$ apt-get build-dep linux<br />
$ apt-get source linux<br />
$ cd linux-*<br />
$ make -f debian/rules source<br />
$ fakeroot make -f debian/rules.gen setup_armel_none_kirkwood<br />
$ cd debian/build/build_armel_none_kirkwood<br />
$ make menuconfig</code><br />
Dans le menu de configuration du noyau qui apparaît, allez dans <span lang="en">"Device Drivers" > "Memory Technology Device (MTD) support" > "NAND Device Support" > "NAND Flash support for Marvell Orion SoC"</span> et désactivez cette dernière option.<br />
<code>$ cd ../../..<br />
$ fakeroot make -f debian/rules.gen binary-arch_armel_none_kirkwood binary-indep DEBIAN_KERNEL_JOBS=1</code><br />
Après quelques heures (et j’ai arrêté lors de la compilation des pages de manuel vu qu’elles étaient déjà présentes, et ça m’a pris entre 1 et 2 Gio), le noyau devient disponible dans le répertoire <var>debian/linux-image-3.2.0-4-kirkwood/boot</var> (les fichiers <var>vmlinuz-3.2.0-4-kirkwood</var>, <var>System.map-3.2.0-4-kirkwood</var> et <var>config-3.2.0-4-kirkwood</var>).<br />
<code>$ cd debian/linux-image-3.2.0-4-kirkwood</code></p>
<p>À partir de là, il faut créer le fichier initrd.img pour la version 3.2.0-4-kirkwood si vous ne l’avez pas déjà.<br />
<code>$ update-initramfs -u -k 3.2.0-4-kirkwood</code></p>
<p>Et enfin transformer les fichiers vmlinuz et initrd.img au format de fichier de U-Boot :<br />
<code>$ mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n "Linux kernel 3.2.0-4-kirkwood" -d vmlinuz-3.2.0-4-kirkwood /boot/uImage-3.2.0-4+nonand-kirkwood<br />
$ mkimage -A arm -O linux -T ramdisk -C none -a 0x00000000 -e 0x00000000 -n "Linux ramdisk 3.2.0-4-kirkwood" -d /boot/initrd.img-3.2.0-4-kirkwood /boot/uInitrd-3.2.0-4+nonand-kirkwood</code></p>
<p>Maintenant, pour charger ces noyau et ramdisk, il peut être pratique d’utiliser des liens symboliques pour les fichiers <var>/boot/uImage</var> et <var>/boot/uInitrd</var> (dans l’étape précédente, on a demandé à U-Boot de charger ces fichiers spécifiquement) (ça ne marche pas pour les partitions <abbr lang="en" title="File Allocation Table">FAT</abbr>32, il renommer explicitement les fichiers).<br />
<code>$ cd /boot<br />
$ mv uImage uImage.old<br />
$ mv uInitrd uInitrd.old<br />
$ ln -s uImage-3.2.0-4+nonand-kirkwood uImage<br />
$ ln -s uInitrd-3.2.0-4+nonand-kirkwood uInitrd</code></p>
<p>Maintenant, redémarrez le DreamPlug. Le système Debian 7 avec le noyau 3.2.x devrait se charger correctement (ça a été mon cas du moins). En cas de mise à jour du noyau, il faudrait également recompiler un noyau sans la directive de compilation <var>CONFIG_MTD_NAND_ORION</var>.</p>
<p>Je vais évoquer cette solution dans le <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=717470" hreflang="en">bug 717470</a>, mais je ne suis pas sûr de la résolution propre à effectuer, et cela rejoint les interrogations sur la liste de Fedora : comment faire en sorte de charger ce module <var>orion_nand</var> pour certains plug computers mais pas pour les DreamPlugs ? Il pourrait être utilisé la variable d’environnement <var>machid</var> donnée par U-Boot (0xdde = DreamPlug) mais Linux ne reconnait pas cette valeur et oblige donc à utiliser encore 0xa63 (= GuruPlug), ou alors utiliser 0xffffffff (= Marvell Kirkwood (Flattened Device Tree)) mais cela n’était pas encore fonctionnel. Si vous avez des idées ou plus d’expérience que moi, n’hésitez pas à compléter sur ce bug.</p>//blog.seb35.fr/post/2014/03/Installation-de-Debian-7-sur-DreamPlug#comment-form//blog.seb35.fr/feed/atom/comments/6Pourquoi je ne crois pas à la privatisation du domaine publicurn:md5:e8adee535bf4880a2fd761be2fc4b2822013-01-25T00:22:00+01:002013-01-25T15:52:24+01:00Seb35Je n’ai pas l’habitude de poster sur ce blog, mais c’est bien pratique que d’avoir un endroit où exprimer des idées longues (i.e. pas Twitter). J’ai suivi ces derniers jours la polémique autour de la signature entre la BnF et deux partenaires privés pour la <a href="http://www.culturecommunication.gouv.fr/Espace-Presse/Communiques/Investissements-d-Avenir-Deux-partenariats-d-envergure-conclus-pour-la-numerisation-et-la-diffusion-des-collections-de-la-Bibliotheque-nationale-de-France-BnF" hreflang="fr">numérisation de deux fonds</a> (70 000 ouvragres datant de 1470 à 1700 ainsi que des 200 000 vinyles). Les documents numérisés pourront être revendus par les partenaires privés et la BnF bénéficiera d’une copie à laquelle elle pourra donner accès dans ses locaux à Paris ainsi que, pour 5 % des œuvres, sur sa bibliothèque numérique Gallica. Dix ans après la numérisation, la BnF pourra utiliser comme elle veut les documents numérisés, par exemple pour les exposer sur Gallica. [Note : ces éléments sont ceux qui circulent sur le web, en particulier <a href="http://www.actualitte.com/usages/bnf-filippetti-cautionne-la-commercialisation-du-domaine-public-39601.htm" hreflang="fr">Actualitté</a>.]<br /><br />Rapidement, plusieurs personnes se sont prononcées contre ce partenariat (voir le blog <a href="http://scinfolex.wordpress.com/2013/01/19/la-privatisation-du-domaine-public-a-la-bnf-symptome-dun-desarroi-strategique/" hreflang="fr">S.I.Lex</a> et les liens du billet, ainsi que Twitter <a href="https://twitter.com/search?q=%23AccordsBnF" hreflang="fr">#AccordsBnF</a>), et une <a href="http://www.savoirscom1.info/2013/01/18/non-a-la-privatisation-du-domaine-public-par-la-bibliotheque-nationale-de-france/" hreflang="fr">lettre</a> a été écrite et signée par plusieurs associations (Savoirscom1, La Quadrature du Net, Framasoft, Veni Vidi Libri, Wikimédia France, etc.). Cette lettre parle entre autres de « privatisation du domaine public ». Certains, plus rares, <a href="http://politicogeek.com/676-pourquoi-je-suis-contre-que-wikimedia-france-signe-la-lettre-non-a-la-privatisation-du-domaine-public-par-la-bibliotheque-nationale-de-france" hreflang="fr">s’opposent</a> à cette lettre, ou ont une <a href="http://blog.wikimedia.fr/numerisation-de-fonds-anciens-de-la-bnf-avec-exclusivite-pour-le-prestataire-prive-5284" hreflang="fr">position</a> plus douce.<br /><br /><p>Du haut de mes quelques connaissances en droit de la propriété intellectuelle et de la pratique amateure des licences libres, je ne comprend pas cette expression de « privatisation du domaine public », et par là même cette indignation par rapport à ce partenariat. J’expose dans la suite du billet ce pourquoi je trouve qu’on ne devrait pas utiliser une telle expression, puisqu’elle me semble factuellement fausse. Je demanderai aux libristes de ne pas (tout de suite) me considérer comme un vil capitaliste défenseur du système actuel de pooperty intellectual (je suis plutôt le contraire, mais là n’est pas la question). D’autant qu’il me semble (à moins que je rêve) que la communauté du libre existe et est tellement résiliente en partie du fait de la multiplicité des opinions.</p> <h3>« Exclusivité » : précisons</h3>
<p>D’après ce qui se dit sur le web, il y aurait « exclusivité » pour les partenaires. Qu’est-ce ? Exclusivité sur les scans (après numérisation donc) ? Exclusivité sur les objets « livres » ayant servi à la numérisation ? Exclusivité sur les œuvres intellectuelles portées par ces livres ? La bonne réponse semble être la première option : l’exclusivité sur les scans porte sur les scans. Les objets « livres » originaux seront toujours disponibles à la BnF dans les mêmes conditions qu’actuellement, sauf probablement quelque temps pendant leur numérisation.</p>
<br />Les œuvres intellectuelles portées par ces livres seront toujours dans le domaine public, à savoir qu’on pourra encore les voir ou les entendre, les remixer, les commercialiser, etc. Autrement dit, les œuvres intellectuelles portées par ces livres et vinyles restent dans le domaine public… De toutes façons, à moins d’une loi qui retire le statut de domaine public (comme <a href="https://en.wikipedia.org/wiki/Uruguay_Round_Agreements_Act" hreflang="en">URAA</a>, et je crois que c’est la seule), il n’y a pas trop à craindre qu’une entité puisse détruire ce statut de domaine public, et surtout pas une entité qui ne rédige pas les lois.<br /><br /><h3>Accessibilité des livres</h3>
Certains objectent que les livres en question, datant d’avant 1700 ne sont et ne seront pas accessibles à tout un chacun -- alors qu’ils sont dans le domaine public -- car ils sont : (1) à Paris, (2) dans une salle difficile d’accès (semble-t-il, je ne connais pas), (3) fragiles donc réservé aux personnes sachant les manipuler, donc possiblement prendre rendez-vous. Ces raisons sont des raisons pratiques liées à la conservation des objets « livres » et sont déconnectées de la question du domaine public (ou pas).<br /><br />Aussi, même si ce partenariat va permettre à ce qu’ils soit disponibles Quelque-Part sous forme numérique, et même si on aurait pu préférer qu’ils soient disponibles partout -- dont sur Internet --, je ne crois pas que le débat devrait porter sur les conditions d’accès aux livres physiques, c’est un autre débat. Même si on peut regretter que ces satanés objets physiques ne soient disponibles qu’à un seul endroit physique et qu’ils soient aussi fragiles.<br /><br /><h3>Propriété et vente des scans</h3>
Dans le mouvement libre, on a pris l’habitude de dire que la numérisation sans originalité d’œuvres intellectuelles en deux dimensions (livres, tableaux) ne créait pas de nouveaux droits de propriété intellectuelle, ceci étant fondé sur la jurisprudence américaine de <a href="https://en.wikipedia.org/wiki/Bridgeman_Art_Library_v._Corel_Corp." hreflang="en">Bridgeman vs. Corel</a> (je n’en connais pas en France, mais ça existe peut-être). On pourrait donc argumenter que le fait que les scans des livres de ce partenariat ne soient pas dans le domaine public constitue, soit une violation de ce principe, soit de la notion de domaine public en disant que les scans ne sont pas publiquement accessibles. Or, ici, on est bien en train de parler des <em>scans</em> et non des œuvres intellectuelles portées par ces scans, et ces œuvres intellectuelles sont bien toujours dans le domaine public (mais en fait on ne le voit pas parce que c’est immatériel :).<br /><br />La question suivante, et je crois que c’est celle qui divise fondamentalement dans ce débat, est : les <em>supports</em> d’œuvres intellectuelles du domaine public peuvent-ils être des propriétés privées ? Et a fortiori peuvent-ils être vendus ? (je parle des supports) Et là encore, il me semble que la réponse, une fois le problème exposé clairement, est triviale : « oui », au moins en droit français avec le premier alinéa de l’article <a href="http://legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006278870&cidTexte=LEGITEXT000006069414&dateTexte=20130125" hreflang="fr">L111-3</a> du CPI. Aussi, même si ces supports (les scans) contiennent des œuvres du domaine public, je ne vois pas pour quelle raison le numérisateur <strong>devrait</strong> les diffuser -- et si oui : où ? sur Internet ? pourquoi sur Internet ? il pourrait les diffuser dans des magasins, dans des bibliothèques, etc.<br /><br /><h3>De la numérisation</h3>
Maintenant que le partenariat est signé (oui je suis cynique), le numérisateur va pouvoir commencer sont travail de numérisation : il va numériser 70 000 livres anciens, cela va prendre du temps, demander du personnel qualifié, du matériel. Et le débat qui s’agite actuellement semble vouloir obliger ce numérisateur à rendre <em>gratuitement</em> disponible le fruit de ce travail, c’est-à-dire que le numérisateur devrait assumer une perte sèche en temps et en argent. Cela ne me semble pas réaliste, et perso j’aurai été numérisateur je n’aurai pas signé un tel partenariat, sauf à être intéressé pour faire ça bénévolement (pourquoi pas ?).<br /><br />Pour le faire comprendre mieux, je vais prendre un autre exemple, dans le monde matériel pour mieux appréhender les concepts. Supposons que nous comparons la numérisation à la copie par un artisan d’un tableau et d’un <del>incunable</del> manuscript du Moyen-Âge [update : désolé j’ai confondu, je remplace les occurences dans le paragraphe qui suit] copié à la main comme au temps de son écriture originelle.<br /><br />Notre artisan-copiste va demander à un musée conservant le tableau ancien (il n’y a plus de droits patrimoniaux dessus, il est dans le domaine public) et le manuscript de pouvoir respectivement peindre à l’identique le tableau en vingt exemplaires et recopier à la main trois exemplaires du manuscript. Le musée l’y autorise à condition qu’il fasse attention à ces objets. L’artisan-copiste va donc passer quarante jours à peindre des tableaux et deux cent jours à copier des manuscripts modernes (j’ai pas d’ordre d’idée du temps qu’il faut). Il vendra ensuite ses copies, rendra les originaux au musée et fera don d’un exemplaire de chaque au musée en demandant à ce que le musée ne les vende pas sans sa permission.<br /><br />Au final, notre artisan-copiste aura passé deux cent quarante jours à réaliser ces copies. Des libristes arrivent, argumentent que les objets originaux sont dans le domaine public et qu’ils sont en deux dimensions <em>donc</em> qu’ils sont dans le domaine public et qu’il doit les donner gratuitement aux musées alentours ; une bataille féroce s’ensuit…<br /><br />En quoi le travail de copie de notre artisan est-il différent du travail de numérisation ? (À part le fait que la re-copie par l’artisan demande un travail identique à la première copie, contrairement à la numérisation.) Pourquoi l’artisan-copiste ou le numérisateur n’auraient-ils pas droit à la reconnaissance du travail qu’ils ont fournit pour la copie, ainsi que des investissement en temps, argent et technologie, et seraient obligés de reverser gratuitement le résultat de leur travail ? Parce que l’œuvre intellectuelle portée par les supports est dans le domaine public ? Est-ce anormal que le numérisateur profite du travail qu’il a effectué pour en retirer de l’argent ? [On reconnaîtra au travers de ces questions le bien-connu poilu troll "Libre vs. Gratuit", mais il est camouflé.]<br /><br />Autrement formulé, si vous êtes invité dans une réserve de musée pour prendre des photos d’œuvres entreposées et dans le domaine public, êtes-vous <em>obligé</em> de mettre ces photos sur Internet en libre accès ? Et si oui, pourquoi sur Internet ? plein de gens n’ayant pas accès à Internet ne pourront pas en profiter, à moins de se déplacer au café internet le plus proche et de payer la connexion.<br /><br /><h3>De la politique</h3>
Ce partenariat est-il bien et la BnF devrait-elle en faire d’autres ? Je sais pas, choisir ce mode de numérisation ou un autre, c’est un choix politique. Faut-il mieux numériser trois œuvres et les mettre tout de suite à disposition du public ou dix œuvres et ne les mettre à disposition du public que dans dix ans ?<br /><br />Après, comme l’ont fait <a href="http://www.leconomiste-notes.fr/dotclear2/index.php/post/2013/01/22/Accords-BnF-et-privatisation-du-domaine-public" hreflang="fr">remarquer</a> <a href="http://scinfolex.wordpress.com/2013/01/19/la-privatisation-du-domaine-public-a-la-bnf-symptome-dun-desarroi-strategique/" hreflang="fr">certains</a>, choisir ce mode de numérisation n’est peut-être pas idéal économiquement car les principaux acheteurs seront probablement les chercheurs payés par l’État. Mais là encore, ceci est encore un choix politique, de politique économique plus précisément, qui n’a rien à voir avec la propriété intellectuelle.<br /><br /><h3>Conclusion</h3>
Selon moi, on peut critiquer ce partenariat sur le plan politique (est-ce judicieux de faire un partenariat privé au lieu de numériser soi-même les œuvres ?), sur le plan sociétal (est-ce normal que les copies numériques de la BnF ne soient accessibles qu’à Paris ou que sur Internet pour les 5 % disponibles ?), sur le plan économique (les principaux acheteurs ne seront-ils pas l’État indirectement ?), mais <strong>pas</strong> sur le plan de la propriété intellectuelle : les œuvres intellectuelles ont strictement les mêmes droits qu’auparavant. Non ?//blog.seb35.fr/post/2013/01/Pourquoi-je-ne-crois-pas-%C3%A0-la-privatisation-du-domaine-public#comment-form//blog.seb35.fr/feed/atom/comments/4La vie sera belle, récit d’une indignationurn:md5:d6d4b7198a551aa19007db4f33474aa42011-09-25T15:40:00+02:002011-09-25T17:29:37+02:00Seb35associations<p>(Pour une lecture optimale, je conseille d’écouter en toile de fond <em>Le rêve</em> de Ridan.)</p>
<p><em>Indignez-vous !</em>, ode au positivisme de Stéphane Hessel parue il y a quelques mois. Je l’ai lu il y a deux mois lors de la conférence Wikimania, à quelques mètres d’Indignés israéliens d’ailleurs. Je ne connaissais pas Stéphane Hessel mais j’ai été fortement touché en partie par les œuvres de sa vie mais surtout par ses révoltes actuelles dont il a su faire parler dans la peu-révoltée société française (même si celle-ci n’a pas franchement bougé depuis).</p>
<p>Depuis cette lecture, je me suis un peu renseigné sur ses critiques sur l’internet, et suis tombé en librairie (ouch! ça m’apprendra à acheter n’importe quoi) sur <em>J’y crois pas !</em> d’Orimont Bolacre. Ça a été la pluie torentielle qui a fait déborder le vase.</p> <p>Alors que Stéphane Hessel se positionne sur le plan du positivisme et de l’envie de rendre le monde meilleur par la critique du monde actuel, la plupart des critiques ne se focalisent que sur la forme du livre (!) ou sur des micro-problèmes. C’est assez désolant de voir cette critique trop terre-à-terre pour être atteinte par l’œuvre qu’est <em>Indignez-vous !</em>. On leur parle de la Sécurité sociale comme un moyen d’assurer à tous un accès aux soins et on nous répond par… l’effort excessif demandé pour remplir un imprimé de ladite Sécu. On leur énonce la liberté de la presse et on nous parle d’hégémonie de la parole officielle, chose absolument indépendante justement du fait de cette liberté de la presse.</p>
<p>Une critique fréquente et absolument infondée est qu’on reproche à Stéphane Hessel de ne s’indigner <strong>que</strong> du sort des Palestiniens, mais pas des Africains, ni du sida, de la famine, du dérèglement climatique, de la corruption, du fait que les voisins font trop de bruit ou que les chiens font des crottes sur les trottoirs. P* ! Si chacun commençait déjà par faire sa part de travail dans la prise en compte collective des problèmes et par s’investir dans les très nombreuses associations ou organismes qui œuvrent justement à améliorer le monde ou à mieux le faire tourner, au lieu de de se pseudo-indigner que Stéphane Hessel n’est pas assez sur-homme pour s’indigner de toutes les causes. Pour ma part (mais je n’en tiendrai pas rigueur à Stéphane Hessel de ne pas l’avoir mentionné), ça me révolte de voir des gens lâcher ce genre de com’ et de ne rien faire à côté pour améliorer ledit monde.</p>
<p>Il y a également l’ultime critique à 2 balles (anciens francs) : Stéphane Hessel nous parle du temps révolu de l’après-guerre. J’ai plutôt le sentiment que les gens qui disent ça ont lu trop vite et n’ont pas réfléchi à ce qu’ils lisaient. Stéphane Hessel parle bien sûr de l’après-guerre, sujet qu’il maîtrise parfaitement, mais surtout pour mieux critiquer les dérives et excès de la société actuelle, et il me semble complètement ancré dans le présent (d’ailleurs, comment un (ancien) ambassadeur pourrait ne pas l’être). En poussant un peu plus loin, on pourrait presque dire que la Sécu a plutôt bien fonctionné par rapport au reste. À une critique comme « De quelle exigence sociale le respect exigé des tabous alimentaires qui n’ont jamais eu cours en France ? » (<em>J’y crois pas !</em>, p. 26), on pourrait simplement répondre « l’ouverture au changement, et accessoirement au respect des autres cultures ».</p>
<p>Pour finir, puisque tout le monde semble d’accord sur le fait qu’il faut s’indigner dans le monde actuel, je propose ci-après une petite liste de sujets qui ne demandent qu’à être étudiés urgemment : la sauvegarde de l’environnement, l’étude des scénarios de changement climatique et de politique énergétique, l’encouragement à l’ouverture entre sociétés humaines, la préservation et la dissémination des cultures du monde, l’encouragement à l’instruction et à la recherche, la lutte contre la corruption et les excès du capitalisme, la promotion de la démocratie et du dialogue et en particulier la neutralité de l’internet, la promotion de la culture libre. Je m’arrête là, même s’il y a probablement des manques (vous pouvez m’en indiquer en commentaires). Pour résumer, on pourrait citer <a href="http://www.couchet.org/blog/index.php?post/2011/09/06/Video-de-mon-intervention-a-TEDx-Bordeaux-sous-titree-fran%C3%A7ais-et-anglais" hreflang="fr">Frédéric Couchet</a> dans sa conférence TEDx : « Et ce que je veux vous souhaiter à tous aujourd’hui, à chacun d’entre vous, c’est de trouver si ce n’est déjà fait, votre ikigaï. ». Et à ceux qui ont passé le stade de l’indignation, le stade suivant est : <em>Bougez-vous !</em></p>//blog.seb35.fr/post/2011/09/La-vie-sera-belle%2C-r%C3%A9cit-d%E2%80%99une-indignation#comment-form//blog.seb35.fr/feed/atom/comments/3Wikipédia et la pensée altermondialisteurn:md5:363ddfca26d997aa158e0d3cf3425e8f2011-01-21T00:59:00+01:002011-01-21T00:59:21+01:00Seb35wikipedia <p>Ayant commencé ce blog il y a peu (en nombre de billets), je me demande encore comment font les « blogueurs » pour trouver les sujets de leurs billets. Je commence donc celui-ci avec l’origine de son écriture, qui d’ailleurs fait partie intégrante du billet.</p>
<p>Étant à l’occasion sur <a href="http://twitter.com/" hreflang="fr">Twitter</a> et n’étant pas acharné, j’ai eu quelques difficultés à expliquer à mon entourage le concept de Twitter : les gens peuvent envoyer des petits messages de 140 caractères à un ensemble d’autres personnes, les messages étant généralement publics. En fait, une des raisons qui explique ma difficulté à expliquer ce qu’est Twitter est que à partir de cette idée de base, Twitter n’est que ce que les gens en font : certains racontent leur journée (intéressante ou pas), d’autres se focalisent sur un sujet, ou parlent de l’actualité avec un certain point de vue, et caetera. Un peu comme <a href="http://www.wikipedia.org/" hreflang="mul">Wikipédia</a> d’ailleurs, le but étant de contruire une encyclopédie, la rédaction étant ouverte à tous, et le résultat est que certains sujets sont très bien traités, d’autres absents ou de qualité moyenne, certains proviennent de traductions, d’autres ont un point de vue biaisé, un sujet est mieux traité dans une autre langue, et caetera.</p>
<p>Hier, explorant Twitter, je regarde une des listes de personnes ayant comme point commun d’être à Rennes, et je tombe sur le fil de <a href="http://twitter.com/cbourbeillon" hreflang="fr">@cbourbeillon</a>, journaliste à Ouest-France et passionnée par l’Asie et la plongée sous-marine. Je comprends alors un des intérêts de Twitter : trouver des gens partageant des opinions ou passions communes, ce qui, je me rappelle maintenant, avait essayé de m’expliquer un ami, mais je n’avais alors pas bien compris (je pourrai rajouter ça dans mon explication de Twitter). De là, je continue sur le blog de <a href="http://www.michjuly.typepad.com/" hreflang="fr">Michèle Jullian</a> et son billet « <a href="http://michjuly.typepad.com/blog/2011/01/-la-très-prochaine-dictature-universelle-.html" hreflang="fr">La très prochaine dictature universelle</a> », à l’origine de ce billet.</p>
<p>C’est le premier paragraphe de Georges Bernanos qui m’a fait penser à cela : Twitter et Wikipédia s’inscrivent dans une démarche altermondialiste, dans le sens qu’ils contribuent à ouvrir les esprits en montrant aux gens qu’il leur faut penser par eux-mêmes. Il ne suffit pas de lire quelque chose sur Twitter ou Wikipédia pour être sûr que c’est « vrai » (j’ai quelques scrupules à utiliser ce mot, j’en parlerai dans un prochain billet), il faut chercher les informations originelles et informations connexes, croiser les sources et se faire une opinion, possiblement différente de l’information initiale d’ailleurs.</p>
<p>Lorsque Wikipédia est apparu et encore aujourd’hui, la première réaction d’une personne ne connaissant pas Wikipédia à qui on explique le concept est : « Mais tout le monde peut écrire n’importe quoi ! », et ma réaction est maintenant : « Oui. ». En ce sens, le concept de Wikipédia interpelle et choque pour quelqu’un habitué à la « pensée unique » fournie par les médias et les célébrités de ce monde, détenteurs de La vérité.</p>
<p>…suite au prochain billet :-)</p>//blog.seb35.fr/post/2011/01/Wikip%C3%A9dia-et-la-pens%C3%A9e-altermondialiste#comment-form//blog.seb35.fr/feed/atom/comments/2Présentationurn:md5:b153519c524ef2ed0d955a8f5b00d60a2010-11-08T05:01:00+00:002010-11-08T22:09:21+00:00Seb35<strong><em>Bienvenu</em>e</strong><em><strong>, </strong></em><strong>we<em>lcome, bienvenudo, Willkommen, tervetuola!</em></strong><br /><br />Je me présente brièvement tout d'abord : je m’appelle Sébastien, autour des 25 années, habitant actuellement à Rennes et citoyen du monde.<br /><br />Cela fait quelques mois que l’idée d’ouvrir un blog a germé, depuis que je m’implique corps et âme dans une asso dont j’aurai l’occasion de revenir, <a href="http://www.wikimedia.fr" hreflang="fr">Wikimédia France</a>, et par laquelle j’ai découvert le monde associatif.<br /><br />Je comptais initialement parler essentiellement de <a href="http://fr.wikipedia.org" hreflang="fr">Wikipédia</a>, projet d’encyclopédie libre que j’ai rejoins il y a maintenant presque cinq ans, et du mouvement Wikimedia, mouvement pour la connaissance libre. Cependant, étant maintenant intéressé par le monde des assos en général (merci à <a href="http://www.plume.info" hreflang="fr">Plume!</a> et plein d’autres assos) ainsi que par les différentes problématiques altermondialistes actuelles (environnement, vie privée, diffusion de la culture, commerce et monde équitable, paix entre les peuples, éthique, anti-pub, économie sociale et solidaire…), je parlerai également de tout ça, avec ma vision qui sera parfois naïve.<br /><br />Je n’aurai que l’occasion de le faire, mais je remercie toutes les assos, personnes, humains, chats, pommes, elfes et les autres qui œuvrent pour un monde dans lequel l’Être humain serait plus en accord avec ses semblables et la Nature plutôt qu’avec le profit immédiat et égoïste, tout ce monde qui me donne un peu d’espoir dans l’humanité contemporaine.<br /><br />Rennes, 8 novembre 2010 (calendrier grégorien), 05h01<strong><em><br /></em></strong> <p><strong><em><br /></em></strong></p>//blog.seb35.fr/post/2010/11/08/Presentation#comment-form//blog.seb35.fr/feed/atom/comments/1