À l'attention de la rédaction du site Rue89

Je réside au Japon, dans la région de Tokyo. Comme la plupart des gens le savent, il y a deux jours un séisme majeur, historique même, a frappé le pays. Comme ils le savent également, ce séisme et le tsunami qui a suivi ont entraîné une situation très grave dans la centrale nucléaire de Fukushima.

Pour tous les ressortissants étrangers, s’informer sur les événements est critique étant donnée la situation. En effet il est difficile pour un étranger de se tenir informé du fait de la barrière de la langue. Aussi nous utilisons la presse francophone.

Voici ce que l’on peut lire en titre sur cet article :

« Explosion nucléaire à Fukushima »

Que l’imbécile qui a écrit cela aille se pendre !!!

Ce message s’adresse à la rédaction du site Rue89 : votre comportement nuit profondément à notre recherche d’information. Vous avez une énorme visibilité, suffisante pour appaître dans Google Actualité par exemple.

En publiant de telles inepties vous nous faites un tort considérable car il devient difficile de connaître la situation et de savoir quel comportement adopter pour notre sécurité.

C’est extrêmement grave, merci de vous en rendre compte.

Donc comme je le disais, sur Twitter, à plusieurs reprises, merci aux anti-nucléaires qui fantasment sur un nouveau Tchernobyl, aux politiciens opportunistes qui cherchent à gagner des voix, et d’une façon générale aux personnes qui n’ont pas l’ombre de la moindre foutue idée du fonctionnement d’une centrale nucléaire et de la situation actuelle, merci à tous d’avoir la décence d’attendre la fin des évènements actuels pour raconter n’importe quoi.

La preuve en images

La preuve en images

You'll need to download Flash^WSafari to view this demo

D’habitude lorsque j’entends parler de HTML 5, je me réjouis. Pourtant aujourd’hui j’ai l’impression d’être pris pour le dernier des imbéciles, et comme mon ego est délicat, je n’aime pas être pris pour un imbécile.

Il y a peu, Apple et Adobe faisaient la une de la presse technologique avec leur roman « Je t’aime, moi non plus » à grand coups de lettres ouvertes et autres coups de couteau dans le dos. Au point de départ de ce divorce consommé, l’absence de Flash revendiquée sur les plateforme iPhone et surtout, iPad. Bien que comme beaucoup de programmeurs je n’aime pas Flash, plusieurs arguments de Steve Jobs pour justifier ce refus d’intégrer cette technologie me semblent fallacieux. Toutefois, je ne peux être que d’accord sur le fait que c’est une technologie fermée et qui n’est pas nécessaire lorsque l’on supporte le HTML 5.

Mais aujourd’hui je découvre que Apple présente une page avec des exemples de HTML 5… qui se contentent sous Firefox d’afficher « You’ll need to download Safari to view this demo. »

Vous savez quoi ? Je retrouve ici l’une des raisons pour lesquelles je n’aime pas le Flash. J’ai l’impression de lire « You’ll need to install Flash to view this website. » alors que mon navigateur est déjà parfaitement fonctionnel (et parle le HTML 5). Alors si j’ai bien suivi, Flash c’est fermé c’est mal. HTML 5 c’est standard c’est bien. Mais vous devez téléchargez notre navigateur pour en profiter, n’allez surtout pas croire que les autres fonctionnent correctement.

Rien à faire, j’ai vraiment l’impression d’être pris pour un imbécile par Apple.

Une parenthèse sur l'iPad d'Apple et pourquoi il va cartonner

La semaine dernière Apple ouvrait sa messe tant attendue par beaucoup, notamment la communauté des fans et celles des enthousiastes du tactile : le Keynote. Cela devait mettre fin aux rumeurs galopantes sur la sortie d’une tablette tactile par Apple, révéler ses caractéristiques, son apparence, son nom et son prix. À l’issue de ces révélations, beaucoup ont été déçu et j’en fais partie. Pourtant je suis persuadé que l’iPad va être un énorme succès commercial et même dominer le marché.

Tout d’abord pourquoi une telle déception ? Personne n’attendait de l’iPad qu’il brille dans le noir ou qu’il ait un affichage tout droit sorti de film de science fiction. Mais à le voir, on peut trouver que c’est un produit qui est en retard sur son marché : des tablettes tactiles, il en existe déjà, et celle-ci n’apporte rien de nouveau techniquement. Rien à voir avec l’iPod qui ou le Mac Book Air, qui lors de leur sortie se plaçaient très au dessus de l’existant. D’autre part le design est très décevant : un vulgaire iPhone en plus grand. Il me semble même comporter des erreurs grossières : un clavier tactile alors que l’on sait que cela ne marche que mal, une forme courbée qui empêche de le poser sur une table pour travailler, une interface logiciel d’iPhone, qui si elle est très bien pour un PDA, semble inadaptée à un format de cette taille. Enfin, on s’y attendait, c’est un système complètement fermé dont Apple a le secret.

