Javier Luis Cánovas presents our approach for the collaborative development of Domain-Specific Languages (this work will be presented at the Models in Software Engineering Workshop at ICSE, any comment or suggestion, specially from practitioners with a more realistic and hands-on experience in the creation of DSLs, is more than welcomed; full paper available, see also some summary slides at the end of the post).
Collaboration between developers and end-users seems particularly fitting when developing Domain Specific Languages (DSLs) given the fact that DSLs target the experts of a domain. However, current DSL development processes are completely centered on the developers who still lead all phases of the DSL development, while end-users only participate in the very beginning, when the domain is analyzed, and they cannot see how their input was interpreted until the modeling environment for the new language is deployed. The validation is therefore performed at the end, which implies rebuilding the environment (a very costly process, even with current language workbenches) every time the end-user wants to change the language definition (e.g., to add new properties to a metaclass, change their type,…).
To improve this situation, we propose to make the development process for DSLs community-aware, meaning that all stakeholders (i.e., technical and end-users) have the chance to participate, discuss and comment during the DSL definition phase (at the moment, this process only covers the abstract syntax, i.e., the metamodel, part of the DSL, we plan to extend it to cover also the collaboration process for the concrete syntax). Moreover, we believe it´s important to track this discussion so that in the future we can justify the rationale behind each language design decision.
To make this collaborative development process feasible, it is important to facilitate as much as possible the collaboration between all people involved. Our solution is based on a new DSL, called Collaboro, to represent the collaborations which arise among the members of a language community. Collaboro has been implemented as an Eclipse-based tool that can be used by all kinds of users willing to have an active role in the evolution of their DSL. You can have a look at the project in this webpage: http://code.google.com/a/eclipselabs.org/p/collaboro/ . The core of the abstract syntax of the language is shown in the following picture. As you can see, with Collaboro you can track all the change proposals, solutions (plus the set of changes to apply on the DSL to adopt the solution), comments, votes, …
To show how Collaboro works in practice, imagine a Transport DSL used by a transport company to represent its fleet and calculate the most efficient path between several points. The DSL therefore includes concepts such as Truck and Route to model the distribution maps (top part of the next Figure). Thanks to the fact that we are now following a collaborative development process, by looking at this initial version of the Transport metamodel, End-user 1 detects that Transport is missing the possibility of stating the traffic density of each Route concept and claims this is an important concept for the language. Since the rest agree, an initial solution is proposed and improved (after a comment suggesting a slightly different strategy which is voted and selected by the community).
As can be seen, both the collaboration and the decision processes are modelled. In this case we have applied a full agreement policy so the change proposal and the corresponding solution are marked as accepted only if every community member agrees.