En ses temps de mesures sécuritaires, j’ai voulu également augmenter ma propre protection. Comme tout le monde j’ai des choses à cacher et l’utilisation d’un VPN chiffré devient une nécessité. Pour corser l’expérience, j’ai voulu payer en Bitcoin. Je précise que je n’ai jamais acheté ni l’un ni l’autre. Ce n’était pas de tout repos.

William Clinton and President Boris Nikolayevich Yeltsin

– J’arrive pas, dis le toi!
– Nous ne procédons pas à d’écoutes massives de la population et respectons votre vie p…

1. trouver un provider VPN
3 jours à parcourir les comparateurs foireux ou juste demander (plus efficace). Je choisi finalement cryptostorm. Une société tenu des hacktivistes basés en Islande, un peu bordélique (il faut aimer fouiller les forums), pas trop cher (3-4$/mois), utilisant token anonymes assez original (en gros on achète des tokens à eux ou revendeurs indépendant, pas besoin de compte) et possibilité de payer en Bitcoin, Doguecoin & co.

Je parlerai probablement de Cryptostorm après quelques semaines/mois de tests mais j’avoue être assez fan jusqu’à présent.

2. trouver un revendeur Bitcoin
2 jours de comparateurs. J’avais tenté une fois bitstamp avant d’avoir ma transaction refusée par ma banque. Cette fois, j’ai essayé avec Kraken, pas trop de frais, clean, sécurisé (2 factors, ils envoient des emails signés avec GPG…. refusés par enigmail).

3. acheter des bitcoin
4 jours pour se rendre compte qu’on ne peut pas faire de virement, donner son nom et date de naissance pour passer en tier 2 (level up!), se rendre compte qu’on ne peut toujours pas déposer d’euro, donner son adresse pour passer en tier 3, faire un virement SEPA (50€ min), attendre qu’il soit réceptionné, se prendre déjà pour un tradeur, lire des articles de trading, abandonner l’idée, acheter quelques bitcoin à 213€/BTC sans savoir si c’est un bon prix.

femme assemblant un ordinateur

1975, un des premiers prototypes d’Asic Miner

4. réceptionner les bitcoins
2 jours à chercher un client bitcoin, pleurer en comprenant qu’il me faut 33GB d’espace disque pour stocker la blockchain, se faire conseiller sur twitter d’utiliser Multibit, découvrir vanitygen, perdre une journée pour avoir une adresse toujours aussi immémorable mais commençant par “1marte”, stresser comme un fou de perdre sa tune, se rendre compte qu’en fait c’est rapide et facile.

5. acheter l’accès VPN
2 jours à payer sur bitpay, se dire que mettre mon adresse email perso n’est pas la chose la plus intelligente, attendre, vérifier toutes les 5 minutes sa boite mail, aller consulter les logs de son serveur mail, se dire qu’on a probablement foiré un truc, installer Bitmessage pour contacter le support de cryptostorm, ne pas recevoir de réponse, se dire qu’en fin de compte Twitter c’est aussi un bon moyen de communication, recevoir une réponse d’excuse comme quoi ils étaient occupé à gérer SauronsEye (un méga-malware bien flippant), recevoir un token de 3 mois au lieu de 2 pour s’excuser, les pardonner.

6. se connecter au VPN
5 minutes à choper un fichier de config au choix (il y a une dizaine de points de sortie), utiliser le sha512 du token comme nom d’utilisateur sur OpenVPN (en ligne de commande, le client de NetworkManager me donne plus de fil à retordre), aller sur IPleak pour voir que je ne laisse rien filtrer, se rendre compte que je peux maintenant résoudre les URLs .i2p et .bit avec leurs DNS, retourner voir des gifs sur reddit.

Police dog

On the internet, nobody knows you are a dog…

Que retenir de tout ça ? Que cela m’a prit un temps assez délirant, principalement passé à faire des recherches (et heureusement, ça ira plus vite la prochaine fois). Il existe des tonnes d’alternatives pour chaque point (et je n’ai surement pas choisi les meilleures ou les plus faciles). C’est une très bonne chose d’avoir le choix mais ça noie le néophyte, il faut sacrément être motivé pour se protéger aujourd’hui.

Je précise aussi que si j’ai fais cela pour des raisons de sécurité, je suis bien conscient de pas être anonyme, on peut probablement me retracer à mes bitcoin ou achat du VPN, ce n’était pas le but (mais ça serait un beau challenge pour une prochaine fois).

On en reparle dans quelques semaines pour faire le point sur Cryptostorm.

HOT pour Humanitarian OpenStreetMap Team, soit l’équipe humanitaire d’OpenStreetMap. Désolé à ceux qui espéraient un article digne de Sam & Max, on parlera de cartographie aujourd’hui !

hot-logo

Il y a quelques temps, je vous ai fait une présentation d’OpenStreetMap (TL;DR: le Wikipédia de la carte), superbe projet de cartographie communautaire dont je suis particulièrement fan. Cependant, s’il est plutôt amusant de cartographier l’arrêt de bus prêt de chez soit ou la niche du chien, on se lasse vite et doute parfois de l’intérêt de la tâche… Et si maintenant je vous disais que vous pourriez sauver des vies en contribuant a ce projet libre. Et bien sachez qu’il est possible de cartographier dans un but humanitaire.

gerardus-mercator-flemish-cartographer-photo-researchers-inc

Tremblements de terre, inondations, épidémies, famines et j’en passe, les catastrophes ne manquent malheureusement pas et touchent des zones difficiles d’accès (de par la catastrophe, situation géographique, politique, économiques ou autres). Pouvoir ou non faire circuler un camion de vivres ou médicaments jusqu’à un village peut signifier la vie ou la mort dans ces régions. Et pour finir sur un argument moins dramatique, lorsque l’on est trop radin que pour donner 5€ à la Croix-Rouge, c’est toujours plus sexy de dire qu’on a passé son dimanche à mapper une région du Népal touchée par le tremblement de terre plutôt que de glander dans son canap.

Maintenant que vous êtes convaincu de l’intérêt de la chose, comment contribuer ? Commencez par vous tenir informer. Le meilleur moyen est de vous abonner à la mailing list HOT. Le volume varie en fonction des évènements (beaucoup plus ces derniers temps), à lire en diagonale mais au moins ça vous permet d’être au courant des évènements importants nécessitant une action rapide.

Il y a eu une catastrophe nécessitant de mapper une région, vous êtes disponible pour cartographier une région, parfait ! (enfin non mais vous comprenez ce que je veux dire). Rendez-vous sur OSM Tasking Manager et trouvez la tâche créée à ce sujet. Une fois bien avoir lu les instructions (ne mappez que les routes, etc.), sélectionnez un fragment de la carte (si vous n’avez pas beaucoup de temps, vous pouvez même le subdiviser) et verrouillez le pour communiquer aux autres contributeurs que vous travaillez dessus. Vous êtes ensuite libre de choisir votre éditeur favoris. Personnellement j’utilise iD qui a l’avantage de fonctionner dans le navigateur (sans flash) et d’être assez intuitif.

