Saturday, August 9, 2008

Essai d'un nouveau paradigme: Tiling window managers (tiwm)

L'avantage d'un système modulaire comme les Unix libres, une fois passé le coté "usine a gaz" pour les débutants, est la facilité avec laquelle vous pouvez remplacer les parties du système qui ne vous plaisent
pas. Vous aimez bien apt-get mais préférez pf au lieu de iptables ? Vous pouvez utiliser le noyau FreeBSD avec Debian/kFreeBSD. Vous n'aimez pas le système d'init Systeme V, utilisé dans la plupart des distributions
Linux ? Vous pouvez le remplacer par runit sous Debian, utiliser upstart sous Ubuntu ou l'init BSD sous Slackware. Gnome trop gourmand en RAM ? Il existe Xfce. Xfce trop gourmand en RAM ? Il existe Equinox Desktop Environment. X trop gourmand en RAM ? Vous pouvez travailler en console ( ce qui double par exemple l'autonomie de mon portable ) étant donné que tous les outils Unix existent en version texte : navigateurs web, lecteurs de flux RSS, clients mail, clients p2p ...

Limites de gnome
Je me suis intéressé aux gestionnaires de fenêtres en tuiles ( Tiling windows manager, notés après tiwm ) après avoir rencontré des problèmes de productivité sous Gnome. Classiquement, en faisant du développement web, j'avais besoin d'avoir sous les yeux un Terminal avec un éditeur ou une console mysql ouverte, et le navigateur web pour suivre les modifications que je faisais. De la même façon, j'avais besoin de façon récurrente de lire une doc sur le web tout en tapant des commandes dans le shell. Alors que mon
navigateur web est en plein écran, j'ouvre donc un xterm. Tout d'abord pour une raison que j'ignore Gnome lance la nouvelle fenêtre derrière mon focus actuel, et se contente d'un clignotement légèrement irritant dans la barre des taches.
Je commence donc par cliquer sur la barre des taches pour donner le focus a xterm. Ensuite je diminue la taille de la fenêtre du navigateur web pour faire de la place a xterm, et je réaugmente la taille de xterm dans l'espace correspondant.
Maintenant j'ai besoin d'un deuxième xterm pour avoir la consommation cpu avec "top" sur mon serveur. Je reclique sur la barre des taches pour donner le focus, et cette fois c'est trois fenêtres que je dois
réarranger a la main sur mon espace de travail. N'y aurait-il pas moyen de laisser le gestionnaire de fenêtre ranger les fenêtres qu'il a créé ?

Les avantages
Les tiwm partent d'un paradigme différent: tous les programmes ouverts sur un bureau donné doivent être visibles simultanément. Le premier programme que vous lancez, par exemple un terminal, sera toujours
en plein écran.

Puis je lance firefox. Le gestionnaire de fenêtre
redimensionne automatiquement firefox pour laisser de la place au
terminal.

Besoin d'un gestionnaire de fichiers ? De même le gestionnaire de fenêtre
découpe l'écran en trois parties.

Besoin de plus de place sur un des xterm pour lire un log ? Si j'augmente la taille de la fenêtre xterm avec la souris, le gestionnaire de fenêtre redimensionne les deux autres programmes dans l'espace restant.
L'utilisation d'un tiwm m'a incité à organiser mon espace de travail de façon plus rationnelle ( ce que j'aurais pu faire sous gnome ceci dit ) Le fait d'avoir les fenêtres des applications en permanence ouvertes
incite au rangement. Une fois que j'ai défini la bonne taille de mes fenêtres, je laisse les programmes ouverts en permanence, ranges sur des bureaux virtuels différents, et je ne passe pas mon temps à minimiser/maximiser les programmes, ou à ouvrir/fermer 15 fois par jour les mêmes applications.

Par ailleurs étant donné que les fenêtres sont affichées en permanence, les tiwm se marient très bien avec les programmes utilisant des onglets ( firefox, gnome-terminal, screen avec sa barre de statut )
vous n'avez jamais a cliquer sur une barre des tâches pour comprendre ensuite, zut mon onglet n'était pas dans cette fenêtre.
Ce mode de fonctionnement est a mon avis adapté au développeur qui a en général besoin de deux fenêtres
lisibles simultanément plus qu'à l'utilisateur de base, qui passe d'une tâche à une autre sans overlapping ( traitement de texte, puis surf sous le web, puis regarder un film puis surf sur le web )

Les inconvénients
Le principal défaut que je vois au tiwm est lié à la taille de nos écrans standards. Pour surfer sur le web confortablement il vous faut maintenant du 1024x768, si vous n'avez pas envie de faire joujou avec la
barre de scrolling latéral en permanence, surtout depuis que Ruby on Rails et Wordpress ont mis à la mode les grosses polices sur le web.
Vu que mon écran fait du 1280x1024, la place disponible pour plusieurs fenêtres _lisibles_ est limitée. Après
divers tentatives je me suis fixé comme taille 1024x600 pour le navigateur web. Malheureusement cela ne me laisse pas la place d'avoir un xterm en 80 x 25 caractères avec une taille de police
correcte ( la monospace 12 de gnome-terminal) .
J'ai donc un mini xterm avec sur le cote droit, Nautilus.
Vais je devoir acheter un écran plus grand ?

