I love Linux desktops in a way that some may consider unnatural. The infinitely flexible KDE (sorry Gnome, you used to be my favorite before you sucked), the choice between polish and under-the-hood control at every turn, the brilliant application packaging systems, all steeped in the fruits of the open source development model gone very, very right … these things make me happy like Friday 80’s night or the giant puffy bread at that Indian place in Monroeville.
This unwholesome enthusiasm makes me long for the gentle, nerdy embrace of my favorite OS (hey, wait, or was that a grope?!) when working outside of the office (which, due to NuRelm’s awesome telecommuting policy, we all do quite a bit). So I recently embarked on a quest to find the best way to do that, thinking, naturally, that the Linux/open source community would yield a perfect solution, especially in light of the fact that one area where Microsoft’s far less exciting OS has done something surprisingly well is with its very fast Remote Desktop Protocol. Like any worthy quest, there were some ups and downs, and I’d like to share my impressions so far:
- TigerVNC. I don’t like saying bad things about VNC, because it’s been the workhorse of the Linux remote desktop server for so long, but I will anyway: I hate using it. It’s slow and klunky and I have to turn the color depth so low when remoting over a WAN that I feel like I’m playing Astroids again on the ole 2600. I guess part of the beauty of VNC is that it doesn’t have to understand much about the window system being remoted, it just ships pixels and tries to not be horrendously slow by compressing them in various ways. But that doesn’t make for an elegant or snappy experience, so onward to the next candidate.
Conclusion: Please don’t let VNC be the only answer.
- X Windows. Please allow me to take you back, for a moment, to 1991. Pearl Jam and Boyz II Men were on the radio, SCUD missiles were on the news, and I was working a summer job as a research assistant at WVU in Knapp Hall, on the fabulously hard-to-make-go-fast CM-5 parallel computer. These were wild days before RDP was a twinkle in Microsoft’s eye, yet we were logging into Sun workstations, exporting the display, and doing our thing remotely on crappy green screen thin clients. Surely the modern descendant of that ancient variant of X Windows, which is still running on every Linux desktop in all the land, and which was brilliantly conceived to run over a network, would be the answer to my remoting quest. It turns out that setting this up is still just as easy as ever, even if your remote machine is running MS Windows (just install Cygwin’s X Server on the remote machine, ssh into your server with X11 forwarding [the -Y option], run whatever you want from the command line, and it will magically appear on your screen). However, over a slow-ish WAN, it is NOT fast. In fact, it is decidedly slow (a fine and detailed article containing a chart at the end with rough bandwidth requirements of various apps over X).
Conclusion: Exporting a display over X is an excellent way to run apps remotely if you are on your LAN or an otherwise speedy connection. But if upstream bandwidth on your server is tight, this will be unusably slow.
- NX. A company called NoMachine has developed a technology that strives to make X Windows great again, by putting X in a pot and sprinkling in a generous helping of caching and compression. The idea is that it is fast enough to be used over a very slow connection (they claim fast enough for dial-up … the eerie screech of the phone connecting via dial-up still haunts my dreams). Setup was a breeze, and NX just uses your existing ssh service and nothing else, so no new listeners or ports need to be opened to make it work. My tests (using FreeNX on the server and NoMachine’s client on the remote machine) over a LAN show it to be way snappier than VNC, and I’ll report back as soon as a truly slow WAN test is done.
Conclusion: This could be the answer to your remoting-to-a-Linux server needs. There doesn’t seem to be an MS Windows server, but that’s ok since RDP works just fine in that case. FreeNX seems to be a good server, and Google’s got a server called neatx that I have not yet tried. NoMachine’s client works well, as does the open source OpenNX client.
Continuing the question from here: an interesting remoting technology that would be fun to test drive is Thinstation, an open source thin client that can interact with all sorts of remote server technologies (NX, RDP, and quite a few more).