HOME > RSS > BLOGS France > Biologeek

R S S : Biologeek

PageRank : 1 %

VoteRank :
(0 - 0 vote)

tagsTags: , , , , , , , , ,

Français - French


★ Inclusive Python

29 May, by David Larlet[ —]

After 12 years of hacking in Python, what did I learn the hard way? From biology to the web, across startups and now French government, I realized one thing: making your code resilient requires empathy.

It is the subject of a talk (slides) I gave at the Montreal-Python meetup.

I’ve been using Python for more than a decade now. Such a ride. And still, time doesn’t really matter. It’s more the diversity of projects and interactions that made me who I am as a developer. As such, I’m more and more concerned about the life of the code than ever. The transmission of the associated knowledge is the key to success of a project and to achieve this you have to think as a team. Lone wolves are burning out with their products. And it’s a real loss of energy. And happiness. And that sucks.

But first, let’s define inclusive. Given the Wiktionary the first definition is:

Including (almost) everything within its scope.

For this article, I would like to slightly rephrase that definition:

Including (almost) everybody within its scope.

I prefer that definition because coding is a social and political act. As such, each and every line of Python you produce should be put into that context. With whom. And why.

So, how do you make everybody capable of working with you(r Python code)?

Include yourself

Yesterday I was clever, so I wanted to change the world. Today I am wise, so I am changing myself. — Jalaluddin Rumi

That might seem obvious but do yourself a favour and do not reject yourself from your own code! We all have (please confirm :p) a project with no tests, no docs and yet critical and running in production that you have to maintain. Reshaping the project is not an option because you are short on attention/budget so it became a patchwork of ugly bug fixes. At that point, even you are unable to fix something without a week of procrastination to avoid that painful task. The challenge is not technical but the amount of motivation required is tremendous.

Try to be empathetic with a older wiser self. Ease the installation process, reduce dependencies, have fixtures. Document, automate, speed up the feedback loop when you are modifying something. All basic things that I rarely saw well implemented (including my projects).

Include your colleagues

— “But if all of our programmers are pairing, won’t they write half as much code?”
— “No, hopefully they’ll write even less than that.”

Ben Rady

Being part of a team is a way to duplicate the knowledge around the project. And that’s clearly not a lack of time or energy when you see the turn-over within our profession. I see three ways to do it:

  1. before: discussing strategies all together regularly, your mileage may vary on the frequency. The whole team needs to have a clear picture of what will be developed and why.
  2. during: pair-programming and/or quick sessions to discuss a particular issue mainly focused on the how.
  3. after: performing code-reviews and user-testing on each and every pull/merge-request. Check that the “why” of point 1. has been addressed and tested. Do not hesitate to trash everything at that point if it’s not relevant anymore.

Besides that, newcomers are a chance to rethink together a better process to onboard people. It only happens once per people, do not miss it and block at least half a day dedicated to that task. Observe them installing your project and trying to figure out how to make it run. Observe, do not help, do not say anything, let them find out alone. It’s not a user-testing session but a developer one. Collect everything to improve the developer experience later. Once the task is performed or worse your colleague is stuck, it’s time to discuss of the improvements. Is that a documentation issue? Or an environment one? Are you really explaining the purpose of your project? Which are the communication channels? And so on. We all have an illusion of the simplicity of our processes until they confront the diversity of others’ experiences.

The knowledge of your product is in your team, not in your code. We probably need new practices to get rid of that situation, it’s still too hard to find the right cursor between documenting and delivering value. Not only sharing how it works but why it failed and how do we addressed it at that time.

Include your (re)users

My suggestions can be expensive in time, money and energy. When you’re building something for the first time, all of this comes down to you. Focus on the documentation in the beginning. By doing that, you’ll create a welcoming place for others and then they can start helping you with the rest of it.

Lowering the barriers (cache)

This is a particular case that might be biased by my situation but when you are open-sourcing your developments and working for a government citizens you want people to be able to contribute to your work one way or another. Lowering the barriers of the contributions is still very hard.

Labelling some easy-picking issues (cache) might be worth it and your reactivity to answer to declared issues is key. Especially by people who just created an account just to submit them. Which does happen more than I expected in my case! Performing pedagogic reviews might be worth it on the long term to help contributors level up and produce better code with you.

Note: if your project only runs on top-of-the-market computers and requires to download megabytes of dependencies, you are closing the door to a lot of potential contributors.

Include maintainers

