Posts Tagged ‘lgpl’

[EN] Project NACA: open sourcing GPL/LGPL of the tools for transcoding Cobol programs to Java

Thursday, July 17th, 2008

Update of March, 4th 2009: version 1.1 is now available: NACA-Package 1.1 (Runtime, transcoder, Tests + docs) (949)].   Details and change log in this post.

Publicitas publishes under Open Source license (GPL/LGPL) the source code of the tools developped to execute the project called NACA now successfully completed. Its aim was to migrate a homegrown Cobol application (named PUB 2000 - 4 millions lines of Cobol) running on an IBM/zOS mainframe toward its 100% iso-functional Java equivalent running on Intel-propelled Linux-based servers.

For those in hurry to get the package, the complete zip file is here:NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (3326)

This version is clearly v1.0, i.e a first delivery: it will get improved over time through the feedback and contributions returned by external testers running the tools on their own infrastructure. New versions of runtime libraries (JLib and NacaRT) can also be expected because they are still heavily used in our own environment on a daily basis for the transcoded version of Pub2000.

Why this choice of licenses? Because we want to avoid that professional service consultancies takes this code back to the proprietary zone for their own single benefit. For those players, GPL brings a set of constraints that maximizes the return of their improvements to the community by preventing them from locking the source code of their changes. For end-user companies, the freedom brought by GPL is totally appropriate.

From another perspective, the LGPL + GPL combination allows application software editors to migrate their applications through our tools (NacaTrans), link them to our runtime libraries (NacaRT and Jlib), distribute the source code of those libraries but not the source code of their own application so that they can remain competitive in the industrial sector of their application.

The tools that we deliver today (v1.0) in the zip package:

  • Doc: a set of documents explaining in details the tools and libraries. Your feedback around this documentation, its missing points, etc. is essential in order to improve it.
  • NacaTrans (license GPL - approx. 83′00 lines of code code & 690 Java classes): our transcoder that allowed us to convert 100% automatically the 4 millions lines of our PUB 2000 application in COBOL to Java. It is very much based on compiler technologies. It analyzes the structure of the initial COBOL programs (supposed 100% valid) to bring them in an intermediate xml structure before generating the final Java code that extensively calls functions and uses classes of the runtime library NacaRT, itself depending on JLib. This new Java source code was very carefully designed: each line of Cobol generates very intentionally a single corresponding line of Java. The aim is to look like as much as possible like the original COBOL code in order to ease the maintenance by the original developers / maintainers who master the structure of their original Java programs. The completeness of the accepted syntax for all variants of Cobol is of course not guaranteed. But our own 4 millions of lines of code as well as additional tests on other external application tend to prove that the current coverage of Cobol by NacaTrans is already very high. We want to improve this coverage through your feedback for valid constructs that we don’t support yet.
  • · NacaRT & Jlib (license LGPL - approx 153′000 lines of code & 890 Java classes): those are the 2 runtime librairie who provide all the runtime transactional services for the application. They emulate all teh functions of a classical transactional monitor like CICS from IBM. At the same time, they also support all the COBOL constructs (for example, COMMARÈA structure with multiple data representation masks, management of specific data format like COMP-X, etc.)
  • NacaRTTest (license GPL): this is a test suite allowing us to test the correct output of the transcoder on a set of reference COBOL constructs. It’s the way to validate part of our transcoding algorithms. For a new user of NACA, this is definitely the place to start: when this runs on oyur infrastructure, you can feel pretty confident about your installation of the package.

All those components are also delivered with Eclipse project description files in order to facilitate their setup in a standard Java environment.

Now, the answer to your last question already on your lips: why does Publicitas undertake this delivery?

  • Because Publicitas has received quite a lot from the OSS community for our NACA project. We had to give back as much as we can: with this contribution, we want to return our highest possible contribution to the dynamics of Open Source.
  • Because we believe that this set of tools heavily tested in our environment can be an excellent starting point for other similar projects by other companies also wishing to leverage Open Source software as we did (see our various articles on this topic)
  • Because we still want to improve our tools and libraries as they remain used on a productive basis to handle our 750′000 transactions / day . We are interested in improving both the runtime libraries since Pub2000 runs on them but also the transcoder NacaRT itself . We still use NacaRT on a very regular basis for the transcoding of some programs that our developers decided (for valid reasons) to maintain from their COBOL source code. We even developed an Eclipse plugin to make this task simpler and more efficient.
  • Finally, because Consultas, our internal IT entity, mostly aimed at serving other group entities, developed through this project a set of very specific competences that they would love to reuse in other similar contexts. Consultas’ engineers love this kind of challenges! If you plan your own NACA, they may want to be part of it.

Now, it’s you turn: take the package NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (3326), install it, run it and let us know: we’d love your feedback in the comments of this post.

PS: for more specific contacts around your particular case, you can email us at naca-contact@publicitas.com

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

Thursday, July 17th, 2008

Mise à jour du 04 Mars 2009: la version 1.1 est maintenant disponible: NACA-Package 1.1 (Runtime, transcoder, Tests + docs) (949)].   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) (3326)]

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) (3326)

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) (3326) 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