TWiki Announcment

Hi there, welcome to my personal Wiki. I named it TWiki only because T is a special letter for me and my family. It is not powered by TWiki anyway! Have fun!
Computers‎ > ‎

Windows sucks

Why Microsoft Windows sucks? (I am still working on this article, comments will be warmly welcomed! I will be more than happy to improve this article. Please DO read the conclusion. DO NOT take it for granted, it's not simply debasing Windows. Win-Win situation is something I would like to see.)

1. User Data transfer (reinstall, upgrade, migrate between different machines)

Linux
Simply keep /home (remember to tar /etc in case you need some of the config files later) on a separate partition, tar  /home folder directly and send it over LAN using netcat, or simply copy it over (boot from Live USB/CD is always a safer way tar zcvfp dest source --exclude=~/.google...;-)). Create image by using Clonezilla/partimage is also an option.

It's so easy to switch distributions or replace your hard disk. For apps, APTonCD (for Debian based distros) offers the backup to all installed packages on the fly, unless you clean all the package caches in /var/cache/apt/archives by using apt-get clean command.
Note: The UUID may change if you replace any hardware, for example a larger and faster Hard Disk. Remember to change the UUID reference in /boot/grub/menu.lst and /etc/fstab.

To reinstall a Debian based Linux distro, simply export all installed packages to a list by executing the command on the source PC:
sudo dpkg --get-selections > installed
Restore all packages on the newly installed destination PC:
sudo dpkg  --set-selections < installed
sudo apt-get dselect-upgrade

Get yourself a cup of tea or coffee, then it's done!
Note: Be careful when using this migration method when moving between different architecture (e.g. x86->x86_64).

For Arch Linux users, check Backing up and retrieving a list of installed packages for quick restoration

Mac OS X
Migration Assistant offers pain free migration over wireless network or FireWire! From Time Machine backup or other disk (USB), to another Mac. For example, you replace the internal Hard Drive with a bigger and faster one. Re-install OS X and plug the old HD to your Mac via USB, all user settings and apps can be migrated seamlessly. Even dummies can do this. This should profit from its UNIX ancestors.

For example, I want to replace your Macbook HD (80G Seagate Momentus 5400.3) because it's slow and small capacity. I replaced it with a Seagate Momentus 7200.4 320G. What I did was replace the Hard Drive according to the official guide, made a external USB HD with the old HD, reinstalled Mac OS X. Then plug the external HD during the 1st boot, Migration Assistant will pop up and ask you to migrate all user settings, Applications and other data. Cool! I went out for a walk and then it's done^_^. Of course you can use tools like CCC to copy the whole OS over to the new HD. I just don't bother, I want a fresh OS X.

Windows
To be honest, do you find built-in Files and Settings Transfer Wizard useful at all? How do you feel like a Windows version upgrade (XP to Vista, XP to 7)? Is it painful or pain free? Tell the truth:)
Update: The new Windows Easy Transfer tool in Windows 7 works pretty well out of the box if you migrate from Windows 7 to Windows 7. However, it doesn't work with previous versions (between different Windows versions)...

2. Pain in the ass - Windows patches (Update/Service pack, leftover and reboot)

If we install Microsoft Windows from scratch on a new box or laptop. Probably, you need to spend at least half a day before it is usable. One of the annoyances will be endless reboot. Why can't Microsoft reduce the times of reboot? It's stupid to bounce over and over.

Update leftover, garbages, ignore this if you have a big enough disk. While I think  nobody likes to keep junks at home, right? So you need to manually delete the craps:

  • %systemroot%\ServicePackFiles (if u have ever applied any service pack manually)
  • %systemroot%\SoftwareDistribution\Download
  • If u r not going to uninstall any HF later, delete %systemroot%\$hf_mig$ and %windir%\ any $NT*$ folders.
Calculate the size of these useless files. Of course they are just a small part of the craps... Also, consider the frequency that Microsoft releases hotfixes and Service Packs...

Linux
In most of the modern Linux distributions, package updates, security patches and even new version of kernel binaries will be push to end-users from official repositories.

Mac OS X
Most of the important patches can be pushed to every Mac OS X installation. Even dummies will be able to upgrade their Mac OS X without difficulties. Of course, standalone/combo patches are always available on apple.com

3. File System

I am used to the *NIX file system and directory structure. As I am a loyal user of GNU/Linux (Since 2001) combined with Mac OS X.