Ensuite les tiwm ne possèdent pas de menu "Start" avec la liste des programmes comme sur un environnement de bureau classique. Sous wmii par exemple on tape Alt-P et les premières lettres du nom du
programme, les complétions possibles s'affichant dans la Status Bar de wmii. De cette façon on lance très rapidement ce dont on connaît le nom ( firefox, xterm, gnumeric ) mais pour cela devient problèmatique pour
les programmes qu'on utilise peu ou qu'on vient d'installer ( C'était quoi déjà mon programme de gravure de
CD ? gnome-foo-write, gnome-burn, graveman-mon-cd ? )
Enfin et c'est a mon avis le plus grand défaut des tiwm étant donné le paradigme employé: la maximisation d'une fenêtre suivie d'une démaximisation de cette fenêtre ignore l'ordonnancement antérieur des
fenêtres. Supposant que j'ai besoin par exemple tout d'un coup de mon xterm en plein écran, pour chercher visuellement dans le long résultat d'un select SQL une valeur. Je passe wmii en mode plein écran, ce qui
donne temporairement à la fenêtre active la taille maximale. Mais quand je sort du mode plein écran, ma fenêtre de xterm, ne trouve pas la taille antérieure que lui avait fixé avec la souris. La fenêtre xterm reprend
la taille par défaut que lui avait assignée wmii au lancement du programme. Pas très clair ? Il ne tient qu'a vous d'essayer.

Conclusion
Si vous voulez tenter d'améliorer votre productivité sur un ordinateur, je vous conseille vivement d'essayer un tiwm, cela aura au moins le mérite de vous faire réfléchir à la façon dont vous utilisez une
interface graphique. Dans l'archive Debian et dans les ports FreeBSD se trouvent dwm, larswm et wmii, cet article ayant été écrit après deux semaines d'utilisation de wmii.

Wednesday, June 18, 2008

Un accès au web sous contrôle d'Adobe


C'est une chose bien curieuse que la disponibilité d'un plugin web de 3 Mo détermine le choix de l'architecture hardware que vous pouvez employer sur votre poste de travail. Car si votre combinaison CPU/Système d'exploitation ne se trouve pas dans la liste bénite du support d'Adobe vous allez pourtant passer a coté de tous les sites web utilisant Flash, c'est a dire 20% du contenu du web de nos jours.
Et malheureusement c'est mon cas puisque j'utilise Debian GNU/Linux sur PowerPC.

Envie de revoir le but du jour ? Flash. Envie de suivre Maddox ? Flash. Envie de voire des stats Google Analytics ? Flash. Envie d'écouter ce mp3 sur la page du groupe vu hier en concert ? Flash. Envie de postuler a un emploi ? Flash. Envie de voir une demo d'un logiciel opensource ? Flash.
J'ai utilisé pendant plus d'un an Gnash 0.8.1, mais sa compatibilité reste encore limitée ( essentiellement les bandeaux publicitaires de libé ... ) De plus depuis que youtube a sorti la nouvelle version de son player, je ne peux plus lire aucune video en ligne. Et la libstdc++ de Debian 4.0 est apparemment trop ancienne pour compiler la nouvelle release 0.8.2 de Gnash.

Bien sûr si vous avez des ressources et de l'entregent il est toujours possible d'acheter le SDK Flash pour le porter sur votre plateforme exotique préférée comme je suppose que Nokia l'a fait pour sa tablette Internet N810. En attendant force est de constater qu'après la qualité des filtres d'OpenOffice pour les documents MS Office et l'apparition du couple IcedTea/java-gcj-compat-plugin pour les plugins javas, Flash reste le dernier bastion des formats de données propriétaires; mais plus qu'un bastion c'est une vraie Bastille !
Et pour paraphraser Rochefoucauld à Louis XVI c'est plus qu'une révolte qu'il nous faut, c'est une révolution.

Tuesday, May 20, 2008

Quand on prête son portable ...

à une copine polonaise c'est agréable de pouvoir lui fournir un environnement de travail 100 % polonais ( y compris Gnometris ... ) La démarche à suivre sur Debian/Ubuntu en trois commandes sur le wiki gcu:

Mon bureau à l'origine:


Version polonaise:

Tuesday, April 22, 2008

Worse Is Better versus The Right Thing dans le logiciel libre

