Wednesday, 16 July 2008

Single threaded ranting

Now this is something that has bothered me for years; ever since I picked up .Net 1 and started to build applications for the office with it and learned how easy and straightforward the Microsoft dev team had made threading, I have wondered why on earth Microsoft office applications are often single threaded simpletons. The reason is likely to be legacy, but even knowing that this is the most likely cause, I cannot bring myself to forgive a multi-billion dollar corporation for keeping the old codebase and not refactoring it to improve it for its users. How much money does a product need to make before a company will improve the experience of using it?

I'll rewind a little here. Single threaded applications get busy when the business logic is busy, do not redraw themselves any more (often go white), do not respond to user input and generally appear to have crashed - even if they haven't actually crashed. Think about when Outlook gets busy and the UI stops responding, or Internet Explorer. The solution to this is to have the business logic spun off into a different thread to the UI - this means that when the business logic gets busy the UI stays responsive. This does not require multiple cores or processors to work thanks to the (semi-modern) pre-emptive multitasking nature of our operating systems, it just works. So why can't the largest software company in the world update its flag ship applications to take advantage of this?

Possibly because if you have a fast, snappy environment that responds to user input in a timely fashion (even if the underlying application is busy) then you won't want to buy a new computer and they won't sell another copy of their OS and / or office suite. I've heard it said that newspapers serve two masters: the readers of the newspaper and the shareholders. I think that applies here. Ultimately, the shareholders are in control. Sucks to be a consumer of the actual software.


No comments: