Details

      Description

      It's been frequently requested that we add support for a more efficient protocol like NX or X2Go. Though that sounds nice on the surface, and theoretically would allow us to leverage some of Guacamole's nicer protocol-level features, investigating deeper reveals:

      1. X2Go is NX - it uses the same protocol behind the scenes.
      2. NX isn't really a protocol - it is essentially a compressor for X11, and depends on the client having a local X11 server to handle the decompressed result.

      Implementing support for either of these would thus involve implementing support for X11, which is crazy. However:

      What about implementing a driver for the X.Org X11 server?

      The X.Org server provides a driver abstraction layer which exposes access to windows (including their hierarchy) and pixmaps, much in the same way the Guacamole protocol provides nestable layers and buffers. If we were to implement a Guacamole driver for X.Org, we would be able to make much greater use Guacamole protocol features like client-side compositing. Operations which are typically expensive in VNC or RDP like window movement suddenly become simple, as they only involve updating the properties of a layer.

      I have an experimental implementation of all this, built upon several other improvements which ended up being required. Work started several years ago, even before Guacamole was accepted into the Apache Incubator, but I think it's finally ready to move forward. I've been using it myself for roughly a month now, and so far so good.

        Issue Links

          Activity

          Hide
          Suncatcher Suncatcher added a comment -

          But would it be implemented within SSH (as X11 forwarding) or as a standalone protocol?

          Show
          Suncatcher Suncatcher added a comment - But would it be implemented within SSH (as X11 forwarding) or as a standalone protocol?
          Hide
          mike.jumper Michael Jumper added a comment -

          Yep - session management. Thankfully, that should be independent of the development of a Guacamole X.Org driver. I'm not sure it's out of scope for the project itself, but it's definitely out of scope for the initial implementation of the driver.

          Once this is out of the way, we should definitely look into what would be necessary to layer reasonable session management on top of things.

          Show
          mike.jumper Michael Jumper added a comment - Yep - session management. Thankfully, that should be independent of the development of a Guacamole X.Org driver. I'm not sure it's out of scope for the project itself, but it's definitely out of scope for the initial implementation of the driver. Once this is out of the way, we should definitely look into what would be necessary to layer reasonable session management on top of things.
          Hide
          nick.couchman@yahoo.com Nick Couchman added a comment -

          I'm not sure if this is related to this issue or not, but alongside this, and one of the reasons that X2Go and NX are nice, is session persistence. This is currently difficult to do with VNC, as it requires that you have a specific port allocated for each user and that you somehow keep track of that port. X2Go and NX implement a back-end that keeps track of user sessions and allows disconnecting and reconnecting without losing the state of the session. This would be really nice, in addition to all of the obvious performance benefits...I'm just not sure it is within the scope of the Guacamole project itself, since that is more a function of those specific protocols (RDP, NX, X2Go, etc.).

          Show
          nick.couchman@yahoo.com Nick Couchman added a comment - I'm not sure if this is related to this issue or not, but alongside this, and one of the reasons that X2Go and NX are nice, is session persistence. This is currently difficult to do with VNC, as it requires that you have a specific port allocated for each user and that you somehow keep track of that port. X2Go and NX implement a back-end that keeps track of user sessions and allows disconnecting and reconnecting without losing the state of the session. This would be really nice, in addition to all of the obvious performance benefits...I'm just not sure it is within the scope of the Guacamole project itself, since that is more a function of those specific protocols (RDP, NX, X2Go, etc.).

            People

            • Assignee:
              mike.jumper Michael Jumper
              Reporter:
              mike.jumper Michael Jumper
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:

                Development