tasker

Par exemple, dans le cas du Népal, la page wiki de la catastrophe, la section Task Manager affiche le progrès et les tâches les plus urgentes à réaliser. N’oubliez pas de toujours bien lire le wiki openstreetmap de chaque pays pour comprendre quelles sont les conventions (par exemple: les routes au Népal) ainsi que des guides au cas par cas, par exemple Nepal remote mapping guide (je sais je parle beaucoup du Népal mais ce n’est pas de gaieté de cœur).

asia-amp

Donc si, à la fin de la journée, vous voulez avoir le sentiment d’aider les gens, c’est un des meilleur projet libre que je connaisse. N’ayez pas peur si vous ne savez mapper qu’une partie du segment, c’est mieux que rien. En cas de doute, vous pouvez toujours demander.

En bref, aucune raison de ne pas participer, et pourtant si utile.

Début de l’été, j’ai craqué pour un Vivofit, le traqueur d’activité de Garmin. Le 1er janvier dernier, je passais le cap des 2 millions de pas enregistrés. Que penser de cet appareil après 7 mois d’utilisation ? Un avis mitigé.

Pour faire un rapide point, la principale fonctionnalité du Vivofit est de servir de podomètre, de comptabiliser le nombre de pas réalisés en 24h. Il se synchronise également avec une ceinture cardio lors d’activité sportives pour connaitre son rythme cardiaque et analyse votre sommeil. Le tout se synchronisant avec son smartphone ou pc.

Tout d’abord, la question qu’on me pose le plus souvent: est-ce que ça permet vraiment de (se) bouger plus ? Je suppose que ça dépend du caractère de chacun mais personnellement oui, ça fonctionne ! 2.089.235 pas en 204 jour, soit 10.241 (10K de pas, c’est beau) par jour, juste au dessus du Saint-Graal de 10.000 pas par jour, victoire personnelle ! Évidement, il faut avoir un petit coté, geek amateur de chiffres et compétitif mais personnellement ça marche assez bien. Il m’arrive de temps à autres à faire une marche le soir pour obtenir mon objectif journalier ou de courir le matin pour compenser le manque d’hier.

Grâce à un 31 assez mouvementé, on commence bien l'année

On commence bien l’année

En parlant d’objectif: la particularité du Vivofit par rapport à d’autres traqueurs est d’avoir des objectifs flottants. Si vous marchez beaucoup un jour, votre objectif augmentera, si vous n’atteignez pas l’objectif un autre, il sera moins élevé le lendemain. L’adaptation est assez lente: une journée très active ou très inactive n’influencera que peu l’objectif si les autres jours sont stables. Cette logique semble une bonne idée (chacun son objectif réaliste) mais elle ne s’adapte pas un rythme de travail où l’on est clairement moins actif la semaine que le week-end. Et je ne vous parle même pas de l’hiver lorsqu’il fait noir en partant et en rentrant du boulot…

Il faisait bon samedi dernier

Devinez le jour où il ne pleuvait pas

J’enfonce sans doute les portes ouvertes mais ce podomètre ne compte que les pas. Étant amateur de vélo, ça me désole un peu d’avoir toute une partie de mon activité non comptabilisée (le paradoxe, l’activité non comptabilisée est moins motivante). Je me rattrape en mettant la montre en poche (possible à la cheville mais un peu désagréable) ou dans le Camelback (en VTT les bosses sont suffisantes pour comptabiliser quelques pas). Mon prochain achat sera sans doute un appareil plus polyvalent (mais ils restent encore cher aujourd’hui).

Vite allons sortir les poubelles

Arrête de me juger !

Une autre fonctionnalité particulière du Vivofit est ce que l’on peut appeler “la barre rouge de la honte”. Lorsque vous arrêtez de bouger pendant une heure, un premier segment rouge apparait, suivit d’un tous les 1/4h d’inactivité supplémentaires (jusque 2h), indiquant d’un coup d’œil à toute personne aux alentours à quel point vous êtes un vieux mollusque. Pour retirer cette barre, il suffit de marcher quelques centaines de pas (proportionnellement à la durée de votre inactivité). Cette distance n’est pas très grande mais suffisamment pour que je n’arrive pas à l’enlever lors une journée de travail (à moins de faire un aller-retour jusqu’au parking ou de passer pour un fou qui fait des tours de la cuisine). L’incitant à marcher est vite oublié et l’on assume assez rapidement son statut de feignant. Vous soufflez après une course à pied ? Aucune importance, lève ton cul de ce fauteuil et retourne marcher ! Dur.

Pour en finir avec le positif, le bracelet n’est pas désagréable à porter. La promesse d’un an de batterie n’a pas encore été démenti pour moi (contrairement à celle de la ceinture cardio qui faiblit) et finalement avec son aspect banal, il reste assez discret (il peut passer pour une montre moche).

T'a pas l'impression de te foutre de ma gueule là ?

T’a pas l’impression de te foutre de ma gueule là ?

Bon maintenant parlons de ce qui fâche vraiment. Tout d’abord, pour connecter le bracelet à internet, il faut soit passer par l’application PC (non compatible Linux et demande ce foutu connecteur ANT), soit passer par l’application smartphone et le bluetooth. N’ayant pas de Windows, j’utilise l’application Android. Soyons clair: cette application est une vraie bouse. La connexion échoue plus de fois qu’elle ne réussi (parfois je passe 2 jours sans être capable d’établir une connexion). Et puis cette application demande toutes les permissions possibles sur le téléphone: accès SMS, localisation, contacts, agenda, photos, vibreur. Et si ce n’était pas suffisant, la dernière mise à jour ajoute le téléphone “pour des raisons de stabilité”. Garmin, tes pratiques de merde sont détestables. Les seules permissions requises devraient être le bluetooth et accès à internet. Tu devrais passer plus de temps à améliorer tes applications plutôt que de trouver de nouveaux moyen de suivre les moindres faits et gestes de tes clients (tu sais, les gens qui te donnent de l’argent).

Non, je ne battais pas un record de marche lente, 40m de course se sont transformés en 18h

Non, je ne battais pas un record de marche lente, 40m de course se sont transformés en 18h. Parce que merde, voila.

Bon une fois qu’on a vomi sur ses principes (spéciale dédicace à Privacy Guard) pour synchroniser le dernier jogging ou le nombre de pas de la journée, on se rend sur Garmin Connect. Ce site est une nouvelle preuve que les gens de chez Garmin ne savent pas développer de logiciel. Il est in-intuitif au possible, lent (bonne chance pour naviguer dans son historique) et buggé de partout. Constamment, des pages sont inaccessibles et des erreurs lors d’opérations simples (erreur 403 lors d’un export, etc.). Une expérience utilisateur vraiment détestable. Des fonctionnalités telle que la synchronisation à des services externes ou une API sont évidement aux abonnés absents.

connect-error

Pour conclure, l’essentiel est quand même que cet appareil me fasse bouger plus. J’ai beau critiquer le logiciel, le matériel remplit son but premier de me faire lever de ma chaise. A la question, “est-ce qu’à refaire, j’achèterais encore un Vivofit?”, la réponse est probablement non. D’ailleurs, pour noël, j’ai offert un Withings Pulse

