Thursday, October 16, 2014

Release of Whole Language Workbench - Luna SR1 Edition

Today, we are pleased to announce that a new milestone release of the Whole Language Workbench is publicly available.

The Eclipse IDE 4.4.1 is bundled with the all-in-one product distribution. Older versions of Eclipse are no longer supported.

Beside the usual fixes and minor improvements, the release includes:

  • A complete refactoring of the test suite to support continuous testing.
  • The bundled Java language now conforms to the Java Language Specification 8.
  • The Patterns language is significantly matured.
  • A working example of an e4 product based on the Whole Platform.


Whole based e4 product example

As usual, both binaries and source code are available:

  • SourceForge archives here.
  • GitHub Platform source here and Examples source here.

Thursday, August 28, 2014

Working in vacation with my new 4 wheeled portable workstation

Apple Mac Pro with Sharp 32" 4K multitouch monitor on a NSP flight case

In the past 10 years my primary computer has been a laptop coupled with a large display, whenever possible.
This summer I switched back to a compact and stylish desktop computer: the Apple Mac Pro.
My love for large screens has grown and the desire to rediscover the tactile feelings of my iPad has driven my choice to a 32" Ultra-HD multitouch monitor: the Sharp PN-K322 BH.
My need to work out of the office for extended periods of time has been reduced, but I want to work as if I were in my office otherwise the creativity is blurred by frustration. So I bought a custom NSP flight case.


After a month of work on vacation in a country house with my family, I can say to be very pleased of my new 4 wheeled portable workstation.

Friday, August 8, 2014

Release of Whole Language Workbench - Luna Edition

Today, we are pleased to announce that a new milestone release of the Whole Language Workbench is publicly available.

The Eclipse IDE 4.4 is bundled with the all-in-one product distribution. Older versions of Eclipse are no longer supported.

We completed the separation of the Language Workbench and of the Language Development Kit products from the Whole Platform SDK in order to facilitate the definition of new products.

To enable the definition of e4 based products that take full advantage of the graphical notations supported by the Whole Platform we replaced the official Graphical Editing Framework (GEF) with a fork made by Enrico Persiani.
The GEF E4 Friendly basically factorize all the e4 compatible code in an additional bundle and can be used effortlessly in place of the official project. Furthermore, if you reduce your dependencies from GEF to just the new bundle, you get e4 only graphical editors in a matter of minutes.


As usual, both binaries and source code are available:

  • SourceForge archives here.
  • GitHub Platform source here and Examples source here.

Friday, March 21, 2014

Release of Whole Language Workbench - Kepler SR2 for Java 8 Edition

Following the official release of Java 8, we are pleased to announce that an updated milestone release of the Whole Language Workbench is publicly available.

The Eclipse IDE 4.3.2 with the feature patch to support Java 8 is bundled with the all-in-one product distribution.
The Java 8 represents a big step forward for the Java community and we want to be able to take full advantage of its features; so we decided to make Java 8 the required execution environment for the Whole Language Workbench.

A few years ago, following the release of Java 5 we redesigned the Whole Platform to adopt generics. For more than a year, we introduced a few workarounds in our code in order to be able to compile with both the official Java compiler and the one bundled with Eclipse JDT. 

Yesterday, we had to perform a few code changes, just to be able to rebuild our platform with Java 8 instead of Java 7. I am not able to tell you how much of them are due to changes in the Language specification; but the two compilers have reported a small different set of errors.

The news is that even if the history had to repeat itself, we encourage you to start using Java 8 today and we join in thanking both Oracle and the Eclipse Foundation for the great job they have already done.

Friday, March 14, 2014

Release of Whole Language Workbench - Kepler SR2 Edition

Today, we are pleased to announce that the new milestone release of the Whole Language Workbench is publicly available.

The Eclipse IDE 4.3.2 is bundled with the all-in-one product distribution.
This is the first major release based on the e4 platform; all the code needed to run on older versions of Eclipse has been removed and is no longer supported.

We completed the factorization of the e4 compatibility layer to enable full e4 product generation. This facilitate the creation of e4 RCP applications that leverage the Whole Platform, including the language workbench itself as soon as the dependent plugins will be migrated to e4.

We have bundled two new web related DSLs: JSON and HTML5 each having a specific persistence backed by an external library (Jackson and Validator.nu respectively).

New and exciting features are awaiting to surprise you at the Language Workbench Challence 2014 don't miss the dates.


As usual, both binaries and source code are available:

  • SourceForge archives here.
  • GitHub Platform source here and Examples source here.

Friday, November 29, 2013

Release of Whole Language Workbench - Kepler SR1 Edition

Today, we are pleased to announce that the new milestone release of the Whole Language Workbench is publicly available.

