Things to consider
Below are things I believe would make library more useful.
-
go-jmap should avoid enforcing certain storage design and definitely must not provide storage implementation itself. I think it is best to simply translate API requests into corresponding method calls on some interface called "Backend" (see go-imap for a good example of how this could be done).
-
go-jmap should avoid enforcing certain authentication design and definitely must not provide authentication implementation itself. As with previous point, authentication should be implemented by calling out into user-provided interface implementation.
-
go-jmap should rely only on net/http for HTTP server. Use of more advanced frameworks will make it easier to violate the first point.
-
JMAP Core, JMAP Mail, etc implementations should be kept independent of each other for extensibility purposes. JMAP is not only about email.
Things to consider
Below are things I believe would make library more useful.
go-jmap should avoid enforcing certain storage design and definitely must not provide storage implementation itself. I think it is best to simply translate API requests into corresponding method calls on some interface called "Backend" (see go-imap for a good example of how this could be done).
go-jmap should avoid enforcing certain authentication design and definitely must not provide authentication implementation itself. As with previous point, authentication should be implemented by calling out into user-provided interface implementation.
go-jmap should rely only on net/http for HTTP server. Use of more advanced frameworks will make it easier to violate the first point.
JMAP Core, JMAP Mail, etc implementations should be kept independent of each other for extensibility purposes. JMAP is not only about email.