Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.
This project originates from joint research of ESI (TNO) and Philips Healthcare on the description of client-server software interfaces. This work was motivated by the observation that many issues which are found during integration and test are due to unclear software interfaces of components. In the current state-of-practice, usually only the signature of an interface is described. Missing are constraints on the order of calls and additional timing and data constraints. Moreover, there was a need for industrial-applicable tools that make it possible to check interface compliance of components, including 3rd party components.
This research resulted in a dedicated domain-specific language for rich interface specifications and the generation of monitoring tooling to check interface compliance. Other high-tech companies in the Netherlands recognized the motivation behind the approach leading to a company-independent Eclipse plugin which is gradually extended with new features and generators.
Eclipse CommaSuite defines a domain-specific language, and provides tools that support the description and analysis of component interfaces, including the allowed order of events exchanged between components, constraints on timing and data, and relations between interfaces.
The project concentrates on the description and analysis of component interfaces, including the allowed order of events exchanged between components, constraints on timing and data, and relations between interfaces. Based on these interfaces, many artefacts can be generated, such as documentation, code for middleware, monitors, and tests.
The focus is on the combination and integration of existing techniques into mature tooling that brings value to industry and advances the state-of-practice in industry. New techniques and algorithms will only be developed if there is a clear industrial need. The same holds for language extensions. It should be relatively easy to adapt and extend the tooling for someone familiar with the used technology (Xtext, Xtend, EMF).
The domain-specific language of Eclipse CommaSuite allows the specification of the provided and required interfaces of a software component. Each interface is described by means of (1) a signature, i.e., the set of commands, signals and notifications that are offered by a server, (2) a protocol state machine which describes the allowed sequences of interaction events between clients and server, (3) timing constraints on the occurrence of the events, and (4) data constraints on the values communicated. For a component, constraints can be added on the relations between its interfaces.
Based on an instance of the domain-specific language, a number of artefacts can be generated. This includes visualization based on PlantUML and GraphML, documentation, and interface monitoring. Monitoring allows frequent checks on interface conformance. For instance, during nightly tests and after components updates. Monitoring is based on traces of client-server interactions, e.g., obtained via logging or sniffing. It checks whether these traces conform to the state machine behavior of the interfaces and the additional constraints.
The tooling is available as Eclipse plugin and as command line tooling for integration in the industrial workflow.
The challenges addressed by Eclipse CommaSuite are recognized by many companies. By making the tooling easy accessible, companies can quickly experiment with the tooling to investigate whether it brings value. When needed, they can adapt, improve, or extend the tooling.
For research institutes, Eclipse CommaSuite provides mature and industrial applicable tooling that can be extended with new research results, for instance on reverse engineering, run-time monitoring, test generation and security.
A number of industrial partners of ESI (TNO) expressed their strong preference for open source tooling to avoid vendor lock-in, to be able to develop own company-specific generators (e.g. for proprietary middleware), and to build a larger community of users and contributors. The Eclipse Foundation and its principles are a perfect fit for this new open source project.
The initial contribution will consist of:
- Xtext projects with the grammars for:
- A language for the specification of component interfaces, including interface signatures, state machines to describe the allowed client-server interactions, timing constraints, data constraints, and constraints on relations between interfaces.
- Event files that are used for monitoring.
- Project files that specify which generators should be applied and additional parameters for these generators.
- Generators in Xtend to generate:
- Monitors to check whether a trace of client-server interaction conforms to the specification, both for a single interface and for a component with multiple interfaces and additional constraints.
- Documentation, based in M2Doc.
- Visualization, based on PlantUML.
- Validation, implemented in Xtend / Java.
- Auto-formatting, implemented in Xtend / Java.
- Build process using Maven.
- Tests based on JUnit and RCPTT.
- Help pages.
The code is developed by ESI (TNO) and Philips in joint projects. In a contract of September 15, 2020, these parties agree with the distribution of the code under the open source Eclipse Public License (EPL) version 2 and succeeding versions.
The next list summarizes the results after obtaining all dependencies of the current tool, running the dash-licenses tool, and removing dependencies on internal projects.
dependencies - approved
p2/orbit/p2.eclipse-plugin/org.eclipse.ui.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.e4.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.team.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.emf.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.core*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.equinox.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.osgi.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.jdt.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.debug.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.ltk.*, approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.acceleo.*, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.help/3.8.500.v20190624-2105, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.compare/3.7.700.v20190802-1838, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.compare.core/3.6.600.v20190615-1517, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.platform/4.13.0.v20190916-1045, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.search/3.11.700.v20190813-2210, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.text/3.9.0.v20190826-1019, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.swt/3.112.0.v20190904-0609, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.xpand/2.2.0.v201605260315, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.jface/3.17.0.v20190820-1444, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.xtext/2.19.0.v20190902-0737, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.eclipse.xtend/2.2.0.v201605260315, , approved, eclipse
p2/orbit/p2.eclipse-plugin/org.w3c.css.sac/1.3.1.v200903091627, Apache-2.0 OR LicenseRef-Public-Domain OR W3C, approved, CQ1448
p2/orbit/p2.eclipse-plugin/org.w3c.dom.events/3.0.0.draft20060413_v201105210656, Apache-2.0, approved, CQ2492
p2/orbit/p2.eclipse-plugin/org.w3c.dom.smil/1.0.1.v200903091627, Apache-2.0 OR LicenseRef-Public-Domain OR W3C, approved, CQ1448
p2/orbit/p2.eclipse-plugin/org.w3c.dom.svg/1.1.0.v201011041433, Apache-2.0, approved, CQ208
p2/orbit/p2.eclipse-plugin/org.hamcrest.core/1.3.0.v20180420-1519, BSD-2-Clause, approved, CQ7063
p2/orbit/p2.eclipse-plugin/org.tukaani.xz/1.8.0.v20180207-1613, LicenseRef-Public-Domain, approved, CQ15538
p2/orbit/p2.eclipse-plugin/org.apache.commons.*, Apache-2.0, approved, CQ4578
p2/orbit/p2.eclipse-plugin/org.junit/4.12.0.v201504281640, EPL-1.0, approved, CQ9232
p2/orbit/p2.eclipse-plugin/org.apache.batik.css/1.11.0.v20190515-0436, Apache-2.0, approved, CQ19683
p2/orbit/p2.eclipse-plugin/com.google.guava/27.1.0.v20190517-1946, Apache-2.0 AND CC0-1.0, approved, CQ19110
p2/orbit/p2.eclipse-plugin/org.apache.felix.scr/2.1.14.v20190123-1619, Apache-2.0 AND MIT, approved, CQ18208
p2/orbit/p2.eclipse-plugin/com.ibm.icu/64.2.0.v20190507-1337, ICU AND Unicode-TOU AND BSD-3-Clause AND BSD-2-Clause AND LicenseRef-ipadic-license AND LicenseRef-Public-Domain, approved, CQ19629
p2/orbit/p2.eclipse-plugin/com.google.inject/3.0.0.v201605172100, Apache-2.0, approved, CQ5058
p2/orbit/p2.eclipse-plugin/org.apache.batik.constants/1.11.0.v20190515-0436, Apache-2.0, approved, CQ19682
p2/orbit/p2.eclipse-plugin/org.objectweb.asm/7.1.0.v20190412-2143, BSD-3-Clause, approved, CQ19168
p2/orbit/p2.eclipse-plugin/io.github.classgraph/4.8.35.v20190528-1517, MIT, approved, CQ19923
p2/orbit/p2.eclipse-plugin/javax.inject/1.0.0.v20091030, Apache-2.0, approved, CQ3555
p2/orbit/p2.eclipse-plugin/org.antlr.runtime/4.3.0.v201502022030, BSD-2-Clause, approved, CQ8895
p2/orbit/p2.eclipse-plugin/org.apache.batik.*, Apache-2.0, approved, CQ19685
p2/orbit/p2.eclipse-plugin/org.apache.log4j/1.2.15.v201012070815, Apache-2.0, approved, CQ2555
p2/orbit/p2.eclipse-plugin/org.antlr.runtime/3.2.0.v201101311130, BSD-2-Clause, approved, CQ3820
p2/orbit/p2.eclipse-plugin/org.apache.ant/1.10.5.v20190526-1402, Apache-2.0, approved, CQ10717
p2/orbit/p2.eclipse-plugin/org.apache.xmlgraphics/2.3.0.v20190515-0436, Apache-2.0, approved, CQ19686
p2/orbit/p2.eclipse-plugin/org.apache.poi/188.8.131.52910021432, Apache-2.0 AND MIT, approved, CQ19412
p2/orbit/p2.eclipse-plugin/net.sourceforge.plantuml.eclipse/1.1.24, EPL-1.0 AND Apache-2.0, approved, CQ19828
dependencies - restricted
p2/orbit/p2.eclipse-plugin/org.obeonetwork.m2doc/184.108.40.206912181356, unknown, restricted, none
License: Eclipse Public License - v 1.0 (https://github.com/ObeoNetwork/M2Doc)
p2/orbit/p2.eclipse-plugin/nl.tue.rotalumis.executables/220.127.116.11011060922, unknown, restricted, none
p2/orbit/p2.eclipse-plugin/nl.esi.poosl.model/18.104.22.168011031413, unknown, restricted, none
p2/orbit/p2.eclipse-plugin/nl.esi.poosl.rotalumisclient/22.214.171.124011031413, unknown, restricted, none
Note: the aim is to remove the last two dependencies on Rotalumis and POOSL.
No legal issues that we are aware of.
There are a number of trademarks with the name “comma”, for instance:
- https://www.comma-store.eu/ fashion
- https://nl.commaoil.com/ automotive lubricants and chemicals for passenger and commercial vehicles (see also https://euipo.europa.eu/eSearch/#details/trademarks/W10591212 and https://www.tmdn.org/tmview/#/tmview/detail/GB500000002050145)
- https://commavastgoed.nl/ real estate agent (see also https://www.tmdn.org/tmview/#/tmview/detail/BX500000001215583)
- https://www.tmdn.org/tmview/#/tmview/detail/BX500000001232767 communication, distribution and control
- https://www.tmdn.org/tmview/#/tmview/detail/GB500000002636564 Body Logical Limited, cushions
The initial contribution is planned for Q2 2021; it will be based on the current tooling, providing an Eclipse plugin for interface specifications and the generation of visualization, documentation and monitoring.
The fist release as an Eclipse project is expected in Q3 2021.
Planned extensions of functionality:
- Generation of scenarios that can be used for test generation.
- Simulation of interface models.
- Generation of interface stubs.
- Improved validation of models, e.g., detecting race conditions.
Plans to increase community:
- Publication in popular magazines for industry.
- Presentations on conferences and meetings with industrial audience.
- Publications and tool presentations at scientific conferences.
- Improve current tutorials, use of these tutorials in hands-on workshops.
- Manuals that describe how to extend the framework, for instance, how to add a generator to the core and how to add validation rules.