While I empathize with maintainers burning out and asking for support, trying to tackle sustainability from a maintainer centric view is a to paddle against the flow of the river. We continue to see barriers to adoption and participation fall away, enabling a new generation of contributors to be involved as long as we can view them as part of the solution rather than the problem itself.

Developers like to think they code their way out of any problem. We know how to scale servers but most of us are inexperienced with scaling people.

Maintainer vs. Community (cache)

Each and every time you contribute to an open-source project, you give your technical debt to a maintainer. Sad but true so help them with tests and documentation too! Lowering the barriers to other contributors is a way to increase the sustainability of the project which directly benefits to you.

As a maintainer, try to involve more people in the governance and maintenance of your project (I’m terrible at this…). This is somehow your escape lane because interest in projects will vanish from time to time. If you are the only one keeping the keys it will be lost forever once abandoned. At least, be a Minimally-nice Open Source Software Maintainer (cache).

Include beginners

Write code for complex logic so elegantly simple that it won’t make you look smart.

Think about it each and every time you plan to add a metaclass, a signal, a decorator or introduce the latest hyped lib to name a few. The beauty of your code is somewhat ugly to somebody having a hard time understanding these concepts. Really, nobody will blame you for writing dumb code that anyone understand at first sight. Not to mention yourself when you are stressed by a deadline or reopening this code six months later.

The best programmers write code beginners understand. It is as simple as this. You can write idiomatic Python and still be readable by a developer using another programming language. Make it a target and enjoy crossed code-reviews to identify these issues.

Document tools you use for your project (pycodestyle, isort to name a few), you can even add pre-commit hooks or automated checks via the pull/merge-request.

Include citizens

In an ever-more intricate and connected world, where software plays a larger and larger role in everyday life, it’s irresponsible to speak of coding as a lightweight activity. Software is not simply lines of code, nor is it blandly technical. In just a few years, understanding programming will be an indispensable part of active citizenship.

Coding is not ‘fun’, it’s technically and ethically complex (cache)

I’m not only talking about fixing typos in documentation here. How do you include people in the process of building the product? How do you make them aware that they can have a direct impact on what is done with their taxes? That part is yet to be experimented because it requires a shift in minds. A nation is a cooperative that scaled and as such each individual should act as part of a community.

Maybe some day, micro-payments will be available to remunerate the time spent by citizens on collective projects but — apart from the technical issue — the complexity to evaluate the value of each contribution is a real problem.

Include conclusion

An important point of maturity as a developer is realizing that writing code is a relatively insignificant part of software development.

Steven R. Baker

Embrace the diversity of others point of views, make them count. Your code is not a book, it’s a continuous discussion on a given goal. You are maybe familiar with the concept of progressive enhancement, you can push the first draft of your code/documentation as a proof of concept and then progressively enhance the inclusivity of your project too. As for Web literacy, it’s a matter of Python literacy. We have the chance to use a language that is easy to learn, let’s be worthy of it.

I had to confess that I’m not doing half of the things I described, it is mostly self-criticism here. And that’s OK, really, because inclusiveness is a journey. Just be sure to keep moving toward a direction that makes you feel good at the end of each and every day.

Include discussions

What makes a good pull-request for a developer and a good code review from a maintainer?

On the developer side, documenting clearly what is the aim of your contribution is key. It looks obvious but that’s not always the case. Adding clean code, tests and documentation is great. We use to add an entry in the changelog with every pull-request nowadays to ease the communication with our international team.

A good code review is a one that is both respectful and engaging. You can be inspired (cache) by a checklist (cache) but once again, don’t take it too dogmatically. It’s up on your team to define its own check points.

How do you handle technical debt and contributions?

We actually (and sadly) don’t have pull-requests related to technical debt clean up. We mostly initiate that kind of change during workweeks (about twice per year) when everybody is in the same room to coordinate and evaluate alternatives together.

★ Espace et temps

1 May, by David Larlet[ —]

In other words, we should not take too much comfort from the fact that the global internet first evolved thanks to cooperative capitalists, not competitive socialists: the story of the Soviet internet is a reminder that we internet users enjoy no guarantees that the private interests propping up the internet will behave any better than those greater forces whose unwillingness to cooperate not only spelled the end of Soviet electronic socialism but threatens to end the current chapter in our network age.

How the Soviets invented the internet and why it didn’t work (cache)

