homme ou femme ?

L’utilisateur n’est pas administrateur de son système, il doit avoir un compte dessus comme tout le monde: c’est un sous dossier de /home, c’est à dire /home/<username>/. Celui-ci est souvent considéré à tort comme l’équivalent de « Mes documents » de Windows, c’est entièrement faux. Ce dossier que l’on va appeler dossier « home » (qui ne représente donc pas /home mais /home/<username>/) peut contenir plein de choses dont des applications. En fait, libre à soit de s’en servir comme on le souhaite. Sauf si les programmes viennent foutre le bordel dedans… il faut donc une structure minimale imposée.

Dans Windows il y a en équivalent du home, ceci: C:\Documents and Settings\<username>\, avec l’username qui correspond souvent à Administrateur… Dans ce dossier se trouve « Application Data », « Bureau », Cookies, Favoris, Local Settings, Menu Démarrer, Mes documents, Mes documents récents, Modèles, et d’autres dossiers non intéressant. Il y a en gros deux dossiers importants: Mes documents, et Application Data (bien qu’étrangement Local Settings possède également un dossier Application Data avec beaucoup de chose dedans).

Dans linux, c’est le Bronx. A ma connaissance il n’existe pas d’API pour récupérer le dossier des données d’application, un peu comme GetFolderPath() de .NET dont il existe un équivalent pour win32. Sous linux c’est simple, chacun fait à sa sauce, et en général on souhaite masquer les fichiers de configuration à l’utilisateur donc on balance un « . » comme préfixe au fichier, puis on le stock n’importe où. Ce n’importe où c’est généralement simple: dans le home, on ne se fait pas chier sous linux, les « application data » c’est dans le home préfixé d’un point… et cela permet d’utiliser le home comme Mes documents puisque les fichiers de configuration sont cachés.

Mais c’est merdique. On se retrouve avec la racine du home poluée de fichiers de configuration ET de dossiers de configuration. Car si l’application doit stocker plus d’un seul fichier, elle ne s’embête pas et se créer son propre dossier, ou pire, plusieurs fichiers dans le home. Le fait que tout soit dans le home et invisible n’est pas spécialement chiant si on ne se préoccupe pas de ces fichiers. Sauf que dans le home on fait souvent beaucoup de chose, et on liste parfois tous les fichiers, comme tout bon bidouilleurs sous linux: on affiche tous les fichiers, un peu comme sous windows avec l’option « Afficher les fichiers et dossiers cachés ». Ne serait-ce pour savoir si des applications ne font pas n’importe quoi, ou bien pour facilement éditer les fichiers cachés (comme les .htaccess).

L’affichage de tous les fichiers met en évidence l’absence totale de structure. Un début de structure est présent avec un dossier « .config« , et pas mal d’application sauvegardent leur information dedans. Il y a alors une volonté de progrès qui fait plaisir à voir, mais elle ne semble pas partagée par tout le monde: car comme je le dis souvent, sous linux on programme avant tout pour soi-même et on se fou des autres, tant qu’un développeur ne sera pas dérangé par ce foutoir (parce qu’il n’affiche pas tous les fichiers), alors il ne changera rien. Et même des programmes récents n’utilisent toujours pas « .config ».

En fait, il est possible de personnaliser l’affichage par dossier, et par exemple indiquer de ne pas afficher les fichiers cachés d’un dossier précis, mais bien que cela peut être un solution, cela ne fera que masquer la bordel du home, qui comme sous Windows, doit posséder des sous-dossiers, pour les documents mais aussi pour les applications propres à l’utilisateur: une vraie structure est possible et l’est par défaut dans les distributions qui créent des dossiers par défaut dans le home. Il est alors tout à fait logique de mettre fin à cette sale habitude et ainsi tout mettre dans .config. Donc autant faire les choses bien et proposer une API comme Windows ou une variable d’environnement qui correspondrait au dossier de configuration.

Généralement les programmes cross-plateforme font de la merde sous windows. Exemple: Tulip 3.5, il m’a crée un dossier .Tulip-3.5 à la racine du lecteur C… génial. Dans le moins pire, il y a ceux qui le créent à la racine du home utilisateur: C:\Documents and Settings\<username> comme on a pu le voir, au lieu de Application Data. Par exemple yed3 (dossier .yed3), Virtual Box (.VirtualBox) et d’autres (.jmf, .designer, .JxBrowser). Sachant que sous Windows les noms commençant par un ‘.’ n’ont aucune signification particulière, cela peut vite devenir le bordel dans l’arborescence… La faute à qui ?

Toutefois, il existe une variable d’environnement pour définir le dossier de configuration sous linux, mais elle n’est pas spécialement connue, elle fait partie d’un standard de freedesktop. On peut y accéder ici et à première vu j’ai cru que je m’étais trompé de page. Sur cette page, il y a 80% de l’espace dédié au nom des auteurs et leur email, au point que j’ai cru que rien n’était en ligne. Un table of content dont la police est identique à celle du nom des auteurs et au même niveau n’a pas du tout attiré mon attention. Arrivé sur la page, la première fois j’y étais reparti aussi sec.

C’est typique du libre: un manque cruel de communication, d’organisation et d’ergonomie. Et si seulement ce n’était que ça… Du coup on apprend plutot ce genre de chose par du bouche à oreille, j’ai trouvé la page officiel de ce standard grâce à un blog que j’ai trouvé grâce à un commentaire qui critiquait une application qui n’utilisait justement pas ces standards. D’abord, es-ce que les distributions définissent cette variable d’environnement ? Pour ma part, Archlinux le fait mais j’ai quand même un immense bordel dans mon home.

A vrai dire, où aller chercher quand on développe sur linux ? où est la référence ? où est l’API ? d’ailleurs quelle API ? posix ? celle du noyau ? ah c’est éparpillé, c’est un puzzle. Certains donnent glib, mais c’est incomplet. Pour le coup, Windows fait mieux, et j’ai trouvé sans difficulté où sauvegarder des fichiers de configuration sous Windows. Subitement on voit l’intêret du framework Qt (ici avec QDesktopServices::DataLocation, constante sur la même page, et c’est cross-plateforme bien sûr).

C’est encore une entreprise qui sauve linux ? Les développeurs font-ils tout pour pouvoir vendre du service ? Ce problème est parfaitement représentatif du fonctionnement de linux. A coté de cela, il y a une propagande pour dire que linux c’est mieux que tout, que linux est prêt pour le desktop, ou que linux faisait déjà telle fonctionnalité il y a 10 ans déjà… et quand ce n’est pas un troll, c’est alors sans préciser que linux le faisait mal ou à moitié. Avoir une idée c’est bien, la réaliser c’est autre chose, la faire connaître c’est encore une autre histoire.

Publicités

2 Responses to homme ou femme ?

  1. Ping: Oubli des standarts pour les préférences – Google! « linux aventure

  2. Ping: Système de paquets | linux aventure

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :