andromda java j2ee maven mda magicdraw codegenaration uml

The AndroMDA project (http://www.andromda.org) has been around for at least seven years, with a core group or supporters and contributors. We will be losing our hosting server soon, and are looking at various open source hosting options. Our source code is currently in SourceForge, while our server hosts a phpBB forum (http://forum.andromda.org), JIRA (http://www.andromda.org/jira), and Jenkins build server (http://www.andromda.org/jenkins). The project could also benefit greatly from the visibility of being under the Codehaus umbrella, especially with the focus on maven and maven-based projects. We would be willing to assist in any way to make the migration as easy as possible, even to help set up and manage the tools on a hosted server.

AndroMDA is licensed under BSD. We offer one of the best open source code generation frameworks, reading UML14 or UML2 models, using Velocity or Freemarker for templates, with implementation cartridges for many frameworks including Spring, Hibernate, EJB2, EJB3/JPA, Axis/CXF webservices, JSF2, Struts, jBPM/Drools, XMLSchema, Seam dotNet NSpring/NHibernate, which have been used in many many business software development projects over the years. Models are read and code is output using either maven plugins or ant, but maven is preferred. It is primarily a tool for business software developers who already have a sophisticated agile development process and want to take their automation to the next level (code generation).

To answer the questions from http://codehaus.org/customs/selection.html ...

• Having buildable, tested and running code Code has been buildable and testable and runnable since project inception in 2004, and before that as part of the ejbGen project. It uses maven as the build engine. Snapshots are updated nightly to oss.sonatype.org, and we rely on their nexus server for repository dependencies and have used their staging/release process for several minor projects and missing external dependencies such as org.eclipse.emf and org.eclipse.uml. Jenkins is used as the build engine. Test coverage and code quality metrics are part of the site builds, including compilation warnings. We welcome any review or comments or suggestions for improvement for our code base.

• Some documentation ready for a static site or Confluence The maven-generated project documentation site is the project home page, at http://www.andromda.org/docs published twice per week. Documentation is xdoc, directly from the source tree. We currently have no Wiki, but would benefit greatly from documentation that could be immediately updated and would allow user-contributed inputs, instead of having to go through a site publishing cycle.

• A roadmap See Enhancement ideas: http://www.andromda.org/docs/ideas.html. We applied for Google Summer of Code this year, but were not accepted, perhaps it will be more likely under Codehaus. We also have a JIRA bug-tracking system with a number of pending enhancements, but no real release schedule. The main focus of current enhancements is to update everything to UML2, expand the use of open source modeling tools such as Eclipse Papyrus, improve code quality (i.e. Generics), add more sophisticated unit tests and increase coverage, migrate plugins to maven3, and improve the documentation and tutorials. We have not had a release in the last two years, due to a shortage of committer help in actually creating the releases, but our code is in a stable state and can be released at any time. As part of this release, we also want to publish the release artifacts to the maven central repository, however there are a couple dependencies on non-central repositories (JBoss and Sun download.net) which must be resolved first due to the Sonatype publishing rules. Also, creating a release is not as simple as running the maven release plugin: there are some complex dependencies (including a bootstrap process because andromda is used to generated code which is part of the base framework), plus additional version reference updates in the pom.xml files, andromda configuration files, and UML test/metafacade models with versioned profile references which must be manually updated before release. We really need to get on a more regular release schedule, at least to keep up with the version updates of all the dependencies.

• An inkling of the competition for your project The main open-source competition from a strictly UML to code perspective is OpenArchitectureware, now under the Eclipse Generative Modeling Technologies (GMT) XPand project (http://www.eclipse.org/projects/project_summary.php?projectid=modeling.m2t.xpand). Andromda offers several advantages: we are maven-based rather than OSGI based and thus much easier to get working immediately; we use the very popular Apache Velocity and Freemarker as template engines instead of the XText language which is used only by OaW; and we offer many many out-of-the-box working framework implementations used for many years, while OaW has a separate provider (http://www.fornax-platform.org/) for these. One andromda enhancement possibility is to come up with an automated way to convert the existing fornax templates to Velocity (or to support XText template format) including supplying the underlying UML metafacade values to the templates. Other open source competitors include Eclipse Acceleo (http://wiki.eclipse.org/Acceleo). They have a very nice Eclipse plugin infrastructure but not much sophisticated framework support. AndroMDA relies on the Sonatype m2eclipse plugin for Eclipse integration.

There are a number of commercial products with similar capabilities, including MagicDraw Cameo (based on OaW), Rational Software Architect, and Skyway Builder (http://www.skywaysoftware.com/products/skyway-builder/). I have personally used many of these, but I continue to use andromda because it is still easier to use and provides more capabilities and higher code quality than many of the commercial alternatives. Competition for all of the products in this space is good for everybody anyway.

Spring Roo (http://www.springsource.org/roo) generates very sophisticated outputs using a lot of the same infrastructure/dependencies as andromda (maven, spring/hibernate/jpa/jsf), but their command line input mechanism is very primitive and provides no UML design documentation for large sophisticated projects. Supporting Spring Roo inputs from andromda models would be a wonderful enhancement to both products, as well as incorporating some of the framework pattern implementations into the existing andromda project, such as AspectJ, Spring Security/WebFlow, Adobe Flex, Dojo, Google Web Toolkit.

• Some indication of what you are looking for from Codehaus We would like migration/hosting for our existing forum, build system, and bug tracking (JIRA) systems. Additionally, we would like to use the Confluence/FishEye, Xircles, and other infrastructure, plus the promotion and visibility of being under the Codehaus umbrella. We would like to keep our existing JIRA project/subproject organization, and keep all of the forum history and search functionality. Source code is currently in SourceForge but could be migrated to Codehaus in the future. We have just completed a migration from CVS to SVN, and from CruiseControl to Hudson to Jenkins, within the last year. We would prefer to keep the build system in Hudson if at all possible, or at least the build/change history plus quality metrics, but that does not appear to be available yet under Codehaus. We build probably 5 times per week (30 minutes) plus two site builds per week (2 hours) during 'off hours' plus a nightly SNAPSHOT artifact upload to sonatype. We would love to have the existing forum post history available in whatever forum tool is supported by Codehaus - users find it extremely valuable for search/support. We would like for the existing www.andromda.org URL to be redirected to the Codehaus subproject after migration, to avoid breaking existing links.

• An understanding of the Codehaus way The committers are all very strong supporters and long term users of open source tools and projects. We became committers because of the desire to give back to the community, due to the benefits we have all received from various open source frameworks and tools.

If you have additional questions or requests for more information, you can contact me directly, or contact the committers mailing list, or ask directly on the support forum.

Thanks, Bob Fields, Chad Brandon, Walter Morao, Michail Plushnikov