J’ai de plus en plus le sentiment que les cycles (d’ouverture aux autres ⟳ repli sur soi) sont intimement liés à notre rapport à la technologie. Et plus particulièrement aux effets que la technologie a sur notre relation à l’espace et au temps. Comme un mécanisme d’auto-protection, lorsque les autres se rapprochent de trop, on se renferme d’autant plus dans notre bulle : égoïsme, survivalisme, nationalisme. Il faut alors le temps de l’acceptation de ces changements et certains évènements comme la guerre favorisent probablement la prise de recul nécessaire à large échelle.

Le numérique (incluant le Web) contribue à la compression de l’espace et du temps. Il permet de prendre conscience à la fois du côté des privilégiés qu’ils le sont d’autant plus et du côté des exploités qu’ils sont nombreux. Ce ne sont pas tant les inégalités que leur visibilité qui est critique dans une société. Lorsqu’un outil accroit cette visibilité instantanément et en tout lieu, il est normal que des processus de rétro-actions se mettent en route au service d’une stabilité sociale qui s’apparente au fascisme.

Dans quelle mesure est-ce que cette cyclicité est inéluctable ? Est-ce qu’il est souhaitable de participer au contre-pouvoir ou au contraire de l’accélérer pour passer plus rapidement au prochain cycle ? Mes propres explorations dans la dualité allouée au numérique en tant que pharmakon me font douter de sa nature éducative au sens où l’entend Seymour Papert :

A few talked about the computer as a teaching machine. This book too poses the question of what will be done with personal computers, but in a very different way. I shall be talking about how computers may affect the way people think and learn. I begin to characterize my perspective by noting a distinction between two ways computers might enhance thinking and change patterns of access to knowledge.

Mindstorms, Seymour Papert

Le passage à l’échelle est trop brutal pour qu’il soit compréhensible et intégrable, l’accompagnement requérant un temps long s’il doit se faire sans violence. Notre capacité à entrevoir les possibles se trouve être masquée par nos dégoûts de l’actuel que nous n’arrivons pas à changer suffisamment rapidement alors qu’ils se trouvent être chaque jour plus visibles.

L’acceptation de ces fake news est un moyen d’auto-défense envers une réalité qui nous dépasse. De protection d’une intégrité qui pourrait voler en éclats en cas de déstabilisation trop forte. Il s’agit d’un criant besoin de repères sur un territoire nouveau qui manque de mécanismes de contrôle traditionnels, le fascisme étant avant tout un mal-être externalisé.

Lorsqu’une activité outillée dépasse un seuil défini par l’échelle ad hoc, elle se retourne d’abord contre sa fin, puis menace de destruction le corps social tout entier.

Ivan Illich cité dans Rencontre improbable entre von Foerster et Snowden (cache)

Chacun essaye de (sur)vivre dans son propre processus d’individuation, composant avec les altérités des différents niveaux qui l’entourent. En embrassant la complexité du monde d’une part, en acceptant la fragilité du soi d’autre part. Comment revenir à des outils numériques proposant une échelle compréhensible par tous ? Quelle est notre limite cognitive actuelle vis-à-vis des liens facilités par la technologie ?

En relisant la définition des outils conviviaux, je ne peux m’empêcher de penser que ScuttleButt donne des pistes en matière de stockage et d’échanges mais surtout de moyens de mise en relation. Une FAQ vient d’être publiée afin de mieux comprendre les concepts sous-jacents et notamment comment les connexions sociales sont réalisées.

La où la disruption mène à la violence, la réduction favorise l’apaisement. C’est l’un de mes objectifs actuels en tant que développeur web de résister à l’un et de tendre vers l’autre.

Merci à Aurélien de m’avoir ouvert des perspectives, vous devriez travailler avec lui.

★ Spectre et autisme

28 April, by David Larlet[ —]

I like being alone. I have control over my own shit. Therefore, in order to win me over, your presence has to feel better than my solitude. You’re not competing with another person, you are competing with my comfort zones.

Horacio Jones

J’ai offert La différence invisible à Noël. Ce qui signifie que je l’ai lu car j’offre rarement un livre sans savoir ce qu’il y a dedans. Et au fil des pages, j’ai commencé à me dire qu’il y avait beaucoup de similitudes entre ce que l’héroïne ressentait et certaines de mes expériences. J’ai gardé ça dans un coin de ma tête pensant que le biais était bien trop énorme pour être pertinent. Au détour d’une nuit d’insomnie, je commence à lire des articles sur le sujet (merci Aurélien !) ainsi qu’à consulter la documentation locale. Puis me résoudre à remplir un quiz puis d’autres et toujours me retrouver à la limite sur le spectre en présentant un nombre non négligeable de traits neuro atypiques. Je ne ressens pas le besoin d’aller plus loin pour l’instant en le faisant diagnostiquer de manière sérieuse.

