Discussions

News: Whole Platform 1.0.0.v20090206-1802 - Language Workbench

  1. We are pleased to announce the availability of a new milestone release of the Whole Platform. The Whole Platform is an open source technology for engineering the production of software. Based on the idea that programming is an activity concerning the development of domain languages, the Whole Platform provides an Eclipse-based Language Workbench for developing new languages, manipulating them using domain notations and transforming them using a generative model driven approach. New screenshots are available at: http://apps.sourceforge.net/gallery/whole/ The Examples and Tutorials are available at: http://whole.sourceforge.net/Documentation.html The Release Plan is available at: http://whole.cs.unibo.it/confluence/x/JgE Further information on the Whole Platform can be found at whole.sourceforge.net.
  2. We are pleased to announce the availability of a new milestone release of the Whole Platform.

    The Whole Platform is an open source technology for engineering the production of software.
    Based on the idea that programming is an activity concerning the development of domain languages, the Whole Platform provides an Eclipse-based Language Workbench for developing new languages, manipulating them using domain notations and transforming them using a generative model driven approach.


    New screenshots are available at:
    http://apps.sourceforge.net/gallery/whole/

    The Examples and Tutorials are available at:
    http://whole.sourceforge.net/Documentation.html

    The Release Plan is available at:
    http://whole.cs.unibo.it/confluence/x/JgE

    Further information on the Whole Platform can be found at
    whole.sourceforge.net.
    How does this compare to ANTLR and Jetbrains MPS?
  3. How does this compare to ANTLR and Jetbrains MPS?
    ANTLR is just a (very good) parser generator. By adding ANTLWorks you get also a development environment for grammars. So ANTLR can be compared only to the Grammars domain language bundled with the Whole Platform. Even comparing ANTLR + ANTLWorks with Whole Grammars there are many differences: 1. Grammars is part of the legacy family of Whole languages because you are forced to use it only if you want to support a(n existing) grammar-based serialization syntax otherwise you may define a metamodel with Models and use bundled serialization syntaxes (XML, Java, ...). 2. Given a grammar, Grammars derives a parser, an unparser and a metamodel. i.e. it is a full text model mapping language. 3. Grammars is able to interpret a grammar and parse/unparse text without generating code to speedup development and to support dynamic deploy scenarios. 4. The metamodel derived from a grammar can be customized using dedicated Grammars constructs. 5. Grammars includes more intentional constructs such as "repeat with separator" to "split by size or delimiter" to facilitate a one-to-one mapping between productions and model entities. 6. The default Grammars notation (i.e. editor) is graphical.
  4. How does this compare to ANTLR and Jetbrains MPS?
    MPS shares part of the vision behind the Whole Platform so there are several features in common to compare. Here I list only a few of them: The MPS IDE is standalone (derived from the Idea IDE?). The Whole Paltform IDE is Eclipse-based so you can include it into your preferred Eclipse configuration. Modeling The MPS structure modeling language (SModel) provides only a verbose single-construct editor; I cannot imagine how you can define a DSL with hundreds of constructs using it. The Whole Platform Models language has a default textual notation with tables. We are working for enhancing it but we have successfully used it to define big languages such as Java and SQL. With MPS SModel you can define a language reusing other language constructs. The Whole Models has not yet a declarative way for doing that but you can mix multiple languages in an unanticipated way. MPS has not (yet?) a way to eliminate the modeling cost. Whole includes several integration languages to derive a metamodel: from a EBNF grammar (Grammars DSL), from an XML Schema (XSD DSL), from a database (RDB DSL), and from a Java Library (Pojo DSL). Notation (editor) MPS supports only textual notations and is limited to domain specific ones; so you are forced to define a notation in order to use a language (for editing an instance). Whole supports both graphical and textual notations and both generic and specific notations. Once you have started to define a metamodel you are ready to program with it using a generic notation. Furthermore, in Whole, every language supports multiple notations and you can switch between them while editing. Behavior MPS generators use a textual notation with markup to separate the host language from the target languages. Whole languages can be combined together using fragments, and every fragment uses its own notation (even domain specific ones). This kind of flexibility allows several notations to be used together in a single generator. Furthermore, template fragments are easily distinguishable from base level code. MPS comes with a simple generator language similar to well known template-based languages (i.e. Velocity) with a limited ability to express path expressions. The Whole Platform includes several languages for defining behavior with different programming styles, abstraction levels, and targeted to more or less specialized domains. The most important language - called Queries - is almost a superset of SQL and XQuery with a feeling that reminds both and a semantics leveraged to deal with every modeled language. Development cycle Defining a language with MPS is a long process because it is based on generators and everything has to be modeled explicitly. In Whole, generators are paired with interpreters and every language is designed to be able to derive missing information where possible. We are rewriting MPS examples in Whole to facilitate comparison. See the Gallery screenshots at: http://apps.sourceforge.net/gallery/whole/.
  5. Congratulations[ Go to top ]

    Congratulations Riccardo and Enrico!!!
  6. I'd be VERY interested in seeing this used for solving a real life problem.
  7. I'd be VERY interested in seeing this used for solving a real life problem.
    The Whole Platform is entirely written in Whole (older parts are implemented in Java at the Whole framework level and more recent ones using Whole domain languages). I think that writing a state-of-the-art open source Language Workbench is a challenging real life problem today. Outside of the software development domain, as I know, the Whole Platform is used for writing commercial products in finance related domains and for writing closed source software product lines in domains involving data integration and transformation.