I've changed my primary desktop 6 times in the last 25 years. In order they were:

  1. CP/M on an Amstrad CPC6128 (and to a lesser extent the native Amstrad CPC AMSDOS, but by the time I migrated I was mostly using CP/M, booted from ROM, with most applications loaded into a RAM disk, and a hard drive attached for bulk storage -- 10MB seemed huge then!)

  2. DesqView on MS-DOS (primarily used for my bulletin board)

  3. OS/2 Warp (used both for my bulletin board and then a few years after that)

  4. Slackware Linux then Debian Linux using FVWM as my desktop manager (this was on both my first two Linux desktop machines, plus my first two laptops, including the first laptop I bought new.

  5. Ubuntu Linux using GNOME as my desktop manager

  6. Mac OS X (10.5 and 10.6; although I'd used 10.3 part time for a couple of years prior to that)

The observant will notice that Microsoft Windows doesn't feature on this list; I've very occassionally used various versions of Microsoft Windows as a desktop OS, but never for long enough to consider it a primary OS. (I've actually got more experience with Windows as a server OS than as a desktop OS, and that's not that much -- given that I've spent the last 20 years working in the Unix/Linux space.)

With each transition there was always a fair period of overlap where I was using both the new environment and the old environment at the same time. Typically I'll migrate one service or feature at a time (finding equivilent programs in the new environment and getting used to them), initially based on whatever seems easiest (eg, web browsing) and then migrating things as I need them, until I reach a point where there's nothing I'm doing regularly left in the old environment.

There are a couple of tipping points in the process:

  1. When the new environment becomes my primary desktop environment (ie the one with the monitor/keyboard/etc on my desk attached to it by default) and I'm using some remote login/remote display protocol to run things on the old environment (at which point I'll tend to migrate things as I need them rather than running them in the old environment)

  2. When I realise that I haven't turned on the old environment to get anything off it, or run anything, in days -- not everything is migrated, but everything I do with any regularity is migrated and so I'm on the new desktop for all day-to-day work (at which point I'll start thinking about archiving the old environment)

I reached the second point with my migration to OS X this week. So I took the opportunity to copy all my "personal" files off the old laptop onto my new laptop (in a folder named after the old laptop) so I can get at them without having to turn the old one on. And converted the old laptop into a virtual machine so I can keep running programs from the old laptop (I know there are a few, including the remote console features of some servers I manage, which are simply incompatible with my new desktop and hence need to be accessed via a virtualised environment). (Unfortunately the virtualised disk from my old laptop is a bit big to fit onto my new laptop in addition to everything else, so the virtual machine isn't usable when I'm on the road -- but at least all the files are accessible. At some point I might generate a cut-down version of the virtual machine which will fit onto the laptop internal drive.)

Now I can take the old laptop off my desk, which will help tidy things up. (This also means that from my current desktop I can run all the desktop environments that I've used for the last 10 years from the same machine. And thanks to Moores Law, they all run at least as fast, if not faster, than they did originally. Virtualisation and hardware progress FTW.)