Yes, that's doable.

> On Jul 7, 2014, at 9:06 AM, Craig Ruff <[email protected]> wrote:
> 
> Can you put three button mouse emulation in the queue for the Java client?  
> Thanks. It would be nice to have a more modern X server underlying it, but at 
> the moment I'm not using any clients that require the newer features.  The 
> people doing visualization work would appreciate it though.  Unfortunately 
> NCAR is not in a position to offer funds due to budget constraints. :-(
> 
> Craig Ruff
> NCAR/CISL
> 
> 
>> On Fri, Jul 4, 2014 at 6:06 AM, DRC <[email protected]> wrote:
>> (I BCC'ed a couple of off-list people on this, so if you're receiving
>> this and you aren't on the mailing list, don't panic.)
>> 
>> I am writing this to solicit feedback from the TurboVNC user community
>> regarding a general strategy for TurboVNC 2.0.  Some issues have come to
>> light in recent months that cast doubt upon my ability to continue
>> supporting the latest & greatest Linux releases without a significant
>> upgrade to the TurboVNC X server code base.  Specifically, the following
>> problems have been identified:
>> 
>> -- Lack of an X Composite extension prevents Gnome 3 and Unity from
>> working.  Research shows that X Composite is too deeply-entwined in the
>> X server code base to make it feasible to add that extension on top of
>> the existing code.  This prevents the default window manager on many
>> modern Linux distros (including Ubuntu 13 and later, RHEL 7, Arch Linux,
>> etc.) from working with TurboVNC.
>> 
>> -- KDE Plasma seems to require XFIXES v5 (needed for the pointer
>> barriers feature.)  An earlier version of XFIXES (from Xorg 7.1) drops
>> into the TurboVNC server code easily enough, but it unfortunately is
>> insufficient to make KDE Plasma happy.  This problem prevents the mouse
>> from working properly when running KDE Plasma in TurboVNC.  KDE Plasma
>> is used in RHEL 7, Arch Linux, Kubuntu, and other recent distros.
>> Unfortunately, the pointer barrier code has some pretty deep ties to the
>> latest Xorg code (Xorg 7.7), and it can't be back-ported cleanly to our
>> existing X server code base (I spent quite a bit of time trying.)
>> 
>> -- KDE Plasma also requires a newer version of RANDR than is currently
>> implemented, and as with the new version of XFIXES, X RANDR 1.2 has deep
>> ties to the latest Xorg code and can't be back-ported cleanly into TurboVNC.
>> 
>> -- Lack of an X Keyboard extension causes problems with certain
>> applications (VMWare Workstation 10, for instance.)  It can also cause
>> key mapping issues with certain Gnome releases (although these are
>> fortunately easy to work around by setting an environment variable.)  I
>> spent quite a bit of time trying to integrate the X Keyboard Extension
>> from Xorg 7.1 into the TurboVNC X server, but to no avail.  To make it
>> interact with VNC properly is somewhat non-trivial.
>> 
>> Most of this came to light in the process of trying to bring up TurboVNC
>> on Arch Linux and RHEL 7 this week, but it also bubbled up in response
>> to a rare but unsolved issue whereby the X socket in Xvnc will
>> mysteriously shut down, leaving the TurboVNC server unable to process X
>> commands (but with the VNC server portion still running.)  This might be
>> due to a window manager crash, but after numerous hours of diagnosis on
>> a core file generated from a crashed instance, as well as extensive code
>> review and numerous failed attempts to goad the server into reproducing
>> the failure, I've had to pretty much admit defeat.  Granted, this issue
>> occurs very rarely and seems to be caused by one specific app or class
>> of apps, but it's the first X server bug in four years that has left me
>> completely clueless, and it kind of drove home the fact that I've
>> painted myself into a corner with this X server code.  What we're
>> running now is a bizarre hybrid of XFree86 3.3.x (from TightVNC 1.3.x),
>> XFree86 4 (from xf4vnc), and Xorg 7.1.  I've done things this way in an
>> attempt to maintain the stability of the X server as much as possible
>> while adding necessary extensions.  X RENDER was somewhat painful, as it
>> required hacking up the extension code from Xorg 7.1 to allow it to use
>> the older FB and MI libraries from XFree86 3 and 4.  Where this pieced
>> into the TightVNC code, I was able to use xf4vnc as a guide, but it
>> can't guide me on other extensions like X Composite.  There may be a few
>> simple X extensions that could be added, if they are ever needed, but I
>> don't think it's going to be possible to do anything else major to this
>> X server.
>> 
>> The choices are not particularly easy ones, and really they boil down to
>> two options:
>> 
>> (1) Do nothing.  TurboVNC still works fine with non-compositing WM's
>> like Xfce, and it still works fine on Ubuntu 12 LTS and RHEL 6.  Many
>> people are using it in that capacity and will continue to do so for
>> years, but I do feel like it is a huge limitation to not be able to run
>> either KDE or Gnome on the latest platforms (RHEL 7 and Ubuntu 14, in
>> particular.)  I feel like that's going to drive people away in the long
>> term, and unfortunately, TigerVNC just isn't as good for 3D apps and may
>> never be.
>> 
>> (2) Fork the TigerVNC 1.3.1 server and add the TurboVNC features that it
>> lacks -- but these features, including ALR, multithreaded encoding, and
>> other 3D- and performance-related features, were the result of hundreds
>> of hours of contract work over the last few years.  The good news is
>> that it probably won't take nearly as long to port the features as it
>> did to develop them, but it's still a significant undertaking.  The bad
>> news is that the companies who sponsored the labor are largely still
>> using older versions of Red Hat and don't really have a need for fixing
>> something that isn't broken (nor do I blame them.)  Trying to do any of
>> this work within the bounds of the TigerVNC Project is a non-starter.
>> One of the reasons why I quit that project was because their general
>> development strategy was not focused enough on performance.  On at least
>> one occasion, performance regressed significantly because the developers
>> were just trying to beautify the code, and on a couple of other
>> occasions, it regressed because they were tinkering with some parameter
>> and didn't fully test the ramifications.  I felt like I was always
>> standing guard over the inner loops, and I never could get across the
>> importance of treating performance as a measure of quality.  By virtue
>> of having done this sort of thing for nearly 20 years, I can pretty much
>> instantly tell when a code change will risk a performance regression.
>> Maybe I can't expect everyone to have that ability, but that's why I
>> tend to find it easier to work alone.  Further, the other TigerVNC
>> developers rejected the ALR and multithreaded encoding features, which
>> are critical for 3D applications.
>> 
>> As we did with the Java viewer, the idea would be basically to take a
>> reasonably stable snapshot of the TigerVNC server code and do whatever
>> work is required to clean it up, speed it up, and add the TurboVNC
>> features.  I would wrap it around a known good X.org code base (Xorg
>> 7.7, most likely) and use that as the basis for an all-new X server.  I
>> would continue to build the X server in-tree and produce a
>> self-contained Xvnc binary-- I have no interest in trying to support
>> every single X server on every single platform the way TigerVNC does.  I
>> want one X server that works everywhere.  It used to be possible to
>> accomplish that with the old TurboVNC X server, but unfortunately, the
>> Gnome and KDE developers have not made their latest window manager
>> releases particularly VNC-friendly.  Using the TigerVNC code base will
>> help, but even that isn't a panacea.  Gnome 3 on RHEL 7 and Unity on
>> Ubuntu 13 won't run in TigerVNC, either, because they now require
>> hardware 3D acceleration.  Ultimately, we are now staring down the
>> barrel of needing VirtualGL just to run the frickin' window manager.
>> 
>> Apart from compatibility, migrating to a new X server code base will
>> also give me access to additional support infrastructure.  If there is
>> an X server bug, I can actually report it to the X.org developers and
>> have some reasonable hope of them reproducing it and maybe even fixing
>> it.  Same goes for any odd VNC/X interaction issues that may surface.
>> The latest TigerVNC release has finally reached the level of maturity
>> that TurboVNC had a few years ago when we first started getting some
>> large-scale deployments, so I don't feel like it is so much of a science
>> fair project anymore.  I still do feel like the TigerVNC project, in
>> general, lacks sufficient focus on performance, a sufficient eye for
>> ease of use and ease of development, sufficient testing (or sufficient
>> transparency into the testing Cendio does as part of their product
>> releases), sufficient documentation, etc.  However, it does have some
>> enterprise-class deployments now, with sufficient numbers of people
>> banging away on it that I can be reasonably confident in its stability.
>>   So it makes sense to me to take that code and try to stabilize it
>> further, but it's going to be a painful process.
>> 
>> I really need feedback on this, and particularly, if there are any
>> organizations willing to sponsor the move, that would be awesome.  I
>> still intend to finish out the TurboVNC 1.3 release regardless.  1.3
>> will contain a fully working remote desktop resize implementation (the
>> server portion of this is already done anyhow, and the client
>> implementation will be useful regardless.)  I have funding to add
>> VeNCrypt support to the server as well, but if we end up forking
>> TigerVNC, it already supports that feature, so it wouldn't make much
>> sense to add it to TurboVNC 1.3.
>> 
>> ------------------------------------------------------------------------------
>> Open source business process management suite built on Java and Eclipse
>> Turn processes into business applications with Bonita BPM Community Edition
>> Quickly connect people, data, and systems into organized workflows
>> Winner of BOSSIE, CODIE, OW2 and Gartner awards
>> http://p.sf.net/sfu/Bonitasoft
>> _______________________________________________
>> TurboVNC-Users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/turbovnc-users
> 
> ------------------------------------------------------------------------------
> Open source business process management suite built on Java and Eclipse
> Turn processes into business applications with Bonita BPM Community Edition
> Quickly connect people, data, and systems into organized workflows
> Winner of BOSSIE, CODIE, OW2 and Gartner awards
> http://p.sf.net/sfu/Bonitasoft
> _______________________________________________
> TurboVNC-Users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/turbovnc-users
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
TurboVNC-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/turbovnc-users

Reply via email to