PS: après quelques début, la synchronisation sous Linux n’est pas encore possible. Si j’avais j’arrive à des résultats sympa, je partagerai évidement.

Samedi passé, la vidéo youtube du court métrage Sintel a été bloqué. La raison de ce blocage est une détection de contenu appartenant à Sony dans la vidéo.

Pour ceux qui l’ignorent, Sintel est un film de la Blender Foundation, une association à but non-lucratif développant le logiciel de 3D Blender. Ce film est réalisé principalement à partir de logiciels libres et publié sous licence Creative Commons ainsi que toutes les ressources étant été créées. Ce film est donc loin, très loin d’être la propriété de Sony !

sintel-youtube

Sans surprise, cette censure déclencha un clash sur le web. Comme le dit TorrentFreak, Sony a réussi l’exploit de se mettre à dos les fan de logiciels libres, adeptes de Creative Commons, mouvement anti abus de copyright et groupes de protections contre la censure en un seul coup. Ça mériterait un prix.

Après un weekend de lynchage virtuel et reprise de l’info sur les grands sites d’info, la vidéo est de retour ! Suite à ce coup de pub, Sintel vient même de passer les 4 millions de vues sur Youtube. Houra, faites péter le champomi, on a gagné ?

Non.

Sintel_poster

Si le retour de la vidéo va un peu calmer les foules, le problème de fond reste inchangé. Une compagnie a la possibilité, sans aucune difficulté, justification ou contrôle a priori de censurer du contenu sur lequel elle n’a aucun droit. Un système qui devient la norme sur tous les sites de partage de contenu. Erreur ou choix de nuire à un concurrent ? Quelle que soit la cause, il est anormal que cela puisse se passer sans répercussion (même pas un “désolé”). On imagine facilement les très nombreux autres “faux-postifs” n’ayant pas la chance de bénéficier d’un tel coup médiatique.

De tels évènements montrent à quel point le système actuel ne fonctionne pas et doit changer. Peut-on espérer un changement du coté politique ? Supporter des projets comme MediaGobelin ou Gooseberry est plus que jamais important.

Télécharger Sintel (de façon propre et légale)

PS: ce titre ne veut rien dire, et alors ?

Naufrage et migration

6 April 2014

Si vous lisez cet article depuis mart-e.be, c’est que vos DNS sont à jour et que le sauvetage/migration de mon blog a réussi.

Début de semaine, j’ai eu la mauvaise surprise de constater que mon blog ne fonctionnait plus. Un coup d’œil sur le Twitter de Legtux, mon hébergeur, m’apprend qu’il y a eu un crash de disque toutes les DB sont perdues. Joie et allégresse.

On passera le manque de communication de la part de Legtux (je sais pas, un email aurait été sympa). On passera l’absence de backup de la part de Legtux (soit, ça reste un hébergeur tenu par des volontaires). On passera mon erreur de ne faire des backup que de mon serveur chez ovh et pas celui qui héberge mon blog (ça t’apprendra du con). Tout cela fait que je me retrouve avec une sauvegarde vielle de 14 mois !

Moi jouant avec mon nouveau serveur

Moi jouant avec mon nouveau serveur

Avec mon sens de la procrastination légendaire, je décide donc de remettre ça au weekend. Legtux m’a rendu de grands services mais suite à l’incident, je préfère gérer tout moi même. Je m’achète donc un nouveau Kimsufi devant remplacer l’actuel (m’en fous de ton problème de turn over, t’avais qu’a baisser les prix pour les anciens clients), installe tous mes programmes aux petits oignons et repart d’un WordPress tout frais. La partie la plus chiante fut de recréer les articles manquant dans mon backup à l’aide du merveilleux archive.net et de l’historique de mon flux RSS. J’ai perdu quelques commentaires au passage, vous m’en excuserez. Le thème a un peu morflé aussi mais il faut que je le change de toute façon !

Je passerai les prochains weekend à migrer le reste de mes services et peaufiner mon serveur. Si vous repérez d’autres soucis, n’hésitez pas à me le signaler. Avec un peu de chance, je posterai même un article de temps en temps 😉

PS: le premier qui me lâche une morale sur le fait de faire des backup, je lui colle une gifle virtuelle.

Je me suis créé une instance GNU Social (nouveau nom de StatusNet) il y a quelques mois. A l’époque, j’avais oublié de verrouiller l’inscription. Évidement, les spammeurs trouvèrent vite mon instance et je me retrouve avec plus de 160 comptes indésirables.

Delete user

La façon simple de supprimer un compte est de se rendre dans la liste des utilisateurs (/directory/users), ouvrir un à un le profil de l’utilisateur et de le supprimer.

Si vous voulez un peu automatiser la chose, c’est possible avec ces deux commandes:

$ echo "select nickname from user where nickname != 'mart'" | mysql -u monuser -p madb > /tmp/toban.txt
$ for user in (cat toban.txt)
    php scripts/deleteuser.php -n$user -y
end

Ceci vous listera et supprimera tous les utilisateurs ne s’appelant pas ‘mart’. Dans le cas où vous possédez des comptes réels, il faudra sans doute faire une requête plus complexe pour par exemple n’obtenir que les personnes ayant poster 0 ou 1 message, etc.
Le -y étant pour ne pas demander de confirmation avant la suppression. Au passage si vous avez un utilisateur légitime s’appelant ‘nickname’, il serait également intéressant de supprimer la première ligne du fichier ;-)

Spammeurs découvrant une formulaire d'inscription sans demande d'email

Spammeurs découvrant une formulaire d’inscription sans demande d’email

Notez que la boucle for est la syntaxe Fish. L’équivalent bash devrait ressembler à:

for user in (toban.txt)
do
php scripts/deleteuser.php -n${user} -y
done

Aujourd’hui étant The Day We Fight Back, je trouvais assez adapté de parler d’un des appareil d’espionnage massif le plus répandu: le smartphone. En plus ça me donne une occasion de sortir de mon coma de 10 mois sans article.

Les applications sur Android peuvent stocker des informations soit sur la carte SD, soit en interne dans la mémoire du téléphone. Si les développeurs sont assez intelligents pour ne pas stocker des informations sensibles dans un fichier password.txt sur la carte SD (enfin j’espère), ils font beaucoup moins attention quand il s’agit de stocker cela dans dans la mémoire interne, zone mystérieuse où personne ne va jamais mettre les pieds. Et pourtant c’est bien dommage on y trouve des choses amusantes et bigrement intéressantes.

Ça ne fait aucun doute Carl, cet homme est un grand amateur de Patrick Sébastien à en voir son historique Shazaam

Ça ne fait aucun doute Carl, à en voir son historique Shazaam cet homme est un grand amateur de Patrick Sébastien

La méthode

De part le fait que mon téléphone soit rooté, j’ai justement la possibilité d’explorer l’arborescence de fichiers système (chacun sa passion, j’aime pas les timbres). Par exemple, les paramètres de wifi (y compris les clefs) sont stockées dans /data/misc/wifi/wpa_supplicant.conf, les fichiers .apk des applications sont eux dans /data/app/. Cependant le répertoire qui nous intéresse pour cet article est /data/data/.

