Blog

ESUG jour 1

Comme promis, un petit compte rendu de cette première journée aux conférences Smalltalk ESUG 2012.

Tout d’abord, c’est avec plaisir que j’ai pu retrouver quelques connaissances dont Philippe Valenza (représentant de Cincom pour la zone francophone) et Georg Heeg chez qui j’ai pu faire mon stage de DESS il y a maintenant plus de 20 ans (ça nous rajeunit pas, c’est sûr). Le premier m’a confirmé que le chiffre d’affaire Smalltalk chez cincom était toujours en progression, certes pas une progression fulgurante mais en progression quand même et en partie par de nouveaux clients. Quand à Georg, l’info intéressante c’est le secret qu’il m’a confié sur les arguments qu’il utilise pour convaincre de nouveaux clients de l’intérêt de Smalltalk :

1. les coûts
2. le mapping direct entre les concepts métiers et leur implémentation

Evidemment, les deux points demandent une argumentation un peu plus détaillée (le calcul des coûts commence avec un à priori négatif à cause des runtime) et le second s’explique difficilement aux gens qui ne connaissent pas Smalltalk. Toutefois, ce mapping direct évite toute la complexité technique qui gangrène nos projets dans des technos plus « modernes ». Au final, le coût global du projet est moindre. En fait, il m’a quand même avoué que le dernier argument c’est les 25 années d’existence de sa société. Si le prospect n’est pas convaincu, il peut aller faire développer ses trucs ailleurs, tant pis pour lui.

Le premier talk, l’accueil présentée par Stéphane Ducasse, a principalement rappelé la vocation première de l’ESUG : promouvoir Smalltalk. C’est avec fierté que je vois le logo OXiane affiché parmi les sponsors (si si, là, en haut à droite, regarde, comme sur mon tee shirt) et je bombe encore un peu le torse en écoutant Stéphane expliquer que, grâce aux sponsors, il a, entre autre, été possible de faire venir 15 étudiants volontaires. Il y a aussi les publications, l’hébergement Seaside, etc.

Bon, on rentre dans le vif du sujet avec la première conf technique : Testing Smalltalk AJAX/SJAX Web Application with Selenium. Après un rapide rappel de la techno Selenium, on découvre des instructions du genre :

selenium click: #btnMakeOrder

Cool ! Il s’agit de piloter le client de Selenium RC directement avec des scripts Smalltalk. Ca devient super intéressant quand on commence à voir des messages plus évolués pour accéder à des éléments dans les listes ou dans des arbres. Effectivement, les trucs identifiés par ‘//div[@id]= »tlbObjekte »]/div[2]/table/tbody/tr[2]/td[4]’ c’est pas super lisible.
Alors apparaissent des :

selenium clickListView: #ctvOverview row: 1

et des :

selenium clickTreeView: #ctvOverview itemLabelPlus: #('Water' 'Wastewater')

L’enjeu est de taille : rendre le scripting facile à lire en apportant tout un jeu de méthodes redoutablement efficaces pour simplifier tous les tracas avec le test des applis riches.
La mauvaise nouvelle c’est que c’est un développement interne, la bonne c’est qu’il y a réflexion pour libérer une partie du code.

La deuxième présentation (Continuous Integration : a pratical approche) nous parle du monde de la gestion de contenu multimédia. Ca commence par des petits dessins rigolos expliquant comment se passent les processus métiers de la production, réalisation, programmation et diffusion des contenus. Bon, ça à l’air sérieux, on nous parle de clients comme MTV ou Fox. Puis ça devient vraiment très sérieux avec les chiffres de l’appli :

  • 1,9 Millions de lignes de code
  • 15 000 classes
  • 200 000 méthodes
  • 1 000 tables
Après un rappel des principes de l’intégration continue, une description des quatre types de tests pratiqués est présentée :
  • Unit tests
  • Consistency check
  • UI tests and Acceptance tests in general
  • Refactoring tests
