Google Releases Open Source NX Server
wisesifu writes with news of a new open source NX server, dubbed NeatX, that was released by Google and promptly lost in the shuffle of the Chrome OS announcement. "NX technology was developed by NoMachine to handle remote X Window connections and make a graphical desktop display usable over the Internet. By its own admission, Google has been looking at remote desktop technologies for 'quite a while' and decided to develop Neatx as existing NX server products are either proprietary or difficult to maintain. '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,' Google engineers wrote on the company's open source blog. NoMachine had released parts of the source code to its NX product under the GPL, but the NX server remained proprietary. [...] Neatx is written in Python, with a few wrapper scripts in Bash and one program written in C 'for performance reasons.'"
It's mentioned in the article. It says that Google rejected it because it's a mess of Bash, Expect, and C and very hard to maintain. Their implementation is mostly Python, with a little C and Bash.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
Well, it would depend on how much code was written in each language in the original.
NeatX appears to be 90% Python, with only a few stuff in Bash and C, so its basically just a Python app
No sig for the moment.
It might be worth mentioning to some people who are no doubt confused; there is a difference between FreeNX and NX Free. And on a futher side note, I have tried installing FreeNX two or three times and the packages seemed to be unavailable from distro repo or even from the berlios FS (Weird!). In any case if this Google NX server isn't a piece of junk I will be over the moon!
In my opinion NX is #1 remote display (also sound and printing) technology there is. You get a great quality image over a very slow DSL connection! VNC doesn't come anywhere near it - and for the $0 price tag you can't beat it!
The trouble with NX Free is that it can only allow a few simultaneous connections at a time - I'm hoping Google's server changes this.
They are not reimplementing it, they are providing a wrapper to the X11 protocol so it performs better on low bandwidth, high latency links.
Ever tried do to remote X over, say, a 2Mb/s connection? Try it again with FreeNX and notice the large improvement in display performance.
Now if only they would somehow include GL in remote X.
I'd say that, these days, it is more about session persistence, network location, and access to local and/or network resources that make these technologies most useful.
VNC/RDP, for instance, make it really easy to have your entire desktop session, with all open programs, program state, etc. on one computer available over the network from another computer. If you have a whole bunch of windows open, with lots of tabs, and a half finished document, and some other stuff you are referring to, it is way more convenient to just connect to your session, rather than try to recreate it on another machine.
Citrix, X, and NX are really convenient for situations where a program's context matters. If I just want to type out a shopping list, or check a web page, it doesn't really matter where the program I use runs(which usually means that I should run it locally, because latency sucks). If, though, I'm opening my bittorrent client, or trying to edit some documents at work, it matters where the program is running. I want my bittorrent client to be running on a computer with a fast pipe and a big disk, even if I'm controlling it from my cellphone. If I'm trying to edit some work documents, I want Word running on my work's LAN, so all my documents on the fileserver will be available(without the risks involved in just copying stuff to my laptop, then leaving it on the train).
I worked at a school where the latter use was common and fairly highly valued. We didn't want to deal with the hassle of hundreds or thousands of potentially infected machines belonging to students and faculty having VPN access to the LAN. We did want students and faculty to be able to access their documents and email when they were at home. To solve the problem, we used Citrix to offer remote access to all the common programs that students and staff would use to view or edit documents, set up so that the programs would have access to the files of the user that logged in.
It wasn't perfect; but it largely worked. The user would go to a web portal, enter their credentials, and get a bunch of clickable icons. Click on "Word" or whatever and it would(after a few moments of Citrix doing its thing) pop up, looking modestly like a local application. If you hit "Open", though, you'd have access to all your documents from our fileserver. Super easy.
But what does NX have over VNC?
The performance is an order of magnitude or five better? Honestly, unless you're on something with REALLY high latency, even raw, unmassaged X is frequently better than VNC performance-wise. NX however is hands-down the best performing remote display protocol I've seen. Decently performing (very usable for basic office tasks) full modern desktops when the link has 400ms+ latency and 10kbps bandwidth. It knocks ICA and RDP into a cocked hat.
A link to the announcement from Google.
Good question -) However, have a look at the different language breakdowns between the codebases.
FreeNX:
5.4k lines of bash
233 lines of C
102 lines of expect
Neatx:
5.7k lines of python
400 lines of C
54 lines of bash
The bash in neatx is there to provide wrapping of the python code, so that any unhandled errors etc are logged. It's a belt-and-britches approach.
Steve, Neatx project lead
Time. Time seems... strange.