Archive

Archive for the ‘web’ Category

Juick

9 août 2009 fredix 4 commentaires

Après avoir lu l’article de Nÿco sur Juick j’ai couru tester ce surprenant service de blogging (et non pas micro). Et là surprise c’est exactement ce que j’avais imaginé comme alternative à Twitter. En effet pas de stupide limitation à 140 caractères, Juick peut donc faire office de blog. Support des photos intégré et non pas via un autre site (twitterpic). Et surtout support complet du service par Jabber : inscription et post.

Pour compléter l’article de Nÿco je trouve qu’il manque juste une passerelle vers les salons Jabber. Cela serait tout simplement énorme qu’un salon jabber puisse être associé à un groupe Juick. On aurait ainsi tout l’historique du salon sur le groupe. Par contre il manque pour gérer cela, le support des groupes dans Juick et le fait de pouvoir poster via l’interface web. J’avais pensé à ce type de fonctionnalité pour Noumba, mais le profil des utilisateurs ne permettait pas de l’envisager. Le site est très jeune mais comme il est complètement pensé autour de Jabber cela serait stupide de ne pas implémenter les salons.

Autre surprise, le business model. Enfin un site qui ne se base pas sur la pub ! Il est nécessaire de payer 9.95$ afin de pouvoir poster plus d’une image par 24 heures. On espère le support de la vidéo bien sûr. Comme l’indique Nÿco il suffit d’envoyer l’image au bot Juick depuis son client Jabber. Par contre les proxy de transfert par défaut dans Gajim ne fonctionnent pas et j’ai du ajouter celui de jabberfr (proxy.jabberfr.org). Une fonctionnalité qui permet de remplacer imageshack !

A propos de Jabber on peut constater que cela va limiter le service aux connaisseurs. Pour y remédier il faudrait a mon avis pouvoir poster via l’interface web et ouvrir une API (UPDATE : l’API existe bien ici décrite en Russe :p , et on me signale l’existence d’un client Juick , il n’utilise pas une API mais parse simplement un XML des derniers messages, ). Quant aux tags appelés hash tags sur Twitter, ils servent à compenser l’absence flagrante des groupes. J’y vois personnellement l’intérêt que sur des termes génériques. Exemple un groupe juick au lieu d’un simple tag, par contre un tag pour définir une humeur ou décrire un média. De plus sur un groupe ou un salon à la jabber on peut y définir des droits d’accès et de multiples propriétés qu’on ne peut envisager avec un simple tag. De la même manière dans un blog les tags et les catégories sont complémentaires.

D’après Nÿco, Juick est écrit en Perl/C++ et cela se ressent à la réactivité immédiate du bot et du site. Certes le nombre d’inscrit est encore très faible, cela sera à confirmer. Je regrette juste l’aspect propriétaire du site.

Pour résumer, voilà donc un site très prometteur où l’on sent que l’auteur a un peu plus de 2 de QI, car il faut vraiment être stupide pour avoir laissé des services tiers compléter les manques flagrants de Twitter… Pour l’avenir de ce type de service, je me demande juste si Google Wave ne mettra pas tout le monde d’accord, car outre des fonctionnalités étonnantes, il sera OpenSource et permettra à chacun d’utiliser son propre serveur à la manière de Jabber.

Catégories:Internet, web Mots-clefs :, ,

Le big switch 2

2 juillet 2009 fredix 4 commentaires

