RMS à Lyon

14 janvier 2010 fredix Laisser un commentaire

Après presque 12 ans d’utilisation de logiciel libre, je viens enfin de rencontrer le gourou de tous les GNU/Linuxiens, RMS bien sûr. Cette rencontre a été organisée par L’ALDIL et L’université Lyon2 (http://www.colibre.org/module-Actus-display-sid-84.html ) donc merci beaucoup à eux.

J’avais bien sûr visionné des vidéos de ses conférences et lu quelques comptes rendus, aussi ai-je eu un sentiment de déjà vu tout le long de son discours qui s’est bien entendu terminé par une transformation en Saint IGNUcius.

Le discours et sa structure ne semble ne pas avoir changé depuis de nombreuses années, et son show a laissé malheureusement très peu de temps aux questions. Dommage car j’aurais voulu creuser sa position négative sur les « logiciels comme service » (Software As A Service) notamment par des entités comme la Mozilla Fondation , WordPress.com ou pourquoi pas la FSF. En effet l’avenir se dirige nettement vers ce type de services où même les systèmes d’exploitations y seront fortement liés (Google Chrome OS, JoliCloud, Android, iPhone, …) ou complètement déployé (eyeOS). Il y aura donc de moins en moins la nécessité d’installer du logiciel, libre ou pas, mais certainement d’avoir des alternatives libres et éthiques aux SaaS.

Une question a été posé sur le modèle économique du libre. Il est intéressant de constater que RMS bote en touche en répondant que c’est comme de vouloir parler du modèle économique de la Liberté. Cependant il est curieux de constater que d’un côté il refuse à imaginer un modèle économique et de l’autre il exige via la GPL que n’importe qui puisse commercialiser les logiciels libres. J’en conclu que ce qui lui importe surtout, c’est laisser la liberté aux autres, quelle qu’elle soit, même si pour lui cela revient pour lui à vendre un bol d’air.

C’est à mon avis, exactement cette contradiction qui est à l’origine du mouvement qu’il réprouve, l’OpenSource. Or même si l’OpenSource présente le logiciel libre de manière pragmatique sans tong ni barbe, ce mouvement respecte bien entendu les licences libres et a permis sans aucun doute l’implication dans le mouvement, des entreprises. A contrario il est d’autant plus curieux de constater sa tolérance envers les licences libres BSD qui pourtant autorisent l’intégration de leurs codes dans du logiciel propriétaire, l’inverse ou presque de la GPL … :)

Quant aux attaques envers Linus, on a grâce à lui la possibilité d’utiliser des systèmes libres depuis les années 1990, car on attend toujours le GNU Hurd

En tous les cas, très content d’avoir pu rencontrer cet emblème vivant des logiciels libres. Très content aussi d’avoir rencontré un fan d’Amiga visiblement touché par le personnage. En tant qu’ancien fan on peut dire que cette communauté est resté active, et a fini par comprendre l’intérêt des licences libres (voir AROS et Haiku) car Libre is NOT UNIX :)

Pour finir  j’ai eu la chance d’acheter en avant première sa biographie autorisée et la faire dédicacer ! :) (voir aussi Richard Stallman à Paris – petite revue de presse)

RMS à Lyon le 13.01.2010

Catégories:MondeLibre

tip pour Emacs

25 octobre 2009 fredix 2 commentaires

Pour avoir un thème de couleur vert reposant les yeux dans emacs il suffit de mettre ceci dans un fichier .Xresources puis relancer sa session X :

emacs*Background: DarkSlateGray
emacs*Foreground: Wheat
emacs*pointerColor: Orchid
emacs*cursorColor: Orchid
emacs*bitmapIcon: on
#emacs*font: -adobe-helvetica-*-r-*-*-14-*-*-*-*-*-*-*
emacs*font: -*-fixed-bold-r-*-*-15-*-*-*-*-*-*-*
emacs.geometry: 125x40

Capture-emacs
Catégories:config Mots-clefs :

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

Le big switch

Suite à un problème lors d’une manipulation sur mon serveur, mon blog en typo a refusé de repartir.
Ce qui me démangeais depuis un moment a été fait, j’ai donc migré mon blog sur la plateforme de Google, blogger.
J’assume complètement le fait de céder aux sirènes du Minitel 2.0, je n’ai plus l’énergie ni l’envie de maintenir mon blog comme avant, afin de mon concentrer exclusivement sur mes projets.

