Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 35KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang=fr>
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset=utf-8>
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Des données aux communs — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <!-- Canonical URL for SEO purposes -->
  28. <link rel="canonical" href="https://larlet.fr/david/blog/2017/donnees-communs/">
  29. <!-- SEO/Semantic metadata -->
  30. <meta name="description" content="La libération d’une donnée est un lâcher-prise progressif." />
  31. <meta name="twitter:description" property="og:description" itemprop="description" content="La libération d’une donnée est un lâcher-prise progressif." />
  32. <meta name="twitter:title" property="og:title" itemprop="name" content="Des données aux communs" />
  33. <meta name="twitter:card" content="summary" />
  34. <meta name="twitter:creator" content="@davidbgk" />
  35. <meta name="twitter:url" property="og:url" content="https://larlet.fr/david/blog/2017/donnees-communs/" />
  36. <meta property="og:type" content="article" />
  37. <meta property="og:site_name" content="David Larlet (@davidbgk)" />
  38. <meta name="twitter:image" property="og:image" itemprop="image" content="https://larlet.fr/static/david/blog/2017/donnees-communs.jpg" />
  39. <style>
  40. /* http://meyerweb.com/eric/tools/css/reset/ */
  41. html, body, div, span,
  42. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  43. a, abbr, address, big, cite, code,
  44. del, dfn, em, img, ins,
  45. small, strike, strong, tt, var,
  46. dl, dt, dd, ol, ul, li,
  47. fieldset, form, label, legend,
  48. table, caption, tbody, tfoot, thead, tr, th, td,
  49. article, aside, canvas, details, embed,
  50. figure, figcaption, footer, header, hgroup,
  51. menu, nav, output, ruby, section, summary,
  52. time, mark, audio, video {
  53. margin: 0;
  54. padding: 0;
  55. border: 0;
  56. font-size: 100%;
  57. font: inherit;
  58. vertical-align: baseline;
  59. }
  60. /* HTML5 display-role reset for older browsers */
  61. article, aside, details, figcaption, figure,
  62. footer, header, hgroup, menu, nav, section { display: block; }
  63. body { line-height: 1; }
  64. blockquote, q { quotes: none; }
  65. blockquote:before, blockquote:after,
  66. q:before, q:after {
  67. content: '';
  68. content: none;
  69. }
  70. table {
  71. border-collapse: collapse;
  72. border-spacing: 0;
  73. }
  74. /* http://practicaltypography.com/equity.html */
  75. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  76. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: normal;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  89. font-weight: 300;
  90. font-style: italic;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'EquityTextB';
  95. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  96. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  97. font-weight: 700;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. @font-face {
  102. font-family: 'ConcourseT3';
  103. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  104. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  105. font-weight: 300;
  106. font-style: normal;
  107. font-display: swap;
  108. }
  109. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  110. body {
  111. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  112. font-family: "EquityTextB", Palatino, serif;
  113. background-color: #f0f0ea;
  114. color: #07486c;
  115. font-kerning: normal;
  116. -moz-osx-font-smoothing: grayscale;
  117. -webkit-font-smoothing: subpixel-antialiased;
  118. text-rendering: optimizeLegibility;
  119. font-variant-ligatures: common-ligatures contextual;
  120. font-feature-settings: "kern", "liga", "clig", "calt";
  121. }
  122. pre, code, kbd, samp, var, tt {
  123. font-family: 'TriplicateT4c', monospace;
  124. }
  125. em {
  126. font-style: italic;
  127. color: #323a45;
  128. }
  129. strong {
  130. font-weight: bold;
  131. color: black;
  132. }
  133. nav {
  134. background-color: #323a45;
  135. color: #f0f0ea;
  136. display: flex;
  137. justify-content: space-around;
  138. padding: 1rem .5rem;
  139. }
  140. nav:last-child {
  141. border-bottom: 1vh solid #2d7474;
  142. }
  143. nav a {
  144. color: #f0f0ea;
  145. }
  146. nav abbr {
  147. border-bottom: 1px dotted white;
  148. }
  149. h1 {
  150. border-top: 1vh solid #2d7474;
  151. border-bottom: .2vh dotted #2d7474;
  152. background-color: #e3e1e1;
  153. color: #323a45;
  154. text-align: center;
  155. padding: 5rem 0 4rem 0;
  156. width: 100%;
  157. font-family: 'ConcourseT3';
  158. display: flex;
  159. flex-direction: column;
  160. }
  161. h1.single {
  162. padding-bottom: 10rem;
  163. }
  164. h1 span {
  165. position: absolute;
  166. top: 1vh;
  167. left: 20%;
  168. line-height: 0;
  169. }
  170. h1 span a {
  171. line-height: 1.7;
  172. padding: 1rem 1.2rem .6rem 1.2rem;
  173. border-radius: 0 0 6% 6%;
  174. background: #2d7474;
  175. font-size: 1.3rem;
  176. color: white;
  177. text-decoration: none;
  178. }
  179. h2 {
  180. margin: 4rem 0 1rem;
  181. border-top: .2vh solid #2d7474;
  182. padding-top: 1vh;
  183. }
  184. h3 {
  185. text-align: center;
  186. margin: 3rem 0 .75em;
  187. }
  188. hr {
  189. height: .4rem;
  190. width: .4rem;
  191. border-radius: .4rem;
  192. background: #07486c;
  193. margin: 2.5rem auto;
  194. }
  195. time {
  196. display: bloc;
  197. margin-left: 0 !important;
  198. }
  199. ul, ol {
  200. margin: 2rem;
  201. }
  202. ul {
  203. list-style-type: square;
  204. }
  205. a {
  206. text-decoration-skip-ink: auto;
  207. text-decoration-thickness: 0.05em;
  208. text-underline-offset: 0.09em;
  209. }
  210. article {
  211. max-width: 50rem;
  212. display: flex;
  213. flex-direction: column;
  214. margin: 2rem auto;
  215. }
  216. article.single {
  217. border-top: .2vh dotted #2d7474;
  218. margin: -6rem auto 1rem auto;
  219. background: #f0f0ea;
  220. padding: 2rem;
  221. }
  222. article p:last-child {
  223. margin-bottom: 1rem;
  224. }
  225. p {
  226. padding: 0 .5rem;
  227. margin-left: 3rem;
  228. }
  229. p + p,
  230. figure + p {
  231. margin-top: 2rem;
  232. }
  233. blockquote {
  234. background-color: #e3e1e1;
  235. border-left: .5vw solid #2d7474;
  236. display: flex;
  237. flex-direction: column;
  238. align-items: center;
  239. padding: 1rem;
  240. margin: 1.5rem;
  241. }
  242. blockquote cite {
  243. font-style: italic;
  244. }
  245. blockquote p {
  246. margin-left: 0;
  247. }
  248. figure {
  249. border-top: .2vh solid #2d7474;
  250. background-color: #e3e1e1;
  251. text-align: center;
  252. padding: 1.5rem 0;
  253. margin: 1rem 0 0;
  254. font-size: 1.5rem;
  255. width: 100%;
  256. }
  257. figure img {
  258. max-width: 250px;
  259. max-height: 250px;
  260. border: .5vw solid #323a45;
  261. padding: 1px;
  262. }
  263. figcaption {
  264. padding: 1rem;
  265. line-height: 1.4;
  266. }
  267. aside {
  268. display: flex;
  269. flex-direction: column;
  270. background-color: #e3e1e1;
  271. padding: 1rem 0;
  272. border-bottom: .2vh solid #07486c;
  273. }
  274. aside p {
  275. max-width: 50rem;
  276. margin: 0 auto;
  277. }
  278. /* https://fvsch.com/code/css-locks/ */
  279. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  280. font-size: 1rem;
  281. line-height: calc( 1.5em + 0.2 * 1rem );
  282. }
  283. h1 {
  284. font-size: 1.9rem;
  285. line-height: calc( 1.2em + 0.2 * 1rem );
  286. }
  287. h2 {
  288. font-size: 1.6rem;
  289. line-height: calc( 1.3em + 0.2 * 1rem );
  290. }
  291. h3 {
  292. font-size: 1.35rem;
  293. line-height: calc( 1.4em + 0.2 * 1rem );
  294. }
  295. @media (min-width: 20em) {
  296. /* The (100vw - 20rem) / (50 - 20) part
  297. resolves to 0-1rem, depending on the
  298. viewport width (between 20em and 50em). */
  299. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  300. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  301. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  302. margin-left: 0;
  303. }
  304. h1 {
  305. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. h2 {
  309. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  310. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  311. }
  312. h3 {
  313. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  314. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  315. }
  316. }
  317. @media (min-width: 50em) {
  318. /* The right part of the addition *must* be a
  319. rem value. In this example we *could* change
  320. the whole declaration to font-size:2.5rem,
  321. but if our baseline value was not expressed
  322. in rem we would have to use calc. */
  323. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  324. font-size: calc( 1rem + .6 * 1rem );
  325. line-height: 1.5em;
  326. }
  327. p, li, pre, details {
  328. margin-left: 3rem;
  329. }
  330. h1 {
  331. font-size: calc( 1.9rem + 1.5 * 1rem );
  332. line-height: 1.2em;
  333. }
  334. h2 {
  335. font-size: calc( 1.5rem + 1.5 * 1rem );
  336. line-height: 1.3em;
  337. }
  338. h3 {
  339. font-size: calc( 1.35rem + 1.5 * 1rem );
  340. line-height: 1.4em;
  341. }
  342. figure img {
  343. max-width: 500px;
  344. max-height: 500px;
  345. }
  346. }
  347. figure.unsquared {
  348. margin-bottom: 1.5rem;
  349. }
  350. figure.unsquared img {
  351. height: inherit;
  352. }
  353. @media print {
  354. body { font-size: 100%; }
  355. a:after { content: " (" attr(href) ")"; }
  356. a, a:link, a:visited, a:after {
  357. text-decoration: underline;
  358. text-shadow: none !important;
  359. background-image: none !important;
  360. background: white;
  361. color: black;
  362. }
  363. abbr[title] { border-bottom: 0; }
  364. abbr[title]:after { content: " (" attr(title) ")"; }
  365. img { page-break-inside: avoid; }
  366. @page { margin: 2cm .5cm; }
  367. h1, h2, h3 { page-break-after: avoid; }
  368. p3 { orphans: 3; widows: 3; }
  369. img {
  370. max-width: 250px !important;
  371. max-height: 250px !important;
  372. }
  373. nav, aside { display: none; }
  374. }
  375. ul.with_columns {
  376. column-count: 1;
  377. }
  378. @media (min-width: 20em) {
  379. ul.with_columns {
  380. column-count: 2;
  381. }
  382. }
  383. @media (min-width: 50em) {
  384. ul.with_columns {
  385. column-count: 3;
  386. }
  387. }
  388. ul.with_two_columns {
  389. column-count: 1;
  390. }
  391. @media (min-width: 20em) {
  392. ul.with_two_columns {
  393. column-count: 1;
  394. }
  395. }
  396. @media (min-width: 50em) {
  397. ul.with_two_columns {
  398. column-count: 2;
  399. }
  400. }
  401. .gallery {
  402. display: flex;
  403. flex-wrap: wrap;
  404. justify-content: space-around;
  405. }
  406. .gallery figure img {
  407. margin-left: 1rem;
  408. margin-right: 1rem;
  409. }
  410. .gallery figure figcaption {
  411. font-family: 'ConcourseT3'
  412. }
  413. footer {
  414. font-family: 'ConcourseT3';
  415. display: flex;
  416. flex-direction: column;
  417. border-top: 3px solid white;
  418. padding: 4rem 0;
  419. background-color: #07486c;
  420. color: white;
  421. }
  422. footer > * {
  423. max-width: 50rem;
  424. margin: 0 auto;
  425. }
  426. footer a {
  427. color: #f1c40f;
  428. }
  429. footer .avatar {
  430. width: 200px;
  431. height: 200px;
  432. border-radius: 50%;
  433. float: left;
  434. -webkit-shape-outside: circle();
  435. shape-outside: circle();
  436. margin-right: 2rem;
  437. padding: 2px 5px 5px 2px;
  438. background: white;
  439. border-left: 1px solid #f1c40f;
  440. border-top: 1px solid #f1c40f;
  441. border-right: 5px solid #f1c40f;
  442. border-bottom: 5px solid #f1c40f;
  443. }
  444. </style>
  445. <h1 class="single">
  446. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  447. Des données aux communs
  448. <time>Publié le 8 mars 2017</time>
  449. </h1>
  450. <article class="single">
  451. <blockquote>
  452. <p>Le numérique auquel nous aspirons est différent. Il ne menace ni l’économie, ni l’environnement, ni la démocratie, ni la culture. Il permet au contraire de renouveler ces domaines dans leurs fondements par une perspective centrée sur l’humain. Il protège nos libertés tout en nous donnant des moyens puissants d’exercer nos droits. Il ne concentre pas de nouveaux pouvoirs ainsi que les ressources entre les mains d’un petit nombre. Il contribue plutôt à redistribuer équitablement les pouvoirs et les richesses d’une manière durable. Il pose que nous sommes tous égaux et interdépendants, il vise à restaurer notre relation au monde et en prendre soin dans une démocratie inclusive.</p>
  453. <p>Ce numérique auquel nous aspirons est un commun, une ressource partagée par les communautés qui se mobilisent et s’organisent pour la produire, la créer, la protéger, la valoriser au bénéfice de toutes et de tous. Ce numérique existe et prospère. Pour des communautés engagées dans le partage des savoirs co-créés, ces pratiques issues du modèle des communaux trouvent, par l’entremise du numérique, un territoire qui n’aura jamais été aussi vaste. Le domaine public, les logiciels libres sont des exemples de communs de la connaissance, de communs numériques, qui sont vitaux pour le travail, l’éducation, la science, la culture, la liberté d’expression aujourd’hui. De surcroit, ce numérique constitue la dorsale d’une économie collaborative en plein essor mobilisant les ressources, le talent et l’énergie des citoyen.ne.s dans la concrétisation de projets inédits et porteurs.</p>
  454. <p>Nous aspirons à voir ce numérique humaniste reconnu et soutenu.</p>
  455. <p><cite><em><a href="http://www.savoirscom1.info/2017/03/savoirscom1-salue-la-declaration-des-communs-numeriques-au-quebec/">SavoirsCom1 salue la « Déclaration des communs numériques » au Québec</a></em> (<a href="/david/cache/d99b422f8d9c986fc88ad37da8af084d/">cache</a>)</cite></p>
  456. </blockquote>
  457. <p><em>Ceci est un résumé de mon intervention à <a href="https://confoo.ca">Confoo</a>, il s’agit même d’une suite de <a href="/david/blog/2016/opendata-liens-casses/">ce que j’ai pu partager l’année dernière autour de l’OpenData</a>. Le déroulé était ponctué de fragments de Python que je n’ai pas reproduits ici mais que vous pourrez retrouver <a href="/david/talks/#35">sur le support</a>.</em></p>
  458. <h2>1. Données ouvertes</h2>
  459. <p><a href="http://www.data.gouv.fr/fr/">Data.gouv.fr</a> est la plateforme ouverte des données publiques françaises. Il s’agit d’un moyen de publier ses données brutes et de consulter celles des autres. Elle s’adresse aussi bien aux ministères et collectivités publiques qu’aux citoyens ou aux entreprises et associations. Elle est ouverte à tous et la modération se fait a posteriori. Elle est gratuite et tous les développements sont publiés en open-source. D’autres pays réutilisent le code de la plateforme.</p>
  460. <p>Je participe à son évolution depuis bientôt deux ans.</p>
  461. <h2>2. Données exploitables</h2>
  462. <p>La publication des données n’est que la première étape d’un long processus d’appropriation par les personnes intéressées. Un format de fichier propriétaire ou un encoding non spécifié et cela devient plus compliqué de plonger le nez dedans. Une archive corrompue ou un site inaccessible et l’on arrive rapidement à une frustration ainsi qu’une perte de confiance qui seront difficiles à aller récupérer.</p>
  463. <p>Les discussions permettent aujourd’hui d’exprimer ces freins de la part des consommateur potentiels et d’engager une discussion avec les producteurs de la donnée.</p>
  464. <h2>3. Données compréhensibles</h2>
  465. <p>Une fois le fichier ouvert, il s’agit de comprendre ce qu’il y a dedans. C’est loin d’être intuitif dans la majorité des cas s’il n’y a pas une documentation exhaustive associée à la donnée. La description des jeux de données et de leurs ressources permet à ceux qui soumettent leurs données de préciser à quoi correspondent les termes métier par exemple ou les intitulés de colonnes peu explicites.</p>
  466. <p>Il est parfois pertinent de proposer une <a href="https://pachevalier.github.io/documentation_sirene/">interface simplifiée</a> à une documentation PDF de plusieurs centaines de pages.</p>
  467. <h2>4. Données interopérables</h2>
  468. <p>Même documentées, certaines données sont difficiles à appréhender du fait de leur complexité ou de leur taille. Retraiter cette donnée brute en aval est ce que j’ai tenté de faire avec <a href="https://github.com/etalab/geohisto/">GeoHisto</a> pour le <a href="https://www.insee.fr/fr/information/2114819#titre-bloc-10">diff du Code Officiel Géographique</a> de l’INSEE ou avec <a href="https://github.com/etalab/sirene">Ulysse</a> pour traiter le <a href="https://www.data.gouv.fr/fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/">fichier volumineux du SIRENE</a>.</p>
  469. <p>Il ne s’agit aucunement de remplacer les données initialement publiées mais de proposer des outils et éventuellement leurs résultats pour être à même de les exploiter plus rapidement.</p>
  470. <h2>5. Données requêtables</h2>
  471. <p>Par exemple, l’une des problématiques à laquelle nous sommes confrontés est de pouvoir découper des fichiers CSV à la volée en fonction de certains paramètres. Un petit <a href="https://github.com/etalab/secateur">sécateur</a> nous permettrait de réaliser ceci de manière asynchrone et de proposer des liens vers des sous-ensembles propres à des territoires par exemple.</p>
  472. <p>Lorsque le fichier est trop volumineux, il est possible de <a href="https://github.com/etalab/sirene#tools">fournir les outils</a> pour réaliser cela de manière relativement performante.</p>
  473. <h2>6. Données conviviales</h2>
  474. <p>Parfois le simple fait de <a href="https://github.com/etalab/geohisto/blob/master/exports/towns/towns_head.csv">proposer un sous-ensemble</a> des données générées facilite leur représentation et donc leur compréhension. C’est une suite de petits détails qui semblent insignifiants mais qui une fois mis bout à bout montrent que vous prenez soin de vos données et de leurs utilisateurs potentiels.</p>
  475. <p>Encore une fois, la <a href="https://github.com/etalab/geohisto/tree/master/exports/towns#history-of-towns">documentation est critique</a> pour encourager l’adoption et la réutilisation. Fournir des exemples de réutilisations réalisés ou imaginés peut également aider. Expliquer ce qui ne peut pas être fait avec est encore mieux en documentant par exemple les précédentes tentatives qui ont échouées. De même qu’il peut être pertinent de décrire la façon dont les données sources sont générées pour en comprendre les contraintes.</p>
  476. <h2>7. Données résilientes</h2>
  477. <p>La rapidité avec laquelle la Maison Blanche a <a href="https://twitter.com/denormalize/status/831581871230193664">vidé son portail</a> opendata <a href="https://www.meritalk.com/articles/white-house-open-data-disappears-transparency-donald-trump-sunlight-foundation/">soulève forcément des questions</a> (<a href="/david/cache/0a5a968deddfd30e2fbaf8ac8c2c98d5/">cache</a>) lorsqu’on a en charge un tel portail dans un pays qui pourrait prochainement devenir tout aussi totalitaire. L’hébergement des données en utilisant un outil décentralisé comme <code>git</code> permet de les répliquer (et de les enrichir) à l’infini tout en conservant l’historique des modifications apportées.</p>
  478. <p>Il y aurait beaucoup à faire à partir de <a href="https://git-lfs.github.com/">git-lfs</a> ou <a href="https://datproject.org/">dat</a> par exemple. Je ne suis pas loin de prendre le temps de faire ça en tant que citoyen <a href="https://www.data.gouv.fr/fr/apidoc/">à partir de l’API</a>.</p>
  479. <h2>8. Données pérennes</h2>
  480. <p>Les problématiques liées à l’historique sont intéressantes car l’on peut distinguer les versions de la donnée brute et celles des sujets qu’elle traite. Je me suis par exemple focalisé sur ce second point avec <a href="https://github.com/etalab/geohisto">GeoHisto</a> et l’évolution des communes ainsi qu’avec l’<a href="https://github.com/etalab/sirene#dealing-with-history-optional">historique des entreprises</a> du fichier SIRENE. Il s’agit d’un angle d’attaque qui se focalise sur une exploitation particulière des données, celle de travailler sur des versions/diffs pour une commune ou une entreprise précise.</p>
  481. <p>Dans le <a href="https://github.com/etalab/geohisto/tree/master/exports/counties">cas des départements</a>, cela m’a permis de revoir mon Histoire d’une manière pratique et assez ludique.</p>
  482. <h2>9. Gouvernance ouverte</h2>
  483. <p>Il ne s’agit pas de s’en tenir à publier des données et à les rendre utilisables mais d’être à l’écoute de la communauté des réutilisateurs pour l’améliorer. Aussi bien dans le fond que dans la forme, il est difficile de savoir <em>a priori</em> ce qui va être pertinent pour un type de données. Prendre en compte les retours dans une boucle de rétro-action vertueuse constitue le graal de la donnée ouverte.</p>
  484. <p>Avoir un lieu d’expression et de décision qui soit documenté et ouvert à tous permet de fédérer une communauté autour d’un besoin et d’itérer, aussi bien sur le plan technique que politique.</p>
  485. <h2>10. Biens communs</h2>
  486. <p>Au même titre que la libération du code, au début on souhaite garder le contrôle et nombreux sont les projets open-source qui ne dépassent pas cette étape. Puis l’on s’ouvre à l’autre, à ses différences de points de vues et d’expériences et on prend le temps de l’écouter pour améliorer le produit. Et enfin on s’en remet à l’intelligence collective de la communauté pour continuer d’avancer et alors seulement la résultante prend vie.</p>
  487. <p><strong>La libération d’une donnée est un lâcher-prise progressif.</strong></p>
  488. <p>Un bien ne peut se transformer en commun sans que son initiateur dépasse son propre ego et accepte les divergences de la communauté qui vient itérativement polliniser cette production.</p>
  489. <h2>Administration ?</h2>
  490. <p>Le rôle de l’État dans cette démarche n’est plus d’administrer mais de mettre en relation des personnes autour de la donnée pour faciliter la production d’externalités positives. La finalité n’étant pas le <em>bien</em> commun en lui-même mais le <em>faire</em> en commun qui nous permet de <em>vivre</em> en commun.</p>
  491. <blockquote>
  492. <p>Je pense pour ma part que nous pouvons opposer à ces deux options un État qui serait au service des communs, où les communs seraient le moyen de créer de la valeur pour les citoyens. Cet État serait centré sur les citoyens, son rôle serait de faciliter et de responsabiliser ; il serait au service des citoyens et c’est ainsi qu’il se percevrait.</p>
  493. <p><cite><em><a href="http://www.greeneuropeanjournal.eu/confrontation-constructive-ou-tension-constructive-letat-et-les-communs/">Confrontation Constructive ou Tension Constructive - l’État et les Communs</a></em> (<a href="/david/cache/2ec56f6dca4493e4dbd463332ef518aa/">cache</a>)</cite></p>
  494. </blockquote>
  495. <p><em>Il y avait une dizaine de personnes durant la session et voici <a href="/static/david/blog/donnees-communs-retours.pdf">les retours</a> proposés par Confoo dans l’heure qui suit (!) par email.</em></p>
  496. </article>
  497. <figure class="image" property="schema:image">
  498. <img src="/static/david/blog/2017/donnees-communs.jpg" alt="" />
  499. </figure>
  500. <nav id="jumpto">
  501. <p>
  502. <a rel=prev href="/david/blog/2017/web-developer/">← Web developer</a> | <a href="/david/blog/" title="Retour à la liste des expériences">↑</a> | <a rel=next href="/david/blog/2017/micro-cultures-governance/">Micro-cultures and governance →</a>
  503. </p>
  504. </nav>
  505. <footer>
  506. <div>
  507. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  508. <p>
  509. Bonjour/Hi!
  510. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  511. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  512. </p>
  513. <p>
  514. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  515. </p>
  516. <p>
  517. Les dernières publications hebdomadaires sont :
  518. </p>
  519. <ul class="with_columns">
  520. <li>
  521. <a href="/david/stream/2019/12/31/">Merci</a>
  522. </li>
  523. <li>
  524. <a href="/david/stream/2019/12/27/">Intemporels</a>
  525. </li>
  526. <li>
  527. <a href="/david/stream/2019/12/24/">Outils</a>
  528. </li>
  529. <li>
  530. <a href="/david/stream/2019/12/17/">Origines</a>
  531. </li>
  532. <li>
  533. <a href="/david/stream/2019/12/10/">Publier</a>
  534. </li>
  535. <li>
  536. <a href="/david/stream/2019/12/03/">En forêt</a>
  537. </li>
  538. <li>
  539. <a href="/david/stream/2019/11/26/">Ecocentric</a>
  540. </li>
  541. <li>
  542. <a href="/david/stream/2019/11/19/">Se livrer</a>
  543. </li>
  544. <li>
  545. <a href="/david/stream/2019/11/12/">Dépendances</a>
  546. </li>
  547. <li>
  548. <a href="/david/stream/2019/11/05/">Positif</a>
  549. </li>
  550. <li>
  551. <a href="/david/stream/2019/10/29/">Dettes</a>
  552. </li>
  553. <li>
  554. <a href="/david/stream/2019/10/22/">Privilèges</a>
  555. </li>
  556. <li>
  557. <a href="/david/stream/2019/10/15/">Discrétion</a>
  558. </li>
  559. <li>
  560. <a href="/david/stream/2019/10/08/">Désespérance</a>
  561. </li>
  562. <li>
  563. <a href="/david/stream/2019/10/01/">Présent</a>
  564. </li>
  565. <li>
  566. <a href="/david/stream/2019/09/24/">Manifester</a>
  567. </li>
  568. <li>
  569. <a href="/david/stream/2019/09/17/">Arpenter</a>
  570. </li>
  571. <li>
  572. <a href="/david/stream/2019/09/10/">Nostalgie</a>
  573. </li>
  574. <li>
  575. <a href="/david/stream/2019/09/03/">Déconstruire</a>
  576. </li>
  577. <li>
  578. <a href="/david/stream/2019/08/27/">Documenter</a>
  579. </li>
  580. <li>
  581. <a href="/david/stream/2019/08/20/">Frustration</a>
  582. </li>
  583. <li>
  584. <a href="/david/stream/2019/08/13/">Holisme</a>
  585. </li>
  586. <li>
  587. <a href="/david/stream/2019/08/06/">1%</a>
  588. </li>
  589. <li>
  590. <a href="/david/stream/2019/07/30/">Exemplarité</a>
  591. </li>
  592. <li>
  593. <a href="/david/stream/2019/07/23/">Timelines</a>
  594. </li>
  595. <li>
  596. <a href="/david/stream/2019/07/16/">Écoute</a>
  597. </li>
  598. <li>
  599. <a href="/david/stream/2019/07/02/">Anxiété</a>
  600. </li>
  601. <li>
  602. <a href="/david/stream/2019/06/21/">À lier</a>
  603. </li>
  604. <li>
  605. <a href="/david/stream/2019/06/14/">Pauvreté</a>
  606. </li>
  607. <li>
  608. <a href="/david/stream/2019/06/07/">Amateur</a>
  609. </li>
  610. <li>
  611. <a href="/david/stream/2019/05/31/">Pollution</a>
  612. </li>
  613. <li>
  614. <a href="/david/stream/2019/05/24/">Apaisement</a>
  615. </li>
  616. <li>
  617. <a href="/david/stream/2019/05/10/">Folie</a>
  618. </li>
  619. <li>
  620. <a href="/david/stream/2019/05/03/">Sympathie</a>
  621. </li>
  622. <li>
  623. <a href="/david/stream/2019/04/12/">Péremption</a>
  624. </li>
  625. <li>
  626. <a href="/david/stream/2019/04/05/">Définitions</a>
  627. </li>
  628. <li>
  629. <a href="/david/stream/2019/03/29/">Acceptation</a>
  630. </li>
  631. <li>
  632. <a href="/david/stream/2019/03/22/">Dissonance</a>
  633. </li>
  634. <li>
  635. <a href="/david/stream/2019/03/15/">Reconnaissance</a>
  636. </li>
  637. <li>
  638. <a href="/david/stream/2019/03/08/">Lecture</a>
  639. </li>
  640. <li>
  641. <a href="/david/stream/2019/03/01/">Journaux</a>
  642. </li>
  643. <li>
  644. <a href="/david/stream/2019/02/22/">Écriture</a>
  645. </li>
  646. <li>
  647. <a href="/david/stream/2019/02/15/">Kyriarchie</a>
  648. </li>
  649. <li>
  650. <a href="/david/stream/2019/02/08/">Mots-serrures</a>
  651. </li>
  652. <li>
  653. <a href="/david/stream/2019/02/01/">Sans voie</a>
  654. </li>
  655. <li>
  656. <a href="/david/stream/2019/01/25/">Auto-diagnostic</a>
  657. </li>
  658. <li>
  659. <a href="/david/stream/2019/01/18/">Agilité</a>
  660. </li>
  661. <li>
  662. <a href="/david/stream/2019/01/11/">Métaphores</a>
  663. </li>
  664. <li>
  665. <a href="/david/stream/2019/01/04/">Balbutiements</a>
  666. </li>
  667. </ul>
  668. <p>
  669. Voici quelques articles choisis :
  670. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  671. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  672. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  673. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  674. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  675. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  676. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  677. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  678. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  679. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  680. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  681. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  682. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  683. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  684. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  685. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  686. </p>
  687. <p>
  688. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  689. </p>
  690. <p>
  691. Je ne traque pas ta navigation mais mon
  692. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  693. conserve des logs d’accès.
  694. </p>
  695. </div>
  696. </footer>
  697. <script type="text/javascript">
  698. ;(_ => {
  699. const jumper = document.getElementById('jumper')
  700. jumper.addEventListener('click', e => {
  701. e.preventDefault()
  702. const anchor = e.target.getAttribute('href')
  703. const targetEl = document.getElementById(anchor.substring(1))
  704. targetEl.scrollIntoView({behavior: 'smooth'})
  705. })
  706. })()
  707. </script>
  708. <script>
  709. /* Service workers */
  710. if (navigator.serviceWorker) {
  711. window.addEventListener('load', function () {
  712. var selector = 'a[href^="/david/cache/"], a[rel=prev], a[rel=next]'
  713. function sendLinks (selector) {
  714. var links = [].slice.call(document.querySelectorAll(selector)).map(function (link) {
  715. return link.getAttribute('href')
  716. })
  717. links.push(location.pathname) // Put the current page in cache too.
  718. navigator.serviceWorker.controller.postMessage({ links: links })
  719. }
  720. navigator.serviceWorker.getRegistration()
  721. .then(function (registration) {
  722. if (!registration || !navigator.serviceWorker.controller) {
  723. return navigator.serviceWorker.register('/serviceworker.js')
  724. .then(navigator.serviceWorker.ready)
  725. .then(function () {
  726. console.log('[ServiceWorker] Ready to go!')
  727. })
  728. .catch(console.error.bind(console))
  729. } else {
  730. console.log('[ServiceWorker] Send links via registration')
  731. sendLinks(selector)
  732. }
  733. })
  734. navigator.serviceWorker.addEventListener('controllerchange', function () {
  735. console.log('[ServiceWorker] Send links via controller change')
  736. sendLinks(selector)
  737. })
  738. navigator.serviceWorker.addEventListener('message', function (event) {
  739. var link = document.querySelector('a[href="' + event.data.link + '"]')
  740. if (event.data.status && link) {
  741. link.style.backgroundColor = '#2d7474'
  742. link.style.color = '#f0f0ea'
  743. link.setAttribute('title', 'En cache pour consultation sans connexion')
  744. }
  745. })
  746. })
  747. } else {
  748. console.warn('[ServiceWorker] No cache for old browsers.')
  749. }
  750. </script>