July 24, 2009
This article was contributed by Koen Vervloesem
On July 7, internet search giant Google not only announced its operating
system Google Chrome OS with
much fanfare, it also quietly released Neatx,
an open source NX server. According to the announcement, Google has been
looking at remote desktop technologies for quite a while. While the X
Window System has issues with network latency and bandwidth, the NX
protocol compresses X requests and reduces round-trips, resulting in much
better performance — to the point that it can be used over network
connections with low bandwidth.
So with Neatx, users can log in to a remote Linux desktop. Moreover, the
session can be suspended
and resumed later from another computer, resembling the functionality that
GNU screen offers for
console sessions. But, unlike screen, a Neatx user has access to the GUI of the
remote machine, just as if they were sitting in front of it.
The NX protocol, using SSH as a transport and for authentication,
was developed by the Italian company NoMachine, which released the source
code of the core NX
technology in 2003 under the GPL. NoMachine offers free (as in beer)
client and server software for various operating systems, including
Linux. It wasn't very long before free-as-in-speech NX clients emerged, then,
in 2004, Fabian Franz implemented FreeNX, a GPL implementation of an NX
server.
FreeNX development stalls
However, after a number of years the FreeNX project is facing some serious
problems. Franz hasn't responded to e-mails on the developer mailing list for
a long time and he seems to be the only one able to check code into the
repository. As a consequence, the development
has stalled for some time. That brought Florian Schmidt to ask
about the future:
I think the whole freenx
project should decide if they still like to wait for Fabian or if they want
to start the project on a new space with some more admins and decide a
development core team and project space maintainers.
Because upstream FreeNX development has stalled, downstream
packagers have essentially picked up the development. There is a FreeNX
team that
maintains Debian and Ubuntu
packages. These maintainers push appropriate patches to their branch
and thus have the most up-to-date repository, with some extra features the
official FreeNX server doesn't have, such as shadowing local X sessions and
stubs for guest sessions. Marcelo Boveto Shima, one of the maintainers,
noted
FreeNX problems in a post to
the FreeNX mailing list: "Working on FreeNX is a dead-end and
it is becoming too hackish." He decided to write his own FreeNX
server, TaciX. In the meantime,
the Debian/Ubuntu repository has become the "upstream"
for Gentoo's FreeNX package.
A new NX server from scratch
Shima wasn't the only one
disappointed in FreeNX development. According to Google the server was
"written in a mix of several thousand lines of BASH, Expect and C,
making FreeNX difficult to maintain." That's why some developers at
Google designed Neatx, a new implementation,
based on NoMachine's
open source NX libraries:
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.
Google implemented Neatx because the company operates a large number of
virtualized
workstations in clusters [PDF], running on its cluster virtual server
management software tool, Ganeti. To be able to log in to the virtual
workstation from home or via a wireless connection and work smoothly, X
or VNC can't be used. That led Google to turn to the NX protocol. An added
bonus is
that the protocol allows restoring a session opened at the office from home
and vice versa. In the release announcement, the developers noted that
Neatx implements some features
not found in FreeNX, but also that it lacks some other features that FreeNX
has.
Neatx in action
Your author tried both QtNX and NoMachine's
NX client to connect to FreeNX 0.7.3 and Neatx on Ubuntu 9.04. Because
Neatx has not yet released an official version, your author checked out the
latest source code and built it. It turned out QtNX can't connect to Neatx
because of a version mismatch, and the Neatx developers seem to test their
server software with NoMachine's NX client, so that is the only supported
client for
now.
Session creation, suspension, resumption, and shutdown all work well in
Neatx. Users can choose between Gnome, KDE, Application, and Console
sessions, and they can run their session on a virtual desktop or as a
floating window. They are also able to set the keyboard preferences, the
resolution, and choose full-screen mode. Neatx supports session
shadowing, the
ability for multiple users to view and collaborate within the same NX
session. For the moment that only works with sessions belonging to one user,
so it's not that usable yet. Sharing of the X clipboard also works
flawlessly.
A couple of things don't work yet. For example, terminating an open
session from the session list isn't possible. The user first has to resume
the session and then terminate it. Tunneling of sound, printers, and Samba
are also not yet implemented. And Neatx doesn't support RDP (the remote
desktop protocol for Windows) or VNC sessions, something that FreeNX does
support. There are also still some loose ends because the code is still
alpha. However, the Neatx Google Group is pretty active and already has
some interesting suggestions for further developments, such as a jailed
NX, enabling users to NX into a server while not being able to see any other
user's data, and printer
tunneling.
Although the simultaneous announcements of Google Chrome OS and Neatx
seem to be pure coincidence, they both are based on the concept of a thin
client. Chrome OS is a perfect operating system for the casual user with a
netbook connected to internet, running most of the applications in a web
browser. For applications that don't run inside the browser, a Neatx server
on Google's or someone else's servers can offer a desktop "in the cloud" which
can be accessed from everywhere. Google's own use of Neatx for virtual
workstations shows that the thin client concept is reviving. Hopefully it
will also revive developer's interest in contributing to a free NX server,
which is an essential component for this development.
(
Log in to post comments)