Greg's blog

To content | To menu | To search

thoughts and musings

Entries feed - Comments feed

Wednesday, March 25 2009

Des applications web vraiment libres ?

Aujourd'hui l'actualité m'encourage à prendre du temps pour partager quelques reflexions à propos du logiciel libre. L'article de Richard Stallman (RMS)[1] sur gnu.org, The Javascript Trap, fait du bruit. Il me semble mal compris. Deux autres nouvelles intéressantes : une opinion que Eric S. Raymond (ESR)[2] qualifie lui-même d'hérésie, reprise dans Eric S. Raymond speaks heresy; et l'abonnement obligatoire à last.fm Radio[3] pour les utilisateurs hors US, UK et Allemagne. Note : cet article est en cours de rédaction, mais j'ai decidé de le publier pour pouvoir bénéficier de retours si quelques lecteurs s'égarent sur ce blog. N'hésitez donc pas a ajouter vos commentaires. J'en prendrai compte pour faire évoluer ce post. Voir l'avis de Marc dans Le piège du JavaScript.

L'essai de RMS décrit l'exception qui existe actuellement sur la partie cliente des applications web. Il se concentre sur le langage Javascript mais n'exclut pas d'autres environnement tout aussi problématique - voire davantage - comme Flash, Silverlight ou les applet Java. Le Javascript est utilisé actuellement pour créer de vraies applications[4]. Dans ce cas, si l'on adhère aux principes du logiciel libre, il semble évident que ces applications Javascript non triviales doivent également être libres. Si c'est le cas, l'utilisateur devrait pouvoir exécuter une version modifiée à la place du code original. Certaines réactions ont dénoncé une position quelque peu extremiste de RMS. Cependant, son exposé est clair et je partage son point de vue : à partir du moment où l'on utilise une application, on peut exiger qu'elle soit libre. Le langage dans lequel l'application est écrite n'y change rien.

Cet essai a l'intéret de soulever le problème plus général du manque d'applications web libres. Il y fait allusion brièvement, en indiquant qu'un texte complémentaire lui serait dédié. Si je prend mon exemple personnel, j'essaie autant que possible d'utiliser des logiciels libres. J'installe des Debian GNU/Linux sur toutes mes machines (mes serveurs Gandi ou mes machines personnelles), et n'installe presque exclusivement des applications libres. Je dis bien "presque" car malheuresement dans certains cas, je ne peux m'en passer. Un exemple simple est flashplayer qui même s'il peut être en partie remplaceé par Gnash[5], reste parfois indispensable... je le regrette. Cependant j'utilise des services web. Et c'est là que s'illustre l'autre face du problème. J'utilise twitter qui n'a rien de libre, juste une API documentée. Paradoxalement j'utilise twidge comme client, qui lui est libre mais cela ne résout rien. Alors bien sûr, vous me direz, "utilise identi.ca qui a ouvert son code !"; ce n'est pas faux, mais je me heurte alors à un autre problème : la base utilisateur. Ce problème je l'ai déja rencontré avec la messagerie instantanée. Fervent promoteur de Jabber, jusqu'à installer un serveur[6] et commencer à designer un client[7], j'ai du me résoudre à me créer un compte MSN que j'utilise chaque jour pour discuter avec des amis. Dans le cas de MSN, si je décompose la pile logiciel, nous trouvons le serveur - et probablement les proxy -, le protocole, et enfin le client. De nombreux clients libres existent[8]. Pour les serveurs c'est autre chose puisqu'ils sont propriétaires et maintenus par Microsoft MSN. Et enfin du côté du protocole ce n'est pas mieux. Tout ceci est bien déprimant ! Mais finalement pour les applications est-ce vraiment mieux ? gmail, twitter, last.fm... que d'applications propriétaires ! On y gagne tout de même un protocole souvent standard (HTTP Rest ou autre) et une API documentée, mais pas libre. Cela a permis d'écrire des clients libres, et d'avoir le plaisir d'en trouver en Haskell (twidge).

