Dernièrement, App.net a fait parler de lui pour avoir réussi sa levée de fond pour commencer son développement. Qu’est-ce qu’App.net? Sur leur site, voici ce qui est annoncé:

App.net is a real-time social feed without the ads.
Let’s create a service that puts users first.

App.net is a different kind of social platform.

We’re building a real-time social service where users and developers come first, not advertisers.

Pour résumer, l’idée derrière les développeurs de App.net est donc de créer un clone de Twitter payant. Pourquoi payer ? Pour garantir que les utilisateur et les développeurs soient les personnes à garder heureux et non plus le produit à rentabiliser comme Facebook et Twitter le considère trop souvent. L’idée a été lancée suite à la fermeture de l’API de Twitter et la présence de publicités grandissante.

Bon on a donc un système:

  • Centralisé
  • Payant
  • Propriétaire
  • Respectant les utilisateurs et développeurs

Waw quand j’ai entendu ça, j’y croyais pas. Les gens marcheraient jamais. Et pourtant, ils ont récolté 800.000$ à ce jour. En comparaison, c’est 4 fois plus que ce que Diaspora avait rassemblé pendant sa levée de fond (déjà impressionnante).

Pourquoi est-ce que je n’y croyais pas ? Parce qu’on a déjà OStatus/StatusNet ! Pour ceux qui débarquent, OStatus est un standard ouvert qui utilise une série de protocoles pour faire de l’échange de messages et StatusNet en est l’implémentation la plus connue (Friendica en est une autre). La particularité de StatusNet est d’être un logiciel libre, n’importe qui peut l’installer sur son serveur. Identi.ca est l’instance publique de StatusNet la plus connue mais il en existe des milliers d’autres, j’en ai une par exemple. Soit vous créé votre compte sur une instance existante, soit vous installez la votre sur votre serveur, cool non?

OStatus permet un échange de messages de façon distribuée. Avec ma petite instance minable, je peux parler avec n’importe qui d’autre ayant une instance compatible OStatus. Et c’est là toute la force du protocole de mon point de vue. Avec un système libre et distribué, on peut potentiellement avoir le meilleur système du monde (impossible à contrôler par exemple).

Et pourtant, aujourd’hui les gens sont prêt à rassembler 800.000$ pour créer un système payant, centralisé et propriétaire. Qu’est-ce que le système a de plus ? Qu’est-ce qui manque à StatusNet qui n’a pas réussi à se développer plus que ça?

Le buzz. App.net a réussi à faire parler de lui à un moment où il fallait, quand Twitter recevait le plus de critiques. Jusqu’à présent Twitter convenait parfaitement à tout le monde, seul quelques geeks avec leurs concepts dépassés de vie privée n’étaient pas content. Maintenant on empêche Instagram de fonctionner aussi bien qu’avant, on parle d’avoir de la pub, la censure commence à être trop présente, les mécontents augmentent. L’équipe de App.net a saisi le moment parfait pour sortir son projet avec des arguments très marketing. StatusNet n’a jamais réussi à se vendre ainsi.

Une entité claire. Savoir qu’il y a une compagnie avec des moyens derrière est rassurant pour l’utilisateur moyen. Il préfère passer par une compagnie commerciale qu’utiliser un serveur maintenu par des dons et quelques bénévoles qui risque de crasher ou être en surcharge à tout moment. L’argent ça fait pro, c’est tout. Quels sont les moyens derrière StatusNet? Aucune idée, juste un site officiel pas très fourni, un wiki spammé, un dépot Gitorious assez discret. Je n’ai aucune idée de comment avance StatusNet, ce qui se passe etc. Et OStatus? C’est encore pire. Site web mort, wiki vide (ah non, il y a cette page qui est intéressante). Je veux dire, est-ce qu’il y a un compte officiel OStatus ou StatusNet qui donne des annonces sur l’état du projet ?

Une bonne interface. Je ne suis pas un pro de l’IHM mais il faut quand même avouer que, aussi bien visuellement qu’à l’utilisation, Twitter est plus agréable. “C’est moche”, “c’est lent”, “c’est pas intuitif”,… On peut faire facilement pas mal de reproches (fondés ou non) à StatusNet. C’est con mais une interface intuitive avec des effets AJAX dans tous les coins, ça fait plaisir à l’œil. Vous avez vu l’alpha de App.net, si vous êtes en manque d’inspiration…

La centralisation. C’est triste à dire mais la centralisation a des avantages. Tout d’abord une plus grande réactivité. Pas de connexion et propagations de messages entre instances, tout est au même endroit. Également, la centralisation permet de créer un index très facilement des personnes présentes. Il n’existe pas de manière automatisée de chercher un groupe de personne sur StatusNet. Un index distribué serait-il possible ?

Vu comme un service. Lorsqu’il a été demandé aux fondateurs de App.net pourquoi ils ne sont pas open source, il a été répondu que leur but n’était pas de produire un logiciel mais un service. Ils se comparent à Dropbox qui fonctionne comme un service. L’utilisateur lambda n’est pas intéressé par ce qu’il y a derrière, il veut juste que ça fonctionne (ici l’on pourrait introduire un parallèle à Apple mais ce n’est pas le troll du jour). StatusNet est encore présenté trop souvent pour ses caractéristiques techniques (bien mais pas bandant) et non pas comme un outil de communication pour rapprocher les gens (là vous m’intéressez).

Je ne parlerai pas de l’API parce que je ne l’ai pas étudiée en détail mais il me semble que, du coté de StatusNet, il n’y a pas de quoi se plaindre (que les spécialistes me disent si je me trompe).

Je viens peut être de critiquer StatusNet et pourtant j’y crois encore, j’ai vraiment envie que ça fonctionne. Je crois encore que OStatus/StatusNet a un avenir devant lui. Je crois que tout n’est pas perdu et qu’il y a moyen d’attirer des masses. L’arguement principal avancé de app.net est qu’il respecte les utilisateurs et développeurs. Qu’est-ce qui respecte mieux les utilisateurs et développeurs qu’un outil créé par eux pour eux ? Un outil libre a un avantage énorme sur ce point, c’est nos données, on en fait ce qu’on veut.