Worse is better, qui pourra se comprendre schémaiquement en "le plus c'est simple, le mieux ce sera tire son nom d'un article du spécialiste Lisp Richard Gabriel. Dans cet article écrit en 1989, Richard Gabriel explique comment Unix et le C l'ont emporté commercialement et dans la recherche par rapport à Lisp et aux machines Lisp, bien que celles ci semblaient initialement bien mieux conçues. Pourquoi ? Le développement Worse is Better met l'accent sur la rapidité du développement et la simplicité de l'interface, ce qui permet au logiciel de croire rapidement en fonctionnalités et d'être porté facilement, alors que le développement "The Right Thing" met d'abord l'accent sur la perfection de la conception et de l'implémentation. Un exemple est Mysql versus Postgres, où Mysql a représenté longtemps un SGBDR simple et rapide, mais qui implémentait peu de fonctionnalités SQL ANSI.

Le tableau suivant propose suivant une gradation Worse is Better versus the Right Thing, dans le stack du logiciel libre, suivant ma propre expérience d'administrateur système et diverses lectures.


Références externes:

NB: en aucun cas ce tableau ne représente un quelconque jugement de valeur des logiciels mentionnés.
Un désaccord ? Des exemples a rajouter ? Le document source est disponible ici.

Tuesday, April 1, 2008

Installer une console série pour NetBSD

En ce moment je teste un certain nombre de procédures de migration machine physique ==> machine virtuelle, la dernière en date étant la migration d'un routeur Soekris 4801 dans une machine qemu.
Seulement voila je n'aime pas trop la console SDL sur laquelle boote qemu par defaut et je préfère bien mieux avoir les messages de démarrage de NetBSD dans un terminal X.
Pour cela il faut configurer NetBSD pour utiliser une console série, ce que j'ai documenté sur le wiki gcu (le logiciel libre, ça se documente mieux dans un wiki ) et lancer qemu avec la ligne de commande suivante:

qemu -nographic -hda /fatc/qemu/soekris.img -redir tcp:2222::22

Ce qui nous donne le résultat suivant:

PS : Je suis a la recherche d'un wiki anglophone sympa pour laisser un Multiboot killing Howto qui explique comment migrer votre installation windows existante dans une machine virtuelle utilisable avec vmware player. Si vous avez des idées ...

Friday, February 29, 2008

Xen p2v howto: migration d'un OS d'une machine physique vers une machine virtuelle

Il existe beaucoup de docs sur internet expliquant l'installation from scratch d'une machine virtuelle, mais bien peu montrant comment migrer un OS déjà installé vers une machine virtuelle.
Cette doc est base sur mon expérience de migration d'un serveur Debian tombant en ruine sur un server Xen Suse, cependant il n'y a rien de distro spécifique la dedans, et l'équivalent devrait même être possible sur Solaris et NetBSD.

Wiki versus Blog / Forum pour la documentation libre

Il serait difficile de reprocher aux systèmes libres leur manque de documentation. Entre les pages de man, les fichiers de conf largement commentés, les verboses modes et autres howto, wiki, blogs, forums, on a affaire a une prolifération de documentation malheureusement pas toujours organisée. Une tendance actuelle est de documenter dans son blog pas mal de choses intéressantes qui serait bien mieux placée dans un wiki. Pourquoi écrire de la doc technique dans un wiki plutot qu'un blog ou une page perso ?
  • le wiki est maintenu par une communauté, ce qui fait que sa pérennité est plus assurée sur le long terme qu'un blog qui depend de votre bon vouloir ou de celui de votre hebergeur.
  • le wiki est modifiable par quelqu'un d'autre a commencer par vous meme, contrairement par exemple a de nombreux forums en lignes qui ne permettent pas de reéditer vos propres posts
  • pourquoi ne pas s'essayer des maintenant a une expérience de travail collaboratif plutôt que de faire les choses dans son coin ?
Il y a cependant deux obstacles a l'utilisation du wiki en general.
Le premier est que la plupart du temps un contributeur de wiki reste anonyme par rapport a un auteur de blog qu'on peut contacter directement pour signaler une erreur ou demander une explication. Le deuxième est que la contribution a un wiki étant bien plus anonyme qu'un beau blog ou l'avatar personnalisé d'un forum, la "part de gloire" de l'auteur est bien moindre. Je connais plusieurs blogs techniques incluant des tutoriels bien detailles, dont je peux citer le nom de l'auteur, mais je serais bien en peine de citer le nom d'un contributeur Wikipedia

Le projet Knol de Google est supposé résoudre ces deux problèmes en associant chaque article de sa base de connaissance a un auteur clairement identifie, qui pourra se remunerer en plaçant des google ads sur son article. Outre le problème qu'un moteur de recherche s'occupe maintenant de generer du contenu, il existe une facon beaucoup plus simple d'identifier vos contributions.
Il suffit d'annoncer sur votre blog/forum préféré les articles que vous avez écrits, et en indiquant votre nom/pseudo et votre email dans l'entête de votre article wiki ( comme le font par exemple certains membres de gcu, suivre les liens tips )

En conclusion pour documenter quelque chose, le mieux serait de commencer essayer de l'inclure dans la documentation officielle de son système ou dans un wiki et enfin d'utiliser son blog/forum/page perso pour des astuces courtes ne depassant pas quelques lignes.