Les retours (cache) de découvertes (cache) tardives ont ceci de commun qu’ils sont une libération. Pour ma part, je ne sais pas si je me sens rassuré ou résigné. Ni diminué, ni augmenté, cela me conforte dans l’idée que l’adaptation est pour moi de la survie. Et qu’elle me demande énormément d’énergie selon les situations. À travers ce prisme, j’ai des pistes pour tenter de comprendre pourquoi certains bruits, certaines lumières et même certains sites me sont insupportables (cache) mais aussi pourquoi je travaille de la maison, à l’étranger en ayant ma propre entreprise (cache). Et beaucoup d’autres choses encore (confort, inclusion, résilience) qui prennent un éclairage différent à la lumière de cette éventualité.

Difficile de savoir si la prévalence de l’autisme (cache) est bien réelle ou provient d’un changement dans son interprétation, elle semble prépondérante dans l’informatique en tout cas. Il semblerait aussi que le facteur héréditaire (cache) soit non négligeable et c’est peut-être ce qui me préoccupe le plus dans mon accompagnement. Quoi qu’il en soit, cela m’a plongé dans une profonde introspection ces derniers mois qui a menée notamment à la mise en pause de mes correspondances. J’espère que la publication de ce billet permettra de relancer la machine, j’ai l’impression d’être dans la phase d’acceptation qui précède la reconstruction.

Je suis loin d’être le premier à me servir de mon blog pour partager des atypies psychologiques, Kenneth Reitz (cache), Benjamin Bayart (cache), Pep (cache) et d’autres (cache) l’ont fait avant moi et je les remercie car cela m’a aidé à écrire à mon tour. Constater au quotidien que ce monde n’est pas binaire et que les différences de chacun en font sa force est un grand pas vers l’acceptation d’autrui.

Note : il parait que les autistes ont participé à l’évolution (cache) de l’espèce humaine (cache) ce que je trouve à la fois enthousiasmant et malheureux.

★ Confiance et transparence

22 April, by David Larlet[ —]

Dans un univers en état d’équilibre thermique, aucun événement ne pourrait plus se produire en raison de l’absence de dénivellation. Dans un cercle en état d’équilibre d’information, il n’y a plus aucune information. Dans un groupe en état d’équilibre humain, d’homogénéité humaine, il y a entropie. Mais l’entropie, c’est exactement l’équilibre de la mort. Il nous faut être attentif, si nous acceptons les généralisations qui ont été faites par d’autres, à ce que l’adaptation parfaite des uns et des autres dans un groupe signifie en réalité la disparition de la vie de ce groupe au profit de sa mécanisation. L’unité accomplie dans le mouvement politique signifie la disparition de la vie dans un système donné. […]

Or, je peux dire que l’orientation vers une conception unitaire de la nation sous la puissance organisatrice de l’État, comme l’orientation vers l’adaptation généralisée de l’homme à son milieu sont des tendances qui accroissent l’entropie et diminuent la vie. Dans ce mouvement, l’illusion politique a son rôle fort précis à jouer, qui est de présenter un simulacre, un faux-semblant d’information, de courant vivant, de fixer les passions sur de fausses réalités, cependant que les mécanismes adaptateurs fonctionnent, et d’éviter les heurts et les refus au niveau de la réalité de la société nouvelle.

La seule voie pour maintenir l’État dans son cadre et sa fonction, pour restituer à la problématique vie privée-vie politique une réalité, pour dissiper l’illusion politique, c’est de développer et de multiplier les tensions. Cela est également vrai pour l’individu et pour le corps politique. Je pense que seuls les processus de tension et de conflits sont formateurs de la personne. Non seulement sur le plan le plus élevé mais aussi sur le plan collectif.

L’illusion politique, Jacques Ellul.

La faible réactivité de l’État est parfois nécessaire pour laisser le temps à ces tensions de s’installer. Vouloir niveler trop tôt (cache) est une occasion perdue d’une appropriation citoyenne. C’est proposer une escalator là où quelques marches et encouragements auraient suffit. Sans compter le coût de mise en place et de maintenance.