11 jours après avoir migré mon blog de mon serveur Typo vers Blogger je viens à nouveau de switcher cette fois-ci vers WordPress.com ! Je parle bien d’un hébergement chez WordPress.com, il ne s’agit pas pour moi de revenir vers un auto-hébergement… Voici les différentes raisons :

  1. WordPress fait parti des blogs les plus avancés techniquement, et il dépasse de loin le service Blogger qui ne gère toujours pas les pages et le menu par onglet sans bricoler la CSS…
  2. Il est Opensource : WordPress.org
  3. L’hébergement chez WordPress.com me permet de m’affranchir de l’administration et des mises à jour.
  4. L’import (articles, commentaires et catégories) d’un blog Blogger en 2 clics.
  5. L’export XML.
  6. 3 Go d’espace disque gratuit.
  7. widgets.
  8. Statistiques de blog sans passer par un service tiers à la Google Analytics.
  9. Leurs services payant propose le Domain mapping pour un coût extrêmement modique (9.97$ /an ce qui revient à 7.27€ /an) ce qui me permet d’utiliser mon propre domaine.
  10. Le paiement via ce type de service est un excellent moyen de financer le libre. Ce dernier point est pour moi prioritaire car il est à mes yeux indispensable d’encourager les business modèles Opensource d’autant plus lorsqu’ils atteignent ce niveau de qualité technique.

Dans de précédent billets j’ai critiqué le fait que le Libre se focalisait sur le logiciel sans penser à fournir de services. J’avoue avoir sauté chez Google sans penser à regarder mon vieux compte WordPress. La faute est réparée.

Catégories:MondeLibre, fredix, web

Répartition de charge avec une architecture asynchrone

28 février 2009 fredix Laisser un commentaire

Avec ce titre pompeux je voulais depuis longtemps écrire un article sur ce thème. Je l’avais un peu abordé avec ce billet sur beanstalkd, cependant je désirais en parler de manière plus généraliste.

Finalement le Grand Ternet a encore une fois encouragé ma feignantise car j’ai trouvé cette suite de 3 petits excellents articles sur haute-disponibilite.net qui expliquent très bien ce domaine :

A compléter avec cet article très riche d’un co-fondateur de last.fm : Anti-RDBMS: A list of distributed key-value stores. Il faut ajouter à cette liste déjà imposante l’étonnant Tokyo cabinet ainsi que nanite basé sur RabbitMQ et cela démontrera aux plus incrédules l’importance d’un bon backend asynchrone et les énormes avantages que cela apporte en terme de réactivité pour l’utilisateur.

Cependant la tentation sera certainement de plus en plus grande d’utiliser les technologies clés en main de cloud computing offertes par Google et Amazon… A quand un service de cloud computing opensource à disposition uniquement, bien sûr, des sites opensource ? :)
Pour finir, à lire également l’excellent article de Greg, {key, value} qui comporte des détails techniques et des exemples (attention par contre sur la partie memcached, car memcachedb ou memcacheq seront plus pertinent pour cet usage).

Catégories:MondeLibre, web

Le libre et les services web

Je suis très fan de l’interaction Web Desktop, qui représente à mon sens l’avenir du Desktop. Même si le sujet est redondant avec de précédents billets, voici de la nouvelle matière,

On constate depuis un moment de plus en plus d’outils à installer sur son bureau ou son navigateur, qui sont en liaison avec des services web. Que ce soit les widgets de Vista, Apple, Adobe Air, ou ceux de Google disponibles depuis peu sur Linux (Google Gadgets for Linux). Mais QUID du Libre ?

Tout d’abord Weave, le Google Browser Sync de la Fondation Mozilla. Il permet de synchroniser en temps réel ses bookmarks, son historique, et surtout depuis la dernière version ses mots de passe vers un serveur Mozilla, le tout chiffré bien entendu.

Quand on possède un PC de bureau et un laptop, c’est vraiment la première extension à installer. Celle de Google est intéressante mais stocker chez eux des infos aussi privées est à mon avis très inquiétant, il y a des limites que je n’ai pas envie de franchir surtout s’il existe une alternative libre.
Pour la petite anecdote j’avais demandé à Tristan Nitot aux JDLL 2007 si la MoFo pensait un jour proposer un Google sync like. Il ne s’est pas étendu sur le sujet trouvant l’idée intéressante, alors qu’il avait cité Weave à sa conférence sans fournir de détail. J’aime bien les surprises de ce genre moi :)