App.net a montré que des gens sont prêt à repartir à zéro malgré l’effet réseau très fort sur Twitter. Qu’est ce qu’on peut faire pour y réussir également ? La question reste ouverte, je ne dis pas maintenir la vérité mais voici quelques points essentiels de mon point de vue:

  • Une interface retravaillée: on a le protocole, il manque le design (l’opposé de Diaspora en gros)
  • Une instance de référence fiable: identi.ca est ce qu’il y a de plus proche mais il manque encore de fiabilité et ne joue pas très bien avec les autres instances.
  • Un écosystème plus riche: l’API est très proche de Twitter, ça devrait faciliter les choses non? Créons des boutons “partager sur StatusNet”, des clients mobiles, des intégrations dans des sites web…
  • En parler: StatusNet reste le coin des geeks, même mes potes en info ils connaissent pas en général.

Bon après il a des questions ouvertes. Est-ce qu’il faudrait un autre client alternatif à StatusNet ? Faut il chercher à copier Twitter à tout prix ou se différencier ?

Et à ceux qui me diront “t’as qu’a coder pour StatusNet plutôt que de critiquer”, je rappelle qu’on peut critiquer (positivement) sans pouvoir forcement faire mieux soit même. Je suis très loin d’être un ninja du PHP, je suis mauvais et je le sais, je ne vais pas commencer à faire du développement là dedans. Par contre il y a sans doute d’autres contributions intéressantes et c’est là que j’aimerais créer une discussion.

Les ressources par exemple ? Vous avez quoi ? Allez je commence:
Si vous cherchez à jouer avec StatusNet en python, je vous conseille cette librairie python request-oauth (ou mon port python 3) pour utiliser l’API OAuth.

En terme de contributions, il y a cette page qui donne des pistes. Le wiki peut sans doute recevoir encore un peu d’aide (traduction en Français ?), trois pages Wikipédia qui pourraient bénéficier d’un petit rafraîchissement/éclaircissement OStatus, StatusNet, Identi.ca.

Si vous avez des chouettes ressources, librairies, outils, d’idées d’amélioration de StatusNet, je suis curieux d’entendre tout ça.

Mise à jour 17/08: vous avez lu les nouvelles conditions d’utilisations de l’API 1.1 de Twitter ? Il est plus que temps de se dégager de ça.

Aujourd’hui, mon flux RSS a vu passer quelques articles qui m’ont font sursauter. D’abord, j’ai vu ce post de Mike Conley, développeur chez Mozilla, No, that’s not it for Thunderbird. Apparemment des gens auraient mal compris une annonce au sujet de Thunderbird, je n’y prête pas plus attention que ça… Puis je vois un article chez Crowd42 Mozilla va arrêter le développement de Thunderbird. Woholaa manneke ! Article repris par m0le Thunderbird ne sera plus (retiré, a publié un erratum après discussion). Et puis le coup de grâce fut l’article de Denis Szalkowski L’arrêt de Thunderbird enfonce la crédibilité de l’Open Source ! (nuancé au conditionnel après discussion également) qui dit carrément que, je cite, “Linux n’est pas adapté pour la station de travail”. Bam !

Bon après je comprend ces réactions, c’est des chaînes de rumeurs qui s’amplifient à chaque pas. A ce rythme là, on se retrouve avec des forks agressifs dans 24h. Seulement revenons aux sources pour voir ce qui est réellement.

Techcrunch a publié un article That’s it for Thunderbird dans lequel ils dévoilent un mail confidentiel pour alerter les développeurs des publications en principes prévues pour lundi. Bon les gens, quand on dit “on fait ça pour vous tenir au courant, ne le rendez pas public”, faut pas être con et arrêter de comprendre “si je publie ça le premier, je vais faire le buzz”. Merde quoi, vous voyez le résultat maintenant ? Les gens s’emballent pour un rien en lisant un mail de 15 lignes. Bon il y a quand même un passage intéressant dans le mail:

We’re not “stopping” Thunderbird, but proposing we adapt the Thunderbird release and governance model in a way that allows both ongoing security and stability maintenance, as well as community-driven innovation and development for the product. This will mean an eventual shift in how we staff Thunderbird at Mozilla Corporation – we are still working out details, but some people will likely end up on other Mozilla projects.

Donc le développement ne sera pas arrêté mais va se focaliser sur la sécurité et stabilité. Pas encore clair mais le staff risque de diminuer un peu après réattributions à d’autres projets.

Un peu plus tard, sans doute en réaction aux rumeurs qui grossissaient, Mitchell Baker, la chair de Mozilla Foundation, publie un article Thunderbird: Stability and Community Innovation. Dans cet article, elle explique que les utilisateurs de thunderbird sont globalement content de l’état actuel du logiciel. Et c’est vrai, il fonctionne bien, il gère bien les mails, il peut être étendu facilement par des addons, quoi de plus ? Son point est donc que la priorité n’est plus d’ajouter des nouvelles fonctionnalités mais de maintenir, stabiliser et sécuriser le client mail. Et c’est très bien, si Thunderbird devient un logiciel sans bug, qui fait très bien son boulot (gérer les emails, pas plus), je signe. La course aux nouvelles fonctionnalités c’est très gadget, juste histoire de montrer qu’on existe toujours et pas forcément essentiel. Les dernières en date ? La création de compte emails depuis l’interface et l’intégration de services tiers pour les grosses pièces jointes. Mouai pas mal mais pas forcement les choses qui vont changer la vie des utilisateurs. Sans doute que le client mail n’est pas, comme le navigateur, un logiciel qui a besoin sans cesse de nouvelles fonctionnalités et de grappiller des microsecondes de vitesse.

