Anyone who has been following my computing adventures on this website for very long will probably already know I'm a big fan of remoting protocols. Ones I've used so far include SPICE, VNC, RDP, X11 redirection, X11 tunneled thru SSH, and NoMachine's NX 3.
There are two new developments in this area. The first is the recently released NoMachine NX4 and the second is x2go. I've had a chance to play with them both and what follows are my initial reactions.
NoMachine NX 4 - If you didn't notice, NoMachine finally released their NX 4 product line. I say finally because I think I saw the first "NX 4 is coming soon" blurb in the pages of Linux Journal magazine about 2.5 years ago. NoMachine has also totally redone their website for the new release. NX 4 is closed / proprietary software. They do offer a gratis download where you can have one user and you don't have to fill out any annoying forms to get to the downloads. If a single user meets your needs, you are good to go. If you want more users, pick out one of their products that meets your needs. Their commercial offerings allow for multiple users on a single host or a session broker to scale users across multiple servers.
What's new in this release? Besides moving to complete closedly software (NX 3 had GPL'ed libraries), NX 4 offers a lot of new features. The NX 3 protocol was basically an extremely efficient rejiggering of the X11 protocol and as a result, NX 3 only ran on servers that offered X11... primarily Linux. The NX 4 protocol is completely new / different and as a result they have made it multi-platform. In the past they had NX 3 client applications for Windows and Mac but not the server side. With NX 4, they now support Linux, Microsoft Windows and Mac OS X servers. So far I've only tried NX 4 on Linux but I'm sure Mac users are going to be very happy because their remote access options have been very limited.
NX 4 has gone a long way to add features that people want in a modern remoting protocol. For example, it now supports multi-media quite well even at fairly modest bandwidth limits. That isn't to say that it is magic but it does amazingly well. It supports sound and video. It has client side session recording. Files can easily be copied between client and server. I also believe client-side USB devices are supported although I have yet to try that. NX 4 has a new, modern interface that is pleasing. It is easy to use especially when you learn the config hotkey in the client (ALT+CONTROL+0). NX 4 is very scalable and can dynamically adjust to changing bandwidth conditions.
Some things I don't like: The NX 4 protocol no longer runs through SSH on port 22, as NX 3 did. NX 4 runs on port 4000... and a result I think it takes a little more effort to initially set up... mainly because anyone using a firewall will have open up a new port. If you are the one with control of the firewall that is no problem, but if not, it might take some effort. In the past, NoMachine had separate packages for the server and the client. Now there is only one package that includes both client and server... so if you want only the client, you are going to end up installing the server as well. I hope in the future they split the package in two again. I wonder if the single package is a marketing ploy or a sign that they didn't spend as much time on the packaging as they should have. At least they offer the Linux version in rpm, deb, and tar.gz formats.
Update: (25 NOV 2013) I got an email from No Machine's Gian Filippo who mentioned that they do have separate client and server packages but they are in the enterprise section. He also said that NX4 can still use ssh for transport except that it was extra work to do so and Windows and Mac users won't have sshd by default so ssh isn't the default. Again, I think this is an option in the enterprise packages.
x2go - The Fedora Project released Fedora 20 Alpha this week. Being the big Fedora fanboi that I am, I was reading about the new features in the Alpha release. Many of the new features caught my eye but the one relevant to this blog post is x2go.
x2go is based on the GPL'ed NoMachine NX 3 libraries. x2go is NOT the first project based on those... as the more well known FreeNX came first. Unfortunately the development of FreeNX stalled and the last updates seem to be from 2008. x2go appears to have picked up NX 3 ball and run with it. Not only have they modernized the code to run on contemporary systems but they have also added a number of new features. They supposedly have a session broker application that can scale connections across multiple hosts turning x2go into a more complete terminal services solution. I have only tried the simplest case of installing the server on a physical host as well as a KVM virtual machine and connecting to it from a single client. In the simple case, it works quite well. They supposedly have added sound, file sharing, and client-side USB... all running through SSH... but I haven't tried all of that just yet.
x2go is still based on X11 so the server side is not available for Microsoft Windows nor Mac OS X. They do have client applications for Windows and Mac. I tried the Windows client and it looked and worked great. x2go will be available in quite a few distributions via stock repos. Is x2go available for your preferred Linux distribution yet? I wish Fedora had x2go packages for Fedora 19 as it will be a few more months before Fedora 20 is released. I certainly hope the EPEL packagers will make x2go available for EL6 (and EL5 if possible) at some point and I expect it to be a stock package in EL7.
Overall, x2go works quite well.. and over a LAN it easily rivals SPICE... except maybe for video. I haven't had a chance to try it in lower bandwidth situations although I expect it to work quite well as NoMachine's NX 3 product line was excellent.
Conclusions - Which do I like best... NX 4 or x2go? Both have their pluses and minuses. I prefer FLOSS software but yes NX 4 has some additional capabilities that under certain conditions I might want. For example, if I wanted remote access to a Windows machine or a Mac, x2go is not an option. NX 4 is going to be a hard sell on Windows systems because Microsoft's RDP is there by default and well entrenched.
When Fedora 20 comes out and is my distro of choice, adding x2go will be a no-brainer. If it becomes available for EL, I'll use it there too. At this stage it is hard to say because I haven't tried out any of the more advanced use cases. How well does x2go scale? Which desktop environments are written well enough to accommodate multiple users? Once I've had more time with both of them I might have a more complete answer... but at this point I'm glad there are more options in remoting protocols. Which ones do you prefer?