Pourquoi vouloir une application web libre ? Et bien, ce sont les mêmes raisons que pour les autres logiciels. Je veux pouvoir le comprendre, l'adapter à mes besoins, le ré-utiliser pour d'autres projets. Le code, au même titre que des livres, représente du savoir. Du savoir appliqué certes, mais du savoir quand même. Les fondateurs des figures de proue du web2.0 rétorqueraient probablement qu'ils doivent garder leur avantage concurrentiel, leurs petits secrets et ne pas faciliter la l'apparition d'offres similaire qui utiliseraient la même base logicielle. Cet argument n'a rien de nouveau. Dans certains domaines, il est plausible. Elaborer un modèle économique viable, voire - osons-le - efficace, demande de la créativité. Il n'en demeure pas moins désuet à une époque où nombre de grands éditeurs[9] expriment leur attrait pour le logiciel libre. Ce serait naïf de les croire philanthropes, Ils voient dans le logiciel libre un modèle efficace qui répond à leurs besoins sur certains segments de marché. Dans son essai Open Source and the Commodization of Software[10], Ian Murdock[11] expose comment le logiciel libre s'est imposé de facto dans certains domaines. Cela s'est fait en partie en rendant le code source accessible facilement. Ensuite pour générer des revenus, des offres à valeur ajoutée sont construites au-delà du code source. Ses offres vont du conseil, à l'adaption du logiciel en passant par l'externalisation de l'exploitation du logiciel.

Ces voies me paraissent envisageables pour des applications web. Certaines entreprises ont décidé de les suivre. identi.ca propose un service hébergé. L'utilisateur n'a pas à se soucier de l'exploitation du logiciel - ici Laconica -. Un autre modèle consiste à implémenter en priorité les fonctionnalités demandées par les utilisateurs qui paient. La démarche repose alors sur l'adaption du logiciel aux besoins de l'utilisateur. Si certains voient dans le mouvement du logiciel libre un idéalisme forcené, il serait temps d'équilibrer cette vision et de comprendre les avantages économiques qu'il apporte. A suivre...

Notes

[1] fondateur du projet GNU et de la FSF, a initié les projets Emacs, GCC et GDB

[2] auteur entre autres de l'essai The Cathedral and the Bazaar, du livre The Art of Unix Programming (TAOUP) et des logiciels libres fetchmail, bogofilter et gpds

[3] 3 dollars ou 2.50 euros par mois

[4] il prend l'exemple de Google Docs dont le code Javascript obfusqué représente environ 500k

[5] par ailleurs classé dans les projets prioritaires de GNU

[6] malheuresement jabberd à l'époque

[7] repris par de très bonnes mains, ma contributions fût vraiment mineure

[8] j'utilise bitlbee et kopete

[9] Sun avec la libération de Java et de Solaris, ainsi que le rachat de MySQL, IBM par ses multiples contributions à des projets libres dont Linux et malgré quelques brevêts mal venus, et Apple

[10] Open Sources 2.0, O'Reilly, 2005

[11] Le ian de Debian, aujourd'hui chez Sun

Thursday, January 17 2008

Ce que j'attends en 2008

Ca ressemble à des prédictions sans en être :). Je ne suis pas voyant et les tendances que je perçois ou que j'attends sont liées aux domaines qui m'intéressent. Je ne vais donc pas m'essayer à prédire les grands évèments de 2008, mais plutôt énoncer ce que j'attends.

  • Les langages fonctionnels vont réellement commencer à être utilisés. Par réellement, j'entends de manière moins confidentielle. L'exemple le plus frappant est l'utilisation d'Erlang pour le service SimpleDB d'Amazon AWS[1]. Les capacités fontionnelles de certains langages[2] très appréciés pour le développement agile comme Ruby et Python (pour ne citer qu'eux) sont indéniablement très pratiques et rendent plus productif (et plus succinct, exemple : les list comprehension en Python). Le style fonctionnel dans ces langages est partiel, on trouve en effet des effets de bord. Avec la vogue des architectures multicore et la nécessité de faire du calcul parallèle (distribué ou multithread local), les langages fonctionnels sont très adaptés. Une raison simple à cela, ils sont fondés (pour les langages fonctionnels purs c'est même imposé) sur l'absence d'effet de bord. Par conséquent la concurrence est implémentée avec des processus qui ne partagent pas de mémoire et communique de manière asynchrone par passage de messages. C'est le style fonctionnel qui amène à cela. On trouve une bonne illustration de ce principe dans une description d'Erlang et de la raison de son succès récent What's all this fuss about Erlang? par Joe Amstrong.


C'est toujours difficile de choisir un langage de programmation quand on se lance dans un projet. Plusieurs approche se présentent : choisir celui qu'on maîtrise le mieux d'où la proéminence du C/C++, .Net, PHP et Java; choisir celui pour lequel on aura le plus de contributeurs ou développeurs à embaucher (qui a parlé de Java ?? ;) ); choisir les langages les plus appropriés pour traiter chaque composant du projet. hmmm oui vous avez bien lu LES langages. Alors bien sûr en pratique ça finit souvent par un langage, mais il n'est pas proscrit d'envisager l'utilisation de plusieurs langages. C'est d'ailleurs ce que pas mal de projets font déjà depuis longtemps en ajoutant la possibilité d'utiliser des langages de scripts[3] dans les applications. Paul Graham mets en avant ce choix dans son essai Beating the Averages. Certains y voit l'apologie de Lisp, j'y vois surtout la mise en exergue de ce qui constitue un des avantages majeurs d'une startup sur ces concurrents : le socle technologique. Il faut batir sur de bonnes fondations, celles qui permettront de ne pas perdre de temps et de répondre à la demande. "Faut qu'ça scale!!!". Les gens qui créés des entreprises sont souvent intelligents et l'équipe technique compétente. Ce qui va faire la différence, outre les choix stratégiques, sont les choix qui vont permettre d'aller plus vite et de faire mieux. Ca n'empêche pas d'avoir des startups qui marchent en utilisant du Java, mais certains, comme Frank Sommers, se posent des questions sur l'utilisation du langage dans l'efficacité d'un framework How Does Language Impact Framework Design?. Le seul élément qui n'est pas extensible c'est le temps. Ensuite la grosse question est qu'est-ce qu'un bon langage ? Qu'est-ce qu'une bonne technologie ? Et la chacun a sa réponse en fonction de ses besoins, de son expérience et de son humeur. The Hundred-Year Language de Paul Graham[4] est une réflexion parmi d'autres sur ce point.

  • Le logiciel libre sur l'embarqué grand public et les téléphones mobiles va se généraliser : Google Android, OpenMoko, The BUG (qui a été gratifié d'un CNET Award au CES et massivement couvert par la presse spécialisée récemment). Je me demande comment va réagir Archos au projet OpenPMA. Soit ils le font ala Apple en essayant de tout vérouiller - ce serait vraiment moche -, soit ils décident de créer une communauté autour de leur produit et de leur plateforme logiciel. C'est un modèle économique différent car actuellement ils vendent des plugins et ouvrir la plateforme logicielle permettrait d'avoir des alternatives à leurs plugins propriétaires et donc ne pas les acheter. Cela peut constituer un pari intéressant sur l'innovation et permettre de rattraper le retard d'Archos sur Apple notamment sur la partie interface utilisateur -- pour le reste difficile de parler de retard. J'aimerais bien un PMP qui sache lire le MKV !

Notes

[1] Pourquoi Amazon a choisit erlang pour SimpleDB. J'ai une piste ici -- bien que je ne connaisse pas les détails d'implémentations de SimpleDB notamment le moteur de base de données : "Mnesia - Base de donnée temps réel distribuée pour Erlang. Mnesia supporte la réplication en mémoire vive (RAM) aussi bien que le stockage sur disque, permet la modification dynamique des schémas et permet de stocker des structures de données d'une complexité arbitraire. Mnesia est très rapide car fonctionne dans le même espace d'adressage que les applications qui l'utilise: cette caractéristique est possible, car Mnesia et les programmes qui l'utilise sont écrits en Erlang. Mnesia est un bon exemple de la puissance d'Erlang: Dans combien de langage pourriez-vous écrire un SGBD distribué, complet et de qualité industrielle en moins de 20 000 lignes de code." (extrait de Livre blanc: Le langage Erlang.

[2] Can Your Programming Language Do This?

[3] lua, perl, python, clisp me viennent en tête

[4] Deux essais cités de lui, vous allez croire que je suis fan ! Et bien pas spécialement, c'est juste que je lis Hackers and Painters en ce moment, et que son expérience est intéressante.

Monday, December 24 2007

Bonnes fêtes ! Et un peu de teasing pour 2008 ;)

