Going through those one by one
Most programs that require DirectX for example (among them games which is a core reason for the sale of most PCs to home users) have no alternative under Linux and won't run (at least adequately) under Wine.
Agreed. Although the situation is slowly getting better.
Another area is 3D modelling. 3DSMax won't run on Linux, and neither will most equivalent products.
Perhaps - but then the best platform for 3D modelling used to be the Sun workstations (SGI?).
Training expense is a major reason for companies to stick with Windows.
Not only would they have to teach their entire staff a new OS, they'd need retraining on every single application as well.
Really? How much training does the average user get on how to
really use the Microsoft OS at a low level? Most people are taught to use the GUI interface to the OS, and the GUI interface to the applications.
The GUI interface to Linux can be configured to be remarkably similar to Microsoft if you want it to be, and the interface to Star Office / Open Office is very similar to Microsoft Office.
Even if you stick to Microsoft, you are not spared the retraining issues. The user interface has changed with Windows 95, 98, NT, 2000 (those are the ones I am used to). Likewise it has changed with the different versions of Microsoft Office - and the more of a power user you are, the worse it is.
Then there's the cost of rewriting all the custom software companies use. For a midsized company that cost alone would easily eat up the entire IT budget for several years.
I am hopeful that will change with
Java and web applications.
But sooner or later Microsoft may get burnt with their attitude that they can continue raising prices and forcing people into maintenance products because it is too expensive to migrate. Other companies have fallen into the same trap - I remember working for one company that decided to stop paying maintenance on their VMS licenses for one year, and the money they saved payed for the migration of all their VMS software to AIX. Managers may end up doing the math and determining that in the long run other solutions may be cheaper.
And of course the installation is a lot harder, especially for non-technical users.
With Windows you push in the CD and half an hour later you're up and running.
With Linux you have to put in all kinds of magic data about hardware that most people don't know and have no way of retrieving ("go to the manufacturer website" is NOT a nice thing to say to someone who just wiped his harddisk to install Linux because someone told him it was better).
This is also getting better. If you have fairly standard components that have been around for a while (say 6 months) then the chances are you can get the latest RedHat distribution and do the same thing. The last install I did was: insert CD, boot, click on "English" as my language, click on "101 keyboard", click on "Australia/NSW" as my region, and click on "standard workstation". Half an hour later I was asked whether I wanted DHCP (default) or a static IP (it had detected my network card automatically) and then I was asked if I wanted to configure a printer. A reboot later, and I was up and running.
If you go for a big name like Dell all parts are already checked by Dell to ensure that they will run Linux. In some countries they will supply the machine with Linux pre-installed. In all countries they will supply servers with Linux pre-installed.
It took me (and I have installed my share of machines over time) 2 weeks to get my laptop up and running on Linux.
Yes, Laptops have always been a problem, since most laptop manufacturers use non standard / proprietary chips in order to make their systems smaller / cheaper / less power hungry. Unlike PCs where 1000 Linux users may choose to install the latest video card, so a driver is written fairly quickly, laptops are not so often chosen by Linux people.
Then there's the severe lack of documentation for most products, and indeed even basic tasks.
Yes that can be a problem. Most Linux developers seem to assume that their audience is as technical as the programmer who is writing the software. And since it is all voluntary work, there are rarely technical writers around to make proper documentation.
Although I don't think it is necesarily much worse than Microsoft. Everyone assumes in the MS world that you will use Explorer to copy files. There are similar graphical applications for Linux. But try and get clear information on using the "copy", "xcopy" or "xcopy32" commands, or even find out what the differences between them are. Compare that with the huge amount of information you get from "man cp" or "info cp".
Regards, Andrew