Je ne compte par contre pas l’absence de caméra, pourtant très critiquée, comme un réel défaut. Cela me semble en effet être une fonctionnalité somme toute mineure : il faut laisser les habitudes se faire avant que faire de la visioconférence avec cette tablette se présente comme un besoin.

Mais alors pourquoi si je lui trouve tous ces défauts, et surtout si j’estime que la concurrence fait déjà mieux techniquement, est-ce que je suis convaincu de son succès ? Parce que c’est Apple ? Pas vraiment. Certes Apple a une force de frappe commerciale et un don pour donner envie d’acheter ses produits qui ont déjà fait leurs preuves. Mais dire que cela va marcher parce que d’habitude c’est le cas est sans intérêt. Non, la vraie raison, le point qui va faire toute la différence, d’après moi, c’est la communauté de développeurs iPhone.

Les interfaces tactiles sont quelque chose de relativement nouveau dans les produits grand public. Les éditeurs ont un énorme manque d’expérience avec ce type d’interface utilisateur, et d’une façon générale une certaine réticence à s’adapter à tout ce qui est nouveau (je pense notamment aux nombreux jeux sur Wii et sur iPhone qui ne tirent aucunement partie de leurs nouveaux types d’interactions et qui ne sont que de vulgaires portages de gameplay classiques). L’écosystème des applications sur tablettes a donc toutes les chances d’être un joyeux bordel parfaitement inutilisable, très hétérogène et avec des interactions très pauvres.

Or le système d’AppStore tord le cou d’emblée à ces deux problèmes. En effet Apple fournit un SDK, émet des recommandations strictes et contrôle toute application avant d’en permettre la mise sur l’AppStore, ce qui règle le problème de l’hétérogénéité. Mais surtout, surtout, ce SDK est le même que celui qu’utilisent les développeurs iPhone depuis deux ans. Cela signifie qu’alors que la tablette n’est pas encore commercialisée, il existe déjà une énorme communauté de développeurs qui savent déjà ou presque développer pour l’iPad. Elle est là la différence.

Comparez cela aux diverses tablettes tournant sous Windows Seven ou autre…

Que retenir de "Bourne Into Oblivion" ?

#rm -rf /On m’a fait lire hier un article, « Bourne Into Oblivion« , dans lequel l’auteur explique comment ce qu’il nomme une bombe à retardement a eu des conséquences gravissimes pour le système informatique d’une société. En résumé, un script d’administration faisait le ménage après avoir terminé sa tâche grâce à un rm -rf $var1/$var2. Mais ce script s’est vu exécuté avec $var1 et $var2 non définis, et s’est donc terminé avec un rm -rf /, en root, sur un NFS (pour les non unixiens, cela signifie effacer l’intégralité des systèmes de fichiers du réseau, avec le droit de le faire). Autant dire que c’est une catastrophe sans nom pour la société, surtout lorsque l’on ajoute que c’est à ce moment que les backups se révèlent être inutilisables.

Cette histoire qui ferait froid dans le dos à tout administrateur système m’a plongé dans une réflexion, que voici, sur la liste finalement assez importante d’erreurs ayant conduit à cet accident. Le but n’est pas de critiquer, mais de voir ce qu’il est possible d’apprendre de tout cela.

Tout d’abord, il est clair que ce script était exécuté avec des privilèges bien trop importants. Il n’y a que peu de choses qui puissent justifier qu’un script doive être lancé en tant que root. Il aurait dû être lancé en tant que simple utilisateur sans privilège, éventuellement avec un compte créé spécialement dans ce but. Les opérations nécessitant réellement des droits de super utilisateur auraient dû être isolées et appelées avec un sudo ou encore disposer d’un bit suid. Pour le reste, et notamment tout ce qui s’apparente à de la lecture, des droits correctement affectés avec des groupes auraient dû suffire. D’une façon générale lancer un script en root n’est absolument pas anodin, et au delà du problème rencontré ici, se pose celui de la possibilité d’une faille de sécurité.