Mastodon est un réseau distribué fondé sur la confiance entre les personnes d’une même micro-culture puis à une autre échelle entre ces micro-cultures à travers les connexions entre instances. Il y a l’opacité des relations humaines dans ces différentes relations de confiance. Certaines sont rendues publiques, d’autres pas. Certaines ont une gouvernance collective, d’autres pas. Certaines sont légales dans certains pays, pas dans d’autres. Cette complexité est propre à chaque communauté et ne peut être résolue à l’échelle d’un pays ou d’une administration. Du moins de manière démocratique.

Lorsque la confiance est rompue, il reste la transparence. Je creuse depuis quelques jours les technologies et concepts autour de Secure ScuttleButt (SSB pour les intimes). À la différence de Mastodon, il ne s’agit pas de technologies web (cache) et Robin a fait un excellent article d’introduction (cache) que je vais tenter de résumer en trois points clefs :

  1. Chaque périphérique est une identité (plus spécifiquement possède une clé privée) qui va émettre un flux incrémental de messages signés.
  2. Les messages du flux s’échangent en pair à pair, je ne stocke que ceux de mes amis et de leurs propres amis pour suivre les discussions et rendre le réseau plus résilient.
  3. Le stockage est chiffré et sa représentation (interface utilisateur) est à la libre interprétation de l’implémenteur. Il existe actuellement des clients graphiques mais c’est l’API qui fait référence.

Autant dire que c’est à des années lumières d’un Twitter décentralisé :-). Ici chaque nœud comporte ses données et devient le centre de son propre réseau pouvant être connecté ou non à Internet. On touche mine de rien avec ces technologies à une certification forte de l’identité/la clé utilisée. Je pense que c’est trop intelligent pour pouvoir percer et qu’il faudra encore quelques itérations pour une prise de conscience collective de ces enjeux mais le cap est techniquement enthousiasmant.

Au niveau des inconvénients, il y a bien sûr ceux relatifs à la performance car le pair-à-pair consomme forcément davantage de ressources pour chaque nœud mais le stockage des flux des amis des amis limite les pics que j’avais pu avoir avec d’autres réseaux du même type. Qui dit chiffrement dit forcément aussi problématiques associées à la gestion des clefs, pour l’instant une clef est générée par périphérique et au passage il n’y a pas à ma connaissance d’implémentation pour téléphone intelligent(-mais-pas-trop-sinon-on-pourrait-faire-du-mesh-sans-payer-une-dîme-aux-constructeurs-et-opérateurs…).

On retrouve la dualité confiance humaine (Mastodon) vs. transparence algorithmique (SSB), observer où vont se déployer les intérêts personnels, politiques et économiques sur ce curseur est fascinant à plus d’un titre. Plus que jamais, les réseaux que l’on rejoint en disent beaucoup sur nos affinités politiques et notre conception du monde.

Entre la Pachysphère et le Scuttleverse, je ne saurais trancher. D’un côté la communauté francophone qui redécouvre les avantages et les inconvénients d’être en comité restreint, de l’autre des personnes qui expérimentent sur des concepts qui me tiennent à cœur. Après tout les deux ne sont pas antithétiques, mais mon attention est limitée :-).

★ Micro-cultures and governance

7 April, by David Larlet[ —]

A new system of governance or collaboration that does not follow a competitive hierarchical model will need to employ stigmergy in most of its action based systems. It is neither reasonable nor desirable for individual thought and action to be subjugated to group consensus in matters which do not affect the group, and it is frankly impossible to accomplish complex tasks if every decision must be presented for approval; that is the biggest weakness of the hierarchical model.

Stigmergy (cache)

The recent hype within the French community about Mastodon is fascinating and raises some questions about decentralisation. At first, everybody jumps on main instances for the sake of simplicity and that’s normal. Consider it as freemium, you have 15 days (followers?) to evaluate the product and invest some time to choose and/or install the instance that fits you. The next step is to stick to traditional model and join an instance you trust (like being employed by a company) or to be tech-savy/confident enough to install and maintain your own instance (like acting as a freelance). And then come cooperatives-alike instances, the ones requiring to care about values and ethics.

Why is that important? Each Mastodon instance creates a micro-culture and links between these micro-cultures are done by humans. One line of “code” added, thousands of new connections made possible. Another one is removed and a lot of relations are broken without even being noticeable for users. Having that responsibility should be daunting for each instance administrator. That’s why I decided to co-create a cooperative after years of freelancing. It was both too easy and too difficult to deal with moral questions alone. Efficiency versus exploration. How do we decide collectively which instances we would like to be linked to? How much time can we dedicate to that task?

