We should probably have a basic loading-a-page screen before 0.8. We should 
have both a javascript version and a non-javascript version.

Lets start with the non-javascript version:
- The user clicks on a link.
- We start a request.
- We can either wait, or we can show a progress screen.
- If the user-agent isn't recognised as a browser, or has an Accepts line 
which doesn't include HTML, or we are configured not to use the loading 
screen, we wait, and impose the 2MB maximum size limit.
- Otherwise, we decide whether to wait or not based on the progress of the 
request.
- If we choose not to wait, we send a progress screen to the user. We include 
the known MIME type, filename, and size, and an option to background the 
download. We include a progress bar, and an indication as to whether there 
are likely to be more progress bars. We ignore the size limit. We send a 5 
second refresh, and if we don't get a re-request in 10 seconds, we kill the 
request: the user has presumably navigated elsewhere. We will probably need 
to include some sort of session identifier in the URI while we are loading, 
although when the download is finished we can remove this.

Criteria:
- If we are loading blocks from the datastore only, and there are fewer than 
some threshold (2MB? more?), we wait.
- If we are fetching blocks from the network, and there are more than some 
number, we show the progress screen.
- In general, we should show the progress screen if we think the request will 
take more than 5 seconds to complete.

A javascript version would have further advantages:
- We could know immediately if the user left the page.
- Provided we are close network-wise to the requester, and we have support for 
a recent version of javascript, we could connect to the node via a socket and 
obtain real-time status updates. We could then not only update the progress 
bars etc in real time, we could entirely avoid any extra latency from the 
progress screen, going immediately to the download when the data has been 
found.
- When I last looked into it, I found that firefox does not support MIME 
replacement for inline images - only for full-screen images. Therefore the 
only way to make inline images load progressively would be via javascript. It 
would make sense: we could show a percentage and a progress bar, even on a 
small image activelink. The javascript would cause the images to be reloaded 
when necessary.

What would be even more impressive would be if we were to implement some 
simple media filters, so we could stream mp3s for example straight to the 
browser without having to query the user about them. Then you click on Chaos 
Radio, click on a page, click on the button to download the mp3, you get the 
loading screen for a few minutes and then the mp3 goes straight to your 
browser and plays. An mp3 filter would be relatively straightforward; an ogg 
filter would be a bit more work but wouldn't take a long time either. RSS 
would be more work, but freenet/miro would be pretty impressive.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20081217/2cee95d0/attachment.pgp>

Reply via email to