L’article mentionne de plus le fait d’avoir lancé un script pour le week-end, autrement dit pour une durée d’exécution a priori relativement longue. Si le fait de laisser une tâche d’administration sans surveillance est courant, le fait que ce soit en tant que root change la donne et vient aggraver, s’il était besoin, le point précédent.

La justification de l’exécution en tant que super utilisateur mise de côté, ce bout de script n’était manifestement pas assez défensif étant donné ce contexte particulièrement dangereux. Son auteur n’aurait jamais dû laisser un tel appel se faire sans un test des deux variables. Cela dit le script n’était peut-être pas prévu à l’origine pour être lancé en tant que root, ce qui amène donc à considérer comme règle qu’un code faisant ce type de manipulation doit être défensif quoi qu’il arrive, dans la mesure où l’on ne sait pas dans quelles conditions il peut-être amené à être utilisé par la suite.

On peut de plus remarquer que le fait d’utiliser un répertoire à la racine est déjà discutable. Si cette remarque peut sembler être un pinaillage purement cosmétique, on s’aperçoit que si en pratique les répertoires utilisés avaient été /tmp/$var1/$var2 ou encore /usr/src/$var1/$var2 par exemple, un tel drame ne serait pas survenu.

Pour finir sur l’aspect purement administration, ce script aurait dû être documenté. D’après l’article, l’absence de définition des variables est la conséquence du fait que l’opérateur ne savait pas qu’il y avait des opérations à effectuer au préalable. Ce point aurait donc dû être documenté. Cependant l’expérience montre que documenter n’évite pas les accident, et reste donc insuffisant (d’ailleurs le script était peut-être même déjà documenté) : j’ai l’exemple d’un script qui servait à envoyer un mail informatif à une base d’utilisateurs, et qui portait le nom pour le moins clair de spam.sh. Il avait pourtant fallu commenter la commande essentielle du script depuis que quelqu’un l’avait lancé par erreur, n’ayant apparemment pas considéré son nom comme un avertissement suffisamment clair sur l’effet du script. Un autre exemple amusant est le message d’avertissement du système Debian en cas de apt-get jugé un peu trop violent : il demande alors de taper en toutes lettres « Oui, faites ce que je vous dis ! ». Quoi qu’il en soit, il faut d’une façon ou d’une autre, mais par un moyen technique, mettre une commande dangereuse hors de portée de toute personne qui n’est pas parfaitement renseignée.

Accessoirement, Joel Spolsky explique au deuxième point de son célèbre article, « The Joel Test« , que d’après lui l’opération de compilation et livraison d’un projet doit pouvoir être faite en une seule action, car toute étape supplémentaire entraîne la possibilité d’une erreur. L’erreur dont il est question ici et les conséquences qu’elle a eu montrent que finalement, la règle peut être étendue à toute opération d’administration.

D’autres erreurs, de nature plus humaine, sont également à l’origine de cet accident. Comme le souligne l’auteur de l’article, le passage de compétences ne s’est pas fait correctement par exemple, et la gravité de la tâche d’administration a été négligée en étant affectée à un novice. Je ne m’étendrai pas plus sur ce sujet, qui n’est plus celui de ma réflexion.

Aussi pour conclure, on se rend compte que cet incident, qui est extrêmement grave pour une société puisqu’il peut lui être fatal si les données ne sont pas récupérées, aurait pu être évité par de simples précautions. Pour la plupart d’entre elles, une seule de ces précautions aurait suffit à éviter cela. Mais peut-être que parce que ces précautions semblent dérisoires, elles sont négligées. Paradoxalement elles semblent tellement évidentes que les rappeler peut également paraître dérisoire.

Voilà en substance la réflexion que m’inspire cette histoire. N’ayant pas la prétention d’avoir plus de quelques notions d’administration système, je suis peut-être passé à côté de points importants. Si vous en voyez, n’hésitez pas à en faire part en commentaires.

Si demain je mourais, mes amis sur Internet le sauraient-ils ?

Vous êtes vous déjà demandé ce qu’il adviendrait de votre identité sur Internet si vous veniez à mourir ? Vos contacts sur Internet seraient-ils seulement au courant ? C’est une question que je me suis posée plusieurs fois, à mesure que le nombre de mes cyber-connaissances augmentait. J’ai un jour eu un début de réponse.