The Eclipse IDE 4.3.1 is bundled with the all-in-one product distribution.
The major feature of this release is an e4 based version of the IDE integration code. It is an almost complete rewrite of the code to take advantage of all of the new APIs and features of the e4 platform.
The "e3" version of the IDE integration code is still in place, so it is possible to use the update site to install the Whole Language Workbench into an existing Eclipse 3.x. In fact, this release is intended to be the last one supporting Eclipse 3.x.

As usual, both binaries and source code are available:

  • SourceForge archives here.
  • GitHub Platform source here and Examples source here.

Tuesday, June 4, 2013

Multi-touch modeling with Whole Language Workbench on a Wacom Cintiq 24HD Touch

Last saturday I had the opportunity to try a Wacom Cintiq 24HD Touch attached to a Mac Mini and I discovered that it is much more powerful than is advertised.
The multi-touch functionality makes it possible to interact with the operating system and all of the installed applications by using (at least) the same standard gestures supported by the Apple Magic Trackpad.

So, after the installation of the last publicly released version, I played with the Whole Platform for at least two hours using only multi-touch gestures and a wireless keyboard (no trackpad).

As you can easily guess, the Whole Platform is somewhat "touch ready" thanks to its extensive use of graphical notations, drag and drop, and context menus.
By using a 24" display many constructs are already large enough to be selected by a tap or targeted by a drop. Otherwise you have to pinch to zoom the area before performing the desired action.

It was a very amazing experience even for me to discover that modeling the structure, behavior and tooling of a language is already more pleasant and more effective on a tablet-like configuration!




Thursday, April 18, 2013

Release of Whole Language Workbench - CG2013 Edition

At this year Code Generation conference and Language Workbench Challenge, we previewed the upcoming release of the Whole Language Workbench.

Today, we are pleased to announce that the new milestone release is publicly available.
Please note that the examples include both the LWC assignment solution and the CG hands-on session material.

As usual, both binaries and source code are available:

  • SourceForge archives here.
  • GitHub Platform source here and Examples source here.

Friday, April 12, 2013

Whole Platform hands-on session at CG2013


The main subject of the session was the demonstration of a DSL focused on facilitating the introduction of domain abstractions into an existing code base.

We started by showing a few examples of the Patterns DSL applied to different domains such as JavaFX, code reuse, SWT, and GEF. In a few of them we completely replaced the underling code while in others we only abstracted parts of it.



JavaFX code abstracted
JavaFX patterns



Patterns and Models abstracted

Reuse patterns


SWT patterns


GEF code abstracted
GEF patterns

During the hands-on part of the session we started from scratch to introduce abstraction into a Java code base.
Using a set of Java classes we built an artifacts model representing our modeled starting point.
Then we applied a few refactoring such as "Introduce Patterns in Pattern Language", "Extract Patterns", "Extract scattered Pattern" to progressively gain the ability to use in our model patterns like "Property", "JavaBean", "JavaBeanModel", and "JavaProject".
First pattern introduced

Java Beans patterns

Java code without and with new abstractions 

Thursday, April 11, 2013

Whole Platform Solution to LWC 2013


If you missed the demonstration of our solution to the LWC 2013 assignment, here are some screenshots to get an idea.


The composable Metamodels of QL and QLS (see Foreign Type Relations)
An example of a model instance using both languages
The semantics used to generate code and validate the model instance

The resulting SWT application being generated

Finally the tooling and the tests

Sunday, April 7, 2013

Whole Platform team already in Cambridge

In order to attend to the CodeGeneration conference, the Whole Platform team has already established its headquarters in the two most productive places of Cambridge: the Starbacks and the Castle Inn.


Enrico is putting its final touch to our solution for the LWC13 assignment. You can watch the whole-examples repository to have an early preview.

I am working full time for the hands-on session Incremental engineering of DSLs from Software Prototypes. Come to the session for touching how much the development of languages can be sped up.
The new technology will be disclosed as an exclusive preview for Code Generation 2013: so no screenshots to show in advance!

Thursday, April 4, 2013

Whole Platform at Code Generation 2013

We are pleased to invite you at our hands-on session at Code Generation 2013 titled Incremental engineering of DSLs from Software Prototypes.

During the session you'll be able to experiment with an innovative technology that greatly simplifies the derivation of a DSL by capturing patterns found in the code.

Don't miss the opportunity to meet the core team of the Whole Platform during the conference!

Tuesday, April 3, 2012

Whole Platform Preview at CG2012: neat new graphical notations

At CodeGeneration 2012 we previewed the next major version of the Whole Platform.
One notable change is the new look of the graphical notations.
This post outlines my design goals and provides a few comparative examples.

Notation Design Highlights

  • Optimized for visual exploration
  • Consistent choice of colors across all of the Whole Core languages
  • Reduced verbosity
  • Better use of space (in both dimensions)
  • Extended use of nested tables to improve readability
To facilitate the comparison with the old version, I show here side-by-side a few screenshots of the language notations that changed the most.

Models DSL

Grammars DSL

Queries DSL (and Commons DSL)



