Saturday, May 3, 2008

Startup delays in today's software

I have been using computers since the days of the 8086 machines, and have seen computer hardware grow in power and software applications grow in features and productivity.

Seeing all that growth, I have come to believe that any modern day computer should be able to startup, boot and be ready for use within a second or two. Unfortunately it's not the case.

My dual core laptop with 1GB memory can be considered a decently powerful machine. Nevertheless it takes a painful 40 seconds (even after optimizations) to startup and be ready. When I want to check mail and fireup MS Outlook 2007 (which I have to use due to company policy), it takes a good 10 - 20 seconds before it finishes crunching the disk and is ready to use. Also during this time I pretty much can't do anything else due to the disk activity. If I need to type in a new document and fireup MS Word 2007, it takes around 5 - 10 seconds before I can start typing. If I need to jot down something quickly and fireup MS OneNote, it takes around 4 seconds before I can type it in.

The problems are not all about MS applications. Linux startup is just as bad as Windows; OpenOffice 2.0 startup takes even longer than MS Office; Thunderbird startup is no breeze and Firefox (3 beta 5) takes a good 4 - 8 seconds to startup (I admit I have a couple of add-ons installed though).

Here's my point: Even with powerful hardware and decades of software development, we still don't have software that simply starts up and runs as quickly as we need them to be.

The contra-argument here is that features come at a price, and a more feature rich application would take longer to start. I strongly disagree.
However feature rich an application is, all those features will never be used at once. In fact some features may never be used by some users. Hence it's a waste to load all those features during the startup of a program (creating delays and disk crunches).

In my opinion there's not enough emphasis on startup time in today's software, and here are my suggestions for improvement:

1. The software industry needs to consider startup time and startup cost as critical quality metrics and pay more attention to it (specially in general productivity applications).

2. Software design patterns for general on-demand feature loading should be established and popularized.
- This can be simple on-demand feature loading or delayed feature loading based on idle computer resources. (eg: Diskeeper's InvisiTasking).

3. Better support from the operating system for faster application startup.