I am developing a way to pipe NX over HTTP (client and NodeJS server module), and I noticed that x2go is a full-featured solution based on NX technology. I already asked about this on the users mailing list and I was directed here by Mike Gabriel. I'll try to not repeat anything that was already answered.
Mike informed me that the x2go team is already developing browser plugins, but I wanted a way to integrate a remote session into a browser using pure HTML5 and JavaScript. Anyway, my question has more to do with the underlying NX server source.
Has the x2go team significantly modified the base NX server code? If so, where can I get the full source code for the server (not just the scripts)? Mike led me to this website: http://i4git.informatik.uni-erlangen.de/, but I wasn't able to figure out how to clone the repositories. I don't mean to be too forward, especially since I'm new to this list, but has the x2go team considered using a free code sharing site like GitHub?
I will mostly want to be looking at where the data gets sent to the client, but I'm not sure where the best place to look for that would be.
Thank you so much for your help!
Hi Tyler,
On Sa 19 Mär 2011 07:35:04 CET Tyler Jameson Little wrote:
Has the x2go team significantly modified the base NX server code? If so, where can I get the full source code for the server (not just the scripts)? Mike led me to this website: http://i4git.informatik.uni-erlangen.de/, but I wasn't able to figure out how to clone the repositories. I don't mean to be too forward, especially since I'm new to this list, but has the x2go team considered using a free code sharing site like GitHub?
The way server and client communicate in X2go differs quite a bit from
the way pure NX client/server communication handles the session
handshake (X2go does not need a generic NX user, for instance).
The official Git will be on http://code.x2go.org/gitweb in the near
future, however this is till work in progress. On code.x2go.org the
development will take on the ,,master'' branch that currently differs
from the master branches at university of Erlangen. I can't do
anything else as asking you for some patience. (People have already
been VERY patient with us, but we are seemingly very nearly there...).
We will not be using one of the big Git portals like Github, though.
This is mainly because of date protection laws in Germany that we
would like to be compliant with (Google analytics et al.).
Greets, Mike
--
DAS-NETZWERKTEAM mike gabriel, dorfstr. 27, 24245 barmissen fon: +49 (4302) 281418, fax: +49 (4302) 281419
GnuPG Key ID 0xB588399B mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de
freeBusy: https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xf...
On Sat, Mar 19, 2011 at 07:35:04 (CET), Tyler Jameson Little wrote:
Has the x2go team significantly modified the base NX server code? If so, where can I get the full source code for the server (not just the scripts)?
depends what you mean with 'base NX server code'. x2go is using a largely unmodified nxproxy and largely unmodified NX libraries. The nxagent has seen some modifications and has therefore been renamed to x2goagent.
Mike led me to this website: http://i4git.informatik.uni-erlangen.de/, but I wasn't able to figure out how to clone the repositories.
I just tried my self. for the x2goagent, go to http://i4git.informatik.uni-erlangen.de/x2goagent.git/
Then look at the url. The following command did work for me:
git clone git://i4git.informatik.uni-erlangen.de/x2goagent.git
Does it work for you now?
-- Gruesse/greetings, Reinhard Tartler, KeyID 945348A4
Hi Tyler,
welcome on our List!
Am 19.03.2011 07:35, schrieb Tyler Jameson Little:
Mike informed me that the x2go team is already developing browser plugins, but I wanted a way to integrate a remote session into a browser using pure HTML5 and JavaScript.
His sounds very intersting!
Has the x2go team significantly modified the base NX server code? If so, where can I get the full source code for the server (not just the scripts)?
So you've found the scripts in our git - the purpose of those scripts is to initiate the needed command on server side. This means they take care about the session management, the mounted directories, the audio redicrection and so on. The main task is done by those needed services and if you want to write a client on HTML/Javascript base you'll need to contact those services too. NX is a rendering protocol, so you wont find already rendered diff screen segments like vnc. A real native implementation would need to render all primitives drawn in the X screen to be converted to the HTML Canvas Element. I've played with the Canvas Element a lot, but I always needed some local components to do all the needed work. The result would again be an extension for the browser which needs to be installed - like our plugin solution. But the plugin is now a variant of x2goclient so it won't need another code base. But this is what I've experienced - I really would like to hear more of your ideas about this.
What already can be done: Use a virtual x2go display with ajaxvnc (or any other HTML VNC solution) and access it via your browser. The occuring problem is, that you'll get no advantages to a pure vnc environment, because the nx/x2goagent is not displayed locally...
I will mostly want to be looking at where the data gets sent to the client, but I'm not sure where the best place to look for that would be.
The communication you are looking for is the communication between a X-client and a X-server. To make it more complicated - yes in this special case it is compressed and encrypted (ssh - I don't see how to access ssh via javascript) too.
I really see a lot of Use Cases for such a client, because it could be used on totally closed brickware!
So again - welcome on our list. Thank you for your interest and for sharing you idea with us. Maybe some more time is needed, but I don't consider this task as "hopeless" (as other projects are working on similar ideas):
http://blogs.gnome.org/alexl/2011/03/15/gtk-html-backend-update/
Regards,
Heinz
Thanks everyone for your input. Here in my idea outlined in steps:
I think the HTML5 canvas is robust enough to support an entire x session, especially with hardware acceleration, which is common in many modern browsers, particularly IE 9, Chrome, Opera, and Safari (I think Firefox 4 will handle it too). I'm not sure if there are many differences between the server on Linux, Mac and Windows, but I figured I'd start with Gnome on Linux for the server, and Chrome for the client.
I figure I'd not bother encrypting the traffic as that can be done over HTTPS. Ajax has a lot of overhead because each Ajax request has it's own HTTP header, so I thought I'd try to use websockets where available so new chunks can be pushed to the client without any HTTP overhead. I don't want to use VNC because it has way too much overhead and is also kind of buggy (I have used an implementation called guacamole which does the same thing mine does except with VNC). I also like the idea of being able to transmit only a single window. From what I've read, x2go is capable of this, and possibly much more.
I can't do anything else as asking you for some patience.
Don't worry, I am very much in an early development phase and I don't need the most current software. I'm just glad that I've found a group this helpful.
We will not be using one of the big Git portals like Github, though. This is
mainly because of date protection laws in Germany that we would like to be compliant with (Google analytics et al.).
I was thinking of hosting my modifications of the code on GitHub. I am in the United States of America, so we obviously don't have the same laws as Germany does. Should I not post my code on GitHub? I would really like to share my changes, and I already use GitHub for a lot of my other open source projects, but I'd be willing to not include x2go's code on my GitHub account and instead give instructions for obtaining the code.
Then look at the url. The following command did work for me: git clone git://i4git.informatik.uni-erlangen.de/x2goagent.git Does it work for you now?
Yes, thank you. I was trying to access the code under the projects/ directory, but obviously that didn't work.
Which repositories are necessary for getting a simple server up and running? I don't need anything like sound, printing, etc, just enough to get a normal NX server running on gnome. I'll start with this and when I get something setup, I'll add features.
Once I get a basic server up and running, I can experiment with turning it into a NodeJS module and pipe it over HTTP. I was thinking about using OpenNX as a reference for my client because it said it was a drop-in replacement for the original NX client.
Mike mentioned that the source will be released under the AGPL. Is there any chance that it could ever be released under a less restrictive license? I would like to release my code under the MIT or similar license, but I will try to abide by the AGPL as closely as possible. I may have more questions about whether I can release my code under a different license as I get closer to a working product. Once I get something up and running.
On Sat, Mar 19, 2011 at 9:14 AM, Heinz-M. Graesing <x2go-dev@x2go.org>wrote:
Hi Tyler,
welcome on our List!
Am 19.03.2011 07:35, schrieb Tyler Jameson Little:
Mike informed me that the x2go team is already developing browser plugins, but I wanted a way to integrate a remote session into a browser using pure HTML5 and JavaScript.
His sounds very intersting!
Has the x2go team significantly modified the base NX server code? If so, where can I get the full source code for the server (not just the scripts)?
So you've found the scripts in our git - the purpose of those scripts is to initiate the needed command on server side. This means they take care about the session management, the mounted directories, the audio redicrection and so on. The main task is done by those needed services and if you want to write a client on HTML/Javascript base you'll need to contact those services too. NX is a rendering protocol, so you wont find already rendered diff screen segments like vnc. A real native implementation would need to render all primitives drawn in the X screen to be converted to the HTML Canvas Element. I've played with the Canvas Element a lot, but I always needed some local components to do all the needed work. The result would again be an extension for the browser which needs to be installed - like our plugin solution. But the plugin is now a variant of x2goclient so it won't need another code base. But this is what I've experienced - I really would like to hear more of your ideas about this.
What already can be done: Use a virtual x2go display with ajaxvnc (or any other HTML VNC solution) and access it via your browser. The occuring problem is, that you'll get no advantages to a pure vnc environment, because the nx/x2goagent is not displayed locally...
I will mostly want to be looking at where the data gets sent to the client, but I'm not sure where the best place to look for that would be.
The communication you are looking for is the communication between a X-client and a X-server. To make it more complicated - yes in this special case it is compressed and encrypted (ssh - I don't see how to access ssh via javascript) too.
I really see a lot of Use Cases for such a client, because it could be used on totally closed brickware!
So again - welcome on our list. Thank you for your interest and for sharing you idea with us. Maybe some more time is needed, but I don't consider this task as "hopeless" (as other projects are working on similar ideas):
http://blogs.gnome.org/alexl/2011/03/15/gtk-html-backend-update/
Regards,
Heinz
X2go-dev mailing list X2go-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/x2go-dev
On Sat, Mar 19, 2011 at 19:43:55 (CET), Tyler Jameson Little wrote:
Yes, thank you. I was trying to access the code under the projects/ directory, but obviously that didn't work.
Which repositories are necessary for getting a simple server up and running? I don't need anything like sound, printing, etc, just enough to get a normal NX server running on gnome. I'll start with this and when I get something setup, I'll add features.
For building the server, you'll need:
For building the client, you'll need:
Note that nxcomp, nxcompext, nxcompshad and nxproxy are largely taken unmodified from FreeNX/NoMachine.
-- Gruesse/greetings, Reinhard Tartler, KeyID 945348A4
Hi Tyler,
On Sa 19 Mär 2011 19:43:55 CET Tyler Jameson Little wrote:
I was thinking of hosting my modifications of the code on GitHub. I am in the United States of America, so we obviously don't have the same laws as Germany does. Should I not post my code on GitHub? I would really like to share my changes, and I already use GitHub for a lot of my other open source projects, but I'd be willing to not include x2go's code on my GitHub account and instead give instructions for obtaining the code.
My suggestion is (though I cannot speak for Heinz and Alex, the core
dev team): start on github and if there is something to show and
share, we all might want to host your code ;-) and let it become part
of X2go. And if you want the same, you get an account on code.x2go.org.
;-)
What you describe sounds really promising.
Greetings, Mike
--
DAS-NETZWERKTEAM mike gabriel, dorfstr. 27, 24245 barmissen fon: +49 (4302) 281418, fax: +49 (4302) 281419
GnuPG Key ID 0xB588399B mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de
freeBusy: https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xf...