C’est propre, carré et ça se comprend avec l’application décrite précédemment. Le problème c’est que ça prend 12 heures pour dérouler tous les tests (« Oops ! comment qu’on fait pour faire 70 intégrations en moyenne par jours ? »).
Ah, j’adore les Smalltalkers, la réponse est simple :  « Bah, on a construit un système distribué nous même ! »
Et là s’enchaîne la description des différents éléments constituant toute cette chaîne d’intégration continue (un ImageCreator qui assemble la version à tester, 4 Test Coordinator qui coordonnent chacun 16 Test slaves, …).
Un peu d’optim, du reporting, la possibilité de trouver l’origine d’un échec des tests  et le tour est joué, on peut se permettre de délivrer les corrections de bugs critiques sous 1 jour (dingue non ?)
La présentation suivante est bien bluffante aussi : Extending a base product for multiple customers.
J’aime bien comment ça démarre : « Your product is cool, but it’s missing feature X! » -customer
« Yes, feature X would be nice …for you, but nobody else! » -you
La présentation décrit trois techniques pour faire en sorte qu’un logiciel contiennent les fonctionnalités souhaitées par un client sans qu’elles soient imposées à un autre.
Waouh ! comment fait survivre une appli vendue à plus de 3 clients, voilà qui est pas banal quand on sait le challenge que ça représente.
Trois techniques donc pour « Customiser » une application (l’exemple illustre l’ajout d’un champ spécifique dans un écran) :
  • Site classes (on s’arrange pour créer des sous-classes spécifiques à chaque client)
  • Behaviors (on redirige les traitements spécifiques vers des Site classes dédiées aux comportements)
  • Convenience methods (on décline les méthodes en les suffixant par le nom du client et on les appelles depuis les sites classes)
Un dernier aspect montre l’utilisation de « module » pour bénéficier de fonctionnalités optionnelles mais partageables entre plusieurs clients.

Bon évidemment, il faut suivre la présentation pour comprendre. Le code est simple et clair. Quand je pense au nombre de personnes qui attaqueraient ça directement avec des if ! ça prend encore plus de sens quand on sait qu’il s’agit de l’application précédente (celle avec 1,9 millions de lignes de code et avec une trentaine de clients).

Une bien belle présentation, très utile, avec des concepts parfaitement applicables en dehors du contexte Smalltalk.

La présentation suivante est un petit bijou : Amber, Smalltalk in your web browser.

Nicolas Petton ad’abord commencé par bien détendre l’atmosphère en diffusant la vidéo https://www.destroyallsoftware.com/talks/wat/. Son problème étant posé (non, un développeur normalement constitué ne peut pas vouloir programmer en JavaScript), il présente son petit bijou : Amber. Un vrai Smalltalk, directement dans le navigateur et qui compile le code Smalltalk en JavaScript. Il nous montre alors, comment il accède directement aux éléments du navigateur, accède aux API jQuery, tout ça directement dans le navigateur, avec un vrai environnement de développement et  avec la syntaxe Smalltalk. Il finit par piloter un Karotz grâce aux API JavaScript de la bestiole.

Pour moi c’est simple, c’est LE projet qui peut faire de nouveaux adeptes du langage.

La présentation suivante (Modeling Scenarios) nous montre comment gérer des modèles de simulations sans se perdre dans des copies de copies de modèles non synchronisés. La technique se base sur des wrapper (les fameux objets encapsulant des objets pour intercepter les messages, à la façon d’un proxy quoi) et sur la capture des modifications du modèle grâce à ce mécanisme. L’application, montrant une simulation de fabrication de puits d’extraction de pétrole, permet d’explorer différents scénarios de construction et d’exploitation, afin de déterminer le scénario le plus rentable. La particularité étant la possibilité de combiner des scénarios, de les modifier, d’explorer des statistiques de rentabilité, etc. Une belle appli, riche et complexe comme on sait les faire en Smalltalk.

La dernière présentation, News from Etoilé, m’a laissé perplexe. Il faut dire que j’ai raté le début, je ne connais pas Etoilé et je n’ai pas réussi à comprendre ce que c’est en suivant la présentation. Le problème c’est qu’en allant voir le site, heu, comment dirais-je ?, je dois être trop fatiqué,  je comprend toujours pas. Apparemment c’est un environnement de développement pour faire des application GNUstep. Il semble donc qu’on programme en Smalltalk pour générer de l’Objective-C.

La journée s’est terminée par le « Innovation Technology Awards ». Pas facile de passer à coté des 14 candidats pour essayer de comprendre leur projet d’innovation Smalltalk et encore moins facile de se décider à voter pour les élire les 3 « meilleurs » (désolé pour les 11 autres, fallait en choisir que 3 !). Des chouettes projets, parfois très théoriques, parfois très pratiques, tous défendu avec passion. Ça me rappelle mes premières années.

Quelques bonnes bières, un petit tour en ville, un petit resto près des canaux, ah ! que c’est bien d’être là !

Jean-Francois Lefevre

Written by

The author didnt add any Information to his profile yet

  • Alex Mustiere

    énorme la vidéo !