DrShell

De Nybi.cc
Aller à : navigation, rechercher

Présentation du projet

DrShell est un projet visant à réaliser un outil pour aider à comprendre comment marche le CLI (l'interface textuelle classique sous unix). Mais oui mais oui, c'est un projet du lab (même s'il est potentiellement un peu virtuel), pas un projet à propos du lab pour aider à son bootstrap. Désolé, c'était trop pressé alors on abuse de l'infra web du lab honteusement.

Tout part de la constatation qu'enseigner le shell, c'est dur. Le rapport avec le lab? Ben partager le savoir. Et ca va ptet tourner en objets physiques pour faire comprendre les concepts, à voir.

Objectifs 30,000 feets

On veut donc mettre en place des moyens expliquant le fonctionnement des commandes d'une ligne comme on en utilise en console, de façon à

1. motiver les spectateurs/utilisateurs à apprendre cette interface

2. leur permettre comprendre par une expérimentation personnelle et directe comment ca marche

Oui, on parle de trucs comme ceci (en moins con, cet exemple est pourri)

 grep -h TODO `find -name '*.txt'` | sort -n

Identifier les verrous pour les dépasser

Comme expliqué dans le lien ci-dessus, il semble y avoir deux types de complexités à surpasser pour maîtriser le CLI : savoir que chaque commande existe quand on a besoin de l'outil correspondant, les options et leurs actions d'une part, et comprendre la structuration d'une commande shell en elle même. C'est une forme de programmation assez spécifique (data flow), et c'est déroutant pour les débutants.

On se dit qu'il faut aider les débutants à se construire une image mentale de comment ça marche afin qu'ils puissent comprendre le truc. Pour la faire courte, l'idée en cours est de faire un support visuel (interactif ou non) facilitant l'acquisition de cette image mentale par des debutants.


Outil interactif de dissection des oneliners

Paul a fait un truc en javascript+html ici. L'idée est d'animer étape par étape le déroulement d'un oneliner pour le dissequer. C'est pas fini, c'est améliorable, mais l'idée est là. La conclusion est que cette vizu semble prometteuse (à nous au moins), mais que javascript+html c'est pas adapté : faut recoder toutes les commandes qu'on veut rendre dispo ce qui est une tâche dantesque.

Polux a également fait un script un peu comparable en haskell (lien?), avec moins de rendu graphique. De même, haskell semble pas forcément adapté à ce qu'on veut vu qu'il faut recoder les commandes à la main.

Peut-être que la bonne solution serait un truc en perl ou python, les expérimentations doivent continuer pour le déterminer.

Support visuel introductif

On se dit actuellement que le mieux est peut-être de faire un petit film pour expliquer les grandes lignes de ce qu'est le shell et présenter les grandes lignes de ce qu'un oneliner contient. Conscients de nos limites en graphisme / design and co, on ne vise absolument pas quelque chose de beau / attirant. On vise juste un moyen efficace de passer le message, dans l'espoir qu'on trouvera ensuite des gens pour nous aider à le rendre un peu moins moche. On vise un truc à la limite du story board, pour l'instant.

Etapes possibles du film

Introduction

Comme je suis universitaire, j'aurais tendance à commencer par poser le contexte en passant par l'histoire du truc. C'est pas forcément une bonne idée, ceci dit, mais bon. Mon idée est de dire :

- sous unix, presque toute l'info est stoquée sous forme de fichier texte car les anciens voulaient pouvoir tout modifier facilement sans se faire chier.

- Au passage, c'est assez différent de l'esprit windows où les choses ne peuvent être modifiées qu'en passant par l'interface clicodrome prévue par le vendeur. On n'a pas accès facilement à l'info stockée dans la base de registres, sauf à passer par l'interface que le vendeur veut bien que vous preniez. Dire cette idée risque de troubler le message : on parle de CLI ou de logiciel libre??

- au bout d'un moment, les anciens ont trouvé ca répétitif et fastidieux, alors ils ont cherché à automatiser les ptites tâches de la vie de tous les jours : trouver le fichier qui contient une info en particulier, le mass renaming, le mass search/replace, etc. Les one liners et les scripts shell sont nés de ceci. On peut vouloir faire un peu de biblio pour vérifier cette motivation historique, ca évitera de dire n'imp, ptet

Motivation

Le top serait de trouver un fil rouge, une commande difficile à faire en clicodrome, mais bien plus simple en CLI. C'est assez difficile à trouver car mon environnement de travail perso est tout en fichiers textes donc j'écris régulièrement des oneliners, mais les windozeurs et maceux ont des fichiers opaques et donc moins besoin de telles choses. Quelques idées en vrac tout de même:

- mon exemple classique en cours est un mass renamer, car je garde un souvenir ému d'un ami qui a passé une soirée à renomer tous les fichiers DCN0xxx.jpg en Noel_2010_xxx.jpg. Il paraît qu'il y a maintenant un mass renamer dans windows 7, mais on me souffle dans l'oreillette que c'est assez pourri comme interface.

- dans ubunchu, ils ont une multitude de fichiers à retraiter et en font un csv à lire dans exc^W^W libreoffice.

Activité physique possible

On peut envisager des séquences à organiser avec des élèves, dans l'esprit de Computer Science Unplugged où ils se passent des "fichiers" (en fait des fiches cartonnées) en fonction de leurs rôles dans le tube de commandes. Idée à fouiller.

Quelques liens source d'inspiration

ubunchu épisode 2 un manga spécialisé dans la vulga d'ubuntu, sur le thème des CLI. Pas très pointu techniquement, mais graphiquement intéressant (?) En tout cas, ils ont le même objectif.

L'histoire des pingouins un roman un peu délirant qui peut servir d'inspiration pour l'ambiance des scènes avec les grands anciens, au début