Ingo Weigelt
Architectures for an Extensible Text Editor for Rodin
[PDF] [Bibtex]Technical Report, University of Düsseldorf, 2012.
Rodin is a platform for Event-B modelling. Its native editor is a structural editor that allows the modification of a tree-like model.
Especially for large models, some users found the default editor inadequate and preferred a text-based editor. Such an editor, called Camille, was created by Fabian Fritz in 2009 and was a huge success.
Nevertheless, Camille does not directly support extensions for Rodin. As more and more extensions are being created, this became a larger issue over the years.
This report analyses how Camille extensibility can be achieved. It analyses a number of different architectures and compares their mutual advantages and disadvantages.
This paper discusses four different approaches. Out of these, we find two particularly promising. The first option would be the implementation of a block parser that provides a useful default implementation for plug-in developers and a pleasing syntax to editor users. The second option is the use of an existing syntax like YAML. This solution could be extended all the way to the persistence layer of Rodin, thereby simplifying the back end significantly. But such an effort would require additional resources. Nevertheless, the result would simplify maintenance of the platform significantly in the long run.
Developing Camille, a text editor for Rodin
[Bibtex]Software: Practice and Experience, 41(2): 189-198, 2011.
Initially, the Rodin platform for Event-B did away with a textual representation for models. In this paper, we explain why a textual representation was required after all and we present the semantic-aware text editor Camille for Rodin. We explain the design choices of Camille, such as splitting the syntax into two-levels for machine and formula syntax. We also describe the challenges, such as synchronizing the textual representation with the Rodin database, and how they were overcome using an EMF abstraction layer.