A few days ago, JetBrains pushed a new EAP release of their new issue tracking product “Charisma”. Apart from the fact that it has a nice and easy to use interface, what got my attention is the fact that it is powered by “MPS” (Meta Programming System). MPS has reached its first Milestone (v1.0) one month ago, July 23rd 2009.
MPS is what Martin Fowler called a Language Workbench. It is free and open source and offer an interesting new approach for creating DSL and languages extensions on top of Java (also referred as External and Internal DSL respectively). You can read the article that JetBrains posted on DZONE where they outline why they’ve created MPS.
Apart from JetBrains, others are also preparing new products. Intentional Software, recently made a public demo of their Language Workbench which runs on top of .net. Microsoft with “Oslo”, presented during the last PDC (2008), is also making progress and the latest CTP of Olso was released in May 2009. Among the interesting projects that you can find in the “M” Language Gallery is MetaSharp and its sister project NBusiness
After going thru the MPS Tutorial, you get a better idea on what you can do with a Language Workbench. However you’ll also realize that JetBrains’ statement “ According to our experience, it takes about 2 weeks in order to become productive with it.” is probably valid. The main challenge being that we are not used to editing the Abstract Syntax Tree (AST) and too used to text representation.
Even though it might take some time to get familiar with it, now that MPS is 1.0, it is time to play with it. JetBrains already said that Charisma was the first product developed using MPS but that more products will follow. I think we will now see why the Fabrique project ended.
In the Cloud, Force.com is also leveraging Meta Programming and it is clear that for Business Applications and CRM related Applications the productivity boost is very attractive. Others PaaS, such as LongJump, BungeeConnect or Zoho Creator have been following SalesForce.com leadership.
Even though DSL have been around for quite some time, not many decide to build a full DSL. Developers however are using them to improve productivity. LINQ is a good example of an extension to the C# language that is now widely used. Ruby metaprogramming leveraged by the RoR framework is another example. So with those new Language Workbenches that JetBrains and Intentional Software are releasing it would not be surprising if we witness the rise of DSLs and Language oriented Programming very soon.