Providing a platform that other people can run is an important part of building something that can outlast the organization, but a big factor is providing a tool and service that proves the potential value of such a layer over the web.
There are a few aspects to this which I think are relevant to the architecture of H:
Enabling Integrations
I think a lot of the potential value of H and annotation tools in general depends on making it convenient to integrate it with other services and web content. Areas of integration include:
- Identity/user profile and authentication.
- Custom document viewers
- Providers of machine-generated annotations
(2) and (3) are relevant in terms of how we partition the client into libraries and what public APIs we expose.
Enabling us to provide services on top of the data
When talking about separating the client and web service, I think there has been the implicit assumption that the architecture would be like this:
Hypothesis WS <==> Client <==> Third party identity/annotation providers
Whilst I we will clearly need to support that model, I think we could also satisfy many needs with a model where the client communicates only (or primarily) with our service, and our service then communicates with third parties:
Client <==> Hypothesis Web Service <==> 3rd party providers
The primary advantages of this approach, from my perspective, is more control over the quality and consistency of user experience and the ability to provide services around that third-party data.