Ensuite sur le desktop, RedHat sponsorise le réseau social Mugshot (un friendfeed avant l’heure) et propose le client natif éponyme disponible dans Fedora (oui j’ai migré ! next billet peut être). Ce client se fait discret dans la barre de tâche GNOME et affiche dans une popup les news de ses contacts. Le site est en lien direct avec GnomeOnline , il suffit d’y créer un compte pour se connecter ensuite sur MugShot. Ce site surfe sur la vague réseau social web2, donc l’intérêt est limité aux adeptes, mais il inaugure l’avenir du desktop libre connecté à des services web.

J’attends cependant plus utile et je pense que Jabber a toute sa place dans la compétition. D’ailleurs pour faire suite au précédent billet, j’ai ajouté sur le wiki de jabberfr.org une page qui recense quelques sites utilisables depuis son client Jabber. Sachant que Jabber commence à être implémenté à l’intérieur de client desktop (abiword, …) la boucle sera bouclée :)

On parle souvent du modèle économique du libre, qui tourne essentiellement autour du service. Proposer des services web payant est à mon avis un excellent modèle d’avenir pour financer le développement du logiciel libre. Personnellement si j’ai le choix entre des services web payant mais libres et hébergés par une communauté en qui j’ai confiance, et des équivalents propriétaires même gratuits mon choix est vite fait.

Aussi je suis ravi que le libre commence à suivre cette voie, et c’est sans nul doute la prochain défi qu’il faudra réussir.

Catégories:MondeLibre, web

De la répartition de charge en Ruby on Rails

22 janvier 2008 fredix Laisser un commentaire

Je viens de publier un article en 2 parties sur le blog d’AF83 :

De la répartition de charge en Ruby on Rails 1/2

De la répartition de charge en Ruby on Rails 2/2

C’est plutôt technique, et présente une solution parmi tant d’autres dans ce domaine très particulier.

Catégories:MondeLibre, XMPP, rails, ruby, web

De la répartition de charge en Ruby on Rails 2/2

22 janvier 2008 fredix Laisser un commentaire

Article publié initialement sur le site d’AF83

L’architecture.

Les bots

Il ne reste qu’à exploiter les capacités de Rails et de XMPP afin de développer les bots qui vont effectuer les traitements.

Exemple :

