Saturday, October 13, 2007

Itunes Sucks; try Miro!

Have I written about how much Itunes sucks?
I'm a software developer, among other things, and I hate having to use sucky software.
Don't get me wrong, the idea of Itunes totally rocks.
But the way they actually implemented it is really bad.
The biggest offending design flaw in Itunes, for me, is the lack of multithreadedness.

Itunes tries to do many things all at the same time. These things can be categorized into two parts: interacting with a live person trying to use Itunes, and downloading stuff in the background off the Internet. Because Itunes tries to do all of these things in one "thread", or execution stream, if the downloading part slows down for some reason, then the whole software package locks up, sometimes for MINUTES at a time, stopping the user from interacting in any way with the software!

This is a terrible design. The very least they need to do is do all network I/O asynchronously. That means to "request" data from the Internet, and NOT WAIT FOR IT TO ARRIVE; let the network software layers notify Itunes when the data has arrived, and deal with it once it's here.

The second thing they need to do is COPY FILES ASYNCHRONOUSLY. This is the biggest offending part of the software for me. Once a download of a podcast is complete, the whole system LOCKS UP as it copies the files from some temp directory into the directory Itunes wants it to live in - LOCKING UP the user's experience entirely. Vidcasts are even worse, because the files are so much larger, so the lockup-time is longer. This is terrible when you're trying to listen to a podcast or watch a vidcast -- it just stops in the middle, you can't do anything with Itunes at all (it won't even redraw the window if you bring something in front of it and then bring Itunes to the front again). You have to wait until Itunes feels like working again. And then, the podcast has jumped forward past the section you missed! It's like it was always playing even when it was locked up. Now you have to rewind your pod/vidcast a little bit (which also isn't easy) to see what you missed! When the next download completes and it locks up again, you have to repeat it again. VERY ANNOYING, APPLE!

If asynchronous I/O is too complex for Itunes programmers to comprehend, they should convert the application to a multithreaded design, the idea being - if the CPU has to lock up while copying/downloading something, let it lock up in a separate execution branch -- KEEP THE USER'S EXECUTION THREAD SEPARATE, so the user's experience never locks up.

It's not that hard - lots of apps can do it today. Apple gets so much positive press and kudos, yet their software quality SUCKS. They torture their users with crap, and their users love them for it! I don't really get it.

There are better software systems than Itunes, nowadays. I've been using Miro (previously known as Democracy Player), which has all of it's own bugs, but at least does not have the horrific ones that Itunes has, thank God.

Give Miro a try. It's open source, it's free, and it's improving all the time, unlike Itunes.

Miro rocks.



Powered by ScribeFire.