Nous sommes en pleine période de fêtes de fin d'années. Entre la course aux cadeaux et les expéditions pour voir tout le monde, le temps passe vite ! Pour ceux qui lisent ce blog et que je n'aurais pas l'occasion de voir, je vous souhaite de passer de très bonnes fêtes de fin d'années. Beaucoup de courage pour ceux qui doivent travailler le soir du réveillon et/ou le jour de Noël et qui n'ont pas pris de congés.

Nous ne sommes pas encore en 2008, mais je vais décrire un peu ce qui attend ce blog au début de l'année.

  • Un redesign complet : ce blog en a bien besoin ! J'avais repris le thème deep_green, de Carnegie. Et au final j'ai complètement changé les couleurs (le thème était au départ vert sur noir...). Donc oui ça ne servait à rien de prendre ce thème :p. Je vais donc reprendre ça from scratch et apprendre à utiliser Inkscape.
  • La suite, enfin la ré-écriture plutôt, de la réflexion sur l'avenir des applications web libres. J'ai une ébauche bien avancée de la structure et des notes de côté. Après avoir relu le billet que j'avais écrit je ne suis pas satisfait : c'est pas très clair et j'ai du mal à poursuivre la réflexion à partir de ça. Je vais donc prendre le temps - car je trouve que le sujet le mérite - et mettre l'essai en ligne courant janvier.
  • Une présentation d'une application web écrite avec Django. Je n'en dis pas plus pour le moment :).
  • + de billets et surtout plus régulièrement. C'est probablement la résolution que l'on trouve le plus souvent chez bloggeurs, je vais essayer de m'y tenir !

Friday, December 7 2007

Le financement des services web gratuits par la pub

Ce billet est une tentative de réponse à la question soulevée par GML, Le web gratuit a-t-il un avenir ?. Après éclaircissement de sa part, je me suis rendu compte que j'avais mal compris l'hypothèse qu'il avançait. Je vais essayer de reprendre dans le bon sens ici :).

Continue reading...

Tuesday, December 4 2007

Quel avenir pour les applications web libres ? (1/?)

Aujourd'hui le web est présent partout. Et comme le met en avant David Larlet, nos données personnelles se trouvent de plus en plus disséminées sur la toile. Dans ce contexte, l'avenir des applications web libres peut sembler primordial, car ce pourrait être un moyen de connaître ce qui est fait de ces données.

Le web 2.0 a amené des principes qui changent la manière de voir et concevoir les services sur le web. Si la notion d'application parait simple sur le desktop, la notion de Software as a Service (SaaS), a changé la donne des applications web. Les mashups en sont une preuve, lorsque les données sont suffisamment bien découpées - c'est à dire en unités petites et ré-utilisables -, le service est utilisé avec d'autres services pour constituer une nouvelle application. On utilisera à cet effet l'API fourni par les différentes services. Cependant, il existe toujours de manière sous-jacente une plateforme technique qui permet de mettre en oeuvre et d'assurer le service.

En résumé :

  • Une application libre ne garantit pas le contrôle des données personnelles à partir du moment où elle est hébergée chez un fournisseur de service.
  • Les offres d'hébergement gratuit ou pas cher suffisamment souples pour permettre l'installation d'environnement web variés permettent de pousser la création et la diversité technologique.
  • La réactivité de la communauté et la rapidité d'intégration des nouvelles technologies et normes permettra une adoption dans les entreprises.

Continue reading...