Help me kill IMAP and Exchange in a single blow
tech.navarr.me
tech.navarr.me
Its just using web tech push crap around. You don't offer an improvement of the problem, just a way to implement the standard process using familiar technologies. The problem you are solving is "I don't like IMAP" not actal problems with IMAP.
Anyway the proposed stack for those interested:
-------------------------------
- RESTful API over HTTPS. (HTTPS should not be required but recommended.) - Not sure how to go about HTTP Status codes. I'm using them below, but this might be considered misuse. Must consult for verification.
- Labels (instead of folders, however, tags can be hierarchal - like how Outlook renders Gmail tags with a / in them)
- JSON (Maybe allow JSON & XML, but require JSON)
- UTF-8 (Only encoding type allowed - used for EVERYTHING, including API endpoints and API variables USE UTF-8. Will create larger messages byte-wise for european and asian languages, but definitely worth it) "Stateless" (Whatever IMAP states are, we don't do this). We use Session Cookies, and more precisely OAuth as the de-facto standard.
- Conversations as Priority - Servers should attempt to indicate conversations, and keep messages grouped together like a forum topic. This MUST be done server-side.
- NO MIME ENCODING. Mime-Types as headers are very important, but NO MIME ENCODING under ANY CIRCUMSTANCES. Built-in Push - @gabor talks about clients calling an HTTP endpoint that returns as soon as a new message/s arrive.
- Full Text Search - SERVER SIDE
Addresses use [user]@[domain] syntax.
MSAP servers are looked up via an SRV DNS request for _msap._tcp.[domain]
Return is in format TTL [class] SRV [priority] [weight] [port] [target] example: SRV 0 0 443 msap.koneko-chan.net SRV 1 0 80 msap.koneko-chan.net The first is the HTTPS (SSL) endpoint, and the second is the HTTP endpoint. Lower priority is prefered, with a fallback to higher priority available.
We should also recommend having an SMTP endpoint for the sake of graceful degredation. Example of "working" endpoint: http://msap-serv.koneko-chan.net/source-code
But I don't know if anything ever came of it.
Why HTTP? And, for example, not BEEP? HTTP can't handle multiple concurrent logical streams, thus can provide you with one resource per connection at a time. Every separate HTTP (and HTTPS) connection requires a TCP (and TLS) handshake, re-authentication and so on.
Also, long-polling is a hack, born because of HTTP limitations. Is there any reason to do long-polling when you can just send a signal over bidirectional connection?
This could be a unpopular opinion (lots of web developers out there), but I believe, while it is perfectly possible to use HTTP, it is just plain ugly for such job.
> Stateless
Is wrong for protocols where you require a state (authentication, folder/label subscription and so on). How many stateless pub-sub protocols you know about? Be it lightweight Redis Pub/Sub or XML-bloated AMQP and XMPP - they're all stateful for a reason.
HTTP cookies do represent state. You're just taking a shortcut by re-authentication with a session token. The state you keep could be only auth data (so you'll end up re-sending, for example, what labels you're interested in every time), but it's still a state.
Of course it's not that easy. But let's not go inventing new protocols when we can avoid it...
I think the best bet is to do to "IMAP5" in the same way HTML5 has been done:
• keep basic functionality backwards compatible with existing implementations (GMail, Apple Mail, Outlook have to work or the protocol will get ignored)
• drop all useless/unpopular/insane features (can we kill UTF-7, please?)
• make de-facto standards and common extensions part of the standard (everyone uses XLIST)
• add very clear and strict implementation guidelines (IMAP is particularly bad at this and all "requirements" read like "Clients should do this, but might do something completely different")
Going RSS→Atom route is going to end like this: http://xkcd.com/927
A FOSS community is great when things are already rolling but it's up to you to put in the effort to catalyze it.
Heliotrope is a personal email server. It provides all the functionality you
want in a modern email client:
- proper message threading
- labels
- fast, full-text search over all messages with a complete query language
- support for signed and encrypted email
- an extensible JSON-over-HTTP API
Heliotrope is a backend service against which email clients / MUAs can be
written. To use it, you must use a client. For an example client, see
Turnsole: http://github.com/wmorgan/turnsole.
WHY ANOTHER PROTOCOL? WHY NOT JUST USE IMAP?
Because IMAP is terrible and you want all those features listed above.
https://github.com/wmorgan/heliotropeCouchDB provides data synchronization protocols and the simple rules for what acceptable incoming data looks like. Properties within the documents define all of your "labels" and any other features you might find interesting (which are later trivially indexed for retrieval).
In theory, MSAP would address that and have systems in place for backwards compatibility and communicate with the older SMTP protocol (and IMAP if necessary) while things move forward.
I think this will take a lot more than a single blow.
But its set to replace IMAP/Exchange/SMTP.
If someone else has already done some great work and made it open, brilliant! Use it :-)
Waves solves communication, obviously. And waves feel more like personal forum threads than anything else.
But the true intentions of MSAP go beyond email and to synchronization. And in retrospect I should have addressed that more in my post...
This by itself makes me believe this is doomed.
Part of the problem with IMAP is that it's incredibly complex. That complexity, and differing interpretations of that complexity, is a huge part of what makes IMAP such a headache to deal with.
Simplicity is a virtue. Don't add everything you can think of, strip out everything you don't absolutely have to have. It's fine if the protocol is extensible, but your first and primary goal should be to have a system that synchronizes email reliably and efficiently. Get that right, then start worrying about the extra stuff. Until then, you're just making life harder.
I'll need to take extra care to focus on the main issue before extending it.
I just also want the extensibility to be a center focus, so that it can expand to be a synchronization protocol instead of only an email protocol.
I'm sure you can still find the reasons for the transition to SMTP somewhere. Try, again, Sendmail archives.
And Exchange and Outlook is one of my personal pet peeves: I have absolutely no idea why people haven't refused using this bloated, locked in and confusing p.o.s. already. I can edit and change attachments in an email I recieved, there are 3 or 4 different key combinations for searching depending on where in the interface I am and on the server side it doesn't get better.
And guess HOW it will be sent out by the local MTA?
(Sorry, I was referring to SMTP on the desktop being replaced by this. SMTP seems to do a perfectly good job server->server)
This is mostly solved. You can't just connect to any server, because your "end-user" IP is likely to be in DUL/PBL or other policy-based blacklist.
Open Relay is now forbidden and SMTP from end-user to mail server requires authentication.
For server<>server communication you need to use SPF at least. Although authentication is theoretically optional, in practice you won't be able to reach many servers without any.