[FR] Projet Naca: open sourcing GPL/LGPL des outils de transcodage COBOL vers Java

Date: July 17, 2008 Author: didier-durand Comments: 9

Mise à jour du 04 Mars 2009: la version 1.1 est maintenant disponible: NACA-Package 1.1 (Runtime, transcoder, Tests + docs) (636)].   Détails des nouveautés dans ce billet.

[Lien direct vers le package v1.0 source + docs à télécharger: NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242)]

Publicitas publie sous licence Open Source (GPL/LGPL) le code source des outils développés dans le cadre du projet NACA (migration de son mainframe IBM/zOS sous Cobol vers des serveurs Intel/Linux sous Java) vers la communauté de l’Open Source. Cette publication a été récemment annoncée aux RMLL2008 de Mont-De-Marsan.

Pour ceux qui veulent commencer par télécharger les fichiers. Le fichier zip complet est ici: NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242)

Cette version est clairement une première livraison (v1.0) : elle sera améliorée par les contributions (tierces) et documentée au fil du feedback donné par les testeurs externes qui feront fonctionner ces programmes Java sur leur propre infrastructure. De nouvelles versions sont également à prévoir autour des librairies JLib et NacaRT qui continuent par leur fonction même à être utilisées productivement par Publicitas et étendues au fil des évolutions de nos systèmes

La licence retenue est la licence GPL du GNU pour l’outil principal de transcodage et sa petite sœur LGPL pour les librairies associées.

Pourquoi ce choix ? Parce que nous souhaitons éviter le détournement de notre travail par des prestataires de services à but lucratif souhaitant utiliser ces programmes .pour leur seul bénéfice en le ramenant vers une zone propriétaire.

La GPL place, pour ces prestataires, sur les outils NACA un bon nombre de contraintes qui imposent le retour vers la communauté Open Source d’un maximum des améliorations faites par des tiers sur le transcodeur et ses librairies associées. Elle offre, par contre, une grande liberté aux sociétés utilisatrices finales.

La LGPL permet par ailleurs à des éditeurs de logiciels applicatifs de convertir leurs applications via nos outils (NacaTrans), de livrer nos bibliothèques runtime (NacaRT et JLib) en mode source mais de garder les bibliothèques de leur propre application en mode binaire afin de garder leur valeur compétitive dans le secteur industriel de leur application.

Les outils que nous publions aujourd’hui (v1.0) dans le fichier zip

  • ·Doc: un ensemble de documents explicatifs autour de ces outils. Votre feedback sur leur contenu, leurs déficits nous permettra de les améliorer.
  • NacaTrans (licence GPL - approx. 83′00 lignes de code code & 690 classes Java): notre transcodeur qui nous a permis de transcoder les 4 millions de ligne de Cobol de notre application PUB 2000. C’est en quelque sorte un compilateur qui analyse d’abord la structure des programmes Cobol initiaux (supposés 100% opérationnels) pour les amener dans une structure xml intermédiaire avant de générer un code Java faisant massivement appel aux classes et fonctions de la librairie de runtime NacaRT. Ce code Java généré a la particularité intentionnelle de ressembler au maximum au code source Cobol initial afin de favoriser la poursuite de la maintenance par les développeurs initiaux. L’exhaustivité de ce compilateur par rapport aux multiples standards du langage Cobol n’est clairement pas garantie: NacaTrans compile correctement nos 4 millions de ligne de COBOL. C’est la seule garantie. Cependant des tests complémentaires avec du code COBOL applicatif en provenance d’autres sociétés nous laisse croire que le taux de couverture du langage est excellent. Nous l’améliorerons encore avec le feedback de la communauté.
  • NacaRT et Jlib (licence LGPL - approx 153′000 lignes de code & 890 classes Java): ce sont les bibliothèques de runtime qui réalisent toutes les fonctions de gestion / fonctionnement d’un système transactionnel classique. Elles émulent tous les verbes d’un moniteur transactionnel comme CICS (voir docs) et réalisent aussi entre autres l’émulation du langage Cobol (par exemple, structure COMMAREA à masques multiples, formats de données COMP-X spécifique à COBOL, etc…)
  • · NacaRTTest (licence GPL): une suite de tests nous permettant de valider le fonctionnement correct de nos algorithmes de compilation. Pour toute personne qui installe la suite NACA dans son environnement, c’est la partie à faire fonctionner en priorité car elle tend à garantir une bonne installation de l’ensemble des composants

Tous ces composants sont livrés avec les fichiers de description de projet au format Eclipse afin de faciliter leur prise en main via des outils standards du monde Java.

