L'argument de la difficulté de la ligne de commande est souvent l'argument le plus présenté dès qu'il s'agit de critiquer Linux ou plus exactement ses différentes distributions. L'argument avancé est que la ligne de commande n'est pas une interface utilisateur suffisante pour un débutant. Je confirme.
Le principe de la ligne de commande est de lancer directement des commandes, sans avoir à passer par la potentielle profondeur d'une interface graphique. Par exemple, il suffit de taper curl www.google.fr
(sous Mac OS X) pour télécharger la page d'accueil de Google, selon les circonstances, cela peut potentiellement être plus rapide que de charger la page dans mon navigateur et de lui demander d'enregistrer cette page dans un fichier de mon disque dur. Bien sûr, le fait que la ligne de commande soit plus pratique dans ce cas dépend de nombreux facteurs : à quel point je sais utiliser mon navigateur, si l'URL se trouve dans mon presse-papier ou dans un lien, si ma ligne de commande est accessible rapidement, etc.
Le problème de cette ligne de commande est que la connaissance des commandes se trouve forcément dans la mémoire de l'utilisateur, aucun moyen pour un nouvel utilisateur de découvrir par lui-même la commande pour télécharger une URL. Avec Firefox, un utilisateur peut toujours parcourir les menus, découvrir la fonction de sauvegarde, l'essayer et en déduire son fonctionnement, bref l'apprendre. Ce qui différencie la ligne de commande de l'interface graphique est que l'interface graphique place la connaissance des fonctions dans le monde extérieur plutôt que dans la mémoire de l'utilisateur pour la ligne de commande.
Pour plus d'informations sur la différence entre placer la connaissance dans le monde extérieur et dans la mémoire utilisateur, je vous conseille l'excellent livre de Donald Norman : The Design of Everyday Things.
Le vrai problème de la ligne de commande n'est donc pas son principe mais bien que les connaissances nécessaires à son utilisation doivent se situer dans la mémoire de l'utilisateur, l'obligeant à effectuer cette phase d'apprentissage avant de réellement pouvoir utiliser l'outil. Cette phase provoque une frustration puisque l'utilisateur ne peut pas appliquer le principe d'essais et erreurs pour découvrir l'outil par lui-même.
Plus tard, lorsque les règles régissant l'outil sont comprises (chercher une commande sur Google, chercher dans le répertoire /bin, consulter les pages de documentation, etc.), l'utilisateur peut alors reprendre un processus à base d'essais et erreurs. Mais c'est la première phase d'apprentissage qui est généralement la plus frustrante et amène à des conclusions hâtives comme la ligne de commande est un outil d'une autre époque.
Pourquoi un billet si modéré alors que j'ai depuis tant d'années si violemment critiqué la ligne de commande ? Tout simplement parce que cela fait maintenant plus de 4 ans que j'utilise Mac OS X et que j'utilise de plus en plus la ligne de commande sur ce système. Contrairement à Windows, la ligne de commande Mac est issue du monde Unix et propose des outils qui permettent de réaliser rapidement des opérations, parfois plus rapidement que dans l'interface graphique.
Mais l'avantage de Mac OS X sur de nombreuses distributions Linux est que la ligne de commande n'est pas nécessaire pour une utilisation basique du système. Pour prendre un exemple concret (mais loin d'être scientifique) :
- sur le forum de support Général Ubuntu-fr, je dénombre 10 sujets sur les 30 de la première page qui ont une question ou une réponse faisant appel à la ligne de commande ;
- sur le forum de support Mac OS X, je ne dénombre qu'un seul sujet mentionnant la ligne de commande dans les 15 de la première page.
30 % contre 6 %, la comparaison est vite faite... Heureusement, des distributions comme Ubuntu ou Mandriva comblent ses lacunes en développant toujours plus de petits outils graphiques destinés à fournir aux utilisateurs certains fonctions jusqu'alors limitées à la ligne de commande.
Attention, mon but n'est pas de taper sur Linux mais simplement de pointer du doigt les sources de frustration des utilisateurs quand ils utilisent un nouvel outil. Ceci afin que ceux qui aident ces nouveaux utilisateurs puissent y répondre plus facilement.
Mon but est également de montrer que cette frustration peut amener à trop vite abandonner la ligne de commande, comme par exemple celle de Windows qui malgré ses grosses limitations possèdent des fonctionnalités intéressantes, encore plus si on y ajoute le module Cygwin (attention, le site est laid) permettant de profiter des outils Unix. À ces utilisateurs qui comme moi ont été frustré par la ligne de commande, je recommande la lecture du livre de Andrew Hunt et David Thomas : The Pragmatic Programmer qui détaille des cas pratiques d'utilisation des outils Unix et de la ligne de commande pour un travail de programmation.
1 De loufoque -
La raison pour laquelle on donne sur un forum les manipulations a effectuer en termes de ligne de commande, c'est parce qu'il suffit de copier la commande et de la coller. Si on la donne en tant qu'explications (cliquer sur ci, cliquer sur ça, etc.) appliquer la manipulation est plus complexe.
2 De Vincent -
Argument intéressant, en effet il est souvent plus simple de donner la commande que d'expliquer pas à pas la démarche pour modifier une configuration.
Mais la bonne chose à faire est-elle de demander de taper "curl http://google.fr" ou d'expliquer que Firefox est un navigateur web et que la barre blanche permet de taper l'URL.
Je pense que la seconde approche est plus intéressante car en plus de donner les première étapes, elles guident l'utilisateur sur la voie de la découverte et non directement vers la solution.
Maintenant, on aurait pu expliquer que "curl" est un outil en ligne de commande et qu'en tapant "curl --help", il est possible d'obtenir l'aide de cet outil, juste l'information qui manquait à cet utilisateur pour découvrir les joies de la ligne de commande.
Mais on en revient toujours au fait que les outils en ligne de commande sont plus difficiles à découvrir que leurs homologues graphiques, ils apporteront donc toujours plus de frustration à l'utilisateur en phase d'apprentissage.
Mon opinion est qu'un utilisateur ne peut pas combiner la frustration d'un dysfonctionnement (mauvaise config, problèmes de drivers, bug) avec celle de l'apprentissage d'un outil. La phase d'apprentissage doit donc être uniquement réservée à la découverte de nouvelle fonctionnalité.
Un exemple simple serait de montrer un script shell permettant de télécharger une vidéo YouTube à partir de l'URL de la page. C'est archaïque pour ceux qui connaissent déjà des outils graphiques pour le faire, mais pour les autres, c'est la résolution d'un problème par un outil qu'ils ne connaissent pas, les motivant donc pour approfondir l'apprentissage de cet outil. "Et pourquoi ne pas adapter ça pour Dailymotion ?"
3 De Thomas -
Je dirais que c'est plus compliqué que ça. Le problème actuel de la ligne de commande est sont côté non-verbal. On le doit à une volonté d'efficacité. Il est plus rapide de taper "curl http://www.google.fr" que "download http://www.google.fr here". Pire encore, ce n'est pas sémantique. "curl" ne signifie rien de concret avant de se renseigner alors que "save" aurait très bien pu faire l'affaire.
Humanized c'était 5 types super doué en interaction Homma-Machine. Le fondateur (Aza Raskin) est d'ailleurs le fils de Jef Raskin célèbre chercheur en IHM. Ils sont toujours aussi doué mais Humanized a récemment été racheté par Mozilla ;) Avant ce rachat il ont sortit un "lanceur" nommé Enso qui avait pour but de mélanger la puissance de la ligne de commande et la "simplicité" de l'interface graphique (voir http://blog.mozilla.com/faaborg/2007/07/05/the-graphical-keyboard-user-interface/).
Enso 1 permettait de deviner les commandes du lanceur juste en y allant à petit pas (prédiction de résultat) et en connaissant son anglais. Une des features les plus demandés pour Enso 2 était de raccourcir le nom des commandes "changer 'open' par 'o' par exemple". On en revient au problème que j'évoquais dans mon premier paragraphe. Cet article est très intéressant : http://humanized.com/weblog/2008/01/31/enso-20-design-thoughts/
Pour finir, je ne peux que recommander cet autre article : http://humanized.com/weblog/2008/07/21/language-based-interfaces-part-1-the-problem/ qui répond assez bien à ton billet : "How can we make a UI with the efficiency and expressiveness of the Unix command line, but that’s easy to learn and that won’t shoot you in the foot?"
4 De Fabien -
Si «10 sujets sur les 30 de la première page d'un forum Linux (...) ont une question ou une réponse faisant appel à la ligne de commande», c'est aussi parce ses utilisateurs ont une culture de la ligne de commande, pas seulement parce que la ligne de commande est absolument nécessaire : un simple utilisateur Linux avec des besoins basiques de simple utilisateur n'a plus besoin de la ligne de commande.
Cette culture de la ligne de commande, il serait dommage de la perdre juste pour pouvoir dire qu'on peut désormais faire autrement.
Sinon, merci pour cette analyse de la spécificité de la ligne de commande (mémoire de l'utilisateur vs monde extérieur).
5 De MontrealMan -
La ligne de commande, c'est la meilleure invention depuis... euh... longtemps. Tellement plus rapide et efficace que la souris et les UI...
6 De Jonathan -
Power to "La ligne de commande"! :-)
Blague à part, la ligne de commande est un bien meilleur outil de productivité que la souris, en exemple.
7 De fr -
réflexion intéressante et modérée. merci !
8 De Fabien -
on en parle ici: http://linuxfr.org/~fleny68/28164.h...
J'ai trouvé dans les commentaires un lien vers l'article Wikipédia sur Ivan Illich http://fr.wikipedia.org/wiki/Ivan_I... qui apporte un éclairage intéressant sur le fond du problème, en particulier le concept d'"outil convivial" http://fr.wikipedia.org/wiki/Outil_...
Un outil convivial (au sens d'Illich)
- doit être générateur d'efficience sans dégrader l'autonomie personnelle
- ne doit susciter ni esclave ni maître
- doit élargir le rayon d'action personnel
L'outil convivial accepte plusieurs utilisations, parfois détournées du sens original, et donc l'expression libre de celui qui l'utilise. (Sinon), l'homme devient serviteur, son rôle se limitant désormais à faire fonctionner une machine construite dans un but précis.
Je pense que la ligne de commande est un outil plus convivial (au sens d'Illich) que l'interface graphique.