#49: Livepage - realtime bi-directional browser-server communication without page reloads
- Contents
- Proposed by
- vinsci
- Proposal type
- State
- draft
Motivation
With Opera 7.60 all major browsers finally have support for XMLHttpRequest. This enables web applications to make use of realtime updates to pages or any part of a page, as well as enabling the server to receive realtime events from the browser, without having to reload the page.
This opens up a whole new class of web application possibilities, such as realtime updates of a calendar view as events are edited, mail and workflow inbox lists, on-page chat without java (see nevow's chatola demo), realtime monitoring of any server-side data, etc, etc.
Proposal
Implement livepage as in nevow 0.3.
Implementation
Look at the implementation in Nevow 0.3. Obviously, things on the server side will be different in zope.
Server side will need its own Thread. For examples of Threaded Zope objects, see for example:
- SecureMailhost, http://cvs.sourceforge.net/viewcvs.py/collective/SecureMailHost/
- ZExternalNews, http://www.zope.org/Members/odeckmyn/ZExternalNews
typo
e.g. it took maybe a half hour today to reorder ten or so items in a folder because i had to continually reload a view of the folder, etc.. sometimes items were moved halfway as far as they should.
Re: Why was this rejected?
"While the ideas of this proposal have found consideration, the actual implementation requires a bit more work and a more detailed description. There are new PLIP's in the row which offer these, so this old one can be send to PLIP heaven."
For the record, I don't think it's a good idea to reject PLIP:s for these reasons, as it has the side-effect of also hiding the description of the idea/concept. Also, imho rejections shouldn't happen without discussion on the PLIP page.
Another problem we seem to have with PLIP handling is that apparently the author doesn't get notified on events related to the PLIP, such as a new comment or a state change.
Another idea for improving PLIP management (before I forget it):
- add an array of two fields "Related PLIP" (clickable link), with a one-line "relation comment", so that various PLIP:s that describe somewhat similar ideas can be easily found
Thanks!
I think Hanno's response is centrally correct, that this needed to be more thought out, which I hope my notes have helped. I would be more than happy to help in revising and driving this plip, and personally contacted the author offline as well as commenting.
Again, this is definitely not Plone3, probably not Plone 3.5, but it would be an exciting development and we can make it happen with a bit of determination.
I also agree with you, btw, that the plip process may hurt from hard rejection. Rejection is absolute, and acceptance never is. submitters should be notified and in fact think this could be helped by proposed notification infrastructure improvement in Plone.
Why was this rejected?
(a) LivePage and KSS should be able to complement each other
(b) LivePage / Nevow are based on Twisted, which is also now available as of Zope 2.9 or 2.10 as a ZServer implementation via wsgi.
This is definitely at least worthy of exploration, or non-rejection. Maybe it's Plone4 or 5-land, maybe something needs to be done for Zope first? Hard to say, but it might help with some issues I have noticed with even simple things like drag and drop, kss or no, where maybe 30 of requests fail. If we can keep a pipe open to a thread we get two advantages:
(a) lack of random network failure, maybe by locallly queuing messages until a connection is re-established? ui could even allow to cancel pending events.
(b) keeping a live thread may interact well with various memory / object cache(s).
Cheers!