$ adb root
restarting adbd as root
$ adb pull /data/data/ ~/android-data
pull: building file list…

$ ls ~/android-data/ | wc -l
93

Voila qui devrait nous occuper pour un moment…

Pour fonctionner chaque application a besoin d’aller rechercher les informations que vous lui avez un jour donné: la question est sous quelle forme sont elles stockées et à quel point se sont ils donnés du mal pour les cacher ? Est-ce qu’une app stocke votre mot de passe en clair ou utilisent ils un protocole type OAuth ? Les applications Android stockent leurs données sous la forme de fichier textes ou le plus souvent de base de données sqlite3. Il suffit donc d’avoir un éditeur texte et de base de données sqlite (sqlitebrowser sous linux par exemple).

N’hésitez donc pas à reproduire avec votre téléphone c’est pas si difficile et instructif.

Exemples

Voici quelques applications installées sur mon téléphone.

sshtunnel

Si vous préférez administrer votre serveur pendant les repas de famille plutôt que d’écouter les blague de tonton Roger

Pour chaque tunnel, est stocké dans le fichier org.sshtunnel/databases/sshtunnel.db, le login, mot de passe, emplacement de la clef ssh (stocké dans un fichier, pas en db), fingerprint et autre. Cette info est également répétée dans le fichier org.sshtunnel/shared_prefs/org.sshtunnel_preferences.xml.

Zombies, Run!

Très chouette jeu/app sportive qui vise le mince publique geek et sportif (mais pas trop)

Dans le fichier texte com.sixtostart.zombiesrun/files/IDENTITY se trouve un vague UUID. Il serait intéressant de creuser sa signification. Stats ?

Dans la base de donnée com.sixtostart.zombiesrun/databases/zombiesRun2Data.db, la table player contient l’email vers le compte de synchronisation et, un token ! Je le souligne parce que c’est une des rares applications ne stockant pas votre mot de passe en clair. Les autres tables contiennent votre historique de jeu (score, records, positions GPS, musiques écoutent pendant la séance,…).

Railtime

Merveilleuse application m’indiquant que j’aurais mieux fait de prendre la voiture plutôt que d’attendre le train.

Dans com.infrabel.railtime/shared_prefs/pushPreferences.xml on trouve un token surement utile pour ceux qui désireraient faire un peu de reverse engineering sur cette app.

En regardant les bases de données, on voit que Railtime utilise visiblement Google Analytics et dans com.infrabel.railtime/databases/stationsv2.db l’on retrouve les noms en 4 langues et coordonnées géographiques des 835 gares de Belgique (pratique pour compléter OpenStreetMap ;-))

Mustard

Du microblogging…

La base de donnée org.mustard.android/databases/data contient les clefs OAuth vers les différents comptes Twitter et autres. Cela veut dire que potentiellement, l’on pourrait envoyer du spam en utilisant les clefs de Mustard et la faire révoquer par Twitter.

C’est une problématique connue des clients open source utilisant OAuth. Il est difficile de cacher cette information puisque quelqu’un attaquant suffisamment persévérant finira toujours par la retrouver dans le code, soyez sympa, pas de bêtises avec.

Into the Dead

Oui j’aime les jeux de Zombie, je sais…

Dans un simple fichier XML com.sidheinteractive.sif.DR/shared_prefs/com.sidheinteractive.sif.DR.xml on trouve tous les scores du jeu. Si jamais vous êtes bloqué dans une mission, c’est de la provocation tellement il est facile de changer son score. J’avoue avoir triché et je recommencerai surement…

Firefox

Faut-il encore le présenter ?

Dans le dossier org.mozilla.firefox/files/mozilla se trouve votre profil Firefox (historique, mot de passes & Co.). Je vois pas trop ce que je pourrais ajouter à cela tellement c’était prévisible. Je ne vois même pas pourquoi j’ai créé une entrée pour cette application et ne vous ferez pas l’affront de parler des autres navigateurs.

WhatsApp

SMS over IP

Le fichier com.whatsapp/databases/msgstore.db contient tout votre historique. Vous pouvez utiliser WhatsApp Xtract pour plus de facilité. On appréciera que les images sont stockées comme des URL sans aucune authentification (comme Facebook en fait).

Shazaam

Alias le tueur de blind tests

Vous pouvez facilement retrouver l’historique de vos écoutes dans com.shazam.android/databases/library.db. Vous retrouvez ainsi artiste, titre et image facilement.
Moins drôle: on retrouve également l’historique des positions géographiques où vous avez écouté chaque titre. Conclusion: ne taggez pas de musique chez votre maitresse.

Équipe technique discutant de la protection des données dans leur application

Équipe technique discutant de la protection des données dans leur application

Ces applications ne sont que quelques exemples personnels d’analyses forensic faites avec une Chimay dans la main (donc de très grandes qualités). Si quelques applications s’en sortent plutôt bien (les « grosses » ne stockent pas les mots de passe en clair par exemple), nombres d’applications stockent encore beaucoup trop d’information sensibles. Si cela n’empêchera pas Google et consorts de connaitre vos moindre faits et gestes (ils s’en balancent du mode de stockage s’ils peuvent récupérer l’info au niveau de l’OS), gardez en tête ce que l’on peut trouver comme information avec un téléphone perdu ou un accès au debugging USB pendant 2min.

Si vous avez découvert d’autres applications stockant des informations amusantes (ou pas), n’hésitez pas à partager.

Faut-il encore présenter StatusNet ? Il est généralement considéré comme le clone libre et décentralisé de Twitter de référence. Une réussite toute relative comparé au nombre d’utilisateurs sur la version propriétaire mais un bon succès quand même par rapport aux autres projets libres du genre. Cependant, pour Evan Prodromou, son créateur, il était temps d’avoir quelque chose de nouveau et plus moderne. Il est donc passé de PHP à NodeJS, de MySQL à NoSQL, de Gitorious à Github et a créé Pump.io. Les concepts de fonctionnement sont légèrement différents : StatusNet est clairement calqué sur Twitter avec la limite de 140 caractères alors que Pump utilise un formatage riche en wysiwyg sans limite de taille, le tout à la sauce Bootstrap. Cependant le public StatusNet est visé puisqu’une migration forcée d’identi.ca (instance de StatusNet rassemblant une très grosse partie des utilisateurs) vers Pump est prévue en avril. La messe étant dite, faisons une présentation de ce nouveau venu.

pompe rouillée

Avec un nom pareil, je trouve quand même que ça part mal.

Protocole