RUBY:
  1. #!/usr/bin/env ruby
  2. #
  3. # MonBot save message through ActiveRecord
  4. require ‘rubygems’
  5. require ‘xmpp4r-simple’
  6. require ‘daemons’
  7. require ‘yaml’
  8. require ‘logger’
  9. RAILS_ENV = ARGV[0] || ‘development’
  10. require File.dirname(__FILE__) + ‘/../config/environment’
  11. require ‘mysql_retry_lost_connection’
  12. class MonBot
  13. @@bot_jid = « monbot@jabber.toto.com/1″
  14. @@bot_password = ‘123′
  15. @@logger = Logger.new(« monbot.log »)
  16. def initialize
  17. @@logger.info(‘initialize’) { « Initializing in #{RAILS_ENV} mode … » }
  18. @jabber = Jabber::Simple.new(@@bot_jid, @@bot_password)
  19. end
  20. def receive_msg
  21. loop do
  22. @jabber.received_messages do |message|
  23. # on désérialise le message s’il a été transmis de la sorte
  24. obj = YAML.load(message.body)
  25. mon_traitement(obj)
  26. end
  27. sleep 0.5
  28. end
  29. end
  30. private
  31. def mon_traitement(obj)
  32. obj.find_by_login(« toto »)
  33. end
  34. end
  35. bot = MonBot.new
  36. bot.receive_msg

RUBY:
  1. RAILS_ENV = ARGV[0]
  2. require File.dirname(__FILE__) + ‘/../config/environment’

Ces lignes permettent à un script Ruby de charger l’environnement Rails du projet. Le bot est alors capable d’attaquer notre modèle de données via ActiveRecord.

RUBY:
  1. require ‘xmpp4r-simple’

Ce gem nous permet de communiquer vers le compte Jabber du bot. Il peut donc dépiler les objets qui lui sont destiné et les désérialiser pour les traiter.

RUBY:
  1. require ‘daemons’

Ce gem permet de gérer le bot en tant que service (stop/start/restart).

RUBY:
  1. require ‘yaml’

Pour sérialiser/désérialiser vos objets Ruby / Rails.

RUBY:
  1. require ‘mysql_retry_lost_connection’

Ce gem sert à intercepter une coupure de la connexion vers MySQL. Il surcharge ActiveRecord afin de renégocier une connexion.

Avec ces outils nous avons la capacité de créer des services exploitant une file d’attente Jabber et fonctionnant en parallèle. Ainsi, si la charge vient à augmenter, les messages en attente de traitement ne seront pas perdus, puisqu’en attente dans les comptes Jabber stockés par ejabberd. De plus il est possible de multiplier un même bot en exploitant les ressources du protocole Jabber, chaque bot écoutant sur sa propre ressource (bot@monserveurjabber.com/1, bot@monserveurjabber.com/2, …).

Résumé

Pour Noumba, nous avons développé un projet en Rails, le Hub, qui gère la file d’attente Jabber, et communique en REST avec le frontal Noumba. Si cette architecture est sur-dimensionnée pour votre projet, nul besoin d’un backend. Votre site et des bots suffisent amplement. De même quelques comptes Gmail suffisent si vos ne souhaitez pas déployer votre propre serveur Jabber.

Si un backend en Rails s’avère nécessaire il n’est pas conseillé de dupliquer les modèles de votre site principal vers celui-ci. Cela fonctionne mais le principe DRY est de fait supprimé. Cependant un outil tel que Piston permet de temporiser cette affirmation.

Les autres

Après divers essais Twitter a fini par développer son propre serveur de file qui exploite memcached, starling

Un développeur de Seesmic indique utiliser ActiveMQ et RabbitMQ mais semble vouloir migrer vers une solution XMPP : scaling-questions-and-issues

Il existe un grand nombre d’alternatives, on peut citer :

Les deux premiers utilisent le twisted like eventmachine

Bémol

Une telle architecture implique la gestion d’un serveur Jabber, ce qui peut s’avérer une tâche plus complexe et lourde qu’un réel MoM dédié. De plus la stabilité de la bibliothèque xmpp4r ainsi que le plugin ActionMessenger est à surveiller de près. Pour ce dernier, il a été nécessaire de le patcher afin qu’il puisse supporter plusieurs instances Rails.

Avenir

XMPP est un protocole standard et ouvert très répandu ce qui en fait un candidat idéal si l’on souhaite une architecture pérenne et évolutive. L’architecture décentralisée de Jabber et ses capacités à se connecter à des services externes tel que OpenID (xmppid.net) ouvre la porte à une multitude de possibilités.

Ses nombreuses fonctionnalités dédiés au chat (room, pub/sub, voIP, …) sont toutes indiquées pour des sites communautaires et sociaux à tel point que le projet DiSo souhaite l’utiliser en son coeur, mais ceci est un autre sujet.

Catégories:MondeLibre, rails, texte, web

Twitter

Twitter est ce nouveau service web qui déclenche pas mal de troll, voir de mépris depuis quelques temps sur le web.

En effet l’idée de raconter ce qu’on fait à chaque instant paraît ridicule, exemple “Je fais popo” intéressera sans doute pas grand monde, hormis votre médecin si vous êtes suivi :)

Bref, si on s’arrête là sans creuser plus loin ça paraît sans intérêt. Pourtant il suffit de chercher pas bien longtemps pour découvrir qu’une idée génial sort presque tous les jours autour de Twitter.