There are already initiatives to finance and share the responsibility of instances and that’s great. I’m more inclined to host an instance at scopyleft.fr than at larlet.fr for the same reasons. And invite peers to join the governance, discussing and sharing together before doing and working together.

The more I think about all that, the more I realise that federating identities into a unique one is an old model we may want to avoid with real decentralisation. Even with strong self-integrity you do not (re)act the same way given the group you’re in, multiple identities may allow to generate multiple circles of trust (hello G+). Either inter-connected or not. How these relations will evolve at scale based on governance and self-interest is still to be observed. Oh, and acted. Wait, tooted.

Note: disconnected instances will probably hurt Slack too, maybe more that Twitter actually.

✍ Lettre à Éric

5 April, by David Larlet[ —]


Je comprends tes réticences (cache) vis-à-vis de Mastodon, j’ai eu les mêmes assez rapidement mais je continue de creuser en me posant des questions sur la fédération d’identités ou l’expérience utilisateur. C’est la beauté d’un réseau naissant avec les tâtonnements de chacun. Proposer une solution compliquée et découvrir qu’il en existe une plus simple. La communauté itère dans un voyage initiatique qui est nécessaire pour atteindre les limites de la décentralisation. Celui-ci doit se faire ensemble sans brûler les étapes au risque d’en perdre en chemin et de créer un réseau plus élitiste que ce qu’il n’est déjà.

Je suis ravi que l’instance la plus populaire n’arrive pas à tenir la charge, ne surtout pas l’optimiser et laisser d’autres prendre le relais pour atteindre un réseau réellement décentralisé. Je ne pense pas que tu aies eu tout de suite ton nom de domaine et ton hébergeur de confiance pour tes courriels, il en est de même pour ton identifiant Mastodon. Il évoluera au cours du temps, des données seront perdues mais tu auras probablement sauvegardé ton graphe de relations en attendant mieux (le CSV d’export est une liste des différents identifiants).

Quelle chance de pouvoir faire une expérience de cette échelle qui implique de la décentralisation et de la liberté. Il n’y a pas de stratégie, de gros acteurs ou quoi que ce soit, juste un joyeux bordel qui apporte du fun. Et ça fait du bien.


✍ Lettre à Brice

9 March, by David Larlet[ —]


Je profite d’être à Confoo pour te répondre (cache) sur ma façon d’articuler une intervention tant que c’est encore chaud. En général, ça commence par un truc qui me trotte en tête depuis un petit moment et j’essaye de formuler un titre et son résumé qui s’en approchent. Parfois j’ai déjà rédigé un billet sur le sujet et je l’ajoute pour les personnes qui doivent sélectionner. D’autres fois j’ai un brouillon que je mets en ligne sans qu’il soit pour autant lié (en public). Dans ce dernier cas, le billet sera de toute façon publié.

Lorsque le sujet est accepté, je creuse davantage en commençant par retenir les cinq choses que les personnes présentes devront idéalement retenir de l’intervention. J’itère beaucoup à cette étape ce qui change parfois complètement l’orientation et il arrive que ça ne soit même plus cohérent avec le titre initialement proposé. Je me suis longtemps résolu à coller au sujet retenu mais depuis quelques temps j’assume et je l’annonce en début d’intervention. Je préfère égoïstement être au plus proche de ce que j’ai envie de présenter plutôt que de me forcer et que ça se voit.

Une fois le fil conducteur trouvé, j’enlève deux des points précédemment choisis. C’est l’étape la plus difficile. Il faut trouver le compromis entre pertinence et bourrage de crâne. Ensuite je commence à rédiger/continuer le billet et le support pour mettre à plat les idées. Je ne sais jamais au final si ça va être trop long ou trop court, pour cette dernière intervention je suis tombé pile mais une horloge au fond de la salle m’aidait beaucoup.


★ Des données aux communs

8 March, by David Larlet[ —]

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.

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.

Nous aspirons à voir ce numérique humaniste reconnu et soutenu.

SavoirsCom1 salue la « Déclaration des communs numériques » au Québec (cache)

Ceci est un résumé de mon intervention à Confoo, il s’agit même d’une suite de ce que j’ai pu partager l’année dernière autour de l’OpenData. Le déroulé était ponctué de fragments de Python que je n’ai pas reproduits ici mais que vous pourrez retrouver sur le support.

1. Données ouvertes

Data.gouv.fr 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.

Je participe à son évolution depuis bientôt deux ans.

2. Données exploitables

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.

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.

3. Données compréhensibles

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.

