Slashdot Mirror


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.'"

30 of 257 comments (clear)

  1. Sucks to be NoMachine by Anonymous Coward · · Score: 5, Funny

    Poor NoMachine... now they don't have a product

    1. Re:Sucks to be NoMachine by Felix+Da+Rat · · Score: 5, Funny

      Poor NoMachine... now they don't have NoProduct

      Fixed that for 'ya.

    2. Re:Sucks to be NoMachine by GreenPickles · · Score: 5, Insightful

      FreeNX has been around for quite some time and that hasn't killed NoMachine off. However, Google being involved may create more OpenSource developer interest in NX and perhaps someone will create a good Windows NX Server, Windows NX Client and better management tools. If Google rallies that much developer support it could mean an end to NoMachine.

    3. Re:Sucks to be NoMachine by K.+S.+Kyosuke · · Score: 3, Interesting

      They have developed it, they have the best know-how and most likely are the ones to offer best service and support. Such people don't usually starve.

      --
      Ezekiel 23:20
  2. Re:FreeNX by MBCook · · Score: 4, Informative

    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.
  3. NIH by FrankSchwab · · Score: 4, Insightful

    From TFA:
    "There is a free implementation of an NX server based on NoMachine's libraries named FreeNX, but this did not appeal to Google.

    "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," according to Google.

    Neatx is written in Python, with a few wrapper scripts in Bash and one program written in C "for performance reasons". "

    It was unmaintainable because it was written in Bash, Expect, and C, so they rewrote it in Bash, Python, and C?

    --
    And the worms ate into his brain.
    1. Re:NIH by CannonballHead · · Score: 4, Funny

      Maybe they didn't know how to program Expect (tcl). This would make Python much easier to maintain. ;)

    2. Re:NIH by Red+Flayer · · Score: 5, Funny

      It was unmaintainable because it was written in Bash, Expect, and C, so they rewrote it in Bash, Python, and C?

      Well, they started to rewrite it in a mix of Haskell, Visual Basic, and Perl. But the project managers kept spontaneously combusting, so they had to go for a language combo that was a little more commonplace.

      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    3. Re:NIH by Abreu · · Score: 4, Informative

      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.
    4. Re:NIH by Abcd1234 · · Score: 3, Insightful

      In other words: Those who do not understand Haskell (which admittedly is hard if your brain is limited to OOP and procedural coding), will re-implement it

      This just screams a "fixed that for you" post... I think you mean Lisp, don't you?

    5. Re:NIH by kormat · · Score: 4, Informative

      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.
  4. Long time user by bhsx · · Score: 5, Interesting

    As a longtime NX user, this will be very well received. I feel like I'm one of a couple dozen NX users, however, meaning that I think this will go largely unnoticed by mainstream users. The non-proprietary NX-server packages are very non-trivial to install and all attempts thus far at a completed server setup have remained inadequate and completely fly-by-night/unmaintained. I hope people start to use this more and thus perhaps even push the technology farther.

    --
    put the what in the where?
    1. Re:Long time user by keeboo · · Score: 3, Informative

      The problem with VNC is that it's horribly slow, even running it over a LAN is a joke.

      Even DXPC (NX is a fork from that software) kicks VNC's ass.

    2. Re:Long time user by marm · · Score: 4, Informative

      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.

    3. Re:Long time user by timmarhy · · Score: 3, Informative

      what does it have over VNC? speed,audio,printers and image quality. the reason being it's not a compressed image but screen instructions being sent.

      --
      If you mod me down, I will become more powerful than you can imagine....
    4. Re:Long time user by K.+S.+Kyosuke · · Score: 3, Informative

      I assure you that I *can* read, and I am sure you can too:

      - Prints from within the X11 session to printers installed on the client

      - Lets applications access any file system on the client as if it were on the server

      --
      Ezekiel 23:20
  5. Re:FreeNX by oldhack · · Score: 3, Funny

    BASH, Expect, C ... sounds suspiciously like the hairballs I cooked up back when I was slaving away with sysadmin monkey duties.

    --
    Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
  6. NX is teh shindiggity! by thatkid_2002 · · Score: 5, Informative

    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.

  7. Re:FreeNX by agm · · Score: 4, Informative

    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.

  8. Re:Where would such technologies be really useful? by fuzzyfuzzyfungus · · Score: 5, Informative

    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.

  9. Re:FreeNX by rdoger6424 · · Score: 5, Funny

    Couldn't they just google it?

    --
    "Hello 911? I just tried to toast some bread, and the toaster grew an arm and stabbed me in the face!"
  10. Good news well done Google. Another option is xpra by Lemming+Mark · · Score: 4, Interesting

    This is excellent news, I've really enjoyed using NX but always found it slightly temperamental to use. Still, it gave me high performance rootless application access over a dodgy wifi link in Germany, back to my machine at uni in the UK - with the ability to resume every time the wifi dropped. I've known people have trouble resuming dropped sessions, though it worked when I needed it. Anything which is well-supported and makes NX nicer to work with is very welcome - I hope Google press on with making this better and better. It's be real nice if they'd make an open source client available too, preferably with a choice of front-end widget libraries ;-)

    Another project, which I actually head about on Slashdot and am very impressed by is Xpra: http://partiwm.org/wiki/xpra

    Xpra = X Persistent Remote Applications, i.e. connect to your xpra server (tunnels through ssh by default) to get rootless applications delivered to your desktop, disconnect and reconnect somewhere else and get the same apps back. Like screen, for X. It's not meant for fast-changing displays, e.g. video. But it's a nice, compact approach that largely consists of a few thousand lines of Python. It uses modern X extensions cunningly to get the job done without having to understand most of the X protocol itself. And, somewhat like NX, it's better suited to high latency links than simple X11 protocol is. These days I think Xpra is starting to get more advanced features such as Windows client support, theme matching for remote and local apps, some clipboard sharing, etc. It's a nice little app that has its uses, particularly if you want something simpler than NX to set up and administer. The server can also be easily run by an unprivileged user whereas I'm not sure if that's the case for NX (?).

  11. Re:FreeNX by Cyberax · · Score: 3, Interesting

    X-protocol SUCKS for low-bandwidth high-latency links.

    NX can require 100x less of bandwidth on some tasks. I remember reading news using 19200 modem link other the NX connection.

  12. From the horse's mouth by amirulbahr · · Score: 5, Informative

    A link to the announcement from Google.

  13. Re:It's no Quartz by Lemming+Mark · · Score: 3, Informative

    The use of a layer such as Qwartz for Android and Chrome is somewhat independent from Google's working on an NX server though, isn't it? NX is a protocol and client / server code for implementing remote applications with good performance, even over low bandwidth and / or high latency links. It was developed by NoMachine, although others (such as FreeNX and 2X) have also built NX servers. So it really serves a very different (and somewhat orthogonal, though it *is* X11-based) purpose to Quartz.

    When you mentioned Quartz, I assumed you meant the compositing layer but Wikipedia (http://en.wikipedia.org/wiki/Quartz_(graphics_layer)) helpfully mentions that both the 2D rendering engining and the Quartz Extreme compositor are sometimes just lumped together as "Quartz". Confusing! So I'm not really sure which you mean ;-)

    I'm not clear from the Wikipedia articles whether GL acceleration is yet used by default for Quartz 2D, the rendering engine. though of course the Quartz Extreme Compositor has been doing that for years.

    Anyhow, I was going to note that - if you discount X+compiz or whatever as being too heavyweight to be equivalent - the Wayland display server (http://groups.google.com/group/wayland-display-server) is the nearest Linux-land thing I'm aware to Quartz Extreme and it's a pretty neat project at that. Cunningly, Wayland reuses a *lot* of existing X.org infrastructure, it looks like it should be able to support an accelerated X server efficiently as a client *and* they have ideas for what it could be used for even if the rest of the world don't start porting their toolkits to it. So it's a fairly exciting piece of work for the future of display systems on Unix-likes.

    Nearest thing to Quartz 2D would seem to be things like Cairo and QT's Arthur. They've been around for a while; I know Cairo can render using GL and would be amazed if Arthur couldn't.

    I've no idea what Android runs for its display stack but I'd think that Chrome OS, running on bigger hardware, will have the option of running desktop-class servers and libraries like this. I can't see a move to Wayland by anybody *just* yet but perhaps it's viable for a future revision.

    In the meantime, if Google's NeatX makes more seamless, higher performing remote desktop available to more people - that's awesome. One day I might even run it on my server and access it from a netbook - running Chrome OS, perhaps.

  14. Re:neatx client by yossarianuk · · Score: 3, Informative
  15. Re:Still requires creation of user "nx"? Noooooo! by the_weasel · · Score: 4, Insightful

    You sir, are every IT departments nightmare.

    --
    - sarcasm is just one more service we offer -
  16. Re:Beats Web-apps by Teckla · · Score: 3, Insightful

    Well this sure beats HTML+HTTP and Javascript for displaying remote applications.

    I'm so tired of people comparing web apps and X. They are completely different beasts.

    Web apps are downloaded to your local PC and run there. Many web apps make frequent HTTP calls to sync with, or access resources, on the server, but that's completely optional. Web apps are often the right solution compared to X apps because they leverage the power of your local PC. While writing this comment, my local PC did the spell checking, it handled the keyboard events, and it updated the display, all without any communication to, or from, the server. It was fast and responsive and efficient because it all happened entirely on my local PC. The only communication that will occur with the server is when I click on Submit.

    In contrast, X apps are run on the server and merely displayed on your local PC. Slashdot could not possibly function that way without enormous hardware and bandwidth upgrades, and even then it would probably be an annoying experience for many users on connections that experience frequent lag.

    Web apps and X apps are not really competitors. They serve two different purposes. Web apps leverage the local PC and can also leverage the server where it makes sense. X apps are basically entirely run on the server with only display updates being sent to the client. This setup made sense a long time ago when servers were extremely powerful and client PCs were weak. Now that even modest hardware is extremely powerful, X makes very little sense.

  17. Re:Where would such technologies be really useful? by moosesocks · · Score: 4, Interesting

    Because NX on modern hardware can provide a user experience that is virtually indistinguishable from a local desktop.

    Even X or VNC on a fast connection with fast machines on both ends will feel a bit sluggish. NX works great on old hardware with slow connections -- if you've got multiple clients, you can squeeze more clients out of the same hardware/bandwidth. This can be a *huge* deal.

    NoMachine's products aren't cheap, but can be totally worth it given the cost savings in hardware, bandwidth, and support. Their free version also works great for anything but a terminal server.

    You can chalk me up as a *huge* fan of NX.

    --
    -- If you try to fail and succeed, which have you done? - Uli's moose
  18. StartUp/Shutdown Time by Marc_Hawke · · Score: 3, Interesting

    I'm a VNC user, but I realize some of the benefits of NX. (Sound...performance...etc.)

    However...I couldn't get past the start-up times. With VNC, I'd 'click' and poof, my applications would be right were I left them, continuing on as if I'd never left. If I closed the window, the applications didn't even know I was gone.

    With NX, I'd connect, I'd go through a big start-up process, I'd log in, and wait for my windows to open.... If I wanted to leave, I'd click on the 'I'm leaving now' and it would put everything into a state to where I could come back to it, etc etc. (granted my remote machine was no speed demon.)

    So, finally I went back to VNC. I tend to have the window go up and down quite frequently, and the startup/shutdown times of NX were just a deal breaker.

    If I was going to use it as more of a truly 'remote terminal' when I'd have it up for hours at a time, then perhaps the heavily loaded ends wouldn't bother me.

    --
    --Welcome to the Realm of the Hawke--