Tout d’abord sur le contenu. Le dernier en date vu sur le blog de Twitter explique comment les pompiers de Los Angeles l’utilise pour informer sur les interventions en cours. Qui oserait dire que c’est une information inutile ?. En tout cas elle l’est moins que “je fais popo”.

Twitter subit le même mépris que les blogs à leur début : “Mais c’est nul de raconter sa vie à tout le monde ! Ca va intéresser qui ?!” La réponse est connue depuis longtemps car les blogs sont entrés dans les moeurs : Cela va intéresser ceux qui s’intéresse à ta personne et/ou à ton contenu. CQFD.

Et bien Twitter c’est la même chose, sauf que là s’agissant d’un micro-contenu, la forme et l’objectif sont complètement différent. Pour une personne il s’agit de transmettre une humeur, ou une information mais pas suffisamment importante pour en faire un billet dans un blog. Autre cas, transmettre une info par SMS en n’ayant que son GSM sous la main.

Pour un service comme les pompiers un blog n’est que de peu d’appui pour le travail quotidien. Twitter permet de transmettre une information importante et concise à un nombre quelconque de personnes : les personnes concernées. Ici tous les services travaillant avec eux, ou simplement les usagers désirant être informé rapidement en temps réel.

Car la force de Twitter est d’utiliser un service de transmission qui semblait réservé à une génération analphabète de “KIKOO LOL” : le SMS.

On peut donc recevoir en temps réel sur son téléphone portable les interventions en cours des pompiers de LA. Et ceci n’est qu’un exemple parmi d’autres :

  • Une association désirant informer en temps réel ses membres sur l’humeur du stand à Solution Linux par exemple.
  • Une entreprise désirant informer ses clients des dernières promotions, exemple Dell
  • Une ONG souhaitant communiquer chaque évènement sur le terrain, exemple oceandoctor.
  • Une radio web indiquant le titre en cours, exemple (l’excellente) Groove salad de soma fm. D’ailleurs intégrer l’API twitter à Rhythmbox ,par exemple, serait très pratique car permettrait d’activer les notifications IM de cette radio que si on l’écoute.
  • etc, etc.

Twitter peut évidement servir aux VIP souhaitant informer leurs fans au quotidien, exemple avec Dida et Vitaa sur Noumba, le petit clone français (source). D’aucun diront qu’ils ne s’intéressent pas à ces stars, mais rien empêche RMS ou Linus de poster à propos d’un hack en cours intéressant :) D’ailleurs Miguel De Icaza utilise Twitter.

Ensuite les services annexes. Un certain nombre d’entreprise (ou futur) ont vu le potentiel de Twitter et proposent des services permettant de l’étendre. Comme retweet qui propose :

  • twittercal qui fait le lien entre Twitter et Google calendar. Après inscription un simple SMS à twittercal permet de mettre à jour son agenda. Énorme.
  • Fonf qui sur un simple SMS indique le point Wifi FON le plus proche.
  • Timer un réveil programmable.
  • etc, etc.

Autre exemple étonnant avec le bot multimap qui permet d’indiquer par SMS les lieux intéressant à l’endroit où l’on se trouve, ou bien comment aller d’un point A à un point B.

L’envoi et la réception des messages ne se limite pas aux SMS bien sûr, mais web (bof) et messagerie instantanée. Inutile donc de consulter sa page. Twitter ne gérant pas l’envoi et la réception depuis les mails et MSN, cela a été étendu depuis des services extérieur twittermail et twittermsn.
Quand vous fournissez une API vous pouvez toujours compter sur quelqu’un pour ajouter ce à quoi vous n’avez pas pensé ou n’avez pas eu le temps d’implémenter :)

En résumé le succès de Twitter vient de son API et de l’usage (gratuit!) des SMS. Le reste vient de l’imagination des usagers qui est sans limite ; plus que celle de certains blogueurs en tout cas ;)

Catégories:web