Hello,
I'm a developer on the Orbited project (http://www.orbited.org), which provides a TCPSocket interface in javascript (emulated over HTTP using ajax and comet.) This TCPSocket allows true bi-directional communication between a web browser and an arbitrary tcp server. One of the other developers pointed me to a recent dovecot thread about webmail. Sorry for the new thread (I just joined this list and couldn't reply to the old emails).
Timo Sirainen wrote Wed Aug 13 23:37:11 EEST 2008:
I wrote this a while ago: http://imapwiki.org/ClientImplementation
One thing that would be nice, that pretty much no webmail does, is to keep a stateful connection open all the time (or at least some of the time) instead of creating tons of short-lived connections that ask the same stuff over and over again. With a stateful connection you could basically run IDLE and wait for changes there instead of asking all the time "is there new mail?" "is there new mail now?" "what about now?".
Coincidentally, we have just began work on a JavaScript IMAP client. With it, building a webmail app should be *entirely* a UI concern. The good news is that our Socket interface is very stable and is being used in production for protocols like IRC for webchat. The bad news is that none of the the Orbited developers have experience with the IMAP protocol.
We are putting all of our protocol implementations in the soon-to-launch js.io project (www.js.io). As soon as we have any kind of IMAP client prototype, I'll let you know. In the meantime, would anyone be interesting in helping us develop the imap client? Its 100% pure JavaScript, and will greatly ease the development of feature-rich webmail, as a webmail deployment will become a matter of simply running Dovecot, the js.io.imap client, and an HTML gui.
-Michael Carter
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Thu, 14 Aug 2008 13:51:20 -0700, "Michael Carter" cartermichael@gmail.com wrote:
I'm a developer on the Orbited project (http://www.orbited.org), which provides a TCPSocket interface in javascript (emulated over HTTP using ajax and comet.) This TCPSocket allows true bi-directional communication between a web browser and an arbitrary tcp server.
Interesting... TCP over HTTP over TCP ;)
Coincidentally, we have just began work on a JavaScript IMAP client. With it, building a webmail app should be *entirely* a UI concern. The good news is that our Socket interface is very stable and is being used in production for protocols like IRC for webchat. The bad news is that none of the the Orbited developers have experience with the IMAP protocol.
We are putting all of our protocol implementations in the soon-to-launch js.io project (www.js.io). As soon as we have any kind of IMAP client prototype, I'll let you know. In the meantime, would anyone be interesting in helping us develop the imap client? Its 100% pure JavaScript, and will greatly ease the development of feature-rich webmail, as a webmail deployment will become a matter of simply running Dovecot, the js.io.imap client, and an HTML gui.
Maybe you can have a look at http://decimail.org/index.html - I never tried it though. Somebody posted a link to it on the Roundcube Webmail mailing list (http://lists.roundcube.net/mail-archive/dev/2008-07/0000023.html), that's how it got my attention.
Patrick.
STAR Software (Shanghai) Co., Ltd. http://www.star-group.net/ Phone: +86 (21) 3462 7688 x 826 Fax: +86 (21) 3462 7779
PGP key: E883A005 https://stshacom1.star-china.net/keys/patrick_nagel.asc Fingerprint: E09A D65E 855F B334 E5C3 5386 EF23 20FC E883 A005 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) Comment: http://getfiregpg.org
iEYEARECAAYFAkik1v4ACgkQ7yMg/OiDoAUnrACdExgaUxOVXBaHQ8ZXGKg0pSi3 Mg4AnijrxRfaY5PEMI6lR5e7stgdpqyr =JHZl -----END PGP SIGNATURE-----
Michael Carter wrote:
Hello,
I'm a developer on the Orbited project (http://www.orbited.org), which provides a TCPSocket interface in javascript (emulated over HTTP using ajax and comet.) This TCPSocket allows true bi-directional communication between a web browser and an arbitrary tcp server. One of the other developers pointed me to a recent dovecot thread about webmail. Sorry for the new thread (I just joined this list and couldn't reply to the old emails).
Timo Sirainen wrote Wed Aug 13 23:37:11 EEST 2008:
I wrote this a while ago: http://imapwiki.org/ClientImplementation
One thing that would be nice, that pretty much no webmail does, is to keep a stateful connection open all the time (or at least some of the time) instead of creating tons of short-lived connections that ask the same stuff over and over again. With a stateful connection you could basically run IDLE and wait for changes there instead of asking all the time "is there new mail?" "is there new mail now?" "what about now?".
Coincidentally, we have just began work on a JavaScript IMAP client. With it, building a webmail app should be *entirely* a UI concern. The good news is that our Socket interface is very stable and is being used in production for protocols like IRC for webchat. The bad news is that none of the the Orbited developers have experience with the IMAP protocol.
We are putting all of our protocol implementations in the soon-to-launch js.io project (www.js.io). As soon as we have any kind of IMAP client prototype, I'll let you know. In the meantime, would anyone be interesting in helping us develop the imap client? Its 100% pure JavaScript, and will greatly ease the development of feature-rich webmail, as a webmail deployment will become a matter of simply running Dovecot, the js.io.imap client, and an HTML gui.
-Michael Carter
Hi Michael,
I'd be interested to see what you are planning with this so keep me informed. We've been thinking of creating an entirely custom UI layer for squirrelmail for some time (though their templating functionality has been a loooooong time in development).
Our goal is to have a very fast webmail interface that does not rely on server speed - actions are queued client side giving instant responses to the server by using asynchronous communication to the backend.
What stage are you in creating an IMAP client framework for js.io? Timo's wiki page looks like it is filled with a LOT of sense in implementing IMAP clients.
Daniel
Michael Carter wrote:
Hello,
I'm a developer on the Orbited project (http://www.orbited.org), which provides a TCPSocket interface in javascript (emulated over HTTP using ajax and comet.) This TCPSocket allows true bi-directional communication between a web browser and an arbitrary tcp server. One of the other developers pointed me to a recent dovecot thread about webmail. Sorry for the new thread (I just joined this list and couldn't reply to the old emails).
Timo Sirainen wrote Wed Aug 13 23:37:11 EEST 2008:
I wrote this a while ago: http://imapwiki.org/ClientImplementation
One thing that would be nice, that pretty much no webmail does, is to keep a stateful connection open all the time (or at least some of the time) instead of creating tons of short-lived connections that ask the same stuff over and over again. With a stateful connection you could basically run IDLE and wait for changes there instead of asking all the time "is there new mail?" "is there new mail now?" "what about now?".
Coincidentally, we have just began work on a JavaScript IMAP client. With it, building a webmail app should be *entirely* a UI concern. The good news is that our Socket interface is very stable and is being used in production for protocols like IRC for webchat. The bad news is that none of the the Orbited developers have experience with the IMAP protocol.
We are putting all of our protocol implementations in the soon-to-launch js.io project (www.js.io). As soon as we have any kind of IMAP client prototype, I'll let you know. In the meantime, would anyone be interesting in helping us develop the imap client? Its 100% pure JavaScript, and will greatly ease the development of feature-rich webmail, as a webmail deployment will become a matter of simply running Dovecot, the js.io.imap client, and an HTML gui.
-Michael Carter
Hi Michael,
I'd be interested to see what you are planning with this so keep me informed. We've been thinking of creating an entirely custom UI layer for squirrelmail for some time (though their templating functionality has been a loooooong time in development).
Our goal is to have a very fast webmail interface that does not rely on server speed - actions are queued client side giving instant responses to the server by using asynchronous communication to the backend.
What stage are you in creating an IMAP client framework for js.io? Timo's wiki page looks like it is filled with a LOT of sense in implementing IMAP clients.
Daniel
Michael Carter wrote:
Coincidentally, we have just began work on a JavaScript IMAP client. With it, building a webmail app should be *entirely* a UI concern. The good news is that our Socket interface is very stable and is being used in production for protocols like IRC for webchat. The bad news is that none of the the Orbited developers have experience with the IMAP protocol.
One leg up is to run the Dovecot imap command tracer and point a selection of normal clients at it and watch the commands they use. You don't need to support a full IMAP implementation, only the bits which are required to make your app work
However, most existing clients are somewhat inefficient in their use of Javascript so I would suggest that you build a higher level abstraction like "refresh message id list" and then run the IMAP commands past some experts (Timo?) in case someone has some suggestions on more efficient ways to achieve the same effect
Note that Timo has done some work on the LEMONADE extensions and it may be that these will facilitate a more efficient and responsive protocol?
From my own experience I would also suggest that you blindly compress the TCP stream in both direction (gzip or similar is good enough). My experience is that the compression is a win in most situations up to 40-100Mbit kind of connection speeds (ie higher than most internet connections)
Good luck
Ed W
participants (4)
-
Daniel Watts
-
Ed W
-
Michael Carter
-
Patrick Nagel