I own a Samsung Galaxy S Android mobile phone and I'm really quite happy with it. The hardware is wonderful and the Android OS too. While I'm not a fan of vendor customizations, I must say that many of the Samsung modifications are for the better.
In the beginning of the summer Google release a big update to the Android OS 2.2, called FroYo, which is short for frozen yogurt. It's taken Samsung a couple of months to update their customization for the new version and only recently did they give their customers an update based on FroYo.
I'm a firm believer in progress and evolution, which is why I like to update as often as possible, in the belief that things get better all the time. But this particular update had not just evolutionary features, but one revolutionary too. A just-in-time compiler, which brings greatly improved performance, was this great new feature, that I would go to great lengths to get.
Here the story turns into a great example of poor software design, and a case of how to make something very easy become very tricky and difficult.
Let me first explain what I consider to be easy. I'll take two examples...
1. All Android phones contain code for over-the-air (OTA) updates, where the user receives a notification that a new update is available and can click the update button to perform the upgrade.
2. All Android phones also contain the following method for upgrading the firmware: A file called update.zip can be found on the official homepage. Surf to it using the phone and click it to download. Save the file in the root of the internal SD card. Restart the phone. Press and hold a special key combination during start up of the phone to access a menu, where upgrade is selected.
Well the first example is quite a lot easier than the second, but both are already in the phone, available to all vendors if they wish to use them. It is the vendor who decides which methods for updating they want to give customers. Note that both examples above are independent of any other devices.
The troubles started after reading how my vendor, Samsung, offer to upgrade. They chose to support neither of the above two methods, but instead to require a piece of software called Samsung Kies. Unfortunately it runs only in Microsoft Windows. Not even MacOS is supported and it won't run under Windows emulation in Linux either.
The Samsung Kies is a kind of all-in-one tool that supports many of their devices and offers rescaling and transcoding of movies and pictures, among other stuff. That's great, if you don't already have better tools available. It probably simplifies some tasks, but won't even support others. The software comes in at over 100 MB, so it is huge. Especially considering what I need it for.
The phone already has full USB support and appears as a disk, when I insert it into a computer. That's all I need and want. I have much better tools than Samsung could ever develop for doing rescaling and transcoding between formats. Remember that I run Linux, which has the best format support of any operating system.
Back to the story, as I mentioned I run Linux, and that goes for both my home and office, and across many different computers and computer architectures. I simply don't own a copy of Microsoft Windows. Some might say that it is easy to get a pirate copy of it, but I just cannot be bothered to pirate it, the effort is not worth it, nor the disk space.
This leaves me with the choice of finding a friend with Microsoft Windows and Samsung Kies installed. From past experience with similar bloatware, it cannot be uninstalled cleanly and I wouldn't want anybody to suffer the consequences of installing it. Fortunately I know someone who has it installed.
This brings me to the next problem. The phone refuses to connect to Samsung Kies. The client in the phone traps consistently. It tries to restart, but fails again and is locked in this loop. After reading about this issue on-line, I found out that the client was trying to understand the contents of all files in the Android system, and somehow (not surprisingly) failed for one file or another. So I removed the external SD card, but that didn't help. Then I did a factory reset, which didn't help either. At this point, in pure desperation I formatted the internal SD card. Look and behold, that did the trick. On the internal SD card, I had no files of my own, other that those that came with the installed applications. How Samsung can hope to understand all files of all applications is beyond me. I can understand that they make an effort to help customers with dealing with certain files, that's all good, if you need it, but then it must be robust enough to cope with unknown filetypes and content.
The third problem I faced, was that after going through these hurdles, I discovered that they had pulled the FroYo update. So I was left with a wiped phone and no update. It took about a week until they released it again and in the meantime I had installed only the bare essentials, of about 20 applications, that I use every day. Despite that, I still had to wipe it totally clean again in order for Sumsung Kies to work.
Lastly, the fourth problem, was uncovered after I got the update. Samsung has disabled the just-in-time compiler! It is still unknown why, at least to me. Everything I went through was for nothing. I don't particularly care for the other features. They were definitely not worth the trouble of upgrading.