Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
index.sh (34923B)
1 #! page 2 title: Kun, un outil de sondage 3 author: Arthur Pons, Pierre Noro 4 description: Génèse, fonctionnement et utilité de Kun, un outil pour faire des sondages notamment pour la prise de rendez-vous 5 publication: 2022-12-21 6 sectionmd: main 7 8 9 Du mot finlandais pour "Quand" comme dans "On se voit quand ?", Kun est un 10 outil permettant de faciliter la prise de rendez-vous à distance pour des coûts 11 humains, techniques et financiers faibles. Sur une idée et une implémentation 12 originale de Marc Chantreux. Merci à Pierre Noro pour la relecture. 13 14 ## Enoncé du problème 15 16 Vous et une collègue de travail devez vous voir pour discuter d'un sujet 17 relativement urgent. Vous ne vous croiserez pas dans les jours qui viennent et 18 devez donc vous mettre d'accord sur une date à distance. Vous regardez vos 19 disponibilités dans votre agenda et écrivez le mail suivant : 20 21 > Salut, 22 > 23 > Pour le point au sujet de la migration de machin je suis dispo demain 24 > après-midi sinon mardi 26 et jeudi 28 à partir de 15h. 25 > 26 > A plus, 27 > Camille 28 29 Ce à quoi elle répond : 30 31 > Bonjour, 32 33 > C'est ok pour moi mardi mais plutôt 15h15, j'ai réunion de pôle jusqu'à 15 34 > et ça déborde souvent. 35 > 36 > A mardi, 37 > Sasha 38 39 Puis : 40 41 > Aucun souci, à plus ! 42 > 43 > Camille 44 45 Cet échange est banal mais il contient de nombreuses étapes et informations. 46 Camille a communiqué son but. Elle a proposé trois dates sous plusieurs formats 47 différents. "Demain après-midi" est une date assez floue relative à la date 48 d'envoi du mail. "mardi 26 et jeudi 28 à partir de 15h." est plus précise, en 49 supposant que le contexte rende l'année et le mois évidents. Sasha a elle amendé 50 la demande et reçu une réponse favorable. Le rendez-vous est pris, ce sera 51 mardi 28 15h15. 52 53 On constate que malgré les ambiguités et la modification d'une des dates 54 proposées, l'échange s'est bien passé. Cela est probablement dû à deux choses. 55 Premièrement l'humain est incroyablement performant - du moins par rapport à 56 une machine - quand il s'agit gérer des données et situations ambiguës. Cela 57 peut induire en erreur ou ralentir la prise de décision mais la présence de 58 deux formats de dates ambiguës et différents ne représente pas d'obstacle 59 majeur à la prise de rendez-vous. Le compromis sur l'heure de début de la 60 réunion non plus, il est raisonnable et justifié. Deuxièmement, le rendez-vous 61 ne se fait qu'entre deux personnes. Nous avons toutes et tous fait l'expérience 62 de l'explosion de la complexité de notre problème en fonction du nombre de 63 personnes impliquées. Non seulement la quantité de créneaux disponibles sera au 64 mieux équivalente et presque toujours plus faible, mais les soucis d'ambiguïté, 65 de compromis et d'éventuelles erreurs qui n'étaient que de simples détours dans 66 une conversation fluide deviennent des casses-têtes. 67 68 La solution à ce problème a été apportée par des outils webs de planification, 69 largement popularisée par [Doodle] et son alternative libre [Framadate](https://framadate.org)[^1]. Ces outils prennent une approche 70 technique et, disons le, très dirigiste. Le problème de l'ambigüité est résolu 71 en proposant des interfaces web graphiques dans lesquelles l'utilisateurice 72 (utilisateur et utilisatrice en un mot) ne peut qu'insérer des données 73 correctes et non ambiguës. Les sondages ainsi créés doivent être stockés durant 74 une certaine durée afin que les destinatairices puissent y accéder et 75 éventuellement voir les réponses des autres. Pour corriger ses erreurs le 76 service doit pouvoir générer un état qui se souvient de chaque réponse et, a 77 minima, un lien pour y retourner quand ce n'est pas un système complet de 78 gestion de compte. Si le service possède un système de gestion de compte, une 79 partie du travail est déjà fait pour synchroniser les sondages avec des 80 calendriers existants et préremplir les réponses. Et ainsi de suite. 81 82 Bien que ces outils aient pu être simples par le passé, ils sont aujourd'hui 83 remplis de fonctionnalités complexes. Cela a un coût, Doodle emploie 3600 84 personnes (même si l'on imagine bien qu'elles ne sont pas toutes 85 informaticiennes). Framadate est paraît il difficile à maintenir, framasoft ne 86 souhaite plus le faire évoluer. Même si dans ce registre il y a très évidemment 87 de plus gros poissons auxquels s'attaquer on peut se poser la question de 88 l'impact environnemental de ces services qui, comme le reste du secteur du 89 numérique, nécessitent matériel et énergie. 90 91 De plus, leurs interfaces figées et graphiques génèrent de la dépendance et 92 nuisent à l'accessibilité. 93 94 Pour trouver une date de réunion plus ou moins tout le monde saurait se mettre 95 d'accord sur les données à manipuler et les critères de décision à privilégier. 96 Du moins dans le monde du travail français je pense que ce sont des choses 97 assez consensuelles. Et pourtant vous êtes dépendants ou dépendante puisque ces 98 éléments sont choisis pour vous par des personnes qui vous sont éloignées 99 (physiquement, culturellement...) voir pas tout à fait humaines quand ce sont 100 des organisations. Ce n'est pas nécessairement une mauvaise chose, il est tout 101 à fait raisonnable d'accepter d'être dépendant des constructeurs d'IRM quand 102 cet outil peut vous sauver la vie en permettant aux médecins de prévenir un 103 cancer du cerveau. C'est moins raisonnable quand vos habitudes de travail ou 104 celles d'une association locale sont remises en questions parce que Doodle a 105 unilatéralement pris la décision de changer totalement d'interface graphique 106 (un éventuel cas d'étude sur ce sujet à venir) ou d'empêcher un ou une 107 utilisateurice de répondre pour un ou une autre qui n'aurait pas d'ordinateur 108 ou momentanément pas de réseau. Quid du temps perdu à se former, se déformer, 109 se reformer à chaque changement, à devoir jongler avec les abstractions 110 visuelles d'un service pour en appréhender de nouvelles sur un autre ? Qu'en 111 est-il du stress induit par le remplacement d'un service par un autre parce 112 que, face à la complexité rampante des fonctionnalités, la pression de se 113 conformer aux standards graphiques des GAFAMs et les moyens limités des 114 organisations notamment publiques, il est préférable de maintenir quelque chose 115 d'aussi bête qu'un logiciel de prise de rendez-vous à une échelle nationale 116 (voir Evento pour l'ESR) ? 117 118 Au sujet de l'accessibilité le sujet est sans appel. Les interfaces graphiques 119 de ces services font appel à nos représentations physiques du monde (cf le 120 calendrier dans Doodle). C'est un joli raccourci mais elles ne sauraient se 121 rendre palpable à, par exemple, une personne avec une déficience visuelle à 122 moins d'y aller à grand coup de CSS et de balise HTML spécialisées, rajoutant 123 ainsi une couche de complexité supplémentaire. On peut également noter que la 124 création et la réponse à ces sondages est assez lente et requiert de beaucoup 125 cliquer (ce qui peut également être une souci d'ergonomie chez certaines 126 personnes). 127 128 ## Quelques principes pour Kun 129 130 Nous pourrions ici nous demander s'il n'y a pas d'autres chats à fouetter. 131 Certainement. C'est justement le rapport entre service rendu (assez anodin et 132 simple) et complexité (élevée) de cette catégorie d'application qui devrait 133 nous mettre la puce à l'oreille : on peut mieux faire. 134 135 Il ne s'agit pas d'essayer de faire un Doodle-like mais mieux. Trop souvent les 136 productions des milieux alternatifs numériques, notamment les libristes, se 137 sont faites en "alternative à", toujours en prenant un objet préexistant comme 138 référence sans réaliser que cela implique d'en hériter le cadrage des besoins, 139 la vision de ce à quoi l'informatique devrait nous servir. Pierre Noro 140 l'explique bien dans un article dédié à la question du [cloud souverain]. 141 142 Il s'agit de reconnaître qu'aujourd'hui il n'existe pas de juste-milieu entre 143 la conversation textuelle déconstruite entre deux personnes et le logiciel 144 ultra complexe qui essaye de tout faire à lui tout seul. Pour qu'il soit 145 réellement plus utile que la première option mais reste durablement plus simple 146 que la seconde, il faut que notre système évite au moins d'avoir les même 147 défauts que les Doodle-like. A savoir : 148 149 1. Qu'il ne se rende utile que là où l'informatique excelle, c'est-à-dire le 150 formalisme et l'expression de données quantitatives pour aider les 151 humains à partir d'une certaine échelle 152 153 Je pense qu'il convient ici de mobiliser la citation de Peter 154 Salus au sujet de la philisophie Unix : 155 156 >"Write programs that do one thing and do it well. Write programs to work 157 >together. Write programs to handle text streams, because that is a universal 158 >interface." 159 160 Et la règle n°5 de Rob Pike à propos du développement en C : 161 162 >"Rule 5. Data dominates. If you’ve chosen the right data structures and 163 >organized things well, the algorithms will almost always be self-evident. Data 164 >structures, not algorithms, are central to programming." 165 166 Ce que ces citations nous enseignent c'est qu'il faut d'abord se préoccuper de 167 la donnée qui est manipulée. C'est en la formalisant que les instructions de 168 notre programme deviendront évidentes. 169 170 En réalité ce que l'utilisateurice fait quand il ou elle rédige son mail ou 171 construit son Doodle c'est faire une liste de dates. Si l'on reprend le premier 172 mail, en partant du principe qu'il est envoyé le jeudi 21 avril 2022 et que 173 l'après-midi commence à 14h, Camille a proposé la liste de dates suivante : 174 175 Le vendredi 22 avril 2022 à 14h, fuseau horaire de la France métropolitaine 176 Le mardi 26 avril 2022 à 15h, fuseau horaire de la France métropolitaine 177 Le jeudi 28 avril 2022 à 15h, fuseau horaire de la France métropolitaine 178 179 Nous avons déjà remarqué plus tôt qu'entre un petit nombre de personnes et dans 180 un contexte particulier il n'y avait pas besoin d'être aussi précis entre deux 181 humains - ce qui est, quand on y pense, la démonstration remarquable de 182 l'intelligence des humains par rapport aux machines. Cependant, écrit comme ça, 183 c'est aussi la démonstration que les opportunités de se tromper sont multiples 184 surtout si les invité·e·s sont nombreux ou nombreuses. Est-ce que tout le monde 185 vit dans le même fuseau horaire ? Est-ce que tout le monde parle la même langue 186 ? Est-ce que tout le monde a l'habitude d'écrire ou de lire les dates sous ce 187 format ? La gestion du temps et sa représentation en informatique est un sujet 188 notoirement complexe, grand pouvouyeur de [memes]. 189 190 Il en ressort que la meilleure chose que l'on puisse faire pour notre problème 191 est certainement de mettre tout le monde d'accord sur le format de date à 192 s'échanger. C'est, je pense, la réelle plus-value des Doodle-like. Il est 193 possible de se mettre oralement d'accord sur le format des dates, par exemple 194 [ISO_8601]. 195 196 Pour minimiser les erreurs et se donner la possibilité d'automatiser certaines 197 tâches, il peut être intéressant de se reposer sur un outil informatique 198 existant. Afin de ne pas ajouter de complexité dans ce monde, d'être certain de 199 prendre tous les cas en compte et d'utiliser un outil léger pouvant fonctionner 200 sur presque tous les ordinateurs du monde, je propose de partir sur ce que 201 l'utilitaire `date` prend en [argument]. J'y reconnais un grand travers, le 202 logiciel peut imprimer des dates dans plusieurs formats différents en fonction 203 de LC_TIME de la machine mais n'accepte que de l'anglais en entrée. Ainsi : 204 205 date -f- 206 next monday +17 hours 207 lun. 18 avril 2022 17:00:00 CEST 208 lundi prochain +17 heures 209 date: invalid date 'lundi prochain +17 heures' 210 211 Ce qui est assez cocasse puisque cela veut dire que si votre LC_TIME n'est pas 212 anglophone, `date` ne pourra pas lire ses propres sorties par défaut. Si l'on 213 est prêt·e à faire fi de ce souci et à utiliser `date`, c'est un monde de 214 possibilités qui s'ouvre à nous avec pour seul coût celui de s'être mis 215 d'accord sur notre façon d'écrire les dates. 216 217 Aussi, le comportement de `date` n'est pas constant à travers les UNIX. TODO retrouver l'article qui en parle. 218 219 2. Qu'il puisse fonctionner sans "service", de façon totalement décentralisé 220 221 Très bien, nous voulons manipuler des dates qui soient lisibles et puissent 222 être produites par `date`. Et alors ? Comment utilise-t-on ça ensemble ? 223 Comment évite-t-on de recréer un service centralisé à la Doodle avec `date` qui 224 tourne dans le backend ? 225 226 Une personne veut organiser un rendez-vous avec 5 autres. Ces personnes se sont 227 préalablement mises d'accord pour s'envoyer des dates compatibles avec `date`. 228 La personne à l'initiative du rendez-vous écrit : 229 230 > Salut à toutes et à tous, 231 > 232 > Voici les créneaux dispos de la 511 pour le groupe de travail "Un centre de 233 > calcul sans acheter de matériel neuf ?" 234 > 235 > 2022-04-18T09:00+02:00 236 > 2022-04-18T10:00+02:00 237 > 2022-04-18T11:00+02:00 238 > 2022-04-19T09:00+02:00 239 > 2022-04-19T10:00+02:00 240 > 2022-04-19T11:00+02:00 241 > 2022-04-20T09:00+02:00 242 > 2022-04-20T10:00+02:00 243 > 2022-04-20T11:00+02:00 244 > 245 > Bonne journée, 246 > Camille 247 248 Le format peut paraître opaque au premier regard mais est relativement simple. 249 Les créneaux sont les 18, 19 et 20 avril à 9h ou 10h ou 11h sur le fuseau 250 horaire +2h par rapport à l'UTC. Le message n'a plus aucune ambiguïté, est (à 251 peu près) lisible pour un humain et assimilable par `date`. Il est également 252 aussi accessible que le mail lui-même. Pour une personne en situation de 253 handicap, elle n'a pas à se soucier de rendre le site Doodle accessible en plus 254 de son client mail. Si le format est trop difficile à lire (ou à entendre 255 donc), il peut parfaitement être appréhendé par `date`. Par exemple, si votre 256 client mail est configuré de sorte à ouvrir les mails avec vim, vous pouvez 257 poser le curseur sur le bloc de date, le sélectionner avec "vip" appliquer un 258 filtre à la sélection avec "!" et taper la commande "date -f-" ce qui donne 259 chez moi : 260 261 lun. 18 avril 2022 09:00:00 CEST 262 lun. 18 avril 2022 10:00:00 CEST 263 lun. 18 avril 2022 11:00:00 CEST 264 mar. 19 avril 2022 09:00:00 CEST 265 mar. 19 avril 2022 10:00:00 CEST 266 mar. 19 avril 2022 11:00:00 CEST 267 mer. 20 avril 2022 09:00:00 CEST 268 mer. 20 avril 2022 10:00:00 CEST 269 mer. 20 avril 2022 11:00:00 CEST 270 271 On peut formatter la date comme l'on veut, avec date -f- +'author: %d %B à %Hh%M' 272 par exemple : 273 274 lundi 18 avril à 9h00 275 lundi 18 avril à 10h00 276 lundi 18 avril à 11h00 277 mardi 19 avril à 9h00 278 mardi 19 avril à 10h00 279 mardi 19 avril à 11h00 280 mercredi 20 avril à 9h00 281 mercredi 20 avril à 10h00 282 mercredi 20 avril à 11h00 283 284 Peu importe comment les destinatairices envisagent de lire ces dates, ils 285 peuvent répondre au sondage simplement en supprimant les lignes qui ne leur 286 conviennent pas. Il est par contre, nécessaire pour le traitement suivant de 287 renvoyer un format que `date` puisse lire. Un exemple de réponse pourrait être 288 : 289 290 > Salut Camille, 291 > 292 > Je peux être là sur ces créneaux : 293 > 294 > 2022-04-18T09:00+02:00 295 > 2022-04-18T10:00+02:00 296 > 2022-04-19T09:00+02:00 297 > 2022-04-20T09:00+02:00 298 > 2022-04-20T10:00+02:00 299 > 300 > A plus, 301 > Sasha 302 303 Pour combiner format plus lisible et rédaction simple de la réponse on peut 304 appliquer un filtre zsh du type "cat > truc; paste truc =(date -f truc);rm 305 truc" TODO trouver une meilleure solution 306 307 2022-04-18T09:00+02:00 lun. 18 avril 2022 09:00:00 CEST 308 2022-04-18T10:00+02:00 lun. 18 avril 2022 10:00:00 CEST 309 2022-04-18T11:00+02:00 lun. 18 avril 2022 11:00:00 CEST 310 2022-04-19T09:00+02:00 mar. 19 avril 2022 09:00:00 CEST 311 2022-04-19T10:00+02:00 mar. 19 avril 2022 10:00:00 CEST 312 2022-04-19T11:00+02:00 mar. 19 avril 2022 11:00:00 CEST 313 2022-04-20T09:00+02:00 mer. 20 avril 2022 09:00:00 CEST 314 2022-04-20T10:00+02:00 mer. 20 avril 2022 10:00:00 CEST 315 2022-04-20T11:00+02:00 mer. 20 avril 2022 11:00:00 CEST 316 317 On supprime les lignes que l'on ne veut pas puis on nettoie avec `cut -f1` : 318 319 2022-04-18T09:00+02:00 320 2022-04-19T11:00+02:00 321 2022-04-20T09:00+02:00 322 2022-04-20T10:00+02:00 323 2022-04-20T11:00+02:00 324 325 Admettons que Camille reçoive les quatre autres réponses. Pour compiler les 326 résultats elle peut simplement les agréger dans un fichier texte en faisant, 327 par exemple, dans vim, "!cat >> hpc_sobre"). Ce fichier pourrait ressembler à 328 ceci : 329 330 2022-04-18T09:00+02:00 331 2022-04-18T10:00+02:00 332 2022-04-18T11:00+02:00 333 2022-04-19T09:00+02:00 334 2022-04-19T10:00+02:00 335 2022-04-19T11:00+02:00 336 2022-04-20T09:00+02:00 337 2022-04-20T10:00+02:00 338 2022-04-20T11:00+02:00 339 2022-04-18T10:00+02:00 340 2022-04-19T09:00+02:00 341 2022-04-19T11:00+02:00 342 2022-04-20T09:00+02:00 343 2022-04-18T09:00+02:00 344 2022-04-18T11:00+02:00 345 2022-04-19T09:00+02:00 346 2022-04-19T10:00+02:00 347 2022-04-19T11:00+02:00 348 2022-04-20T09:00+02:00 349 2022-04-20T10:00+02:00 350 2022-04-20T11:00+02:00 351 2022-04-18T11:00+02:00 352 2022-04-18T09:00+02:00 353 2022-04-18T10:00+02:00 354 2022-04-18T11:00+02:00 355 2022-04-19T09:00+02:00 356 2022-04-19T10:00+02:00 357 2022-04-19T09:00+02:00 358 2022-04-20T09:00+02:00 359 2022-04-20T10:00+02:00 360 2022-04-20T11:00+02:00 361 362 Nous visualisons bien ici le souci que représente le traitement humain de ces 363 données, même si elles étaient sous un format de date plus lisible. C'est 364 exactement dans ce genre de cas que l'informatique nous est utile, d'autant 365 plus que notre choix de format de date permet d'automatiser le traitement. 366 367 Par exemple, si l'on retient ce qui se fait souvent c'est à dire obtenir la 368 date à laquelle plus le gens sont disponibles il nous suffit de trier le 369 contenu et de compter les lignes identiques. D'abord un `sort`, qui renvoie : 370 371 2022-04-18T09:00+02:00 372 2022-04-18T09:00+02:00 373 2022-04-18T09:00+02:00 374 2022-04-18T10:00+02:00 375 2022-04-18T10:00+02:00 376 2022-04-18T10:00+02:00 377 2022-04-18T11:00+02:00 378 2022-04-18T11:00+02:00 379 2022-04-18T11:00+02:00 380 2022-04-18T11:00+02:00 381 2022-04-19T09:00+02:00 382 2022-04-19T09:00+02:00 383 2022-04-19T09:00+02:00 384 2022-04-19T09:00+02:00 385 2022-04-19T09:00+02:00 386 2022-04-19T10:00+02:00 387 2022-04-19T10:00+02:00 388 2022-04-19T10:00+02:00 389 2022-04-19T11:00+02:00 390 2022-04-19T11:00+02:00 391 2022-04-19T11:00+02:00 392 2022-04-20T09:00+02:00 393 2022-04-20T09:00+02:00 394 2022-04-20T09:00+02:00 395 2022-04-20T09:00+02:00 396 2022-04-20T10:00+02:00 397 2022-04-20T10:00+02:00 398 2022-04-20T10:00+02:00 399 2022-04-20T11:00+02:00 400 2022-04-20T11:00+02:00 401 2022-04-20T11:00+02:00 402 403 Puis un `uniq -dc` 404 405 3 2022-04-18T09:00+02:00 406 3 2022-04-18T10:00+02:00 407 4 2022-04-18T11:00+02:00 408 5 2022-04-19T09:00+02:00 409 3 2022-04-19T10:00+02:00 410 3 2022-04-19T11:00+02:00 411 4 2022-04-20T09:00+02:00 412 3 2022-04-20T10:00+02:00 413 3 2022-04-20T11:00+02:00 414 415 Finalement un autre `sort` mais dans le sens décroissant, avec `-r` 416 417 5 2022-04-19T09:00+02:00 418 4 2022-04-20T09:00+02:00 419 4 2022-04-18T11:00+02:00 420 3 2022-04-20T11:00+02:00 421 3 2022-04-20T10:00+02:00 422 3 2022-04-19T11:00+02:00 423 3 2022-04-19T10:00+02:00 424 3 2022-04-18T10:00+02:00 425 3 2022-04-18T09:00+02:00 426 427 Tout cela peut évidemment se combiner, la commande magique serait alors 428 429 sort | uniq -dc | sort -r | head 430 431 Je dis "magique" mais elle n'a pas grand chose de magique. Ces utilitaires sont 432 bien documentés et, je pense, beaucoup moins "magiques" que le monde du web et 433 ses interfaces. Même si je reconnais que leurs codes source ne sont pas des 434 plus [lisibles]. Certains groupes y travaillent comme [busybox]. 435 436 On constate avec nos yeux que la date du 19 avril à 9h convient à tout le monde 437 sauf une personne. A nous de faire ce que l'on veut de cette information. 438 439 Ce qui est, à mon sens, remarquable dans ce scénario est qu'il met en lumière 440 la puissance d'un simple accord sur le format des données. Si un consensus est 441 trouvé sur un format de donnée qui soit textuel et facilement manipulable par 442 les outils Unix standards alors rien ou presque rien n'a besoin d'être 443 développé pour, dans un cas assez simple comme le nôtre, prendre un 444 rendez-vous. C'est ça le vrai "no code", un outil qui n'offre réellement pas de 445 code. Non pas du code supplémentaire offrant une abstraction tellement forte 446 que l'on croit pouvoir l'ignorer jusqu'à ce que l'on se rende compte que la 447 plateforme ne se conforme pas à nos attentes et qu'il faille soudainement 448 l'analyser sans l'avoir écrit. 449 450 La nature textuelle des données et la présence en local des outils nécessaires 451 à leur traitement permet de n'avoir recours qu'au mail comme moyen de 452 communication, sur des infrastructures déjà existantes et là où les habitudes 453 des utilisateurices ne sont généralement pas à construire. 454 455 Nous avons créé un "système" décentralisé, une technique que tout le monde peut 456 s'approprier, plutôt qu'un service dont nous serions dépendant·e·s. Nous pouvons 457 remercier l'ubiquité et la simplicité de la rédaction et la lecture des mails 458 pour cela. Ce ne sont heureusement pas encore devenues des activités jugées 459 trop compliquées pour mamie et papi à qui on aime donner un ipad parce que 460 c'est "convivial". 461 462 Aparté à ce sujet 463 464 > Ma grand-mère sait un petit peu se servir de sa tablette, elle sait lire et 465 > envoyer des mails puisque ce sont souvent les deux première choses que l'on 466 > apprend. Elle peut donc utiliser Kun au moins en tant que participante au 467 > sondage. Peut-être qu'elle saurait utiliser Doodle mais si c'est le cas c'est 468 > parce que le temps qu'elle aura passé à se faire à la grammaire des designers 469 > de la Silicon Valley (Doodle est européen je sais) à travers l'utilisation 470 > d'iOS et de quelques sites internet modernes l'a familiarisé avec ces concepts 471 > et non pas parce que les designers sont des magiciens qui ont tout compris du 472 > fonctionnement du cerveau des personnes âgées. Je pense que le temps et 473 > l'énergie qu'il faut pour apprendre à lire et écrire un mail est inférieur au 474 > temps qu'il faut pour comprendre les interfaces web, même si elles tendent à 475 > toutes se ressembler. J'ai le sentiment que la majorité des personnes qui 476 > pensent que ce genre d'interfaces sont plus adaptées à des personnes éloignées 477 > du numérique n'ont 478 > 479 > * pas passé suffisamment de temps avec les personnes éloignées du numérique 480 > * en sont tellement convaincues qu'elles n'enregistrent et ne mesurent pas les 481 > cas contraires auxquels elles sont exposées 482 > * confondent leur propre adaptation à ces interfaces avec quelque chose 483 > d'universel. 484 > 485 > Je précise que je ne suis moi-même qu'assez peu au contact de ce genre de 486 > publics et que je ne connais rien à la science des interfaces, ce n'est pas 487 > mon domaine d'activité. J'imagine que j'aurais beaucoup à apprendre de la 488 > recherche menée sur ce sujet et que je suis au sommet de la courbe de 489 > Dunning-Kruger. Mon avis s'est construit en constatant plusieurs fois l'exact 490 > inverse de ce qui semble être pourtant considéré comme vrai par une majorité à 491 > savoir des personnes ayant beaucoup de mal à s'adapter aux interfaces 492 > graphiques modernes. Cela reste anecdotique. Au final, je sais pas, j'ai 493 > simplement l'intuition que c'est beaucoup plus compliqué que "iOS et jolis 494 > boutons et trucs qui bougent = tout le monde comprend instantanément et ligne 495 > de commande, texte et truc qui bougent pas = choses ésotériques impénétrables 496 > à moins d'être un hackerman". 497 498 Fin d'aparté 499 500 Attention, cela ne veux pas dire que notre système ne peut pas être transformé 501 en service centralisé. Il est tout à fait possible de le faire et même assez 502 simple étant donné sa faible complexité. Il suffirait de générer quelques pages 503 webs avec un formulaire, recueillir les réponses sur un serveur, faire 504 automatiquement tourner la moulinette qui trouve la meilleure date et publier 505 une page avec le résultat. Si le sondage se tient entre des personnes ayant 506 toutes accès à un serveur distant on peut directement déposer sa réponse au 507 sondage via ssh, faire tourner la moulinette et consulter les résultats 508 soit-même. Peut-être est-il même possible de mettre le fichier dans un dépôt 509 git pour suivre les modifications et "garantir" la sécurité du sondage ? 510 511 Sa nature lui offre une affordance d'encouragement à l'utilisation d'outils 512 simples, manipulant du texte ligne par ligne. Autrement dit les outils Unix. 513 Ce n'est pas fait intentionnellement mais plutôt parce que les problèmes qui 514 méritent d'être en partie résolus par des outils numériques sont souvent de 515 nature à pouvoir être réduit en une collecte et un traitement linéaire de 516 données textuelles. Du moins quand on utilise beaucoup les outils Unix, c'est 517 comme cela que l'on est tenté de les aborder. 518 Ou alors cela fait parti de mon plan machiavélique pour inciter le maximum de 519 personnes à passer sous des distributions Unix et ainsi participer à résoudre 520 les soucis démocratiques et environnementaux liés au numérique. 😈 521 522 Côté performance la création et les réponses aux sondages vont dépendre de 523 l'infrastructure de mails si l'on opte pour ce canal. Ce n'est pas la chose la 524 plus fiable qui soit mais au moins on peut être certain que ça ne va pas 525 disparaître de si tôt et que l'on a pas à se soucier de l'hébergement (mais 526 une pensée à celles et ceux qui gèrent des serveurs mails donc). En utilisant 527 Kun, l'industrie entière du numérique travaille H24 à rendre votre service de 528 prise de rendez-vous opérationnel :) 529 530 Pour l'éventuel traitement automatique des réponses c'est hyper rapide. J'ai 531 dupliqué 1 000 000 fois le fichier de réponse précédent. Le résultat est un 532 fichier de 687MO contenant 31 310 000 lignes. Voici le résultat sur un pc 533 équipé d'un intel core i5 7ème génération : 534 535 time sort test_pref | uniq -dc | sort -r | head 536 5050000 2022-04-19T09:00+02:00 537 4040000 2022-04-20T09:00+02:00 538 4040000 2022-04-18T11:00+02:00 539 3030101 2022-04-20T11:00+02:00 540 3030000 2022-04-20T10:00+02:00 541 3030000 2022-04-19T11:00+02:00 542 3030000 2022-04-19T10:00+02:00 543 3030000 2022-04-18T10:00+02:00 544 3029899 2022-04-18T09:00+02:00 545 sort test_perf 148,60s user 1,49s system 327% cpu 45,853 total 546 uniq -dc 1,92s user 0,19s system 4% cpu 45,852 total 547 sort -r 0,00s user 0,00s system 0% cpu 45,850 total 548 head 0,00s user 0,00s system 0% cpu 45,849 total 549 550 Forcément on s'imagine mal à quoi ça pourrait servir mais c'est simplement pour 551 pouvoir dire, telle une bonne startup, "ça scale" et "tkt on passe à l'échelle 552 crème, notre tech elle est deep". Bah passez mieux à l'échelle que 553 l'infrastrucure mondiale des mails et un traitement de 680 000 réponses par 554 seconde sur mon ordi bof. La comparaison est évidemment bancale, ça ne 555 comprends pas l'écriture du fichier etc. 556 557 ### Discussions et limites 558 559 A partir de là nous pourrions faire le large inventaire de ce que notre système 560 ne permet pas de faire facilement : 561 562 * C'est long et chiant de taper les dates sous quelque format que ce soit 563 564 Marc Chantreux a développé un petit outil en AWK qui permet d'écrire des dates 565 sous la forme 566 567 april 18 21; d+ 1 2; w* 3 568 569 Ce qui va générer la date du 18 avril à 21h de cette année plus celle des deux 570 jours qui suivent même heure, ces trois jours répétés sur les trois semaines 571 qui viennent. Cela donne : 572 573 <<. respl 574 s april 18 21; d+ 1 2; w* 3 575 . 576 april 18 21+0weeks+0days+0hours 577 april 18 21+0weeks+1days+0hours 578 april 18 21+0weeks+2days+0hours 579 april 18 21+1weeks+0days+0hours 580 april 18 21+1weeks+1days+0hours 581 april 18 21+1weeks+2days+0hours 582 april 18 21+2weeks+0days+0hours 583 april 18 21+2weeks+1days+0hours 584 april 18 21+2weeks+2days+0hours 585 586 J'ai étendu le script pour qu'il puisse également gérer les décalages d'heures. 587 C'était très simple malgré mon inexpérience avec awk puisque le script ne gère 588 aucune logique de temps, c'est simplement une réécriture de la ou les lignes 589 qu'on lui donne en entrée. C'est possible grâce à la syntaxe relative de date 590 qui permet d'ajouter ou soustraire des unités de temps (années, jours, secondes 591 etc) à une date donnée avec les opérateurs - et +. 592 Le code se trouve [ici](./respl). 593 594 * Il n'y a pas de moyen évident de corriger une erreur de date, d'amender sa 595 réponse si jamais notre calendrier change 596 597 Si Camille m'envoie un premier mail avec les dates 598 599 2022-04-18T21:00+02:00 600 2022-04-20T21:00+02:00 601 2022-04-26T21:00+02:00 602 2022-04-27T21:00+02:00 603 2022-05-02T21:00+02:00 604 2022-05-04T21:00+02:00 605 606 Puis le lendemain un autre en disant 607 608 Désolé en fait je vais pas pouvoir être là le 26, ceci dit me suis libéré 609 le 25 610 611 2022-04-18T21:00+02:00 612 2022-04-20T21:00+02:00 613 2022-04-25T21:00+02:00 614 2022-04-27T21:00+02:00 615 2022-05-02T21:00+02:00 616 2022-05-04T21:00+02:00 617 618 Je peux toujours chercher le premier bloc de date consécutives dans le fichier 619 de réponse et le remplacer par celui-ci. C'est évidemment plus pratique si le 620 second mail est threadé avec le premier mais c'est une bonne pratique de toute 621 façon. 622 623 TODO donner une tite commande. 624 625 Ce n'est pas parfaitement fiable, peut-être envisager la possibilité d'ajouter 626 un identifiant de la personne après les dates ? Ou utiliser git ? 627 628 * Cela gère des dates précises et non pas des intervales de temps 629 630 En fait si. Si l'on a les réponses suivantes : 631 632 2022-04-18T11:00+02:00 2022-04-18T12:00+02:00 633 2022-04-18T09:00+02:00 2022-04-18T10:00+02:00 634 2022-04-19T10:00+02:00 2022-04-19T11:00+02:00 635 2022-04-20T09:00+02:00 2022-04-20T10:00+02:00 636 2022-04-19T11:00+02:00 2022-04-19T12:00+02:00 637 2022-04-20T10:00+02:00 2022-04-20T11:00+02:00 638 2022-04-19T09:00+02:00 2022-04-19T10:00+02:00 639 2022-04-20T11:00+02:00 2022-04-20T12:00+02:00 640 2022-04-18T10:00+02:00 2022-04-18T11:00+02:00 641 642 `sort` et `uniq` fonctionnent parfaitement bien dessus (je crois, tester les 643 créneaux qui peuvent être à l'intérieur d'autres créaneaux TODO). Si l'on veut 644 utiliser `date` pour modifier le format, en le rendant plus lisible par exemple 645 on peut filtrer le texte précédent : 646 647 sed 's/ /\n/' | date -f- +"author: %d %B à %Hh%M" | paste - - 648 lundi 18 avril à 11h00 lundi 18 avril à 12h00 649 lundi 18 avril à 09h00 lundi 18 avril à 10h00 650 mardi 19 avril à 10h00 mardi 19 avril à 11h00 651 mercredi 20 avril à 09h00 mercredi 20 avril à 10h00 652 mardi 19 avril à 11h00 mardi 19 avril à 12h00 653 mercredi 20 avril à 10h00 mercredi 20 avril à 11h00 654 mardi 19 avril à 09h00 mardi 19 avril à 10h00 655 mercredi 20 avril à 11h00 mercredi 20 avril à 12h00 656 lundi 18 avril à 10h00 lundi 18 avril à 11h00 657 658 Qu'on peut rendre encore plus lisible avec : 659 660 sed 's:\t.*à: -:' | column -ts 'à' 661 lundi 18 avril 11h00 - 12h00 662 lundi 18 avril 09h00 - 10h00 663 mardi 19 avril 10h00 - 11h00 664 mercredi 20 avril 09h00 - 10h00 665 mardi 19 avril 11h00 - 12h00 666 mercredi 20 avril 10h00 - 11h00 667 mardi 19 avril 09h00 - 10h00 668 mercredi 20 avril 11h00 - 12h00 669 lundi 18 avril 10h00 - 11h00 670 671 Bref, on peut imaginer ce que l'on veut, si vous avez un format préféré vous 672 pouvez le créer, en faire un alias et tout exécuter en une fraction de seconde. 673 Il faut simplement se souvenir d'envoyer un format assimilable par `date`. 674 675 * On ne peut pas voir les réponses des autres participant·e·s à moins que 676 tout le monde fasse "reply all" au premier mail 677 678 Nous pouvons nous demander si cela est toujours préférable. Il est généralement 679 possible de désactiver ou activer cette fonctionnalité dans les Doodle-like. 680 681 Dans Doodle, si les résultats du sondages sont ouverts cela veut dire que la 682 réponse d'une personne est rendu visible à tout le monde. Sinon, seule la 683 personne à l'origine du sondage a accès aux réponses (et Doodle aussi n'est-ce 684 pas). Dans notre système les réponses sont dans un mail. Si l'on veut rendre 685 notre réponse accessible à tout le monde, il suffit donc de choisir de 686 "répondre à tous". Sinon on utilise "répondre à". Nous avons recréé la 687 fonctionnalité pour un coût nul. 688 689 Cela à l'avantage supplémentaire de renverser le choix du périmètre de 690 diffusion de ses données. Habituellement c'est l'initiateur du sondage qui 691 choisit de les rendre publiques ou pas, ici les répondants et répondantes 692 restent propriétaires des données qu'ils ou elles génèrent. 693 694 * On ne sait pas qui a répondu quoi et donc on ne peut pas différencier le 695 "poids" donné à chaque réponse 696 697 A la charge du ou de la créateurice du sondage d'ajouter avant ou après chaque 698 date un identifiant par répondant (que ce soit le nom ou un numéro). Il est 699 ensuite possible d'omettre ce champ lors du traitement. 700 701 TODO tester 702 703 * Il n'y a pas de mécanisme d'exclusion de créneau en fonction de son 704 calendrier existant 705 706 Ce type de fonctionnalité est, je pense, à proscrire dans l'élaboration d'un 707 système comme celui-ci. Ce système a un but donné, vouloir fortement 708 l'interfacer avec d'autres systèmes, comme ceux de gestion de calendrier par 709 exemple, ferait prendre le risque d'une sur-spécialisation et d'une complexité 710 non nécessaire. Le risque est d'autant plus grand que les systèmes avec 711 lesquels nous voudrions nous interfacer sont eux très complexes. 712 713 Cela dit la simple stupidité de notre système permet en théorie de l'interfacer 714 avec n'importe quoi. Si une personne ou un groupe de personnes veut le faire, 715 c'est possible. Il ne faut simplement pas que Kun devienne "Un système d'aide à 716 la prise de rendez-vous et aussi qui sait s'authentifier sur un service en 717 ligne et parser du format bidule pour y lire un calendrier et detecter les 718 conflits". 719 720 * Il n'y a pas ou peu de garantis de l'intégrité du vote 721 722 Effectivement, il sera difficile voir impossible de garantir que personne n'ait 723 voté deux fois, que la créateurice du sondage n'ait pas modifié les résultats 724 etc. Nous pourrions investiguer les solutions techniques et/ou 725 organisationnelle pour s'approcher d'une garantie. Ce serait certainement très 726 intéressant. Alternativement nous pouvons estimer que 90% (99% ?) des 727 sondages/votes ne nécessitent pas de telles garanties et qu'il est donc inutile 728 de complexifier l'outil pour répondre à un besoin inexistant. Des besoins de 729 votes numériques garantis intègres existent et nécessitent des outils 730 spécifiques. 731 732 Quoi qu'il en soit pour éclaircir l'adéquation de Kun avec les pratiques 733 habituelles de sondages il faudrait mener des expérimentations en condition 734 réelles à une certaine échelle. Nous espérons pouvoir le faire prochainement. 735 736 [Doodle]: https://fr.wikipedia.org/wiki/Doodle.com 737 [cloud souverain]: https://acteurspublics.fr/articles/pierre-noro-le-cloud-est-avant-tout-un-sujet-politique 738 [memes]: https://i.redd.it/tqxwb35d54n81.jpg 739 [7]: https://i.redd.it/uhboopf6f8u71.jpg 740 [argument]: https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html 741 [ISO_8601]: https://en.wikipedia.org/wiki/ISO_8601 742 [lisibles]: https://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob;f=src/sort.c 743 [busybox]: https://git.busybox.net/busybox/tree/coreutils/sort.c?id=cc7d2e21780c28608b00a4faf0fed297527bcbf4 744 [^1]: En quelque sorte lancé à l'Unistra !