Releasing Neatx, an Open Source NX Server

Tuesday, July 7, 2009 at 12:38 PM

We at Google have been looking at remote desktop technologies for quite a while. The good old X Window system can be used over the network, but it has issues with network latency and bandwidth. Neatx remedies some of these issues.

In 2003, NoMachine released a large portion of the source code of their NX product under the GPL licence. NX is a protocol compressing X requests and reducing round-trips. Although mostly Open Source, NoMachine's NX product contains one closed component, the NX server. It's the part connecting clients with the Open Source libraries doing the work.

A free implementation of an NX server based on NoMachine's libraries named FreeNX was published in 2004 by Fabian Franz. FreeNX's primary target is to replace the one closed component and is written in a mix of several thousand lines of BASH, Expect and C, making FreeNX difficult to maintain.

Last week, we released the source code of our own proof-of-concept implementation of an NX server, Neatx. Designed from scratch with flexibility and maintainability in mind, Neatx minimizes the number of involved processes and all code is split into several libraries. It is written in Python, with the exception of very few wrapper scripts in BASH and one program written in C for performance reasons. Neatx was also able to reuse some code from another Google Open Source project, Ganeti. The code still has some issues, but we're confident interested developers will be able to fix them.

Also, Neatx implements features not found in FreeNX, such as the drop-down menu for session control in rootless sessions. At the same time, not all of FreeNX's features are implemented in Neatx.

Michael Hanselmann gave a presentation at FISL 10 in Porto Alegre, Brazil describing our implementation and use of virtual workstations (slides: PDF, 200 KB).

More information and the code can be found at the Neatx code.google.com project. You can also send us questions and feedback on the Neatx discussion list. Happy hacking!

21 comments:

Greg said...

ah... the new Google Chrome OS Window system perhaps? Funny it was announced on the same day.

Arun said...

Yep.. thats what I thought..

est said...

Since Google Notebook dev is discontinued, why not release it on GAE?

And GTalk has only a Windows client, why not make it opensource too?

kfx said...

When will this code be released? All that's on the google project page is a pdf file.

Kevin said...

Um... http://code.google.com/p/neatx/source/checkout

Stephen said...

The timing of the Neatx and Chrome OS blog posts is just a concidence i'm afraid -) Neatx was actually released a couple of weeks ago, at the FISL conference in Brazil.

Regarding the source of Neatx, it's all available in the svn repository attached to the project on code.google.com/p/neatx. We've already had a number of people try it out, file bugs etc. It's great to see people interested in what we've done.

tbr said...

The code is already in the subversion repository. You just need to check it out using svn...

Anthony said...

kfx: you can check it out from svn, they just haven't made a release.

LinuxTurtle said...

Does NeatX have a client as well? Or like FreeNX, does it depend on the proprietary/closed NoMachine NX client?

kfx said...

I guess I was confused by the blog entry title; I was under the impression that a release had been made. Sorry for the mixup.

Brandon said...

I work for a large corporation that uses VNC,and several years ago I tried to install NX at work, hoping to get a speed boost when working remotely. Unfortunately, the creation of a user "nx" was required. I'm not in the IT department, I don't have root access, and the IT department had no interest in deploying NX. So I gave up.

I saw this announcement and hoped that an "nx" user would no longer be required, but it appears this is still necessary. If I could get it installed and it actually worked better I know the other engineers would jump on it and eventually IT would be forced to support it.

Any chance of getting rid of the "nx" user requirement?

smetj said...

Interesting,
But what would be really great is having an open source connection broker available for this.
I see no possibility for the moment having a VDI solution with whatever graphical session network protocol on Linux using open source.

Jelle Smet

Stephen said...

Neatx is server-side only, it does not include an nx client. It has only been tested/used with NoMachine's nxclient, so it's likely that qtnx et al might need a small bit of tweaking to get working.

Regarding the 'nx' user, neatx doesn't actually require it, but you have to do some client-side modification with NoMachine's nxclient to make it work (as nxclient assumes the 'nx' user exists)

Nick said...

Awesome, I'll definitely check it out.

I used FreeNX but found it to be difficuilt to in stall and poorly maintained (althought this could be partly due to my distro's package for it).

despineira said...

The nx user account need is for security reasons. Perhaps you should try to get the IT people interested in this technology. It's a matter of politics, not software.

Running_Geek said...

A Windows NX server is sorely needed. Right now I NX into my Linux workstation at work and then VNC to the Windows machine. VNC performance on the office LAN connection is worse than NX across a low end DSL connection and VPN. I'm running fairly high screen resolutions on my Windows machines and VNC simply has to transfer too much data.

Brandon said...

@despineira

It's a lot easier to get an IT organization interested in supporting a new technology if you can demo it and show that it's better.

theduke459 said...

I've been using FreeNX (and the NoMachine client) for a few years now, with complete satisfaction, and believe NX is the lynch pin for the next quantum leap of the Cloud. Here's my own blog posting on the subject:

http://traywickscorner.com/?p=692

Donnie Berkholz said...

hansmi, you're a googler now? congrats!

Kazzy said...

As Windows does not use X11 protocol, an NX server would not do much good there.

ByteJuggler said...

@Running_Geek You can use NX to proxy RDP (I connect to a Windows box on RDP via my Linux server, using NX. Very quick and no VNC.)