Blogger a 2 avantages qui compensent le fait d’être hébergé chez le « Mal absolu » :

  1. il permet d’exporter ses données au format XML
  2. il permet d’utiliser son propre nom de domaine

Je blogue depuis 2004 ce qui constitue 264 articles de valeur très inégale. Ayant eu la flemme de faire un script d’export vers Blogger j’ai réinjecté manuellement quelques articles, les autres suivront peut être.

Typo reste néanmoins un excellent blog opensource. Cependant les nouvelles plateformes de micro-blogging comme Twitter ou Identi.ca poussent à limiter l’usage des blogs et les rendent moins incontournable.

Catégories:fredix

iMotion

Cela faisait un moment que je n’avais plus posté sur iMotion, en août dernier apparemment !

J’ai repris le code pour y ajouter le support des fichiers vidéos. Je butais depuis un moment sur un problème de fige de la vidéo lors du changement d’un effet pendant la lecture, problème que je n’ai pas avec la webcam. Cette technique de changement dynamique d’un élément lors de la lecture dans le pipeline est uniquement documenté ici : cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-block.txt#n112 mais je n’ai pas trouvé de soft qui l’implémente …

Premièrement j’avais oublié l’indication 8 :

8) make sure element4 is in the same state as the rest of the elements. The element should at least be PAUSED.

Mon pipeline est en statut PLAYING donc en passant l’élément effect dans ce statut le problème de fige de la vidéo a été résolu.

Deuxièmement le schéma de la documentation montre un pipeline de 3 éléments (plus un 4 ème qui remplace dynamiquement le 2ème). Or cela m’a induis en erreur car le mien en possède 6 :

  1. filesrc
  2. decodebin2
  3. ffmpegcolorspace
  4. videoscale
  5. effectv
  6. ximagesink

Lorsque la documentation indique de bloquer l’élément 1 il s’agit en fait de l’élément qui précède celui que l’on veut remplacer. Dans iMotion je souhaite changer dynamiquement d’effet donc c’est l’élément 4 qui doit être bloqué.

Pour ceux qui débutent avec GStreamer voici une excellente présentation : blog.nicolargo.com/2009/03/gstreamer-la-theorie.html

Voici une capture d’écran avec l’effet edgetv suivie de l’implémentation correcte du code :

