[Matroska-general] Matroska in closed source products

Christian HJ Wiesner chris at matroska.org
Thu Dec 4 22:48:40 CET 2003

Hauke Duden wrote:

> Hello all,
> I'm currently evaluating on whether we will include Matroska support 
> in our free - but closed source - media player (Ashampoo Media Player+).
> However, it seems that this is not possible with either of the two 
> licenses you offer for your libraries. The GPL is of course not an 
> option for closed source programs. And I'm not too familiar with the 
> QPL, but it seems to me that it also requires applications using the 
> libraries to be open-sourced.
> Please correct me if I'm wrong, but the following part of the license 
> seems to make that pretty clear:
> """
> 6. You may develop application programs, reusable components and other
> software items that link with the original or modified versions of the 
>   Software.  These items, when distributed, are subject to the 
> following    requirements:
> <snip>
>      b. You must explicitly license all recipients of your items to use
>         and re-distribute original and modified versions of the items in
>         both machine-executable and source code forms.
> <snip>
> """
> If I understand this correctly, then "items" refers to application 
> programs using the matroska libs and 6.b requires those to be open 
> source.
> However, I have seen commercial players with Matroska support. Have 
> these programs implemented their own Matroska libraries from your 
> specs or is there some aspect to this license that I don't understand?
> Thanks for any insights,
>     Hauke Duden

Hi Hauke,

thanks for your interest in supporting matroska in Ashampoo+ . You were 
reading the license right, libmatroska/libebml are currently QPL/GPL 
dual license, and both are opensource licenses that require that the 
application which includes them, either as a part of the source code or 
via statical linking, are opensource themselves.

However, you have to understand that the main reason for not giving the 
libraries away to anybody with a much weaker license form, is not 
because we dont want matroska to be supported in closed source apps, but 
because in the present situation of the project we want to have as much 
control as possible on apps that are CREATING matroska files, to avoid 
incompatibilities and frustration of the users, at least until the 
format has become widely adopted.

For playback we dont have such intentions, but its hard to split 
libmatroska and libebml in a 'read-only' version, and also this would 
make it more difficult to maintain, so we havent doen that nor do we 
have any intentions to do it. But there are a couple of workarounds we 
would like to point you to, to make sure that matroska will finally be 
supported in your product ( thats the goal ) :

1. Plugin System : The most easiest way to overcome the opensource 
problem is via a player specific 'plugin' . To achieve that, you have to 
design your player such that it supports playback plugins, and then you 
make a matroska specific plugin and release the sourcecode for the 
plugin itself as either GPL or QPL, or both. The most used 'plugin 
system' if of course Microsoft DirectShow itself, and most of the 
commercial player you saw supporting matroska, were obviously DirectShow 
based and using the opensource matroska splitter filter to support the 
basic format playback. 'The Core Media Player ( TCMP )' for example, in 
addition to the matroska DirectShow parser filter, has a so-called 'CDL' 
to be able to read more specific data like tags etc. from matroska 
files, which is not possible via DirectShow. Again, the CDL plugin 
itself is using libmatroska/libebml and is opensource, while the rest of 
the player is not. Please note that thansk to a new interface that was 
added to the matroska DirectShow parser filter by Toff, some of the more 
advanced things than just basic playback are now even possible via 
DirectShow, please PING me if you need a link to the documentation of 
the interface.

2. New C library from BBB : Ronald 'BBB' Bultje has made a new library 
in C, not C++ like libmatroska/libebml, so that maybe one day matroska 
may get supported in FFMPEG/libavformat. The license for this library is 
L-GPL, so this allows use in closed source programs also, as long as you 
make the code for the library itself available, and even via a link in 
your documentation. This code can not be found in the matroska CVS, its 
currently in the Gstreamer CVS ( http://gstreamer.net ) and used in the 
matroska plugin for gstreamer. Its currently playback only, but should 
be ideal for your purpose, even if some of the more advanced features of 
matroska are not implemented yet.

3. If 2. is no option for you, and you absolutely cant build matroska 
support based on a plugin, then as a last option we might be able to 
license you on the code. We already have such a request from another 
closed source program, and are admittedly a bit late in getting a proper 
license agreement into a written form, and signed by all developers 
involved in the making of the 2 libs.

I hope this shows you a couple of options, looking forward to hear from 
you about what option may be best for your situation.

Best regards

matroska project admin

More information about the Matroska-general mailing list