Maintenant, la question que vous vous posez sûrement: pourquoi cette démarche?

  • Parce que Publicitas, ayant beaucoup reçu de la communauté Open Source pour le projet NACA, souhaite rendre autant que possible. Avec cette publication, nous pensons livrer une contribution à forte valeur ajoutée et très pointue contribuant activement à notre tour à la dynamique Open Source
  • Parce que nous pensons que nos outils éprouvés à l’aune de notre propre projet de migration puis à celle d’une année complète de fonctionnement opérationnel peuvent être une excellente base pour des projets similaires dans d’autres entreprises souhaitant elles-aussi bénéficier de tous les bénéfices de l’Open Source abondamment évoqués dans notre série d’articles sur le sujet.
  • Parce que nous souhaitons encore améliorer nos outils qui restent encore abondamment utilisés chez nous: ils gèrent toujours nos 750′000 transactions quotidiennes. Bien sûr , nous souhaitons travailler encore les librairies runtime (Jlib + NacaRT) puisque la version Java de PUB 2000 s’appuie abondamment dessus mais aussi sur le transcodeur NacaRT puisque nos équipes de développement ont fait le choix pour des raisons spécifiques de continuer à maintenir une fraction minoritaire de nos programmes directement en Cobol et de les recompiler au vol en Java. Nous avons développé un plug-in Eclipse à cette intention
  • Parce que Consultas, notre société informatique essentiellement interne, a développé une palette de compétences très spécifiques à cette occasion. Sans en faire son cœur d’activité mais pour malgré tout valoriser ce savoir-faire et surtout permettre à ses ingénieurs de se frotter à d’autres problématiques similaires pour s’aguerrir encore, Consultas prendrait volontiers quelques mandats de support / mise en place / extension de ces outils pour d’autres sociétés se lançant dans leur “propre NACA”.

Voilà, à vous de jouer: prenez le package complet NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242) et mettez-le en place dans votre contexte. Faites-nous part de vos suggestions par vos commentaires sur ce billet.

PS: pour des contacts autour de projets particuliers, vous pouvez nous contacter aussi plus spécifiquement par email à cette adresse: naca-contact@publicitas.com

Share this post on your favorite site:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • Wikio
  • blogmarks
  • co.mments
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Wikio FR

9 Comments

  1. 01

    Bravo à toute l’équipe,
    ça me fait rudement plaisir de voir un projet aussi beau être publier sous GPL.

  2. 02

    Et nous, cela nous fait plaisir de faire plaisir à tous les membres de l’équipe y.c ceux qui volent maintenant de leur propres ailes. ;-)

  3. 03

    Merci beaucoup, je vais tester cela .

  4. 04

    Merci infiniment, bravo à l’équipe derrière tout ce travail, et - ne pas l’oublier - aux décideurs qui ont pris la décision de l’Open Source.

  5. 05

    @ Erik, Raymond:

    Merci pour ces “fleurs” mais on attend votre feedback sur l’utilisation des outils avec impatience!

  6. 06

    Apres une installation, je pense qu’il serait utile d’avoir un exemple de projet de transcodage (dossier /dev/nava/*) car il es vraiment très difficile de commencer .

  7. 07

    Bonjour à tous,

    Je fais partie de l’équipe des core-developpeur du systéme Naca. J’ai travaillé essentiellement sur le design et l’implémentation des librairies runtime nacaRT et JLib, ainsi que les divers utilitaires DB.
    Il est trés clair que le package livré, en particulier sa documentation est trop simple pour permettre d’aborder un projet de transcodage. Par conséquent, il est prévu de réaliser pendant le mois d’Aout 2008 un exemple complet d’un de transcodage puis execution d’un programme online (=transactionnel) Cobol simple, type hello world.

    Le but de l’exemple sera de couvrir les points suivants:
    - Configuration du transcodeur
    - Transcodage,
    - Intégration dans Eclipse du code java généré
    - Explications sur les fichiers intermédiaires générés
    - Execution/Debuggage dans un envrionnement Tomcat, piloté depuis Eclipse

  8. 08

    Bonjour Mr Berthou,
    Voir la réponse de Pierre-Jean ci-dessus: encore un peu de patience et il va fournir un tutoriel
    cordialement

  9. 09

    Bonjour,

    Pouvez-vous m’indiquer la procédure à suivre pour telecharger le logiciel Sun JDK Ver 1.6 ainsi que le logiciel ECLIPSE

    Je vous remercie par avance.

    Cdt

    Louis Ropert

Leave a comment

* Fields with an asterix are mandatory.
The E-mail address will not be displayed.