C’est une question de point de vue, ou bien on dit que les fonctionnalités ne sont plus une priorité ou bien on dit que la stabilité est la nouvelle priorité. Verre à moitié vide ou à moitié plein ?

Dans l’article, elle donne également le lien vers une page du wiki Mozilla Thunderbird/Proposal: New Release and Governance Model. Dans cette page on note que Thunderbird est utilisé par 20 millions de personnes (on arrête pas le développement d’un logiciel utilisé par 20 millions de personnes, sont pas con non plus), que les deux versions ESR (pour entreprises) et “normale” vont continuer leur rythme de release habituel (20 novembre pour la première, toutes les six semaines pour la deuxième) et que le modèle de fonctionnement actuel ne va pas changer globalement.

Pour en rajouter une couche, on a le témoignage de deux développeurs de Thunderbird (des gens qui savent ce qu’ils disent en gros). Mike Conley avec No, that’s not it for Thunderbird et Ludovic Hirlimann avec Thunderbird’s future from the inside qui disent que ça ne risque pas de changer grand chose pour l’utilisateur avant au moins la version 17.

Je ne sais pas vous, mais je pense qu’il n’y a aucune raison de s’inquiéter pour notre client mail favori. Le seul point qui m’ennuie est que j’aurais bien aimé voir Lightning (agenda) intégré officiellement et Mike Conley avait comme projet de retravailler le carnet d’adresse. Bon c’est pas la fin du monde et les addons existent toujours et ne risquent pas de disparaître, même si Mozilla ne touchait plus à une ligne de code de Thunderbird (ce qui, je le répète, n’est pas prêt d’être le cas). Le futur nous en dira plus.

Keep calm, don’t fork and love the pandas.

Mise à jour 8/7: un article officiel (enfin) a été publié sur le blog de Mozilla Adjusting the way Thunderbird is managed. On confirme le fait que la stabilité et sécurité sont les points les plus importants à ce jour. Ils disent également que, compte tenu des nombreux projets qu’ils ont en particulier le futur Boot2Gecko, ils vont diminuer un peu le nombre de développeurs pour les réattribuer. Le projet n’est pas abandonné, juste que pour l’instant les innovations viendront plutôt de la communauté. Ce n’est qu’une proposition qui ne prendra de toute façon pas effet avant septembre et doit être discutée. Rappel: c’est un projet open source, contribuez plutôt que de forker.

Également une interview de Jb Piacentino, le “managing director” de Thunderbird chez Tristan Nitot. Il explique que des releases sont prévues pour Thunderbird, encore une fois, pas de soucis.

Je possède un appareil photo numérique Canon PowerShot A530, un modèle datant de 2006, un de ces petits compact simple et efficace, “Point & Shoot” en Anglais. Quand je vois que certains smartphones (vous savez ces trucs qui deviennent intelligents parce qu’ils ont un écran tactile, un peu comme ces films qui deviennent bien en 3D) ont quasi 10 fois plus de megapixel que moi, on pourrait se dire qu’il est temps pour une upgrade. Que nenni ! On ne fera pas fonctionner la société de consommation inutilement. Sans dépenser un rond, on peut transformer son appareil bas de gamme en un appareil à en rendre jaloux un hipster. On va hacker notre appareil. Et aux gens qui répondrons “pourquoi faire ?”, je répondrai “parce qu’on peut” (oui oui, je danse également comme ça quand un hack fonctionne).

CHDK, pour Canon Hack Developpement Kit, est un logiciel sous GPL à installer sur sa carte SD qui permettera d’augmenter les possibilités de l’appareil. On ne touche pas au firmware donc pas de risque de faire trop de dégât (presque, il est toujours possible de faire des bêtises si on fait un script foireux) et surtout formater la carte SD suffit à rendre l’appareil à son état d’origine. Ce kit est prévu pour une longue liste de Canon Point & Shoot. Si vous possédez une autre marque, ça ne sert à rien d’essayer, ça ne sera pas compatible. Il existe sans doute des hacks similaires pour d’autres marques mais je n’ai pas creusé la question.

Qu’est-ce qu’il permet de faire ce kit ? Voici quelques unes des possibilités.

  • Faire des photos en RAW (format sans perte)
  • Permettre des temps d’expositions beaucoup plus long ou court
  • Augmenter la taille des vidéos possible
  • Utiliser des scripts en Lua (pour prendre une photo toutes les x seconde par exemple)
  • Détection de mouvement
  • Indicateur de batterie plus précit
  • Quelques jeux ont même été implémentés

On peut paramétrer la gestion de la batterie assez finement

Pour l’installer, téléchargez d’abord la dernière version du logiciel souhaité. A ce jour la 1.0 est la version stable et 1.1 instable, à vous de voir si vous aimez vivre danregeusement. On le choix entre la version minimale ou complete (avec plein de scripts & co). Il existe deux méthodes pour configurer sa carte SD, la plus pratique est de rendre la carte SD bootable. Je vous conseille de lire la doc (la procédure varie en fonction du type de caméra et de taille de la carte) mais voici ce que j’ai fait :

  1. Télécharger le kit
  2. Formatez votre carte SD en FAT16 (paquet dosfstools)
  3. Copiez le contenu de l’archive téléchargée à la racine de la carte
  4. Démarrez la carte en mode lecture (pas pour prendre des photos donc)
  5. Entrez dans le menu, option “firmware update” et acceptez (le firmware ne sera pas réellement mit à jour)
  6. CDHK est chargé, appuyez une fois sur la touche raccourcit (un ALT apparait à l’écran) suivit de “menu”
  7. Dans le menu CHDK (plus fournis que celui d’origine hein), allez dans “Make Card Bootable”
  8. Sortez la carte SD de l’appareil et activez le lock sur la carte SD
  9. Redémarrez votre caméra

Vous pouvez désormais passer du menu normal au menu CHDK via la touche raccourcit (le ALT apparait sur l’écran). Vous pouvez maintenant explorer toutes les possibilités de votre nouveau jouet. Je vous renvoie vers le CHDK User Manual pour plus d’info ou vous amusez avec quelques scripts lua.

