Main Design Goals
This API is version independent, scalable, durable, and reusable. And because it is implemented using the OpenOffice.org component technology, it is programming language independent as well.
It has to be seen more like an independent specification than being dependent on a preexisting implementation. Therefor it is our to keep all component APIs in this project and to keep all implementation code out of this project.
Its version independence and durability results from the fact that we limit changes to the API. You can add interfaces, services, and so on to the OpenOffice.org API. However, other changes are rather limited:
- Interfaces, structures, and exceptions are not allowed to change at all, this breaks the existing code immediately.
- Enums are not allowed to change, this breaks the existing Java code.
- Services specifications can be changed restricted (optional extensions).
- Constants can be add constants to constant groups, but changing the value of a constant or remove a constant is not allowed, this would break existing code as well.
Its scalability and reuseability results from our design pattern, to approach an orthogonal architecture rather than having specialized interfaces for certain requirements. For example does each interfaces only cover exactly one aspect of the behaviour of an object.