Il est parfois pertinent de proposer une interface simplifiée à une documentation PDF de plusieurs centaines de pages.

4. Données interopérables

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 GeoHisto pour le diff du Code Officiel Géographique de l’INSEE ou avec Ulysse pour traiter le fichier volumineux du SIRENE.

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.

5. Données requêtables

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 sécateur nous permettrait de réaliser ceci de manière asynchrone et de proposer des liens vers des sous-ensembles propres à des territoires par exemple.

Lorsque le fichier est trop volumineux, il est possible de fournir les outils pour réaliser cela de manière relativement performante.

6. Données conviviales

Parfois le simple fait de proposer un sous-ensemble 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.

Encore une fois, la documentation est critique 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.

7. Données résilientes

La rapidité avec laquelle la Maison Blanche a vidé son portail opendata soulève forcément des questions (cache) 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 git permet de les répliquer (et de les enrichir) à l’infini tout en conservant l’historique des modifications apportées.

Il y aurait beaucoup à faire à partir de git-lfs ou dat par exemple. Je ne suis pas loin de prendre le temps de faire ça en tant que citoyen à partir de l’API.

8. Données pérennes

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 GeoHisto et l’évolution des communes ainsi qu’avec l’historique des entreprises 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.

Dans le cas des départements, cela m’a permis de revoir mon Histoire d’une manière pratique et assez ludique.

9. Gouvernance ouverte

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 a priori 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.

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.

10. Biens communs

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.

La libération d’une donnée est un lâcher-prise progressif.

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.

Administration ?

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 bien commun en lui-même mais le faire en commun qui nous permet de vivre en commun.

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.

Confrontation Constructive ou Tension Constructive - l’État et les Communs (cache)

Il y avait une dizaine de personnes durant la session et voici les retours proposés par Confoo dans l’heure qui suit (!) par email.

★ Web developer

22 February, by David Larlet[ —]

what is a web developer? How do you define one? What knowledge and skills does it take to be one?

To me, a web developer is a programmer who is not only able to write HTML, CSS, and JavaScript by hand, but also has a deep understanding of what browsers can do to that code.

What is a web developer? (cache)

To me, a web developer is a human with enough empathy, humility and practicality to publish resilient and usable webthings. Even better if s·he is part of an inclusive team focused on value(s).

And now I’ll have to define each term.

Human because if you forget this simple fact you are not considering the culture, the experience, the relationships or even the mood of the person you are talking about.

Empathy because you have to care about yourself, about your peers and about your users all day long. Preserving the motivation of all these people to achieve their respective tasks is key and partly depends on you.

Humility because you have to accept the futility of what you are developing for. You have to accept the obsolescence of your knowledge. You have to try, learn, fail, share. And try again.

Practicality because sometimes you have to put your ego, your best practices, your purity aside (hopefully) for a short amount of time and keep going. Better having room for improvement on a public product than working on a perfect private vaporware.

Resilient by using tools that last and are accepted by the team. It may not be pertinent though but it has to be explicit in this case.

Usable by making fast and accessible products, otherwise coding is “just adding bugs to an empty text file” to quote Louis Srygley. A web developer has to understand the biological complexity of the Web.

Webthing because the definition of a website or a webapp is not anymore pertinent. And that is a good thing. Defining is not important after all. Oh wait!

Inclusive team in order to develop inclusive products.

Value(s) both to focus on what is delivered and why.

All that being said, is it really relevant to know how to “write HTML, CSS, and JavaScript by hand”? I’m not sure it really matters and it probably changes from one developer to another. It’s part of the pleasure for me to have as few as possible layers between what I type and what is being finally rendered because I like that simplicity. An editor, a few lines of code, a browser and something understandable happens. An Electron app, yarn install, webpack […] and something magic happens.

And I’m tired of debugging magic, it’s not part of my definition.

★ Politique et reliance

21 February, by David Larlet[ —]

Ainsi de la formation scolaire : plus on s’oriente vers la fonction pratique, technique, adaptée au monde moderne, et plus on interdit toute connaissance vraie, toute réflexion, toute prise de conscience par l’adaptation préalable. L’enseignement des jésuites de 1830 me parait bien plus apte à cela que le plus moderne et pédagogique de nos enseignements audiovisuels qui n’est jamais rien d’autre qu’un mécanisme d’adaptation pure et simple à la société et donc interdit a priori toute prise de conscience et toute réflexion. Il en est de même en ce qui concerne l’information. Il ne s’agit pas de plus informer le citoyen. Il ne l’est déjà que trop. Il est faux que le citoyen très informé soit plus apte… il est plongé dans l’actualité, présente le type même de l’illusion politique, et se trouve plus facilement livré à la propagande. Bien entendu nous ne voulons pas dire par là qu’il faut supprimer enseignement et information, mais simplement tels qu’ils sont conçus (et j’entends par là les plus ultimes pointes du progrès pédagogique et de la bonne information), ils ne peuvent que préparer l’homme à se gaver d’illusion. Le connaître et le comprendre ne peuvent être le fait que de la personne privée, et non de l’être social. C’est ici que réside le malentendu de base.