J’avais parlé de ce problème dans mon article précédent : Pump n’utilise pas OStatus (le groupe de protocoles utilisé par StatusNet) et ne sera donc pas compatible avec ce dernier. C’est nul, je sais. Cependant les standards utilisés ne diffèrent pas trop non plus. Les activity streams sont au cœur du réseau (déjà présents dans OStatus sous forme XML mais l’on va encore plus loin cette fois). Activity Stream est un standard initié par Facebook, Google, Microsoft (et plein d’autres gens bien) pour unifier la façon de représenter des actions sur les réseaux sociaux et faciliter l’interopérabilité. Un message d’un serveur Activity Stream à un autre est par exemple :

    {
        "id": "http://coding.example/api/activity/bwkposthw",
        "actor": {
            "id": "acct:bwk@coding.example",
            "displayName": "Brian Kernighan",
            "objectType": "person",
            "url": "http://coding.example/bwk"
        },
        "verb": "post",
        "object": {
            "id": "http://coding.example/api/note/helloworld",
            "content": "Hello, World!"
            "objectType": "note"
        },
        "published": "1973-01-01T00:00:00"
    }

Dans pump, une activité est authentifiée via OAuth, ce qui permet de séparer complètement l’authentification du contenu

POST /api/user/bwk/feed HTTP/1.1
Host: coding.example
Authorization: OAuth oauth_consumer_key="[...]",
    oauth_token="[...]", [...]
Content-Type: application/json

{
    "verb": "follow",
    "object": {
        "id": "acct:ken@coding.example",
        "objectType": "person"
    }
}

C’est simple et clair. Un exemple assez sympa de proof of contest est openframgame.com. C’est un site très simple de simulation de ferme. Vous avez de l’argent avec lequel vous achetez des parcelles, des semences et de l’eau. Vous plantez des semences, vous arrosez vos plantes et les revendez une fois atteinte la maturité. Rien de très intéressant dans le fonctionnement interne mais là où ça peut être intéressant est qu’il communique avec un compte Pump via des activty streams. Le fait que votre plante ait soif ou que vous ayez revendu une parcelle de tomates est une activité envoyée au serveur. Vous pourriez ainsi prévoir des réactions automatisées comme l’envoi de l’action d’arroser lorsque une plante a soif ou poster un message de victoire dès votre premier million amassé. On peut facilement imaginer les nombreuses possibilités si certains services utilisaient le couple activity streams – PubSubHubbub. En parlant de PuSH, Evan a annoncé dans un status vouloir l’intégrer dans pump.io.

Pourquoi pas du RSS (l’enfant pauvre et délaissé du web actuel) me diriez-vous ? Je ne suis pas dans la tête d’Evan mais il a un jour fait une réflexion disant que si Google abandonnait Google Reader (et donc le RSS), c’était sans doute car le RSS est très primitif. Pas de principe de conversation, on reste dans un schéma de producteur-consommateur qui ne correspond pas web social actuel. Personnellement, je ne pense pas que le RSS soit dépassé (car le schéma producteur-consommateur convient très bien à certains types de contenu) mais le rejoins sur le fait qu’il n’est pas adapté aux réseaux sociaux. Un flux public en RSS pour suivre les messages d’une personne peut être utile (je l’avais suggéré) mais ne doit pas être le protocole central pour l’interaction (ce qui était le cas dans StatusNet).

Ce qui est génial avec cette utilisation des activity streams est qu’il n’y a plus de formats différents pour l’API publique, la communication entre serveurs ou le flux d’un utilisateur : tout est activité (ou liste d’activités) au format JSON. J’envoie une activité (après authentification avec OAuth) avec le verbe « follow » à mon serveur pour donner l’ordre de suivre quelqu’un et je reçois en réponse, en cas de succès, l’activité qui apparaîtra dans mon flux. Même l’interface web est en fait un client web utilisant des activités avec le serveur. La plupart des actions (par exemple l’enregistrement d’un nouvel utilisateur) se fait via des activités.

Je vous laisse lire la page API.md pour plus de détails mais cela explique bien le fonctionnement général. C’est simple et propre, j’aime.

Tester

À quoi ressemble ce service ? C’est très facile, allez sur la page Try it qui vous redirigera aléatoirement vers une des 10 instances déployées par Evan. Contrairement à StatusNet qui avait identi.ca comme point central du réseau (au point où les gens confondaient parfois les deux et certains clients ne supportaient qu’identi.ca), Evan a voulu que Pump fonctionne réellement comme une fédération d’instances décentralisées.

pump-e homepage

Inscrivez-vous sur une instance, suivez d’autres gens (en passant par Login -> Account on another server? dans le cas d’utilisateurs sur d’autres serveurs), envoyez des messages et des images. On n’a pas encore toutes les fonctionnalités de StatusNet mais ce n’est pas loin.

Installation

Bon fini de rire, comment on déploie son instance sur son serveur ? Bonne nouvelle : il est assez simple de faire tourner un site en NodeJS. Mauvaise nouvelle : pour ceux qui font tourner plusieurs services sur une même machine via Apache ou Nginx, déployer Pump risque de vous poser des problèmes. Votre serveur web habituel écoutant sur le port 80 ou 443, il y a conflit avec NodeJS voulant écouter sur le même port.

Plusieurs possibilités s’offrent à vous :

  • utiliser pump seul sur le port 80 ou 443 (pas pratique)
  • utiliser pump sur une IP interne ou différente de celle utilisée par Apache/Nginx (pas facile, peut être fait en utilisant une machine virtuelle par exemple, configuration ici pour apache et ici pour nginx)
  • utiliser un port différent pour NodeJS avec un proxy redirigeant vos connexions vers le port 80 (perte de performance)

Il faut savoir que NodeJS a une bonne gestion de la concurrence ce qui lui permet, entre autres, de si bons benchmark. En utilisant un proxy, vous empêchez cette concurrence et réduisez les performances de Node à celles d’Apache. C’est dommage mais pas insurmontable non plus.

Après recherche, j’ai finalement trouvé deux systèmes fonctionnant pas trop mal avec Varnish (système de cache) et Apache : soit tout fonctionnant sur le port 80 avec Varnish servant de proxy, soit avec Pump écoutant sur le port 443 et Apache sur le port 80. Voulant utiliser du SSL pour pump, j’ai choisi la deuxième solution avec un certificat CaCert. Ci-dessous les explications des deux méthodes :

Tout sur le port 80

Première méthode : on n’utilise pas de SSL et fait tout tourner sur le port 80. Pour cela, j’utilise Varnish pour faire la différence, en m’aidant de ce tutoriel.

Configurez Varnish pour écouter sur le port 80 en modifiant le fichier /etc/default/varnish

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

Créez le fichier /etc/varnish/default.vcl pour indiquer la redirection

backend apache {
    .host = "127.0.0.1";
    .port = "6001";
}
backend node {
    .host = "127.0.0.1";
    .port = "6002";
}
sub vcl_recv {
    if(req.http.host == "pump.mart-e.be") {
        set req.backend = node;
    } else {
        set req.backend = apache;
    }

    if (req.http.Upgrade ~ "(?i)websocket") {
      return (pipe);
    }
}
sub vcl_pipe {
  if (req.http.upgrade) {
    set bereq.http.upgrade = req.http.upgrade;
  }
}