Navigateur de fichier, calendrier, jeux,…

Il manque plus que le serveur ssh pour être parfait mais avouez que pouvoir dire, “j’ai hacké mon appareil photo”, ça a quand même plus de gueule que “j’ai jailbreaké mon iPhone”.

En cours d’écriture Kopi, de mon moteur de blog utilisant Django, je suis arrivé au stade des commentaires. Django propose déjà un module de commentaire assez pratique (avec honeypot, protection csrf…). En voulant rester dans la philosophie “less code is better” (particulièrement quand ça vient de moi), j’ai cherché à l’utiliser et l’étendre pour mes besoins. J’ai passé pas mal de temps à bidouiller et fouiller le code (pas toujours très clair la doc Django) et voulais donc partager mes trouvailles (et entendre vos critiques au cas où je suis complètement à coté de la plaque).

Un des points très important pour mon module de commentaire était de rester indépendant. Si un jour je créais une galerie de photo et que je voulais utiliser mon module sans rien devoir y changer. Il ne pouvait avoir AUCUNE référence à mon module de blog dans le module de commentaire. C’est le module de blog qui utilise le module de commentaire, pas l’inverse. Ce point n’est souvent pas respecté dans les exemples glanés sur le net et pourtant est tout à fait possible, ce grâce à la modularité de Django.

Un des problèmes que j’ai rencontré était la redirection des urls. Nativement, Django me redirige chaque post vers une url /posted/ avec un moche “Thank you for posting” digne d’un “It works” post-installation apache. Heureusement pour éviter cela, Django supporte dans son formulaire une balise <input name="next"/> dont la valeur est, comme on pourrait s’en douter, l’url de la page vers laquelle rediriger. Voici comment je m’y suis pris.

D’abord l’architecture de mon projet :

blog/
	templates/
		blog/
			post_detail.html
			...
comments/
	templates/
		comments/
			form.html
			...
	views.py
	urls.py
	...
kopi/
	settings.py
	urls.py
	...

Dans mon fichier kopi.urls.py, j’inclus de manière habituelle les urls concernant mon blog et mes commentaires, aucun lien entre les deux.

urlpatterns += patterns('',
url(r'^comments/', include('comments.urls')),
url(r'^', include('blog.urls')),
)

Du coté du blog, je gère donc mes articles. Une simple Generic View fait très bien ça en 5 lignes. Dans ma template blog/templates/blog/post_detail.html, j’inclus ma template de cette façon :

{% load comments %}
{% render_comment_form for current_post %}

où current_post est le nom de ma variable contenant mon article de blog.

Et voila pour le coté, blog, le reste est du coté des commentaires. Pour le module de base, je suis parti de ce qui a été fait dans django-basic-apps, l’import des méthodes de django.contrib.comments pour que mon module comments fasse exactement la même chose que celui dans les contrib sans avoir à l’importer dans les settings (c’est même conseillé, django est assez chiant quand deux apps portent le même nom). Le fichier comments/urls.py sera par exemple :

from django.conf.urls.defaults import *
from django.contrib.comments.urls import urlpatterns

urlpatterns = patterns('comments.views',
# let's overwrite django.contrib.comments
url(r'^post/$',
view='custom_comment_post',
name='comments-post-comment'),

url( r'^', include( 'django.contrib.comments.urls' ) ),
)

Je reprend donc toutes les urls de django.contrib.comments.urls mais en forçant à utiliser ma view custom_comment_post plutôt que celle de base (Django cherche un match dans l’ordre et s’arrête au premier rencontré). Si vous voulez étendre le modèle pour y ajouter des champs, la logique est la même (Customizing the comments framework).

D’abord, je voulais réécrire ma template de formulaire pour qu’il connaisse la valeur next. J’ai donc créé le fichier comments/templates/comments/form.html avec (version simplifiée)

{% load comments i18n %}

{% csrf_token %}

{% if next %}

{% else %}

{% endif %}

{% for field in form %}

{{ field.label_tag }} {{ field }}

{% endif %}
{% endfor %}

Ainsi soit l’on passe une valeur choisie avec la variable next, soit on est redirigé vers l’url de l’objet pour lequel on affiche le formulaire. En mettant le for current_post dans le render_comment_form, j’indique ainsi que current_post sera le target_object. Et ça c’est très cool parce que ça veut dire que pour ma galerie d’image, je n’aurai qu’à faire {% render_comment_form for current_image %} et ne pas changer ma template form.html.

Après un test qu’est ce qu’on voit ? Le formulaire présent sur /monarticle/ fait une requête POST vers /post/, réponse depuis /posted/ (la page moche) mais ne reste pas dessus car a un header avec le code 302, redirection vers /monarticle/?c=42 où 42 est l’ID du commentaire.

Parfait ? Non pas encore complètement, j’aimerais que le visiteur aie une ancre qui l’amène au niveau de son commentaire. Je n’ai pas besoin de ce vieux ?c=42, par contre un #c42, ça m’intéresserait déjà un peu plus… Justement, c’est là qu’intervient mon overwrite au dessus avec la view custom_comment_post. On va forcer à récupérer l’url du commentaire plutôt que l’url du post un peu modifiée.

def custom_comment_post(request, next=None, using=None):
# on utilise encore le code de la classe contrib
response = contrib_comments.post_comment(request, next, using)

if type(response) == HttpResponseRedirect:
# url in the form /redirect_path/?c=comment_id
redirect_path, comment_id = response.get('Location').split( '?c=' )
if comment_id:
# get the related comment
comment = Comment.objects.get( id=comment_id )
if comment:
# url in the form /comments/cr/object_id/comment_id#ccomment_id
return HttpResponseRedirect( comment.get_absolute_url() )

return response