Semantics DSL (and Commons DSL)





Thursday, March 29, 2012

Building your own Java with the Whole Platform

At the Code Generation 2012 conference me and Enrico attended the hands-on session Building your own Java with MPS. Sadly we haven't had the opportunity to follow the second part of the tutorial because in the afternoon we had to present our session in parallel.

In the evening I managed to complete their assignment using MPS then I developed the following solution using the Whole Platform.


Exercise 2: Extending Java with Range Iteration

The solution can be defined and tested live on a running Whole Platform Language Workbench (Eclipse) without generating any code.

Open the given java example using the "Java Editor (Whole)" and save it with a different name and persistence (.xwl).


Define the metamodel of the MPSDemo1 DSL containing just the RangeIterator entity. Then add the Foreign Types Relations to be able to use the RangeIterator as a Java statement and to be able to use Java expressions and statements inside of it.

The metamodel is self-contained: you can use it alone or together with the Java language. Of course to be able to write an heterogeneous model both languages have to be deployed.

Deploy the MPSDemo1 DSL (Interpret button in the toolbar) and place a RangeIterator instance on the java Sample using the content assist menu. Then fill its features with java code as requested.


If you want to obtain also a concrete textual notation for the RangeIterator you have also to define a Grammar.



Deploy the grammar and select the new notation from the context menu of the RangeIterator instance.


Define and deploy the reduceToJava function.

In order to save the reduced version of the extended java example into a java source file define and deploy an Artifacts Generator.

Now you can go back to the extended java example and apply the generator.


Friday, March 23, 2012

Attend CG2012 to see how much live coding matters to everyday programming

The Whole Platform has already great features to shrink the development cycle.

Where others provide only generators and compilers we also ship interpreters and runtime metamodeling. For instance, you can start using your DSL and your domain specific tooling long before having completed the metamodel and the related behavior.

Furthermore, we support domain specific notations at every phase of the development cycle including unit testing and debugging. Have a taste of a visual debugger session at the domain level and you will never want to fallback to the textual Variables View of a Java IDE.



If you liked the visual exploration of source code in Inventing on Principle, and you tried to guess how much live coding with instant feedback can improve everyday developing experience you should attend the session Integrating model driven technologies in the publishing industry at CodeGeneration 2012.

Thursday, March 22, 2012

Attend CG2012 to get a fresh look at graphical notations

Since we have started the development of the Whole Platform we have discarded simple text editors and scattered dialog oriented UIs. We have also avoided to use freeform diagram notations for the core languages of the Whole Platform.

We have pushed forward graphical notations even on behavioral languages where others usually continue to fallback to traditional textual notations.

The graphical notations of the Whole Platform already looked impressive to the attendees of the LWC2011 one year ago.


To get a taste of our advancements on graphical notations attend the session on Integrating model driven technologies in the publishing industry at the Code Generation 2012 conference.



Thursday, March 15, 2012

Gather professional training at Code Generation 2012

We are committed to the development of the Whole Platform and we strive to provide the best technology for engineering the production of software.

The Whole Platform is released under a free license open for your business (LGPL 3) and it is successfully used worldwide. Unfortunately, we cannot satisfy all the demand for professional support in developing model driven software solutions.

The Code Generation 2012 conference is a great opportunity to gather professional training on one of the leading language workbenches directly from its creators.

See you at our session on Integrating model driven technologies in the publishing industry and at the session Have your language built while you wait.


If the conference room is busy, try hard for a free seat!

Thursday, February 23, 2012

Whole Platform at Code Generation 2012

We are pleased to invite you at our case study session at Code Generation 2012 titled Integrating model driven technologies in the publishing industry.

Learn how it has been easy to build a professional solution in the domain of digital media authoring using the Whole Platform.
A large part of the solution will be reimplemented live and you will be trained on using the Whole Platform languages to define models and transformations.

Don't miss the opportunity to meet the core team of the Whole Platform during the conference!

Tuesday, April 5, 2011

Language Oriented Programming Lectures

In the past seven years the Whole Platform has been the subject of several lectures of the Software Design course at the University of Bologna.
The main topics of the course were UML and Design Patterns, practical examples were shown using the Java programming language. Such examples were part of a main case study developed throughout the entire course.
At the end of the course, a solution to the case study was presented using the Whole Platform, showing how to engineer the software development process using a Language Workbench.
The students were allowed to implement the final project assignment either by handcrafting it or by generating it using the Whole Platform.

Today, as part of the Software Engineering course, I started the lectures of the Language Oriented Programming module.
The Whole Platform will be used as the reference Language Workbench to illustrate the subjects analyzed.
A short summary of the lectures' topics follows:

  • Language Engineering
  • Generative Programming
  • Domain Specific Languages
  • Modeling Languages
  • Transformation Languages
  • Integration Languages
  • Language Testing

A project developed using the Whole Platform will be part of the final examination.