*NIX has a simple and clear directory structure, everything is under Root /, user profiles under ~ (/home/user) clean and tidy, easy to manage. Less fragmentation compared with FAT32/NTFS. Although officially, ext2/ext3 is supposed to be fragment-free. But then why there is still e2defrag? And in ext4, there is an online defrag tool e4defrag:)

Once M$FT's WinFS in 'Longhorn' - code name for Vista drew some of my attention. But the disappointing truth was that there was no such WinFS in Vista or Server 2008. Only a higher version of NTFS.

NTFS is all right. However, it is definitely not superior enough to compete with ext3/ext4//Btrfs/ReiserFS/XFS/HFS+ or ZFS...

Now that Oracle buys Sun, ZFS and Btrfs will probably be into something else, which is the king of file systems? Still a question mark.

4. Upgrade (we need rolling releases)

We all know that some great GNU/Linux distros like Gentoo, Arch Linux and Debian sid are rolling releases.

They have the concept of rolling upgrade which means, whenever there is a new release or version, we can just upgrade from existing installation, all configurations and software packages will be upgraded automatically, dependencies will be resolved by package management. Even those distros donno support rolling completely, it's still easy to keep all user data/configurations by simply backing up ~(/home/user) folder.

However, whenever we upgrade Windows nothing seems to be smooth.

Mac OS X does a fairly good job as well, upgrade is an easy job. Migrating user settings/data is an easy job via Migration Assistant.

5. Stability, Reliability and Security

I don't want to discuss any more about the stability, reliability and security difference between *NIX and Windows. We all know the story. *NIX and Windows, totally different.

6. BSOD (Blue Screen of Death)

One more thing about bloody Windows, BSOD. System hang! There is no way to recover unless hard reset, power off and on.

I have never experienced any BSOD, system hang on Mac OS X so far, 3+ years. Aqua on top of Darwin seems to be well optimized, very stable.

Sometimes X11 (also known as X Window System, X) on Linux crashes or hangs. I can still kill the x session and restart it. The system is still alive. DO it via either pseudo consoles or SSH to recover. Commit the changes to the file system by using sync, data may still be lost but at least it's still alive, there is chance to recover data.

SysRq key is also an alternative. http://en.wikipedia.org/wiki/Magic_SysRq_key

I have experienced unexplained Linux system hang and the workaround above doesn't work. Not very often, and I knew it's because I did something silly like compiled the new video card driver or things like that.:)

Anyway, it's my comment. I still need at least 1 copy of Windows to play games and run some particular apps sometimes. My wife and parents, they can use Ubuntu or Mac OS X to do their daily surfing or jobs without problem:) Great! 

7. Internet Explorer (devil)

IE seems to become a part of the fatty Windows kernel now, at least a very important part of the whole operating system. IE can be a severe security threat to Windows because of Browser Help Object. It is easy to inject malicious code by making use of the BHO, and run the codes inside other processes. What I can't understand is why Microsoft allows IE to be such a big potential threat to the whole operating system. The architecture of Windows is really ridiculous. I have never heard that browser can cause such a big risk in *NIX world. I did remember there were a lot of buffer/stack overflow or things like that for Linux, and by doing that someone can get root privilege. Most of them were kernel or device, device driver related. Browser? Never heard of, maybe I am ignorant...

So, who is to blame? Microsoft Windows architect?