Et là on laisse la magie de Django travailler, la fonction get_absolute_url du module de commentaire de base est bien foutu et va résoudre l’url /monarticle/#c42. Il vous suffit alors dans votre template d’ajouter une ancre pour ce format.

{% for comm in comment_list %}

{% endfor %}

Vous n’aimez pas le format #c{{id}} ? Vous savez que vous êtes compliqué ? Mais ça tombe bien, Django a prévu ça. La fonction comment.get_absolute_url() prend un paramètre optionnel anchor_pattern="#c%(id)s". Il suffira d’appeler la fonction avec par exemple "#commentaire-id-%(id)s" pour obtenir quelque chose de plus agréable.

J’anticipe la question : que faire si je veux que sur mon application de blog j’ai #commentaire-post-%(id)s et sur ma galerie #commentaire-photo-%(id)s. Et bien là j’avoue que je n’ai pas encore trouvé de moyen simple de le faire. On peut y arriver en écrivant un nouveau templatetag (un overwrite de render_comment_form par exemple) mais franchement, ça fait beaucoup de boulot pour pas grand chose. Si vous avez une suggestion simple et élégante, je suis preneur.

Depuis la version 3.4, je trouve que Epiphany (appelé maintenant Web) est devenu vraiment très bien. Interface simple, se lance très rapidement, bon support du HTML5 (score de 345 au html5 test), bonne intégration dans GNOME Shell… Il n’est pas parfait c’est vrai mais se défend très bien au jour le jour. Je l’utilise désormais comme browser secondaire (byebye Chromium).

Seulement il lui manquait encore quelque chose pour remplacer complètement Chromium : DuckDuckGo, mon moteur de recherche favoris. J’avais déjà expliqué comment changer le moteur de recherche par défaut dans Firefox et Chromium, au tour de Epiphany maintenant.

Comme il est intégré dans GNOME, on fait cela via gsettings (une interface graphique aurait été agréable, c’est vrai).

$ gsettings get org.gnome.Epiphany keyword-search-url
‘http://www.google.com/search?q=%s&ie=UTF-8&oe=UTF-8′

Ok j’ai donc Google comme moteur actuel, il suffit de faire un set avec la nouvelle valeur, dans le cas de DuckDuckGo c’est :

$ gsettings set org.gnome.Epiphany keyword-search-url https://www.duckduckgo.com/?q=%s