voidVideoManager::switch_effect (Glib::ustring a_name){   m_effect_name = a_name;   bool res = false;   GstEvent *event;

   // replay pipeline if it paused

   gst_element_get_state(m_pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);   gst_element_set_state (m_pipeline, GST_STATE_PLAYING);

   // wait until pipeline playing   if (gst_element_get_state (m_pipeline, NULL, NULL, GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_FAILURE) {std::cout << "Failed to go into PLAYING state" << std::endl;exit(1);}

std::cout << "PLAYING state" << std::endl;

GstPad *videoscale_sink_pad = gst_element_get_static_pad (m_videoscale, "sink");GstPad *videoscale_src_pad = gst_element_get_static_pad (m_videoscale, "src");

if (videoscale_src_pad) {res = gst_pad_set_blocked_async (videoscale_src_pad, TRUE, (GstPadBlockCallback) block_callback, m_pipeline);std::cout << "blocked pad : " << res << std::endl;

if (!res) {std::cout << "can not block source pad : " << res << std::endl;exit (1);} else {std::cout << "blocked source pad : " << res << std::endl;}

}else {std::cout << "can not get source pad : " << res << std::endl;exit (1);}

if (m_effect){GstPad *effect_sink_pad = gst_element_get_static_pad (m_effect, "sink");GstPad *effect_src_pad = gst_element_get_static_pad (m_effect, "src");

// remove effect elementgst_element_get_state(m_effect, NULL, NULL, GST_CLOCK_TIME_NONE);gst_element_set_state (m_effect, GST_STATE_NULL);gst_element_get_state(m_effect, NULL, NULL, GST_CLOCK_TIME_NONE);

if (gst_element_get_state (m_effect, NULL, NULL, GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_FAILURE) {std::cout << "Failed to state null on m_effect" << std::endl;exit(1);}

gst_element_unlink_pads (m_videoscale,"src",m_effect,"sink");

std::cout << "UNLINK PAD" << std::endl;

/************ seems to not be usefull ************/gst_pad_add_event_probe (effect_src_pad, G_CALLBACK (source_pad_event_probe), effect_src_pad);event = gst_event_new_eos ();gst_pad_send_event (effect_sink_pad, event);gst_object_unref (effect_sink_pad);std::cout << "SEND EOS" << std::endl;/**************************************************/

gst_element_unlink_pads (m_effect,"src",m_sink,"sink");

std::cout << "UNLINK PAD 2" << std::endl;gst_element_get_state(m_effect, NULL, NULL, GST_CLOCK_TIME_NONE);

gst_bin_remove (GST_BIN (m_bin), m_effect);

std::cout << "GST BIN REMOVED" << std::endl;

}else{gst_element_unlink_pads (m_videoscale,"src",m_sink,"sink");}

if ( m_effect_name != "none"){m_effect = gst_element_factory_make (m_effect_name.c_str(), "effect");gst_bin_add (GST_BIN (m_bin), m_effect);gst_element_link_pads (m_videoscale,"src",m_effect,"sink");gst_element_link_pads (m_effect,"src",m_sink,"sink");

// Indication 8gst_element_set_state (m_effect, GST_STATE_PLAYING);       std::cout << "new effect and linked in" << std::endl;   }   else   {       gst_element_link_pads (m_videoscale,                              "src",                              m_sink,                              "sink");

       m_effect = 0;       std::cout << "no effect" << std::endl;

   }

   if (videoscale_src_pad) {       res = gst_pad_set_blocked_async (videoscale_src_pad, FALSE,(GstPadBlockCallback) block_callback, m_pipeline);       gst_object_unref (videoscale_src_pad);   }    std::cout << "unblocked source pad : " << res << std::endl;    std::cout << m_effect_name << std::endl;}

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

RubyCamp

23 février 2009 fredix Laisser un commentaire

Le premier RubyCamp s’est bien déroulé ce samedi. Je remercie Damien Mathieu pour l’organisation et O2Sources pour avoir sponsorisé l’évènement avec des pizzas :) .

Quelques Suisses avaient fait le trajet, Jean-Michel Garnier un expatrié en Espagne que j’avais déjà vu à Paris on Rails présentait cucumber. Guillaume Cottenceau (ancien développeur de frozen bubble) a présenté Ruby/GTK+. Damien a présenté Ruby et Gaspard Bucher un impressionnant compilateur de template (zafu).

Pour un premier Barcamp à Lyon j’ai trouvé ça très réussi et on est tous d’accord pour remettre ça cette année. Toutes les infos sur le wiki RubyCampLyon.

Photos et photos

Catégories:MondeLibre, ruby

World of Goo

15 février 2009 fredix Laisser un commentaire

Suite à cet article sur le jeu World of Goo j’ai testé la démo et j’avoue avoir été bluffé. Outre l’usage très original d’un moteur physique le jeu possède une atmosphère très prenante, qui ressemble fortement au style de Tim Burton. De plus il est extrêmement bien traduit et le fin du fin propose un portage Linux natif.

Après avoir fini le premier niveau de la démo j’ai fini par l’acheter, pour 16€ ce jeu les vaut largement. A essayer.

Dans un autre genre j’ai essayé Celetania mais pour l’instant sans succès pour obtenir du son.

Catégories:jeux

RubyCamp

31 janvier 2009 fredix Laisser un commentaire

Je n’avais pas posté depuis 2 mois, donc puisqu’on est encore en janvier jusqu’à ce soir, je vous souhaite une bonne année :)

Comme l’indique le titre il va y avoir un Barcamp à Lyon le 21 février consacré à Ruby. Je viens de m’y inscrire, et même si je n’ai aucune idée de ce que je pourrais présenter cela sera l’occasion de revoir ce bon vieux Guillaume Desrat ainsi que Lucas Bonnet :)

Avec de la chance j’aurais peut être avancé un peu sur mon projet perso en Rails, et aurais 2-3 trucs à dire… En tout cas ça serait bien que ce genre de réunion soit récurrente, car c’est très frustrant de voir régulièrement des actions à Paris et rien à Lyon.

Catégories:MondeLibre, ruby