I believe IE is losing its market share anyway. Although a lot of Internet banking or web apps still rely on ActiveX, as a result they are only compatible with IE and Windows(Run ies4linux, IE in WINE, I don't think it's a good workaround, we don't count running Windows in Virtual Machines either). I can't say IE is totally crap, but in fact it is very stupid and crappy. I have to use it because of web conferencing tool, Siebel CRM and netbank. But I normally run IE in a Guest Windows XP running in VirtualBox or VMWare Workstation/Fusion.

Better choice out there in the market:

Firefox, Opera, Chrome, Chromium, Mozilla Seamonkey, they are all cross-platform, even Safari is a better choice (no Linux version).

8. Registry

The concept Registry should be a great idea and innovation, but Microsoft's implementation turned out to be crap. Back in Windows 98/98SE era, Registry was easy to get overstaffed and causes Windows to crash a lot. It's still a core of the Windows OS, even Windows Mobile. So many garbages in registry, normally don't try to clean up, just forget about it.

I prefer text file based configuration implementation in *NIX. That's far more reliable and straightforward.

9. No native Multi-Workspace (virtual desktop)

We all know that almost all X11 window managers provide out-of-the-box workspace, like GNOME, KDE and XFCE, it is a key feature to improve productivity to most people. Also, in Mac OS X, Apple introduces Spaces which is a improved Workspace equivalent on OS X.

However, the more expensive Microsoft Windows doesn't offer anything like that. Well, in power toys and sysinternals toolkit we can find apps to enable workspace like feature. Most of them sucks, like desktop. Some 3rd party open source/freeware do a fairly better job, for example: VirtuaWin and Dexpot. After all, they are not native feature and don't work as good as those born with *NIX. I don't think it's hard to implement a workspace like feature in Windows. In the latest Windows 7 beta and RTM, there is no footprint of features like workspace, no hope to see that in GA, although it has an enhanced taskbar with pins. Shame on Microsoft.

10. Manage 3rd party applications install/remove/update/upgrade

GNU/Linux

Debian/Ubuntu
dpkg + APT offers you the peace of mind. Once you set up all necessary apt repositories and PPAs (only for Ubuntu), leave all the upgrade, dist-upgrade, install, remove, clean, autoremove jobs to the package management system. No worries, mate!
Arch Linux
Similar to Debian's APT, Arch has its own Swiss knife, pacman, plus the AUR (Arch User Repository, its yaourt frond-end make it something even better than Ubuntu's PPA) and ABS... Arch was born for geek! It's actually my favorite so far;-)
Gentoo
Portage, emerge, it has the similar concept of FreeBSD ports. To be continued, I am not familiar enough with Gentoo to write a comment at this stage.
Fedora, RHEL and Oracle EL
I know that YUM from yellow dog does a similar job, rpmfusion repository is like a wide range of PPAs.

Mac OS X

Drag and drop installation was once the symbol of the ease of use of Mac OS X. Even a dummy can install and remove OS X applications without any difficulties. But remember, we still have .pkg installers from inherited from NEXT. But it's still relatively easy, similar to .msi on Windows platform.

Most of the time, leave the maintenance job to the application itself, when it asks you Yes or No to upgrade, click yes, that's it! What underneath it is that the 3rd party applications will check if there is newer version, if there is it downloads the latest version, remove the old version (can be found in Trash) and copy the latest version into /Applications folder. However,  not all OS X apps work this way. We all know that Mac OS X doesn't have a package management system. As a result, some applications use the .pkg format installer, are not able to update automatically.

Windows

Nowadays, Windows Installer takes care of the install/remove in most cases. Remember to use appwiz.cpl to add/remove programs, it it's not working, try to fix it using msiexec.exe. Sometimes, dll dependencies will be annoying, it's time consuming to resolve dependency problems. Not like *NIX OS.

Basically, you do all the updates manually! OMG! That can't be possible, right? Although software like HFS (not the OS X File System) will pop up and ask you if you are going to upgrade. Click yes, and HFS will take care of it via a script. But not all developers are that considerate. What's more, not all software can be easily updated, only those portable applications can.

11. Miscellaneous

Global proxy settings
Windows
IE settings, yes! Why IE? I don't know...
IE settings -> Connections tab -> LAN settings, why? I don't understand. Why Microsoft put this in control panel and make it clearer to all users.

Linux:
1. Gnome Proxy Server settings
2. Find /etc/profile (Debian/Ubuntu), add export http_proxy="http://username:password@hostname:port/"
3. Session wide ~/.profile, ~/.bashrc, ~/.bash_profile
4. System wide /etc/profile, /etc/environment (not a script, key value pair)
5. Terminal session wide export http_proxy="http://username:password@hostname:port/"
Notes: https://help.ubuntu.com/community/EnvironmentVariables

Mac OS X
System Preferences

This post was originally inspired by a post on Lifehacker, in response to: What are your Biggest Windows annoyances

So to sum up, I hate Windows as it sucks in so many ways. However, it is still good enough for ordinary people. Although ease of use is no more a problem since Ubuntu came upon the stage, we should clearly see that Linux still has a lot of problems to be solved. Otherwise it won't be successful in the mainstream Desktop OS market. For example multimedia and game support. The market share of all GNU/Linux distros up till now (Feb 2009) is below 1%.

Don't worry, of course Linux is being improved rapidly after Ubuntu's appearance. The rich guy Mark Shuttleworth is smart and so far he and his team has done a great job. Let's wait and see.

To be honest, I would like to see a Win-Win situation. We can choose whatever OS we like!

I am with Tux and open source, because I love freedom. Quote: Software is like sex, it's good when it's free:)