TL;DR - the FreeRDP API is a constantly-moving and undocumented
target. There is an effort underway to add support for the 2.0 API,
but it is difficult to convey just how enormous that task is. There is
no simple solution. It will be done eventually.

On Tue, Jan 9, 2018 at 12:40 AM, rtvnoord <helpd...@rtvnoord.nl> wrote:
> ...
> Therefore we have tried to compile Guacamole with the FreeRDP 2.0.0-rc1
> client (this FreeRDP rc1 client supports RDP v10 -> tested it succesfully on
> Ubuntu), but this unfortunately fails. Guacamole only seems to work with the
> FreeRDP 1.0.x client
>

Guacamole currently supports 1.0.x, 1.1.x, and 1.2.x. With the
exception of 2.0.x, it should build against any tagged FreeRDP release
and any stable branch with version at or after 1.0.

> The main question I have:
> 1) Is there somehow a possibility / trick to compile Guacamole with the
> FreeRDP 2.0.0-rc1 client?

No. The issue here is that there is essentially zero API compatibility
between FreeRDP releases. With the number of API-breaking changes in
2.0.x, it's become clear that it is no longer possible to directly
depend on FreeRDP without producing unmaintainably-conditional code.
We need to implement an abstraction layer between Guacamole's RDP
support and FreeRDP to isolate our codebase from this.

The issue tracking this 2.0.x support effort is:

https://issues.apache.org/jira/browse/GUACAMOLE-249

> 2) When will Guacamole support the FreeRDP 2.0.0-rc1 client? Is there a
> roadmap for Guacamole?

The best I can say is "eventually".

Maintaining compatibility with different versions of FreeRDP is
non-trivial. Things tend to change from some_arbitrary_function() to
SomeArbitraryFunction() to someThing->ArbitraryFunction(), or
someThing->staticArray to
someThing->neverMindItsDynamicallyAllocatedNow, etc. At this point,
though our configure.ac is tasked with inspecting the presence/state
of about a dozen libraries, half of its code is actually dedicated
purely to detecting the various API changes of FreeRDP:

https://github.com/apache/guacamole-server/blob/master/configure.ac#L503-L1017

This, combined with the lack of API documentation, makes adding
support for 2.0.x extremely difficult.

- Mike

Reply via email to