Extension architecture RFC
PubSweet needs to support arbitrary extensions to the backend.
An extension will provide new functionality. Some different ways an extension might do this:
- Modify the behaviour of an existing part of the API, for example using a different database.
- Incorporate all of part of the API of some other tool into the PubSweet API. For example, exposing the INK, Stencila or Substance Collaboration Hub APIs.
- Expose a command-line tool via a new API endpoint. For example, wrapping the contentmine tools.
We need to decide:
- the interface for registering these different kinds of extensions
- whether there will be constraints on extensibility
- how backend extensions make new frontend behaviour available
cc @jure @adam