C’est bête à dire, mais on peut mourir du jour au lendemain, quelque soit l’âge, et de façon aussi violente qu’inattendue. L’association dont je fais partie organise un concours d’informatique. Chaque année nous envoyons un courrier aux anciens candidats encore en âge de participer pour leur proposer de retenter l’expérience. Une année l’une des lettres nous est revenue, avec au dos quelques mots de la mère du candidat, nous expliquant que celui-ci avait été tué, renversé par une voiture. Ça fait un choc, on ne s’y attend pas, surtout quand la limite d’âge est de vingt ans. Quelqu’un de moins de vingt ans, ça ne meurt pas, enfin seulement statistiquement. En fait si.

Et sans ce courrier, on ne l’aurait jamais su. Si on n’avait pas rencontré cette personne, si on n’avait pas eu ses coordonnées postales, et que l’on s’était contentés de la contacter par mail, autrement dit, si on ne l’avait connue que par Internet : aurait-on appris la nouvelle ? Il me semble probable que l’on n’aurait jamais eu de réponse, et pensé que la personne n’utilisait plus cette adresse, ou qu’elle n’avait pas l’intention de répondre. Elle aurait simplement disparu de notre paysage de connaissances sans laisser de trace, et certainement pas de deuil.

Alors que se passerait-il dans le cas d’un contact régulier, un ami ou une relation de travail, sur un réseau social, sur messagerie instantanée, sur IRC, ou sur une mailing-list ? Parmi mes contacts réguliers sur Internet, il y a les personnes que je côtoie dans la vie de tous les jours bien sûr, mais aussi des personnes que je ne vois plus car elles ont déménagé, voire se sont installées dans un autre pays. Cela dit ces personnes sont en contact avec des amis communs, aussi elles seraient probablement rapidement informées si quelque chose m’arrivait. Mais il y a également des personnes auxquelles j’attache de l’importance et que je n’ai pour autant jamais rencontrées, ou même qui habitent dans des pays où je n’ai jamais seulement mis les pieds. Il y a également des personnes que j’ai rencontrées, des amis mêmes, mais avec qui mon seul contact du fait de la distance et du décalage horaire est Internet.

Toutes ces personnes ne me voient qu’à travers mes mails, mon site, mon blog, mes photos… Bref par mon activité sur le net. Si tout à coup une telle personne ne donne plus de nouvelles : on se dit que ses horaires où ses habitudes ont changé, que sa charge de travail a augmenté, ou tout simplement qu’elle ne souhaite plus nous parler. On y accordera une importance pouvant aller d’un extrême, à l’autre. Selon les rapports avec cette personne. (^&

Ce smiley que je viens d’utiliser, je le l’aimais beaucoup. Un côté espiègle et original. Je ne l’ai jamais vu que sur les mailing-list de OpenGLUT et FreeGLUT (deux projets libres visant à remplacer GLUT, une bibliothèque propriétaire plus du tout maintenue). En fait, il n’y avait qu’une seule personne utilisant ce smiley, et le voir suffisait à identifier l’auteur du mail comme une marque caractéristique. Sur une telle mailing-list, les gens vont et viennent : il y a les mainteneurs, qui sont plus ou moins actifs par période selon leurs disponibilités, et les utilisateurs parmi lesquels on distingue les habitués de ceux qui passent sans jamais revenir. Alors lorsque quelqu’un ne poste plus, cela n’a rien de surprenant, et on le remarque ou pas. En ce qui me concerne, j’ai remarqué lorsque les smilies ne sont plus apparus. Je ne m’en suis pas inquiété, mais je l’ai remarqué. Son auteur devait être occupé, peut-être même au point de ne plus du tout pouvoir s’impliquer dans ces projets.

Et puis un jour, plus d’un an après. le responsable du projet a posté un mail, dans lequel les citations permettaient de voir le cheminement de l’information, depuis la mailing-list de NetBSD à celle de OpenGLUT puis de FreeGLUT. Avec dix mois de retard, on venait d’apprendre qu’il était décédé, tué par un chauffard ivre alors qu’il était en vélo.

Il s’appelait Richard Rauch, et était un contributeur important du projet NetBSD. Aussi son frère avait envoyé un mail aux responsables de ce projet pour les en informer. Le responsable d’OpenGLUT était tombé quant à lui sur ce message dix mois plus tard.

Je ne connaissais pas cette personne, j’avais seulement eu quelques échanges sur la mailing-list. Mais j’avais remarqué la disparition de son smiley si caractéristique, quelques mois avant la disparition de son auteur.

Le mail à la communauté NetBSD date du 14 mars 2006. Dans trois jours, ça fera trois ans.

ML freeglut : FW: [Fwd: Re: Richard Rauch]
NetBSD community : Richard Rauch gone
One of our own has fallen