Please bear with me on this, it is a long post but I feel it is very important, probably the most important issue on my radar at the moment.
Introduction
As anyone who reads my Blog will know I am a huge fan of XPages. One of the most exciting things about it is the promise of designing only once for the Web and the Client.
XPages in the Browser is definitely fast enough to use today but I have been struggling with the speed of XPages in the client to the point where I have not been able to recommend its use. Digging deeper there are two issues.
1) Starting the local Xpages “server”
The first and simplest is that the first time you open the first XPage of a session in the client the local XPage “server” needs to start. This is understandable and hopefully this can be moved to be part of the client startup or controlled via a notes.ini / policy setting.
2) Bandwith Requirements on first load in a session
The second issue is much more serious. After experiencing significant hangs using XPages in the client over remote connections I did some testing with Wireshark. The result below show exactly where the problem lies.
Update : these figures can be reduced by more than 50% by using network compression as suggested by @14 Mark Barton
The first column ( 112 kb ) shows the volume of data that needs to be transferred to load an empty discussion (852) application in classic Notes for the very first time.
The second column ( 13 kb ) shows the volume of data to load the same classic application for the first time in a given session
The third column ( 1,609 kb ) shows the volume of data needed to be transferred to load the same empty application as an XPage in the client.
When tested with our MOC XPage product the equivalent column 3 was 9,361 kb !
The conclusion is clearly that the first opening of an XPage application in the client requires substantially more bandwidth than the classic Notes equivalent, a factor of between 14 and 123 times.
Bandwidth Requirements once loaded
Once the XPage application has loaded the difference int he bandwidth requirements are not so bad. The classic Notes application requires 6kb on a subsequent open whereas the XPage application requires a very manageable 24 kb.
Discussion
So how big a problem is this and what can be done in 852 to mitigate for it ?
Personally I think it is a big problem. On the sites where I typically work Notes servers already have a reputation for being a bit slow. This is often the result of the server being off-site ( for example a 100k + seat organisation where IBM moved the servers to a different country ). Demonstrating XPiNC applications has not gone well.
As IBM has found with Notes 8.0 initial opening time attracts a particular sensitivity and impacts heavily on peoples confidence in a system.
Two more quantitative examples are people trying to demonstrate XPages to prospective clients or a user trying to access a CRM for a customers details having just received a call. I have had people believe that Notes has crashed as the initial screen hangs ( and CTRL + Break doesn’t work in this context)
I also think that this poses a threat to Notes in so far as the next obvious question people ask is can’t we just have the application as an Intranet app. For me this massively weakens the usefulness of the Rich Notes Client environment and plays into the hands of generic mail solutions.
I have spoken to the IBM XPages team and they are very interested. The crux of the issue is that even though the user is running the application “on the server” it is actually running on the client. To do this the application “framework” has to be downloaded from the server ( my terminology not IBMs ! ).
One mitigation that has been suggested is that workflow applications should be run locally. I do not think that this is wise as by their very nature workflow applications need to allow every user real time access to the document at the latest status e.g. If I request a holiday approval on a local replica then the manager will not be able to access the doclinked request as it will still be on my local replica – or worse still he will access an outdated copy.
For me this is a non starter. Please add your views to the comments
One interesting thought to the above would be “what if there were a push mechanism like the mail managed replica” ( my suggestion not anything I have heard from IBM before you get too excited ). On first inspection this would seem like an improvement but when I have gone on to think about the types of applications our users have they are often several GB in volume and the idea of local replicas is not very palatable.
Where to go from here ?
Well I think it is a big issue. IBM agree that it is an issue. I know that they are looking at it but I am not sure what I can say because of NDAs etc..
What would really help is your views on how much of an issue this is for you.
I am impressed you read this far so go comment ! email me at sean -at- seancull.co.uk if you have any problems.
For anyone interested here are the full results. The comparison with a web application was for interest only.
Cold start Test | Open application in Notes as a Notes APP | Open Application in XPages as an XPages App | Open the application on the Web |
Vanilla Discussion database 852 and empty | 13 kb ( 112 kb if the app has never ever been opened ) | 1,609 kb | 166 kb |
FoCul MOC application – front page with tag cloud http://www.deliverytoolkit.com/moc-demo | NA | 9,361 kb | 191 kb |
2nd Open Test of the session i.e. warm start | Open application in Notes as a Notes APP | Open Application in XPages as an XPages App | Open the application on the Web |
Vanilla Discussion database 852 and empty | 6kb | 244 kb 24kb | 3kb |
FoCul MOC application – front page with tag clouf http://www.deliverytoolkit.com/moc-demo | NA | 16 kb | 8 kb |