TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The JSON Meta Application Protocol (JMAP)

160 pointsby kuba-orlikalmost 6 years ago

8 comments

chrismorganalmost 6 years ago
For context: RFC 8620 is the JMAP <i>core</i>, just published. It defines an RPC framework, an object synchronisation protocol, and miscellaneous other things like push channels. It has no data model associated with it, beyond handling blobs.<p>The JMAP <i>mail</i> spec, which is what most people will be more interested in, is awaiting final sign-off before publication as RFC 8621.<p>We’re using JMAP in production at Fastmail on our Fastmail and Topicbox products, right through the stack. Both of their web interfaces speak JMAP to the server. Unfortunately at this time it’s not ready for public use: definition of authentication technique is one thing that is deliberately left out of JMAP, and we’re currently using our own system which has no public documentation (and we don’t expose &#x2F;.well-known&#x2F;jmap yet either). The intrepid user may be able to figure it out, but we won’t be providing any support for it yet. We use the JMAP mail spec, the draft calendar and contacts specs, and a handful of our own specs for our own data types, also not publicly documented at this time.<p>JMAP is much more complex than the standard sort of simple REST API, but there is cause for all aspects of its complexity; the most notable complexity in it is its record state management, part of it being an object synchronisation protocol; an advantage of that is that robust offline support is feasible, even fairly straightforward. I’m looking forward to working on offline support in the Fastmail web app.<p>I personally think the increased complexity is well worth-while, and I have several products I’ve been sketching out and working on personally (completely unrelated to the world of email or to my employer Fastmail), and all the ones with any kind of client-server API I intend to build atop JMAP, because they’ll benefit heavily from it with respect to features like real-time interface updates and offline support (for web, desktop <i>and command line</i> programs).
评论 #20478343 未加载
评论 #20478681 未加载
评论 #20481178 未加载
评论 #20478777 未加载
评论 #20484015 未加载
评论 #20481437 未加载
jorangreefalmost 6 years ago
IMAP&#x27;s killer design flaw was that it imposed a strict UID consistency requirement between replica servers if client sync was to work correctly, i.e. you needed a master-slave setup or Paxos, you couldn&#x27;t use a true multi-master setup or CRDTs with eventual consistency because of the possibility that clients might miss UIDs.<p>There have been attempts to solve this with even-odd UIDs etc. but those broke down on further analysis. There have also been papers claiming to implement multi-master IMAP servers over CRDTs but these never addressed the strict UID consistency requirement and never tested with actual client implementations for sync correctness.<p>How does JMAP address the distributed multi-master server sync problem, assuming eventual consistency?
评论 #20481315 未加载
评论 #20479451 未加载
andrewvcalmost 6 years ago
The introduction, for those not wanting to click too deeply into the link:<p><pre><code> The JSON Meta Application Protocol (JMAP) is used for synchronising data, such as mail, calendars, or contacts, between a client and a server. It is optimised for mobile and web environments and aims to provide a consistent interface to different data types. This specification is for the generic mechanism of data synchronisation. Further specifications define the data models for different data types that may be synchronised via JMAP. JMAP is designed to make efficient use of limited network resources. Multiple API calls may be batched in a single request to the server, reducing round trips and improving battery life on mobile devices. Push connections remove the need for polling, and an efficient delta update mechanism ensures a minimum amount of data is transferred. JMAP is designed to be horizontally scalable to a very large number of users. This is facilitated by separate endpoints for users after login, the separation of binary and structured data, and a data model for sharing that does not allow data dependencies between accounts.</code></pre>
rhabarbaalmost 6 years ago
JSON is an incredibly inefficient format for shareable data: it is annoying to write, unsafe to parse and it even comes with a lot of overhead (colons, quotes, brackets and the like).<p>I&#x27;d prefer s-expressions.
评论 #20478371 未加载
评论 #20478111 未加载
评论 #20481332 未加载
评论 #20478049 未加载
评论 #20478038 未加载
评论 #20478094 未加载
评论 #20484338 未加载
评论 #20482327 未加载
评论 #20481560 未加载
评论 #20481261 未加载
sctbalmost 6 years ago
Recent discussions about JMAP in general:<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19839104" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19839104</a><p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18996200" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18996200</a><p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18766709" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18766709</a>
felixfbeckeralmost 6 years ago
Would love to read blog posts about how to use the API to e.g. manage calendar events, and then build some CLI tools around that!
评论 #20481673 未加载
dragonwriteralmost 6 years ago
Is there an extensible JMAP core (what this RFC presents) server framework available? I know there are JMAP mail&#x2F;contacts&#x2F;calendar server implementations, but it&#x27;d be interesting to have a fairly clean starting point for <i>other</i> potential applications...
beefhashalmost 6 years ago
I&#x27;m really not sure what I feel about the naming. It&#x27;s one letter off (both on the keyboard and alphabetically) from IMAP. Is this an attempt to coattail the widespread recognition of IMAP or just an extremely unfortunate name collision?
评论 #20478837 未加载
评论 #20478444 未加载
评论 #20478183 未加载
评论 #20478157 未加载
评论 #20478363 未加载