Releasing Neatx, an Open Source NX Server

Tuesday, July 7, 2009

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 project. You can also send us questions and feedback on the Neatx discussion list. Happy hacking!