[Gtk-sharp-list] Solve duplicate Cairo# library bindings issue

Bertrand Lorentz bertrand.lorentz at gmail.com
Thu Oct 2 20:05:40 UTC 2014


Sorry for not replying earlier, I did file this under "need to think about
it" but then...

>From what I know, cairo-sharp was only included in gtk-sharp for the case
when Mono.Cairo is not available [1]. Which means when building or using
gtk-sharp with the .NET Framework, so on Windows. I guess nobody wants to
build the whole of mono just to get a single assembly.

>From what I saw in the git history, up until work on GTK+ 3 started, the
API of the 2 code bases were aligned, and code was copied liberally from
one to another. Then, when Mike Kestner started working on binding GTK+ 3,
he needed new API from cairo 1.10, which he added in cairo sharp.
Later, that API got merged into Mono.Cairo, and it should be available in
mono 3.8.0.

I've been working on making gtk-sharp default on using Mono.Cairo if mono
>= 3.8 is available, but I haven't had the time to finish that yet.

My position right now is that any changes should go to Mono.Cairo first,
and then be copied into cairo-sharp.

I'd have no objection to spinning off cairo-sharp in it's own git repo. But
I won't be able to maintain it.
For gtk-sharp we just need an easy way to get cairo bindings on Windows,
either through a git submodule, or an external dependency.
So I guess this depends on the opinion of the Mono team. Have you contacted
them about this (other than the bug ) ?

I'm not sure there's any relicensing of cairo-sharp needed: although the
whole of gtk-sharp is indicated as licensed under the LGPL, all the .cs
files under cairo/ appear to have an MIT/X11 header. And those files
originate from Mono.Cairo anyways.
In addition, the Debian copyright file for gtk-sharp 2.99.3  [2] also
states cairo/* is MIT/X11, and those guys know their licensing.

I hope this helps,


[1] See the initial commit at


On Tue, Sep 30, 2014 at 7:45 AM, Antonius Riha <antoniusriha at gmail.com>

> Hash: SHA1
> Does no one have an opinion on this?
> On 2014-09-14 13:02, Antonius Riha wrote:
> > Hi gtk-sharp community, I'm currently looking into the issue that
> > the cairo library binding code exists in 2 different places: Once
> > in the gtk-sharp repository and the second time in the class
> > libraries of the mono repository. In my opinion, the 2 code bases
> > are very similar and should be merged and put into a separate
> > repository. I've filed 2 bugs with the respective components, see
> > [1] and [2] for details.
> >
> > Since the cairo bindings are not distributed as a standalone
> > package (but with gtk-sharp and mono), an eventual new cairo-sharp
> > git repository should only be used as a simple source code
> > container with a minimal MSBuild build infrastructure for
> > development. This repository can be included in gtk-sharp and mono
> > as git submodule. Since its not a package per se, it doesn't make
> > sense to set up an autotools build system, which would just add to
> > the repo overhead.
> >
> > There are some issues with this task. Primarily, the two libraries
> > are licensed differently: The mono version it licensed as MIT/X11,
> > whereas the gtk-sharp version is under LGPLv2. For merging the
> > code, it would be best, if both had the same license. Since the
> > mono class libraries are distributed as MIT/X11, I would suggest to
> > attempt to relicense the Cairo# portion of the gtk-sharp repository
> > as MIT/X11.[3]
> >
> > My questions to he community are: * Are there any other opinions
> > about this issue, or whether this is actually an issue? * Which
> > would be the necessary steps to relicense the Cairo# protion of the
> > code as MIT/X11?
> >
> > - antonius
> >
> >
> > [1] https://bugzilla.xamarin.com/show_bug.cgi?id=22975
> >
> > [2] https://bugzilla.xamarin.com/show_bug.cgi?id=22976
> >
> > [3] About the gtk-sharp package license: Since (to my knowledge)
> > you can relicense MIT/X11 code as LGPLv2 without consent of the
> > code owners (but not the other way around), I think it would be no
> > problem to put the entire package (including the imported submodule
> > Cairo#) under LGPLv2. (Note though that IANAL.)
> >
> Version: GnuPG v1
> ypLSBh91okOvLKaaSQXA9hTLGWlGXn0QlZGwx80AfzsANTEGsfHw+EVQ00QiN2oW
> BDoqqBk61pAQlTbglfT5ynLxHCQqpNvoupqsqU+nJ/8aegtu+mAjznDbQAKy6XI4
> QOEVsqkrMPT40eB/tklgjezMZklZM17LS6YV/RzpRAkZHbmDhK/N5ZVoTFqLXChw
> sNxacqnmU9fuqQesOtKED40AxTyYsXFeBRntM6jrWmUSpEWxaV1sQeiiNN8tegU+
> DT/foP9JhRY1zE0NXq3W+k0MfNoG3r+kpUNZ87nuMaubXKGlopj6NuPY+iFz7lU=
> =Y5Vb
> _______________________________________________
> Gtk-sharp-list maillist  -  Gtk-sharp-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/gtk-sharp-list/attachments/20141002/69b69410/attachment.html>

More information about the Gtk-sharp-list mailing list