Abstract—Plugin-based application design has become increasingly popular in recent years, and has contributed to the success of a range of very different applications including Mozilla Firefox and the Eclipse development environment. Plugin-based design is based on the idea that plugins provide additional functionality extending the capabilities of a core product. While this is often understood as providing services by implementing abstract classes or interfaces defined in the core product, modern plugin-based systems like Eclipse use a much wider definition of service. We propose a formal language that capture these services and describes the contracts between products and plugins. This language is formal, with a well-defined syntax and semantics, and can be used to validate these contracts.
Jens Dietrich, John G. Hosking, Jonathan Giles