Hello all,

@cketti mentioned his interest for helping updating our JMAP
implementation to final RFCs.

We should be careful not breaking things for existing James clients
using the deprecated/outdated JMAP specification. Maybe the best thing
would be to expose the final JMAP spec on an other port and keep the old
implementation as is (then deprecate & remove it).

On how to proceed I propose:

 - To rename packages ( server/protocols/jmap* ), guice packages (
server/container/guice/protocols/jmap) to jmap-draft. JMAPServer should
also be renamed to JMAPDraftServer.

 - To create a new jmap package, bind it on a new port.

As a first step, and to ease development, as well as fit the k9 mail
testing use case, we can target testing and supporting the new JMAP spec
only on top of memory. Support on other backends will then be
contributed by Linagora employees.

 - To implement the new request structure (with this echo method) (using
etc..)

 - Then we can start support for the mailbox object
 (Mailbox/get Mailbo/set) copying much of the existing code.

 - Then we can continue with Email/(get-set-query) being already
(outdated) implemented. Regarding Email advanced mime propoerties,
not everything needs to be supported straight away. Outbox special role
needs to be dropped (code simplification).

 - Vacations can also easily be ported.

 - Support uploads/downloads.

Regarding 'not implemented yet' features in jmap-draft that are critical:

 - EmailSubmission needs to be supported. (on top of in-memory
datastructures this should not be too hard).

 - queryChanges & push - but this might be a much harder work.

 - Threads - we lack the mailbox support for this.

What would you think of such an approach?

Best regards,

Benoit

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to