We need to reorganize the modules soon. Things make even less sense now.
How about:
* keycloak-common - common classes re-used by both client and server
* keycloak-client-api - client specific interfaces
* keycloak-server-api - server specific interfaces, including spi and providers
Then we also would have:
* keycloak-json - common json classes (json representations, jwt utils, etc.)
* keycloak-oidc - common OpenID Connect classes
* keycloak-saml - common SAML classes
Most SPI implementations would be moved into keycloak-server, other than those that needs to be pluggable. The SPI implementations that should be in separate modules are:
* Mongo
* JPA - we can combine Liquibase and JPA into one
* Social providers
* Anything else?