Eclipse


Retours sur l'Eclipse Demo Camp de Toulouse

Jeudi dernier, le 23 juin, s'est déroulé à l'ENSEEIHT une conférence pour présenter la nouvelle version de l'IDE et de différents outils de la nébuleuse. Je vais donc essayer de vous retranscrire les informations importantes que j'ai pu tirer des présentations auxquelles j'ai assisté. Je vous fourni également les liens vers les slides utilisés. Le programme détaillé est accessible sur le site de Toulibre.

SWTBot, tests fonctionnels d'IHM

Mariot Chauvin de chez Obeo nous a présenté son projet, dont le but est de faciliter la mise en place de tests automatisés d'interfaces graphiques basées sur SWT.

Ne connaissant pas ce genre d'outils avant, j'ai plutôt été impressionné par ses capacités et sa facilité de prise en main grâce une API simple. Il ouvre d'intéressantes perspectives pour l'automatisation de tests fonctionnels (capacité de naviguer dans les interfaces, de repérer toute une flopée d'évènements...). Je ne manquerai certainement pas de le tester prochainement.

J'ai cependant été surpris, en téléchargeant Indigo, de voir que la distribution est livrée avec une installation de Jubula, qui semble se positionner en concurrent direct sur le secteur des tests fonctionnels d'IHM. Sans l'avoir pour le moment essayé, je trouve cependant que l'orientation prise de gérer les tests uniquement de manière graphique dans l'IDE limite la prise en main ou les possibilités envisageables avec l'outil (intégration continue, utilisation en ligne de commande...). C'est sans doute un sujet à creuser.

EGit, un client Git sous Eclipse

Igor Laborie de chez AKKA nous a présenté la dernière version du client ainsi qu'un aperçu de ce qui est possible de faire pour interagir avec un référentiel. En version 1.0 sous Indigo, il a l'air déjà très complet et fournit une interface simple d'utilisation pour cet outil qui a la réputation d'être difficile à apprendre. Je suis actuellement en train de faire quelques essais donc je ne manquerai pas de le présenter plus précisément bientôt.

Eclipse Con

Différents intervenants nous on brièvement rapporté ce qu'il s'est dit à la dernière conférence EclipseCon à propos de certains projets majeurs :

  • Xtext
    La version 2.0 du framework de langages dédiés a été intégrée à la distribution Indigo, ce qui présage d'un avenir flatteur pour l'outil. Cependant, certaines zones d'ombre persistent quant à la manière dont il va évoluer, notamment concernant ses liens persistants (ou non) avec XPand. Néanmoins l'accent a été mis sur la volonté d'enrichir les capacités M2T (Model 2 Text) de l'IDE.
  • CDT
    Après un passé plutôt chaotique, l'analyseur de code revient sur le devant de la scène avec un système beaucoup plus stable et de nouvelles fonctionnalités impressionnantes (debug plus avancé que JDT avec entre autres la possibilité de revenir en arrière sur le code exécuté...)
  • Tycho
    Notre déployeur de plugins préféré a plus que jamais le vent en poupe et voit son nombre de releases croître régulièrement, signe encourageant et révélateur d'une volonté générale de prochainement fournir une plateforme stable et sûre pour l'automatisation des déploiements. A suivre de près!
  • Orion
    Le timing très serré des présentations n'a malheureusement pas permis d'approfondir le sujet de l'éditeur "in the clouds" mais il semble qu'une réelle communauté se soit déjà formée et soit en train de croitre pour créer un environnement de développement d'un nouveau genre. Un projet encore jeune mais déjà très soutenu donc.

Comme vous pouvez le voir, la journée a été riche en informations et j'ai trouvé très intéressant de pourvoir interagir avec quelques acteurs principaux (et locaux) de la communauté, autrement que par blogs interposés. J'encourage donc tous ceux qui hésitent à se rendre à ce genre de rendez-vous, on y apprend beaucoup de choses en peu de temps.


Fichier(s) joint(s) :



Petit guide pour entrer dans la communauté Eclipse

Comme suggéré par un de mes lecteurs, voici un petit guide des ressources et différents points d'entrée à connaître pour participer à des projets de la communauté. Pour certains cela pourrait paraître trivial mais l'essentiel est de regrouper les informations.

Entrer en contact... avec les leaders : les pages de présentation des projets ou le wiki associé fournissent en général le moyen de contacter les acteurs principaux. A défaut, il est possible de proposer ses services via les forums publics des projets, majoritairement regroupés ici.

Se documenter... sur les fonctionnements internes de la communauté. Une page du wiki Eclipse pointe vers tous les documents essentiels à lire pour comprendre que faire et comment lors d'une contribution ou tout autre type d'intervention : Eclipse wiki development resources. Voici la trame de ce qui y est présenté :

  1. Users: Contributing To A Project
  2. Projects: Getting Started
  3. Committers: Being A Committer
    1. Committers and The Eclipse.Org Website
    2. New Committers
  4. Leads: Managing A Project
    1. New Project Leads
  5. Everyone: IP Cleanliness
  6. FAQs and Guidelines
  7. HOWTOs and Help
  8. Information and Miscellany
Je vous conseille de lire tout particulièrement les documents : "How To Behave", "Eclipse Development Process" et "The famous IP process poster".

Respecter la licence... EPL (Eclipse Public Licence) qui est de rigueur pour toute ligne de code écrite. Cette page est une FAQ utile pour comprendre en quoi elle consiste, en quoi elle diffère des autres plus courantes (GPL...) et pourquoi elle ne leur est pas forcément compatible.

Se concentrer... sur les spécificités des projets, documentées sur le wiki officiel de chacun. Elles regroupent tous les détails utiles (conventions de code, processus...). Par exemple voici celle de Code Recommenders.

Franchir le pas! En effet, il ne faut pas se laisser impressionner par l'ampleur de certains projets. L'essentiel est de choisir celui (ou ceux) avec lequel on a simplement le plus d'affinités. Les personnes impliquées sont généralement beaucoup plus accessibles qu'on ne le pense et permettent de s'impliquer petit à petit en apportant le soutien nécessaire. C'est ce qui fait le succès de la communauté. Alors bon courage!


Fichier(s) joint(s) :



Welcome in Eclipse community!

Voilà c'est fait! Je suis officiellement contributeur sur un projet Eclipse!!

Il s'agit du projet Code Recommenders que j'avais brièvement présenté dans cet article.

Je remercie encore au passage les leaders Marcel Bruch et Johannes Lerch pour leur soutien.

Cette contribution est une excellente occasion de découvrir de nouveaux outils et nouvelles méthodes de travail (projet de grosse ampleur, travail en équipe à distance...) d'où mon précédent article sur Git ainsi que les quelques prochains sur ces sujets à venir bientôt...

Une expérience à "recommender" donc, avis aux amateurs.


Fichier(s) joint(s) :



Des outils pour repenser la gestion du code…

J’ai récemment commencé à m’intéresser à Git ainsi qu’aux quelques outils courants qui lui sont liés (Gerrit, EGit...). Au vu du peu de documentation à leur sujet disponible sur le net (quasi nulle en français), j’ai décidé de me lancer dans une série d’articles pour les présenter et expliquer leur fonctionnement. Au travers de ces articles, je vais donc peaufiner mes propres connaissances en essayant de partager ce que j’ai appris et de les compléter au fur et à mesure de mes progrès. Toute information supplémentaire et/ou complétude seront les bienvenues.

Grands principes de Git

Une gestion décentralisée

Qu’est-ce que Git ? Initialement développé par Linus Torvald (le père de Linux) en 2005 puis adopté par la communauté Eclipse en 2009, c’est un outil de gestion de configuration (version) décentralisée (ou DVCS – Distributed Version Control System). Concrètement, à l’inverse de CVS ou SVN dont le fonctionnement est basé sur un serveur central gérant le référentiel (repository) et manipulé par plusieurs clients, Git crée une copie complète du référentiel sur chaque client. Ainsi, toutes les opérations habituelles (Add, Commit, Merge...) sont effectuées en local. Seul le partage final est publié.

Seules donc les opérations "pull"/"fetch" et "push" permettront au référentiel local d’interagir avec l’extérieur, respectivement pour se synchroniser ou publier les changements.

Une surveillance des états plutôt que des changements

Les outils tels CVS ou SVN sont basés sur la gestion des changements dans les ressources : chaque modification entraine une nouvelle version du contenu. Une version porte donc l’information du changement.

Git propose plutôt de gérer les états des fichiers à des instants précis : avant chaque commit, Git crée une image du système fichier de façon à maintenir son historique. Les fichiers sont représentés par leur SHA-1 (algorithme de hashage unique pour chaque contenu).

Ainsi, le système est beaucoup plus rapide et léger puisque cet index des fichiers est simplement constitué d’ "identifiants" SHA-1 pointant sur des versions de fichiers précises. L’index représente donc une couche intermédiaire entre l’espace de travail (workspace) et le référentiel local. Voici une autre illustration décrivant un workflow classique :

Chaque nouvelle itération de fichier porte l’information du SHA-1 de l’état précédent. Voici un extrait de ce que l’on peut trouver dans un diff simple :

previous: 48b2179994d494485b79504e8b5a6b23ce24a026
--- a/README.txt
+++ b/README.txt
@@ -1 +1 @@
-SVN  is great
+Git  is great
previous: 6ff60e964245816221414736d7e5fe6972246ead
--- a/README.txt
+++ b/README.txt
@@ -1 +1 @@
-Git  is great
+SVN  is great

Ceci mène donc à une utilisation simplifiée du concept de branches : la création d’une branche consiste juste à pointer sur un index différent du fichier (un SHA-1 différent). Chaque branche elle-même est identifiée par le SHA-1 de son contenu. La navigation dans l’arbre du référentiel devient alors beaucoup plus rapide et simple à gérer pour le système.

La branche par défaut du référentiel est appelée "master" (l’équivalent du "trunk" SVN). La révision la plus récente (dernier SHA-1 connu) s’appelle "HEAD".

Bénéfices de la gestion décentralisée

Pas de dépendance envers un serveur central

Les développeurs peuvent collaborer sans avoir à transiter par une autorité centrale, ce qui simplifie les échanges et diminue les coûts d’administration.

Un système déconnecté

Toutes les opérations classiques de gestion du code source sont effectuées en local, sans avoir à se soucier de la disponibilité du serveur de partage. Un développeur peut donc effectuer des ajouts, commits, merges sur son propre référentiel et être productif même s’il est déconnecté du réseau.

Une utilisation des versions et branches simplifiée

Par l’utilisation de l’index des fichiers (le catalogue des SHA-1), il est simple de créer ou supprimer des branches dans le système, en réduisant les risques d’erreur et d’impact sur leur contenu même.

Des workflow personnalisés

Par l’indépendance créée entre les développeurs, il devient alors possible à chacun de mettre en place son propre flux de travail pour ses besoins :




Promouvoir une utilisation communautaire

Puisque le référentiel est copié sur chaque poste client, il n’y a rien à craindre à permettre à quiconque de se joindre aux développements et participer au renforcement de l’équipe.

Comme vous le voyez, Git propose donc une vision radicalement différente des outils de gestion de version classiques. Je vous laisse le soin de parcourir plus en détails la documentation.

Mon prochain article présentera Gerrit, un outil de revue de code lié à Git.

Sources


Fichier(s) joint(s) :



Eclipse, dessine moi une application...

Il existe bon nombre de plugins Eclipse permettant de mettre en place des IHM, tous ont des avantages ou inconvénients plus ou moins discutables : Zest, JFormDesigner...

Mais je viens de me laisser séduire par WindowBuilder, un projet qui est récemment entré en incubation dans la communauté Eclipse. Je ne vais pas ici faire un tutoriel complet sur cet outil (d'autant que la documentation est très bien faite), mais plutôt exposer rapidement ce qui m'a poussé à l'adopter.

Le premier point important est qu'il prend en charge MigLayout, c'est-à-dire qu'il permet de facilement manipuler des interfaces reposant sur ce gestionnaire et de manière enfantine! La grammaire de MigLayout n'a donc plus de secret pour vous (cela m'aurait épargné quelques mèches de cheveux en essayant de décaler de 3 pixels des interfaces du genre ..."[10][20:30:40][40!][::40]","[min!][10::20][40mm!]");...).

Un autre aspect intéressant est qu'il dispose d'une fonctionnalité d'externalisation des chaines de caractères plutôt efficace. Indispensable pour gagner du temps en industrialisation.

Ensuite, il dispose d'une palette de compatibilité plus qu'intéressante : en plus de créer des interfaces Swing, il gère parfaitement la création d'application ou parties d'application SWT : perspectives, view part et autres pour Eclipse RCP.

Enfin, autre atout, non des moindre, est qu'il se dit "bi-directional", c'est-à-dire qu'il est capable de parser du code existant afin d'en reconstituer l'aspect visuel (et donc faciliter la reprise de code). Je n'ai pas poussé cette fonctionnalité mais elle semble prometteuse.

Vous l'aurez compris, ce plugin est un indispensable à avoir dans son escarcelle de développeur. Espérons également que le fait d'entrer sous le giron d'Eclipse lui permette encore une évolution importante...


Fichier(s) joint(s) :



Eclipse Demo Camp à Toulouse!

Aujourd'hui une petite promotion pour un évènement encore trop rare dans la région : le 23 juin un Eclipse Demo Camp est organisé à l'occasion de la sortie d'Indigo (la v3.7 de l'IDE). C'est le moment où jamais pour rencontrer les acteurs importants du milieu et se tenir au courant des nouveautés. Venez nombreux!

Présentation

Site officiel de l'association Toulibre qui organise l'évènement ici.

À l'occasion de la sortie de la nouvelle version 3.7 de la plateforme Eclipse, nommée Indigo, les associations Toulibre et JUG Toulouse organisent une après-midi autour du Logiciel Libre Eclipse, avec conférences et démonstrations. Les conférences seront animées par des personnalités de la communauté francophone d'Eclipse.

L'événement, ouvert à tous, libre et gratuit, se déroulera le jeudi 23 juin de 13h à 21h à l'École Nationale Supérieure d'Électrotechnique, d'Électronique, d'Informatique, d'Hydraulique et des Télécommunications, Toulouse. Les détails d'accès sont disponibles sur le site de l'ENSEEIHT.


Fichier(s) joint(s) :