Ça fonctionne évidement toujours avec n’importe quel moteur de recherche (http://www.seeks.fr/search?q=%s pour seeks…)

[Source]

DLink viole la GPL ?

16 April 2012

Dans le cadre de mon travail de fin d’études, j’étudie la sécurité des caméras de surveillance. Pour le coté pratique, j’ai choisi de travailler sur la DCS-2130 de DLink, une caméra wifi d’entrée de gamme remplie de fonctionnalités sympa.

Lors de mon étude, je me suis rendu compte que DLink offrait le code source de ses firmware sous GPL. Offrait ça sous-entend : a été obligé car puise allègrement dans les programmes sous GPL et y est donc plutôt contraint…

Ils ont donc mit en place un joli site avec le code disponible pour la version 1 de leur firmware. Bon on va faire l’impasse sur le fait que l’on est à la version 1.1 maintenant parce qu’il y a pire.

Que faire quand vous êtes un constructeur obligé de distribuer son code alors qu’on a pas envie ? Faire un site qui marche pas. Et oui, DLink a gentiment mit en place un site tout foireux qui permet de télécharger à une vitesse bridée variant de 1Kb/s à 60 Kb/s (sur une archive de 1.6Gb, faites le calcul) et qui arrive toujours à un timeout à un moment ou un autre (une fois, j’ai réussi à aller jusque 200Mb, j’y croyais presque). Évidement évitez les liens directs ou ftp, ça permettrait de reprendre le téléchargement.

Attendez ! Il y a une adresse email pour contacter l’admin. “Delivery Status Notification (Failure)” Ah ben mince, c’est con ça… Le formulaire de contact ? J’attends toujours la réponse à mon message…

Bien sûr cela pourrait tout à fait être une coïncidence expliquée par le fait que DLink ne sait pas administrer un site et que les migrations de licornes sont perturbées par les éruptions solaires. D’ailleurs par le passé, DLink s’est toujours montré comme un exemple en matière de respect de la GPL.

Allez une petite citation des avocats de DLink en 2006 pour la fin :

Regardless of the repeatedly-quoted judgement of the district court of Munich I, we do not consider the GPL as legally binding.

Malgré le jugement cité du tribunal de Munich, nous ne considérons pas la GPL comme légalement contraignante.

—-

Mise à jour 17/4: si on cherche à avoir plus d’info sur où est réellement hébergé le fichier. On voit que l’on fait une requête javascript javascript:dnn(‘AECBLCAAJC’) et soit vers http://tsd.dlink.com.tw/asp/get_file.asp?sno=AECBLCAAJC. Sauf que le code en question change à chaque session.

En analysant la requête on voit qu’on reçoit un code HTML 302 Object moved qui nous redirige vers ce site. On se rapproche du lien direct !
Ce brave serveur est donc un tomcat 5.0.19. C’est facile à savoir, c’est mit sur leur page d’accueil. Au moins, il ont pas mit admin/admin comme mot de passe. Il parait que cette version est vulnérable aux directory traversals si des curieux veulent chercher…

En attendant, j’ai utilisé ce dernier lien pour faire un wget sur mon serveur. Du 60k mais ça semble tenir, je viens de passer la moitié, on y croit ! Évidement il suffisait que je dise ça pour avoir Read error at byte 818639781 (Connection timed out)

Mise à jour 19/4: grâce à bochecha, j’ai pu récupérer l’image de la DCS2130. Elle est en cours d’upload et disponible sur ftp://ftp.mart-e.be/DLink/, faites vous plaisir.
Si vous avez d’autres fichiers que vous avez pu télécharger, contactez moi, je vous donnerai un accès au ftp pour la partager.

ownCloud, la solution de cloud personnel libre vient de sortir deux offres commerciales. Disponibles owncloud.com, les deux offres proposent une version Business Edition et Entreprise Edition aux prix, respectivement, de 999$ et de 15.000$ par an. Qu’est-ce qui est offert à ce prix là ? En gros, du support professionnel (dépannage, maintenance,…). Une comparaison détaillée des versions est disponibles sur leur site.

Il est important de noter que le logiciel distribué est la même que la version communautaire de ownCloud disponible sous AGPL par n’importe qui, la différence se fait sur le service rendu, pas le logiciel. La seule différence se trouve au niveau de l’offre Entreprise où le logiciel est publié, en plus, sous leur propre licence pour permettre l’utilisation de plugin propriétaires.

Est-ce que ces offres payantes sont une bonne nouvelle ? Je pense que oui. J’aime croire qu’il est possible de gagner de l’argent en développant du logiciel libre. Proposer un support professionnel me semble sans doute une des meilleurs solution car garde toujours la même base logicielle pour la communauté et la version payante. J’espère donc que cela va fonctionner, pousser des professionnels à vivre du libre et convaincre les entreprises que non, utiliser des solutions libres ne veut pas dire utiliser un logiciel gratuit, buggé et codé à la va-vite par un geek dans sa cave.

[Source]

Avec le MWC 2012 venant de s’achever, je me disais qu’il serait intéressant de faire le point sur l’état actuel du libre dans les smartphones et les tablettes. Spoiler : c’est le bordel!

Android

Le moins libre des OS libres était bien sûr présent au WMC. Rien de très fabuleux de son coté. La version 5, Jelly Bean, a été annoncée pour automne 2012. Rien de très surprenant puisque le rythme d’une sortie par an est ce qui était grosso-modo prévu. On reste dans le flou sur les nouveautés mais on annonce une version plus adaptée aux tablettes et pouvant être utilisé par les débutants comme par les pro. On voit très bien le marché d’iOS qui est visé. Avis personnel : actuellement Android n’est quand même pas toujours évident avec tous ses sous-menus, iOS de son coté fonctionne très bien pour ma grand mère (oui j’ai une grand mère sous iPad) mais je trouve qu’elle est d’une pauvreté affligeante (la plateforme, pas ma grand mère).

Il a aussi été annoncé que 850.000 activations par jour d’Android étaient réalisées dans le monde. C’est énorme. On estime qu’iOS perdra son leadership au trimestre prochain, et ça c’est bien (d’accord c’est pour le refiler à Google).

Ah oui, il y a aussi Canonical qui a présenté Ubuntu for Android. Si faire tourner une image d’Ubuntu dans un téléphone me semble assez bourin (d’ailleurs faut un dualcore), je vois clairement un avenir pour ces téléphones qui peuvent se plugger sur un PC ou écran, si on arrive à standardiser quelque chose, on peut imaginer avoir des terminaux avec juste un écran, un clavier et une dock. Après il ne semblerait pas que cette solution soit libre puisque l’on privilégiera l’accord avec le constructeur plutôt que l’application disponible pour tous, dommage…

CyanogenMod

Le développement est toujours très actif chez cyanogen. Ils ont eu quelques problèmes de manque de serveurs pour construire les builds de nightly mais après un appel aux dons, c’est rétabli. On espère voir CyanogenMod 9, dérivé d’Ice Cream Sandwich, bientôt disponible.

N’oubliez pas que CyanogenMod n’est pas la seule alternative. Il existe Replicant qui est totalement libre et MIUM est enfin passé open source.

B2G

Le libriste convaincu n’aura surement pas raté l’annonce de Boot2Gecko, l’OS mobile de Mozilla. Une première version a été présentée au MWC. Une version tournant sur un Samsung Galaxy S2 est d’ailleurs disponible.

C’est moche, c’est pas fonctionnel mais c’est Mozilla donc tout le monde est fou à propos de ça (c’est un peu le Apple du libriste en fait Mozilla). Est-ce que la mayonnaise prendra ? On verra mais je suivrai surement l’affaire personnellement.

Mise à jour: jetez un œil à l’interface mise à jour, c’est déjà plus beau.

Une nouveauté très intéressante de Mozilla est son marketplace qui est encore en béta fermée mais se veut plus respectueux de l’utilisateur et du développeur que les solution existantes (un peu comme c’était prévu avec MeeGo avant son échec).

MeeGo

Souvenez vous, l’OS né de la fusion de Moblin et Maemo, que tous les libristes voyaient comme un système réellement libre pour nos téléphones. Beaucoup d’espoirs jusqu’à ce que Nokia signe un contrat avec Microsoft pour faire tourner des Windows Phone. Si l’on ajoute les rumeurs du désintérêt de Intel arrivant à gauche à droite, on est arrivé à ce dont on devait se douter : l’arrêt du développement de MeeGo et la création de Tizen. Dommage, j’aimais bien les Meegons.

Seulement, avant de passer chez l’ennemi, Nokia nous a pondu un très joli appareil, le N9. J’aurais rêvé mettre la main dessus s’il ne coutait pas aussi cher et si Nokia n’avait pas décidé de saboter la diffusion en ne le sortant que dans une poignée de pays. Toujours est il que le N9, tournant sur Harmattan, une instance (whyyy ???) de MeeGo, vient d’être mit à jour. Au moins ils ne laissent pas complètement tomber les gens.

Tizen

Tizen a du mal à convaincre le public. Cela s’explique entre autre par un manque d’ouverture assez frappant : un site horriblement vide, des mois d’attente avant la publication du premier bout de code. Le focus est clairement le partenariat avec les marques, pas avec le grand public. Est-ce qu’on tient un détrôneur d’Android en terme de fausse-ouverture ?

Toujours est-il que Tizen a annoncé une première beta et un partenariat avec Huawei, un constructeur chinois, ce qui vient se rajouter à Intel, NEC, Casio, NTT Docomo, Orange, Panasonic, Samsung, SK Telecom, Telefonica et Vodafone. Allez les gars, avec tout ce beau monde, il devrait avoir moyen de sortir un truc de potable !

La final release est planifiée pour le deuxième trimestre de cette année. Mit en parallèle avec le paragraphe sur Android et B2G, j’ai un peu de mal à imaginer quel public va s’intéresser à ce système, trop nouveau pour les grandes foules, trop fermé pour les libristes. Le bon calcul est sans doute d’avoir choisi l’HTML5 et les technologies du web pour les applications. Wait (again) and see comme on dit…

Il y a également le projet Mer qui a pour but de développer en façon ouverte ce que MeeGo et Tizen aurait du être (rien que ça). Ça a attiré l’attention de quelques développeurs, reste à voir si ça aboutira à quelque chose, ça tourne pour l’instant sur quelques plateformes. Je n’ai pas suivit de prêt l’affaire mais pourquoi pas.

WebOS

WebOS était l’OS de Palm avant d’être racheté par HP qui l’a grosso-modo coulé. Tout le monde se souvient de la folie engendrée par la liquidation des dernières tablettes sous WebOS. Peut de temps après, WebOS était devenu libre. Quelques personnes ont commencé a espéré un nouvel acteur libre dans le mobile mais quand on voit qu’HP enlève 275 employés du développement de WebOS, ça montre bien à quel points ils supportent le projet…

Allez courage possesseurs d’un Touchpad bradé, l’alpha 2 de CyanogenMod 4 est sortie pour vous !

Les API

Vous croyiez que c’était le bordel ? J’ai laissé le meilleur pour la fin.

Dans une mailing list de Tizen, j’ai lu une question à propos dy système d’API utilisé. Apparemment Tizen, n’utiliserait pas le système d’API du W3C. Première réponse : ils utilisent celles du WAC. Réponse suivante : non, ça dépend pour faire quoi, parfois W3c, parfois WAC. Aucune des deux API n’étant idéale, ils utilisent la meilleur dans chaque cas de figure.

Dans la discussion, un article faisant le point sur les différentes API est tombé. Il existe actuellement les API du W3C (World Wide Web Consortium), WAC (Wholesale Applications Community, basé sur des standards ouvert avec une couche propriétaire), Chrome (pour son Chrome web store) et Mozilla (pour B2G). C’est tout ?

Pas exactement puisqu’au MWC, Microsoft, Mozilla, Facebook, Samsung, Intel & Co ont annoncé former le W3C Core Mobile Web Platform Community Group (aka Coremob, plus facile à prononcer que WCMWPCG), pour faire le ménage et créer une nouvelle API unifiée. Une API pour les gouverner tous. Une API pour les… hum désolé. Tous sauf, les deux irréductibles Google et Apple qui dépensent déjà des tonnes de $ dans leurs solutions maisons propriétaires et n’ont aucun intéret à partager (contrairement à Facebook). Mouaiiii, suis quand même pas convaincu…

CC-BY-NC XKCD

Conclusion

Pour finir, posons nous la question la plus importante : si aujourd’hui, vous voulez vous acheter un smartphone, que choisiriez vous ? Où se retrouvera le tux qu’on aime tant ?

Je pense qu’aujourd’hui, il n’y a pas d’alternative suffisamment mature à Android et il est donc toujours le meilleur calcul. Un Samsung Galaxy pourrait être une bonne idée si jamais vous comptez tester B2G (un développeur assez actif sur l’engin). Il est sûr que vous devez choisir un modèle pouvant être rooté et faire tourner une ROM alternative, on ne va pas rester avec l’OS du constructeur quand même. GeeksPhone, le constructeur de mon téléphone a annoncé un GeeksPhone 2 si vous êtes prêt à attendre encore quelques mois (et avoir un téléphone Android nativement rooté avec un développeur de chez eux travaillant sur CM).

Et dans un futur proche ? Tizen et B2G semblent les plus aptes à émerger. Tizen est peut être plus avancé et à le support d’acteurs de poids. B2G semble avoir une plus grande popularité auprès du public geek (de toute façon le public non geek, s’il sait ce qu’est Android, c’est déjà bien) mais moins de moyens (et sans le cash dur que percer). C’est personnellement ce dernier que j’aimerais voir réussir (je suis un Mozilla-fanboy). Et pourquoi pas un nouvel acteur tant qu’on y est ?

La Saylor Foundation est une association ayant pour but de promouvoir l’éducation libre et accessible à tous. Elle propose sur son site internet, des cours d’un niveau universitaire (de l’histoire à l’économie, en passant par la biologie) accessible gratuitement, sans aucune inscription nécessaire. Un très beau projet en soit.

Elle organise également le Open Textbook Challenge qui récompense le meilleur livre de cours sur un sujet populaire disponible librement. Pour la première édition de ce chalenge, la foundation a récompensé 2 auteurs, Kenneth Kuttler pour son livre Elementary Linear Algebra et Olivier Bonaventure pour Computer Networking: Principles, Protocols and Practice.

Si l’algèbre m’intéresse un peu moins, je peux parler de mon expérience personnelle pour le deuxième. Olivier Bonaventure (alias obo) a été mon professeur de réseau l’an passé et c’est dans son livre que j’ai appris les fondements du fonctionnement des réseaux. Je le conseille à tout le monde voulant en savoir un peu plus dans ce sujet, il est très bien fait. Le livre est disponible en pdf, epub, mobi ou simplement en récupérant les sources. Pour les plus pressés, il y également une version html. Le livre est disponible sous licence Creative Commons et l’on peut soumettre ses corrections et améliorations. Une traduction française a ainsi été commencée il y a peu.

Pour rajouter à la beauté de la chose, plutôt de d’accepter sa récompense (qui était quand même de 20.000$), Olivier Bonaventure l’a offerte à la Fondation Louvain “afin de permettre le développement d’autres supports de cours en libre accès et d’inciter les professeurs à embrayer sur cette initiative”. Moi je dis, bravo obo, j’espère que ça poussera d’autres à suivre ton exemple !

Avec son coté trollesque légendaire, Numérama titrait HTML5 : Google et Microsoft veulent ajouter des DRM, je ne pouvais que morde à l’hameçon.

L’idée derrière cette proposition se base sur une comparaison avec flash. La consultation de média via ce dernier peut être bridée et contrôlée beaucoup plus facilement qu’en utilisant l’HTML5. Normal, avec la balise <video> et <audio>, le chemin du fichier est indiqué en dur dans la balise HTML, le browser le récupère pour consulter la vidéo ou son. Seulement, comment mettre des restrictions sur la consultation ? Elles seraient trop facilement contournées.

Google, Microsoft et Netfix se sont rassemblés pour soumettre un brouillon pour l’évolution du HTML5. Si acceptée, cette extension permet de normaliser un moyen de gérer le déchiffrement d’un contenu avec une clef reçue en javascript. Est-ce du DRM ? Techniquement oui (contrôler par des mesures techniques de protection, l’utilisation qui est faite des œuvres numériques dixit wiki) même si ce n’est pas ceux auquel on est “habitué” sur les iTunes & co. On est plutôt dans une approche pour créer une API permettant le déchiffrement d’un fichier.

J'avoue, j'ai pas tout compris...

Typiquement, l’on imagine un (non-regretté) Megavideo-like en full HTML5 où les gens visionneraient leur vidéos (légales ou non, là n’est pas la question) après avoir payé leurs abonnements.

Maintenant, on peut se demander si cette proposition est une bonne idée ou non. Si pas admirable, je pense quand même que cette idée devrait aboutir. Avant de me faire lyncher, je m’explique vite :

Aujourd’hui, pour imposer des restrictions, de nombreuses sociétés utilisent flash (certains parlent d’un silverlight mais c’est une légende urbaine, tout comme un réseau social par Google). Or, on a plus besoin de le répeter, flash c’est le mal, le plus loin on se trouve de lui, le mieux c’est. Le HTML5 étant l’avenir, de plus en plus de gens s’y mettent, c’est le cas de Grooveshark par exemple. Mais sans le contrôle proposé par flash, tous ne peuvent pas faire le pas.

Comme je le disais il y a quelques mois, ils sont loin d’être con chez Adobe (il faut le reconnaitre). Ils ont compris que leur monopole vidéos de chatons et space invadors touchait à sa fin et qu’il fallait évoluer. Ils ont ainsi commencé à lâcher les secteurs moins intéressants à leurs yeux (smartphones et Linux) pour se consacrer sur ce qui avait de l’avenir pour eux. Ils se lancent dans l’HTML5 et développent le coté “premium” et HD de flash. C’est justement à cette niche premium que l’on veut s’attaquer avec cette extension, donner un moyen aux gros de garder une protection à l’accès de la vidéo.

Les plus libristes d’entre vous me reprocheront que cette façon de penser est dépassée, que restreindre l’accès à un média c’est se foutre de la gueule du client et que ça poussera d’autant plus les gens à se procurer un bon torrent (cf ce tweet). Je suis d’accord avec ça mais il faut aussi être réaliste. On est pas dans le mode de distribution idéale et on est pas prêt d’y arriver. Il y a des géants qui veulent se faire du fric, et même si l’aspect financier n’est pas l’objectif, il est aujourd’hui quasi impossible de tenir une plateforme de distribution massive de vidéos sans restriction et être viable financièrement.

Réfléchissons à l’envers : est il préférable d’avoir un HTML5 avec une restriction d’accès de contenu implémentée et une adoption massive ou juste quelques personnes ayant leur site en HTML5 mais les géants continuant a être accroché à flash ? Personnellement je préfère la première situation. Tout comme je préfère que quelqu’un utilise Skype sur Ubuntu, voir même Firefox sur Windows que de rejeter massivement les choses qui ne sont pas à 100% libre. Commençons petit à petit. Pour Iceweasel sous Debian, ça viendra en son temps, arrêtons de clasher à tour de bras. N’oubliez pas la grosse nouvelle de la semaine qu’est l’abandon du développement de flash pour Linux (en dehors de Chrome). Il est temps de préparer l’avenir.

Est-ce pervertir le HTML5 ? Non ! Ce qui reste important à garder en tête est que le but est de créer une norme ouverte. De plus il faut savoir que cette norme n’apporte pas une protection parfaite. C’est un des points soulevés dans la proposition.

Can I ensure the content key is protected without working with a content protection provider?

No. Protecting the content key would require that the browser’s media stack have some secret that cannot easily be obtained. This is the type of thing DRM solutions provide. Establishing a standard mechanism to support this is beyond the scope of HTML5 standards and should be deferred to specific user agent solutions. In addition, it is not something that fully open source browsers could natively support.

La clef de déchiffrement peut être obtenue car doit être communiquée avec le browser à un moment. A moins qu’il n’y ai un secret à partagé l’intérieur du browser mais inconnu de l’utilisateur (ce qui est complètement incompatible avec le libre et se rapproche plus des “vrais” DRM), le fichier sera toujours récupérable et la protection contournable. L’idée est d’avoir une solution plus sécurisée que ce que l’on a actuellement (pas très difficile) et de compliquer un peu l’accès aux ressources. De toute façon, il est impossible de contrôler complètement ce qui se passe chez le client, on ne peut l’empêcher de capturer le flux de donnée déchiffrée, que ce soit en flash, HTML5 ou ÜberDRMOfZeDead.

J’espère donc que ce draft va être accepté, et que les gens adopteront des standards libres pour les sites web de demain. Une fois que ça sera fait, on peut les convaincre qu’il n’est pas à leur avantage de lutter contre le client. L’avenir est aux technologies du web ouvertes mais ne peut se faire sans l’accord de ceux qui ont de l’argent.

Music DRM par XKCD, CC BY-NC