En cas de domaine contenant « pump.mart-e.be », on redirige vers le port 6002, autrement vers le port 6001. Les commandes avec « pipe » étant pour permettre le fonctionnement des websockets à travers Varnish. Il vous faudra ensuite faire écouter Apache sur le port 6001 au lieu de 80 en modifiant le fichier /etc/apache2/ports.conf.

NameVirtualHost *:6001
Listen 6001

et en changent tous vos <VirtualHost *:80> par <VirtualHost *:6001> dans la configuration des sites.

En ce qui concerne pump en lui même ce n’est pas trop compliqué. Le fait qu’on utilise le port 6002 pour pump vous permet de lancer node avec un utilisateur non-root. Pump ne fonctionne pas (encore) bien avec la version 0.10 de NodeJs (il manque même certaines dépendances je pense), préférez donc la 0.8. Comme pump.io est encore en développement actif, on préférera la version git à mettre à jour régulièrement. Les explications ci-dessous utilisent mongodb mais vous pouvez utiliser un autre service tel que Redis ou même laisser le « disk » par défaut pour ne pas avoir de base de donnée (attention aux performances).

# mkdir /var/www/pump && cd /var/www/pump
# git clone https://github.com/e14n/pump.io
# cd pump.io
# npm install
# cd node_modules/databank
# npm install databank-mongodb

Utilisez le fichier pump.io.json.sample pour créer le fichier /etc/pump.io.json. Voici le mien :

{
    "driver": "mongodb",
    "params": {"host": "localhost", "port": 27017},
    "secret": "azerty12345",
    "noweb": false,
    "site": "pump-e",
    "owner": "mart-e",
    "ownerURL": "http://mart-e.be",
    "port": 80,
    "serverUser": "www-data",
    "hostname": "pump.mart-e.be",
    "address": "127.0.0.1",
    "nologger": false,
    "uploaddir": "/var/www/pump/uploads",
    "debugClient": false,
    "firehose": "ofirehose.com"
}

Installez bien le paquet mongodb et démarrez le démon (ici sur le port 27017). N’oubliez pas non plus de créer le dossier uploaddir mentionné. Lancez pump via

$ node bin/pump &> pumpd.log

ou utilisez la commande forever (npm install -g forever) pour quelque chose de plus stable. Si vous sauvegardez les logs dans un fichier, vous pouvez les consulter via bunyan (npm install -g bunyan et puis tail -f pumpd.log | bunyan), ça en facilitera grandement la lecture.

Et ceci était un des premiers services à interagir avec pump, c'est beau !

Et ceci était un des premiers services à interagir avec pump, c’est beau !

Pump en SSL

La config précédente est bien, mais c’est encore mieux si on utilise du HTTPS ! Trouvez-vous donc un certificat SSL (openssl req -nodes -new -keyout server.key -out server.crt) et envoyez-le sur votre serveur. Comme on ne veut pas produire de page d’erreur quand les gens essayent d’accéder à pump en HTTP, on va utiliser Varnish pour faire une redirection, status HTTP 302. Le fichier /etc/varnish/default.vcl devient donc :

backend apache {
    .host = "127.0.0.1";
    .port = "6001";
}
sub vcl_recv {
    if(req.http.host == "pump.mart-e.be" && req.http.X-Forwarded-Proto !~ "(?i)https") {
        set req.http.x-Redir-Url = "https://pump.mart-e.be" req.url;
        error 750 req.http.x-Redir-Url;
    } else {
        set req.backend = apache;
    }

    if (req.http.Upgrade ~ "(?i)websocket") {
      return (pipe);
    }
}
sub vcl_error {
  if (obj.status == 750) {
    set obj.http.Location = obj.response;
    set obj.status = 302;
    return(deliver);
  }
}
sub vcl_pipe {
  if (req.http.upgrade) {
    set bereq.http.upgrade = req.http.upgrade;
  }
}

Attention, si vous avez la version 3 ou plus de Varnish (dans Debian stable c’est encore la 2), la concaténation se fait avec un +, la ligne de calcul d’URL devient donc : set req.http.x-Redir-Url = "https://pump.mart-e.be" + req.url;

Varnish ne gère pas le trafic SSL donc on est obligé de rester sur le port 80 pour ce dernier.

Rien de change du coté d’apache (par contre faites bien attention dans le fichier ports.conf de ne pas écouter sur le port 443) mais le fichier de config de pump devient :

{
    "driver": "mongodb",
    "params": {"host": "localhost", "port": 27017},
    "secret": "monkey1",
    "noweb": false,
    "site": "pump-e",
    "owner": "mart-e",
    "ownerURL": "http://mart-e.be",
    "port": 443,
    "serverUser": "www-data",
    "hostname": "pump.mart-e.be",
    "address": "pump.mart-e.be",
    "nologger": false,
    "uploaddir": "/var/www/pump/uploads",
    "debugClient": false,
    "firehose": "ofirehose.com",
    "key": "/etc/ssl/server.key",
    "cert": "/etc/ssl/server.crt"
}

Notez que le champ « address » est passé de 127.0.0.1 à pump.mart-e.be. Sans cela, je n’ai pas réussi à accéder à mon serveur depuis l’extérieur. Ajoutez également l’URL de votre serveur pump (pump.mart-e.be ici) dans le fichier /etc/hosts pointant vers 127.0.0.1. Ainsi, la boucle est bouclée pour l’accès en local.

Via mes tests, j’ai noté que les serveurs semblaient retenir les précédentes informations de connexion. C’est-à-dire que les serveurs avec lesquels j’avais interagi à l’époque de mauvaises configs ou lorsque je tournais sur le port 80 semblent avoir retenu ces infos et je n’arrive plus à les contacter. J’ai ouvert un bug report à ce sujet. En attendant que cela soit réglé, faites bien attention de choisir votre mode de connexion et de vous y tenir.

Les clients

C’est bien beau d’avoir une bonne API mais qu’en est-il des clients externes ? Hélas, on n’en est qu’aux débuts. Il existe actuellement une librairie en python PyPump, utilisée par Muon, un client ncurse l’utilisant. C’est tout à ma connaissance…

Le fonctionnement de l’API semblant assez simple, ça ne devrait qu’être une question de temps avant l’apparition de plus de clients mais actuellement c’est un frein certain à l’adoption de pump. Si vous voulez recevoir la reconnaissance de toute une communauté (1170 personnes aux dernières nouvelles), c’est l’occasion rêvée pour faire un peu de développement !

Les services externes

Si vous voulez passer à Pump, une fonctionnalité intéressante est les bridges avec les autres réseaux. C’est dans ce but que pump2status a été créé. Pour l’instant, ce site vous permet de lier votre compte pump à votre compte StatusNet et vous permet de découvrir les gens ayant fait la transition (comme moi !). Dans le futur, ce site vous permettera de publier sur StatusNet vos activités Pump. Sont également prévus, par ordre de priorité et hackerliness Google+, Twitter, Facebook sans doute même des Foursquare, LinkedIn et Instagram plus tard. En raison du bug des anciennes configs mémorisées, pas certain que vous me trouverez (si vous voyez mart@pump.jpope.org, c’est mon compte de test, je ne devrais plus l’utiliser).

