If you are interested in performance, this is a good message to read.

Thread pane performance is one of the major problems affecting mailnews. 
Specifically this affects folder loading, scrolling, sorting, and 
deleting messages as well as other thread pane operations.  We've always 
known that a cause for this has been our usage of RDF and the way RDF 
requires content to be built up when interacting with our datasources.  
RDF needs to build up content for each message in a folder even if it's 
not visible on the screen.  In addition as you scroll it builds up even 
more content as it fills in the information that wasn't part of the 
initial data gathering that it does.  This causes performance to be 
slower than we'd like and it increases footprint.  In the past we've 
talked about using Random Access Enumerators so that RDF would only 
build up content for items that are visible, but doing this looked to be 
pretty hard and we weren't sure that it would actually achieve the gains 
we desired.  In addition, our usage of RDF sorting made it hard to 
control views and sorting as much as we'd have liked to.

Recently David Hyatt came to us with a proposal to create an outliner 
widget that would act as it did in 4.7x.  Instead of building up content 
through RDF, it would simply ask for the string to paint in each column 
and all it would basically do is paint.  He's now gotten to the point 
where this concept is working and we've decided to go ahead and try to 
use this.  See http://www.mozilla.org/mailnews/performance/speed.html 
for more info on this and on areas that are affected.

We expect there to be a huge benefit from doing this.  We expect the 
operations I've mentioned at the beginning to get much faster and 
possibly approach 4.7 levels or even better.  We will now have control 
over our views and fixing our threading problems, doing navigation in 
the standalone message window, and creating views in the 3 pane will all 
now be easier.  Finally, footprint should be decreased significantly.

What this means to the mail project

We are going to rewrite the thread pane to use this view.  We aren't 
planning to rewrite any of the other trees at the moment until we have 
the thread pane working (with the exception of search because it 
currently uses the thread pane and also needs to be made to use the new 
widget)

In addition to adding the outliner to the UI we are porting over the 
view classes that we used in 4.x so that mail will now maintain its own 
views rather than using RDF (once again in the thread pane only).

We have scheduled out the work and we think it will take about two 
months to get it up and running again.  So that it doesn't affect the 
current mail client, the work is being done on a branch 
(MailNews_Performance_20010208_BRANCH)

Currently Scott MacGregor, Seth Spitzer, and David Bienvenu are working 
on the branch setting up the new infrastructure and David Hyatt is 
writing the outliner code.  You can see what's been checked in during 
the last week by using this link 
<http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&amp;module=all&amp;branch=MailNews_Performance_20010208_BRANCH&amp;branchtype=match&amp;dir=&amp;file=&amp;filetype=match&amp;who=&amp;whotype=match&amp;sortby=Date&amp;hours=2&amp;date=week&amp;mindate=&amp;maxdate=&amp;cvsroot=%2Fcvsroot>
 
.We welcome people to pull the branch and watch the progress (there's 
currently a demo that shows scrolling of two columns and sorting and 
it's really fast!) but ask for a couple of favors:

1.  Please don't check into the branch.
2.  If you use the branch, please do not file bugs.  It's very much a 
work in progress. When they are ready for feedback, it will be announced 
and then bug filing can begin.

As they get farther into the rewrite more and more people will be 
joining the effort and at that point more people can contribute to the 
branch if authorized.  At the moment we've scheduled this out and we 
feel that 3 people are the right amount of people to do the initial 
effort.  We're not sure yet when the branch will be landed on the 
trunk.  It really depends on a combination of how long it takes to get 
the mail window into a useable state and how much people are willing to 
tolerate in a daily build. We'll cross that bridge when we get to the 
point where we feel we have a useable thread pane.

In case you are wondering about the different tasks, here they are:

David Hyatt - outliner
1.  Cell Painting (done)
2.  Scrolling (done)
3.  Selection
4.  Image Display for icons
5.  Keyboard navigation
6.  Updating Views when invalidation called
7.  Drag and Drop
8.  Context Menus
9.  Column Picker

Mailnews Team

Port the View Class over
Implement the thread view
Implement other views
Sorting
View Navigation
Command Infrastructure
Command Implementation
Drag and Drop
Context Menus
Search

FE Work to hook up the outliner to the mail views and mail ui including:

Displaying headers
Selection
Delete/Add
Notification Handling
Style Rules
Calling command and command updating


As I said, we think with the correct parallelization that this can be 
done in 2 months with a month or 2 of bug fixes.  A side effect of this 
is that the Netscape Mailnews team will not be able to fix as many bugs 
as we'd originally planned (some of you may have noticed the milestones 
changing).  We feel this is a worthwhile tradeoff to improve performance.

This is huge news for the mail project because we now have a great 
chance of hitting thread pane performance goals that put us near the 
performance of other mail clients.  There will be periodic updates on 
the newsgroup and of course in the status reports.

Scott



Reply via email to