SelectingADistribution notes that a number of LinuxDistributions that exist only as "desktop Linux" do nothing but try to be Windows. As soon as you get past this mentality and realise that you are not locked down into simply trying to ape Windows, you'll get much further with Linux. That's what makes MacOSX so successful, too. Important differences between Linux and Windows:

  • Experienced Windows users are accustomed to having to hunt around various vendor websites to find hardware drivers, add-on utilities, additional applications etc. With most Linux distributions, all this will be found in your standard repositories, and accessed via your distro’s standard PackageManagement tools. It is possible to add on software from other sources (e.g. BuildFromSource), but this is not recommended until you have obtained some experience with Linux.
  • Linux is built on the CommandLine and the UnixWay. If you can do something in a graphical program, chances there is a scriptable text mode way of doing the same thing, probably using the same library.
  • You should never have to reboot unless you're replacing your Kernel or shutting down the machine to change hardware. If your hardware supports HotPlug, you can even switch hardware with a running system, un/load the relevant Kernel Modules, and keep going as if nothing ever happened. Try that on Windows.
  • No Registry. As per the FileSystemHierarchy, system configuration files are kept in /etc, with separate directories and files for separate subsystems. Per-user configs are kept in the users’ home directories, so they won’t be wiped on an OS upgrade. Most config files are plain-text files, and can be managed with standard text editors and file-manipulation utilities. For instance, it’s easy to backup and restore a set of config files, and use the diff(1) utility to see exactly what’s been changed.
  • Software won't just stop working for no apparent reason, requiring a reinstall.
  • You (can) know precisely what your computer is doing at every point.

    • You can look at a process list and be able to name exactly what all the processes are, what they are doing, what the consequences of shutting them down would be, f.ex:

      • Shutting down cron(8) would mean scheduled tasks would not be actioned.
      • Shutting down inetd(8) would mean that many network servers would not be available.
      • etc.

      For most processes you can just type man foo to find out what they're for, much unlike Windows. Of course, a dumb Linux SysAdmin will still lose to a smart Windows admin every day -- see sites like and

    • You can look at a file and know what it's used for and what the consequences of changing it would be. Since most files are plain text, you can edit them with any TextEditor (and, as with point 1, you can select which text editor to use, vi(1)/emacs(1)/pico(1)/nano(1)/jed(1)/...
    • If you really want to know, you can read the source (then wiki about your experiences so everyone else can benefit!)
  • There's more than one way to do it, though not all ways are created equal.
  • No dependance on a GUI, The machine is perfectly usable via a CLI only.
  • Multiple users can use one machine simultaneously.
  • No drive letters. BlockDevices are mounted on mount points, which are just directories created for the purpose, and can be located anywhere.