Là où Status.Net englobait un maximum de fonctionnalités, le but de Pump.io est d’être beaucoup plus minimaliste dans son mode de fonctionnement et de se baser sur des services externes. Les fonctionnalités de gestion du spam sont par exemple déléguées à activityspam (dont spamicity.info est une instance, wiki) ou le service OFireHose est utilisé pour faciliter la fédération du contenu public (dont ofirehose.com est une instance).

Les passerelles fonctionneraient avec ce même principe. On pourrait ainsi avoir une application externe s’occupant de récupérer du contenu venant de Twitter et de le convertir en activités poussées vers un compte pump. C’est une des possibilités parmi d’autres mais le principe reste d’utiliser des services externes.

L’idée (pas mauvaise) est de garder le coeur de Pump.io minimale pour avoir quelque chose de robuste et hack-friendly. Mon seul regret est l’absence d’extensions, je ne suis pas certain que le modèle de services externes fonctionne dans tous les cas de figure (pour une modification des templates par exemple).

Le futur

Dans une présentation datant de février dernier, Evan annoncait vouloir migrer les serveurs identi.ca de Status.Net vers pump.io en avril 2013. Les inscriptions sur identi.ca sont bloquées depuis quelques jours. On verra si ça pourra se faire mais je pense que le logiciel n’est clairement pas encore assez mature pour faire la transition aujourd’hui.

Vous l'avez rêvé, e14n n'a fait : le bouton « Je n'aime pas » !

Vous en avez rêvé, e14n n’a fait : le bouton « Je n’aime pas » !

Un des soucis potentiel est que la transition casserait tous les clients Status.Net (n’utilisant plus l’API à la Twitter). Une possibilité serait de maintenir une compatibilité avec un bridge entre les deux. J’avais vu cette suggestion faite par Evan (mais n’arrive plus à retrouver le lien). Cela faciliterait grandement les choses le temps de la transition.

Si la sauce prend bien, Evan espère voir les gens adopter massivement pump.io et développer pour celui-ci. Les possibilités d’utilisation du réseau sont assez larges et intéressantes. Openfarmgame était une démo simple. Ih8.it en est une autre. On pourrait même imaginer des analyses globales des comportements via les publications poussées sur ofirehose (de la pub ?). Les principes de fédérations semblent bien réfléchis, et l’on devrait éviter les travers rencontrés avec StatusNet et identi.ca.

Si vous ne voulez pas passer à Pump.io (parce que ça ne correspond pas à ce que vous cherchez), faites une sauvegarde de votre compte identi.ca et utilisez Status.Net sur une autre instance (c’est le moment de passer à l’auto-hébergement). N’oubliez pas, ce n’est pas parce qu’identi.ca et Evan passent à Pump.io que la communauté est obligée de suivre. C’est du libre après tout.

Pump est encore un peu jeune mais néanmoins déjà utilisable. Essayez-le, faites-vous un avis et choississez ensuite si vous voulez rester sur StatusNet ou passer à Pump (ou utiliser les deux ou aucun). Je ne compte pas encore remplacer mon compte StatusNet par Pump mais ça sera sans doute le cas un jour (et me permettra d’abandonner définitivement mon compte Friendica inutilisé). En tout cas, espérons que ce réseau ne soit pas encore « un parmi tant d’autres ».


Les souvenirs et les regrets aussi.
Mais mon serveur silencieux et fidèle sourit toujours et remercie la vie.
Je t’aimais tant, tu étais si standardisée, comment veux-tu que je t’oublie ?

– Jacques Prévert.

Les réseaux libres et décentralisés c’est beau, pas de censure ou exploitation de vos données, bel exemple de liberté d’expression. Chacun choisissant son serveur, on évite les problèmes de points de passage uniques et diminue les problèmes en cas de défaillance d’un nœud. Enfin dans la théorie parce qu’en réalité c’est complètement le bordel. Les réseaux sociaux libres fleurissent un peu partout mais il n’y a pas moyen de s’entendre.

La semaine passée, pump.io venait de sortir sa version 0.2, une première release après 4 mois de développement (c’est là qu’on se rend compte que Diaspora avec ses 2 ans de développement s’est bien foutu de nous). Pump est un projet de Evan Prodromou, le créateur de StatusNet, et présenté comme la succession de ce dernier (prévu pour la 0.3, en avril 2013, les inscriptions sur identi.ca sont d’ailleurs désormais gelées). StatusNet continuera a vivre et être maintenu mais il ne faut pas s’attendre a voir de grandes nouveautés apparaître. Pump est écrit en NodeJS et avec une base de donnée NoSQL (MongoDB & co). Je n’ai aucun problème avec le fait d’abandonner le couple vieillissant PHP/MySQL (au contraire). Le point problématique est un aspect que l’on voit apparaître très souvent avec les réseaux sociaux libres : il n’utilise pas OStatus mais une nouvelle API. OStatus est une suite de protocoles (Atom, Activity Streams, PubSubHubbub, Salmon et Webfinger) qui permet de se mettre d’accord sur la façon dont deux serveurs OStatus peuvent communiquer. C’est grâce à OStatus que je ne suis pas obligé d’utiliser StatusNet pour communiquer avec quelqu’un l’utilisant, je peux utiliser Friendica par exemple. Cependant Friendica est un peu l’exception qui confirme la règle, a part lui qui met un point d’honneur a être compatible avec plusieurs réseaux, les autres utilisent systématiquement des manières propre pour communiquer.

Prenons l’exemple de Tent, un nouveau protocole décentralisé assez sympa (dont TentStatus est la partie permettant le microblogging). La façon de voir les choses est intéressante et suis convaincu qu’on puisse voir de chouettes projets apparaître (comme la page Related Projects le montre). Cependant ils ont fait le choix de recommencer from-scratch et cassant toute compatibilité. Les serveurs Tent ne peuvent parler qu’avec des serveurs Tent. Les raisons avancées pour ne pas utiliser OStatus sont discutables : pas de messages prives, impossible de changer de serveur en gardant les relations, pas d’API standard pour l’interaction. Mais comme mentionné dans un commentaire, c’est plus drôle de partir de zéro.

installation-parabole

Avec cette parabole Turbo+ 2.0, nous devrions enfin a comprendre leurs messages codés avec ce mystérieux « XMPP »

Vous vous souvenez de Diaspora ? Belle levée de fond, beaucoup d’espoirs, deux ans de développement pour finalement abandonner le projet a la communauté. Les créateurs décident de se concentrer sur leur sorte de générateur de meme (qui utilise ironiquement Facebook-connect, un bel aveu d’échec). Il semble avoir une bonne relève et il est possible que ce projet aboutisse a quelque chose mais Diaspora part avec une mauvaise base : un protocole interne quasi inexistant (qu’on pourrait presque qualifier de propriétaire). Diaspora avait été conçut sans trop savoir où aller puisque l’API n’était pas documentée et changeait tout le temps. Le projet Friendica a essayé d’être compatible avec celui ci mais a rencontre de nombreuses difficultés. Il semblerait que la communauté a prit conscience de ce problème puisqu’ils essayent d’être compatible avec d’autres réseaux. Personnellement, j’ai abandonné mais espoirs concernant Diaspora mais je peux changer d’avis, wait and see… ou pas.