Il nous faut bien évidemment savoir que « le sujet de la pratique politique et la personne privée sont le même », mais le sujet de la pratique politique ne peut être qu’une personne privée existant en tant que telle et se livrant en tant que telle à l’exercice politique : il s’agit d’un homme conscient de soi avant d’être responsable de la vie publique, et il s’agit dans l’enseignement et dans l’information de permettre la création du premier et non du second.

L’illusion politique par Jacques Ellul.

Merci Thomas pour ce livre que je lis avec assiduité (sur le trône, je le con-fesse (ça commence bien cet exercice). Il a sur moi l’effet d’un pharmakon, rassurant de se sentir moins seul et déprimant de voir que la situation a si peu évoluée en 40 ans. Tiens d’ailleurs en parlant de déprime, je n’ai toujours pas répondu à Cascador sur mon manque de distinction entre le burn-out et le bore-out. Ils ont pour moi tout deux la même origine qui est un manque d’écoute de soi et d’identification des burn-in et bore-in annonciateurs. Je me disais l’autre jour que le sport m’aide beaucoup en ce sens, je ne veux surtout pas écouter de musique dans ces moments là car ils me permettent d’être à l’écoute de mon corps et de mon esprit.

Par triple association d’idée, j’en viens à penser à Aurélien. Je n’arrive pas à réagir à ses récents articles et j’ai du mal à en identifier les causes. Peut-être vouloir rester accessible, peut-être l’incapacité d’atteindre ce niveau. Je continue de réfléchir à l’éthique des algorithmes vs. la morale de leurs implémentations. La réflexion est comme une marée dont les idées fluctuent avec le ressac. J’ai cette même approche avec le Cercle des diodes (cache) (à distance) qui consiste à réfléchir ensemble en jouant un rôle. Si les sujets « Peut-il y avoir rencontre à distance ? » et « Tout est-il politique ? » ont été traités très rapidement, ils ne cessent de se rappeler à moi au gré d’insomnies.

Pour moi, en une première approche très générale, la reliance possède une double signification conceptuelle :

  1. l’acte de relier ou de se relier : la reliance agie, réalisée, c’est-à-dire l’acte de reliance ;

  2. le résultat de cet acte : la reliance vécue, c’est-à-dire l’état de reliance.

Reliance, déliance, liance : émergence de trois notions sociologiques (cache)

Je me souviens d’Élodie qui souhaitait introduire la reliance comme valeur de scopyleft. Ou peut-être était-ce lors d’une autre discussion, difficile de savoir. Il faudrait que je prenne de ses nouvelles et lui faire savoir que certaines graines continuent de germer longtemps après son passage. Et si c’étaient les défaillances de la mémoire qui permettaient d’affaiblir et de renforcer les liens ? On s’enrichit d’un côté, on encaisse de l’autre et on progresse ainsi en essayant de survivre.

Dans résilience il y a lien.

À force d’écrire sur du papier, j’ai mal au poignet gauche. Heureusement que je me suis fait un entorse à droite, j’aurais été frustré de ne plus pouvoir écrire du tout. Bientôt rééducation avec sa numérisation ?

Texte rédigé lors d’un exercice d’écriture libre (cache) ce qui explique le fouillis incompréhensible de mes pensées, publié tel quel après quelques jours pour mémoire. Une fois re…lié.

PS : si vous êtes en tension tout comme moi, j’abrège votre souffrance), intéressant de constater qu’à l’écrit je n’ai pas eu de problème à l’oublier, je me demande si ce TOC est sur-représenté chez les développeurs :-).

0 | 10 | 20

mirPod.com is the best way to tune in to the Web.

Search, discover, enjoy, news, english podcast, radios, webtv, videos. You can find content from the World & USA & UK. Make your own content and share it with your friends.

HOME add podcastADD PODCAST FORUM By Jordi Mir & mirPod since April 2005....