Description
In current draft of v3 we see (excerpt)
shape :ServiceShape -> ex:Service ;
ex:serviceBackend IRI %
sh:name "service backend"@en ;
sh:description "name of server software (e.g. ESS for inrupt.com)"
% .
ex:serviceFrontend IRI %
sh:name "service frontend"@en ;
sh:description "name of server frontend (e.g. SolidOS or Penny)"
% .
}
In #18 (comment) I pointed out:
I would also keep in mind, that CSS can be deployed with only storage enabled, only IdP enabled or both enabled. So we may want to distinguish which products classes as implemented by a specific software bundle, and for specific deployment which of those implemented product classes are actually used.
There can be also deployments which for example combine storage running on php-solid-server and IdP running on Keycloak or CSS IdP. For end user such hybrid stack deployment would be a service equivalent to homogeneous stack like CSS with both storage and IdP enabled.
Since service can provide combination of different classes of products, each one running a different implementation, I consider the shape above oversimplified. I created a video for TPAC 2024 giving an overview of different classes of products and how they can be implemented separately, sometimes service would need some custom glue since interop between many classes of products is currently left out of scope and left up to implementations / deployments.
EDIT For example https://sai.js.org/ has implementation of SAI Authorization Agent, which comes with a frontend but that frontend uses bespoke RPC API and someone could write their own fronted. This implementation already uses components.js and I'm working on possible configuration where two product classes: SAI Authorization Agent and Solid-OIDC Provider are combined into single service to improve UX. I might also add to that frontend CSS pod management using CSS bespoke REST API https://communitysolidserver.github.io/CommunitySolidServer/latest/usage/account/json-api/ and disable any HTML templates from CSS all together.
I would prefer to prioritize simpler things like #18 and #19 before we dive too deep into describing more complex deployments. We can still use this issue to keep track of relevant things for when start crossing this bridge.