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