Ces deux exemples ne sont pas les seuls, dans les plus connus on a aussi Movim (a base de XMPP, pas d’interopérabilité avec d’autres API type OStatus) ou SalutAToi (utilise une API basée sur XMPP documentée mais de leur cru quand même). Notons les bons élèves que sont Friendica et BuddyCloud puisqu’ils supportent plusieurs standards.

Pour revenir a Pump, Evan avait sans doute de bonnes raisons de changer la façon d’interagir entre serveurs, il s’y connaît en réseaux décentralisés et API. En raison de quelques problèmes avec StatusNet, il a préféré repartir sur une nouvelle base. Il annonçait quand même qu’un effort serait fait pour être compatible avec StatusNet. Cependant, l’API de base reste différente, toutes les fonctionnalités devront être adaptées pour faire la transition.

Pour se rendre compte du problème, imaginons maintenant que StatusNet ou Diaspora soient complètement abandonnés par les développeurs et ne soient plus maintenus. Les logiciels ont amassés une bonne base d’utilisateur mais ces utilisateurs vont lentement migrer vers des solutions plus modernes et maintenues. Sans l’émergence d’une solution supérieure, ils vont se diviser, se tournant peut être même vers une solution propriétaire. Cette migration se fera petit a petit, avec une base d’utilisateur ne voulant pas faire de migrer en raison de la communauté déjà présente sur son vieux réseau. Si ces logiciels ne sont plus maintenus, des Pump ou Friendica seront sans doute moins tentés de continuer a maintenir un niveau de compatibilité vers eux. Les nouvelles fonctionnalités ne seraient pas portées en OStatus. La communauté se retrouverait encore plus fragmentée. C’est évidement un scénario peu probable (déjà car OStatus n’est pas utilisé que par StatusNet) mais cela montre le problème des multiplications de standards : division de la communauté encore plus accentuée en cas d’abandon de projets.

Se mettre d’accord sur un protocole standard c’est une condition essentielle pour le succès des réseaux libres décentralisés. Sans cela, je ne pense pas que l’on pourra dominer les réseaux propriétaires centralisés ayant l’avantage de ne pas avoir a se soucier de ce problème. Je ne critique pas un standard en particulier (je ne me permettrais pas d’en désigner un supérieur aux autres), que ce soit OStatus, Pump, Tent, Diaspora ou un autre à base de XMPP, il faut se mettre d’accord sur une API commune et il faut arrêter d’en développer une nouvelle pour chaque logiciel. Toutes les API ne sont sans doute pas compatibles avec tous les cas de figure (sans parler de l’école HTTP vs XMPP) mais il y a sûrement moyen de dégrossir. Créer c’est bien, améliorer l’existant, c’est mieux.

CC-BY-NC XKCD

CC-BY-NC XKCD

Google a annoncé un nouveau modèle de Chromebook : le Pixel. Une machine à 1300$ avec des specs assez misérables : i5, 4GB de RAM, SSD de 32GB, une connectique, poids et encombrement assez banal pour un 13″. Ah non il a un écran haute définition (je dirais bien pour regarder un Blu-ray dans le train mais y a pas de lecteur) et un écran tactile (woo, sé taktil !). Non là où Google mise le tout est sur son OS minimaliste et son accès au cloud. Lorsque l’on achète cette machine, l’on reçoit 1TB de stockage sur les serveurs de Google via Google Drive pendant 3 ans. Ainsi à n’importe quel moment, sur n’importe quelle machine, on peut accéder à ses fichiers en ligne. Plus de risques de crash de disques durs, Google se charge de tout ! Elle est pas belle la vie ? Excusez-moi, je pars vomir et je reviens.

*bruit de chasse d’eau*

Non ! La vie n’est pas belle. Le concept du Chromebook est une des pires idées que l’on puisse avoir et qui me fait vraiment peur si ça marche. Dans un article du journal Le Soir de samedi dernier, l’on présentait le modèle comme s’attaquant de front à Apple. Ils ne croient pas si bien dire puisque je ne vois ça comme passer d’un gaspillage d’argent (silence fan boy d’Apple, c’est dépassé de troller avec toi) à un autre sans doute pire.

chromebook-nope

Il y a un concept simple qu’on oublie de plus en plus aujourd’hui : la propriété. Si un bien m’appartient, j’en fais ce que je veux. De la voiture que l’on peut repeindre aux murs que l’on peut abattre en passant par le livre que je peux revendre, l’informatique semble s’éloigner de ces concepts. Je loue un livre sur Amazon (puisqu’il en reste proprio et peut en faire ce qu’il veut), je loue ma musique à l’écoute sur Spotify (puisque je n’y aurai plus accès si j’arrête de payer ou si une major veut retirer son catalogue), je loue même ma vie sociale (puisque une fermeture de mon compte Facebook me réduirait à l’état d’ermite). Ça ne suffit pas ? Maintenant louez tout ! Vos emails, vos documents professionnels, vos photos de famille, votre carnet d’adresse, toute votre vie numérique ! Même supprimer un fichier ne dépendant plus de vous (le fichier reste sagement sur les serveurs de Google). Il s’agit ici d’une double location : vous payez le stockage en argent (après le 1TB pendant 3 ans, c’est 50$/mois pour la même capacité), avec votre vie privée (mais ça c’est pas neuf) et si ça ne suffit pas, vous êtes dépendant du fournisseur (Google) pour accéder à vos fichiers.

De par son mode de fonctionnement, il est évident qu’un accès internet est essentiel. Pas de connexion, pas de chocolat. Ils disent viser les power-users mais considérer que les professionnels ont un accès internet tout le temps est un peu optimiste (train ? déplacements ?). Même quand je reste à mon bureau au boulot à coté du routeur, il arrive que le net saute (et oui OpenERP a installé ses bureaux à la campagne). Si on avait tous des chromebooks, chômage technique ! Il y a bien un modèle avec puce 4G mais comptez 200$ de plus.

Berger seul

Il y a deux jours, la BBox de Jean-Kevin est tombée en panne

Bien sur l’accès internet va se faire d’en plus en plus présent, les forfaits illimités 4G ne devraient pas mettre trop longtemps à arriver, le problème d’accès n’est que temporaire. Seulement vous mettez tous vos œufs dans un même panier. Qu’on soit à la ferme, à la bourse ou en informatique, c’est une très mauvaise pratique, et d’autant plus si c’est un inconnu qui porte le panier. Ploum avait fait un très bon article en imaginant un monde selon Google, c’est l’occasion de le (re)lire. Google deviendra il une nouvelle prison dorée ?

Même si ce n’est pas de bon ton de souhaiter du malheur, c’est pourtant ce que je souhaite à ce Chromebook, pour le bonheur de l’informatique en général. Je dirais bien qu’il n’y a de toute façon aucune chance pour que les gens prennent mais les précédents historiques tels que les succès de Facebook ou d’Apple laissent songeur et craintif.