The ideal metaprogramming framework reads in code in one of several input notations, analyzes it, and generates output in one of several output notations.  The input notations supported are the curly-brace-style and the LISP-parens-style.  The analysis handles plain types, parameterized types, and flavored types.  The output notations include Java, JavaScript, interpreter and documentation generator. 

If your project involves code generation, ideal wants to be the ideal system for you.

The ideal framework comes with a native programming language that exposes the full power of the system.  It is partially bootstrapped: a large portion of ideal is written in ideal.  The ideal language has a simple grammar and an advanced type system.

If you are interested in programming language design, ideal wants to be the ideal system for you.

The ideal language is incrementally adaptable by adding extensions to the ideal framework.  It was designed to experiment with language evolution driven by language users.

If you want to adapt the language to the problem rather than the problem to the language, ideal wants to be the ideal system for you.

Currently, the ideal metaprogramming framework is a work in progress.  Not all features are implemented, and documentation is sparse.  However, you can start reading the code now. All of ideal is open source and is released under a BSD-style license.

To track the developments and be receive updates about the project, follow the progress.