Discussion:
License issues for SkypeKit plugin
Daniel Muhra
2012-11-10 00:03:34 UTC
Permalink
Hi,

I developed a SkypeKit plugin for Adium that I wanted to release on AdiumXtras. Unfortunately it was rejected with the remark, that SkypeKit's license would not allow it to use it within an open source product. Apparently the cited paragraph would be the following:

10.1.5.
No portion of the SkypeKit Product contains or shall contain any Open Source Software or any other software that could interfere with or compromise Skype's Intellectual Property Rights in the SkypeKit or which may require you or Skype to disclose any source code included in the SkypeKit.

From my understanding, this does not imply Open Source Software in general, but only those, which would e.g. force you to provide the source code for the SkypeKit library. My code uses the MIT license so I see no implication for the SkypeKit library and thereby I should be safe.
The only part I have doubts about is the fact, that my plugin uses SkypeKit and since Adium uses the GPL, Adium plugins need to be fully GPL compatible too. I'm not really sure what this means in terms of dependencies, but on the other hand, Adium itself is based on Cocoa which is definitely not using a GPL compatible license...

Has anyone here any thoughts on this (including some explanation)?

Cheers,
Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20121110/cc4c0f51/attachment.html>
David Smith
2012-11-10 00:16:22 UTC
Permalink
I am also not a lawyer, but my understanding is that the GPL specifically exempts system libraries, with the intent of allowing open source software to run on closed source or partially closed source OSs. Things linking against Adium are, for better or worse, required to be GPL-licensed.

David
Post by Daniel Muhra
Hi,
10.1.5.
No portion of the SkypeKit Product contains or shall contain any Open Source Software or any other software that could interfere with or compromise Skype's Intellectual Property Rights in the SkypeKit or which may require you or Skype to disclose any source code included in the SkypeKit.
From my understanding, this does not imply Open Source Software in general, but only those, which would e.g. force you to provide the source code for the SkypeKit library. My code uses the MIT license so I see no implication for the SkypeKit library and thereby I should be safe.
The only part I have doubts about is the fact, that my plugin uses SkypeKit and since Adium uses the GPL, Adium plugins need to be fully GPL compatible too. I'm not really sure what this means in terms of dependencies, but on the other hand, Adium itself is based on Cocoa which is definitely not using a GPL compatible license...
Has anyone here any thoughts on this (including some explanation)?
Cheers,
Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20121109/16f89cb4/attachment.html>
Graham Booker
2012-11-10 01:09:24 UTC
Permalink
Plugins need not be strictly GPL, but they must be GPL compatible: http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins

It looks like there is no issue with you making a plugin that is MIT licensed, so long as the GPL is followed in distribution (such as making the source code available). The question is that of the library. The license quoted below states that "no portion of the product shall contain any Open Source Software?." I read this as no part of the product can be open source. While I would assert that this is a stupid requirement, it seems to mean that your MIT licensed code cannot be part of the product. If the intent of the license was what you believe, then leaving out the Open Source Software portion will still achieve it.

Now there is a way around this that can work. You split the plugin into two parts. One links with Adium as a plugin, and it is under a GPL compatible license. The second is not open source (to satisfy the SkypeKit license only), and links with the library. The first launches the second as a separate program via fork/exec. The two communicate over a socket protocol, pipe, or some other means. You may be able to use Distributed Objects, but that's a bit of a grey area. Technically it is RPC and not sharing of objects, so it should be fine. Communication between two programs over a socket or pipe is one of the recommended means of getting around this restriction, so going that route should have no issues.

Yes, this is a royal pain, but this is the price imposed by the GPL. This demonstrates exactly why we went through all the trouble to relicense Perian as LGPL in it's early stages (by getting everyone's approval to do so and by compiling FFmpeg without enabling GPL code).
Post by David Smith
I am also not a lawyer, but my understanding is that the GPL specifically exempts system libraries, with the intent of allowing open source software to run on closed source or partially closed source OSs. Things linking against Adium are, for better or worse, required to be GPL-licensed.
David
Post by Daniel Muhra
Hi,
10.1.5.
No portion of the SkypeKit Product contains or shall contain any Open Source Software or any other software that could interfere with or compromise Skype's Intellectual Property Rights in the SkypeKit or which may require you or Skype to disclose any source code included in the SkypeKit.
From my understanding, this does not imply Open Source Software in general, but only those, which would e.g. force you to provide the source code for the SkypeKit library. My code uses the MIT license so I see no implication for the SkypeKit library and thereby I should be safe.
The only part I have doubts about is the fact, that my plugin uses SkypeKit and since Adium uses the GPL, Adium plugins need to be fully GPL compatible too. I'm not really sure what this means in terms of dependencies, but on the other hand, Adium itself is based on Cocoa which is definitely not using a GPL compatible license...
Has anyone here any thoughts on this (including some explanation)?
Cheers,
Daniel
- Graham


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20121109/f01de11d/attachment-0001.html>
John Bailey
2012-11-10 00:27:30 UTC
Permalink
On 11/09/2012 07:03 PM, Daniel Muhra wrote:
<snip>
Post by Daniel Muhra
10.1.5.
No portion of the SkypeKit Product contains or shall contain any Open Source
Software or any other software that could interfere with or compromise Skype's
Intellectual Property Rights in the SkypeKit or which may require you or Skype
to disclose any source code included in the SkypeKit.
From my understanding, this does not imply Open Source Software in general, but
only those, which would e.g. force you to provide the source code for the
SkypeKit library. My code uses the MIT license so I see no implication for the
SkypeKit library and thereby I should be safe.
The only part I have doubts about is the fact, that my plugin uses SkypeKit and
since Adium uses the GPL, Adium plugins need to be fully GPL compatible too. I'm
not really sure what this means in terms of dependencies, but on the other hand,
Adium itself is based on Cocoa which is definitely not using a GPL compatible
license...
Has anyone here any thoughts on this (including some explanation)?
It's quite simple, actually. Since Adium is GPL, and plugins are loaded into
Adium (i.e. not a separate process), the entire in-memory blob of executable
code becomes GPL in effect, regardless of what license you place your source
code under. Linking with SkypeKit would cause that library to be loaded into
the same process, therefore making SkypeKit code GPL at runtime. Not only does
this explicitly violate the SkypeKit license section you quote, some smart
lawyer could find a way to use that "it's GPL in memory!" argument to force
Microsoft to release SkypeKit source code, and depending on how it interacts
with Skype, potentially even Skype's source code. Obviously, Microsoft isn't
going to be very happy about this. Additionally, the MIT License is still an
Open Source license--it's even certified as such. So is BSD. So are a crapton
of other licenses. Therefore any license which allows source code distribution
will violate the SkypeKit license. It's going to be extremely difficult--in
fact, impossible--to make an Adium plugin that is not Open Source.

As far as Adium using Cocoa, Cocoa is exempt because it's a core system
component--it's not possible to have an OS X machine without that component.
Core system components are specifically exempted from falling under the GPL.

Now, theoretically it could be possible to get a GPL exemption for this, but
you'd also have to get an exemption from libpurple's developers and the
developers of all libpurple dependencies Adium uses. This is a non-starter,
because as a developer (and therefore copyright holder) of libpurple, I refuse
to grant GPL exceptions for any purpose. Even if you could get the exemption,
however, you would *still* be in violation of the SkypeKit license.

The bottom line here is it's impossible to develop an Adium plugin that can use
SkypeKit within the terms of SkypeKit's license, and the Adium guys are doing
the right thing by rejecting any plugin that uses SkypeKit.

John

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20121109/f5710f49/attachment.bin>
Daniel Muhra
2012-11-10 11:17:23 UTC
Permalink
Hi John,

Thanks for the details. I didn't know about the exception for core component libraries like Cocoa, but essentially that was probably the part, that got me so confused about it in the first place.
Don't get me wrong, I really agree with the basic principles of The GPL, but from a Users point of view I still find the situation quite unsatisfactory (Unfortunately I heavily rely on Skype, but the Skype client on Mac REALLY sucks).

Anyhow, so the only solution for this case would be to pack all SkypeKit related stuff into a separate application and write a (GPL compatible) Adium plugin that uses IPC techniques to communicate with it.
Doesn't sound very elegant from a development perspective, but at least that should comply with the GPL, right?

Best,
Daniel
Post by John Bailey
<snip>
Post by Daniel Muhra
10.1.5.
No portion of the SkypeKit Product contains or shall contain any Open Source
Software or any other software that could interfere with or compromise Skype's
Intellectual Property Rights in the SkypeKit or which may require you or Skype
to disclose any source code included in the SkypeKit.
From my understanding, this does not imply Open Source Software in general, but
only those, which would e.g. force you to provide the source code for the
SkypeKit library. My code uses the MIT license so I see no implication for the
SkypeKit library and thereby I should be safe.
The only part I have doubts about is the fact, that my plugin uses SkypeKit and
since Adium uses the GPL, Adium plugins need to be fully GPL compatible too. I'm
not really sure what this means in terms of dependencies, but on the other hand,
Adium itself is based on Cocoa which is definitely not using a GPL compatible
license...
Has anyone here any thoughts on this (including some explanation)?
It's quite simple, actually. Since Adium is GPL, and plugins are loaded into
Adium (i.e. not a separate process), the entire in-memory blob of executable
code becomes GPL in effect, regardless of what license you place your source
code under. Linking with SkypeKit would cause that library to be loaded into
the same process, therefore making SkypeKit code GPL at runtime. Not only does
this explicitly violate the SkypeKit license section you quote, some smart
lawyer could find a way to use that "it's GPL in memory!" argument to force
Microsoft to release SkypeKit source code, and depending on how it interacts
with Skype, potentially even Skype's source code. Obviously, Microsoft isn't
going to be very happy about this. Additionally, the MIT License is still an
Open Source license--it's even certified as such. So is BSD. So are a crapton
of other licenses. Therefore any license which allows source code distribution
will violate the SkypeKit license. It's going to be extremely difficult--in
fact, impossible--to make an Adium plugin that is not Open Source.
As far as Adium using Cocoa, Cocoa is exempt because it's a core system
component--it's not possible to have an OS X machine without that component.
Core system components are specifically exempted from falling under the GPL.
Now, theoretically it could be possible to get a GPL exemption for this, but
you'd also have to get an exemption from libpurple's developers and the
developers of all libpurple dependencies Adium uses. This is a non-starter,
because as a developer (and therefore copyright holder) of libpurple, I refuse
to grant GPL exceptions for any purpose. Even if you could get the exemption,
however, you would *still* be in violation of the SkypeKit license.
The bottom line here is it's impossible to develop an Adium plugin that can use
SkypeKit within the terms of SkypeKit's license, and the Adium guys are doing
the right thing by rejecting any plugin that uses SkypeKit.
John
Andreas Monitzer
2012-11-10 18:01:56 UTC
Permalink
Post by Daniel Muhra
Don't get me wrong, I really agree with the basic principles of The GPL, but from a Users point of view I still find the situation quite unsatisfactory (Unfortunately I heavily rely on Skype, but the Skype client on Mac REALLY sucks).
Agreed (on all points).
Post by Daniel Muhra
Anyhow, so the only solution for this case would be to pack all SkypeKit related stuff into a separate application and write a (GPL compatible) Adium plugin that uses IPC techniques to communicate with it.
Doesn't sound very elegant from a development perspective, but at least that should comply with the GPL, right?
Yes, and Apple's XPC stuff is very well suited for this kind of thing (but 10.7+ only).

Regards,
Andreas Monitzer
Peter Hosey
2012-11-10 19:26:11 UTC
Permalink
Post by Andreas Monitzer
Post by Daniel Muhra
Don't get me wrong, I really agree with the basic principles of The GPL, but from a Users point of view I still find the situation quite unsatisfactory (Unfortunately I heavily rely on Skype, but the Skype client on Mac REALLY sucks).
Agreed (on all points).
At the risk of veering off-topic, the pre-suckage 2.8 version is still available:

http://www.skype.com/intl/en/get-skype/on-your-computer/macosx/2-8/

I love the tagline: ?Improve your Skype experience with this version of Skype for Mac.?
John Bailey
2012-11-11 01:59:20 UTC
Permalink
Post by Daniel Muhra
Anyhow, so the only solution for this case would be to pack all SkypeKit related stuff into a separate application and write a (GPL compatible) Adium plugin that uses IPC techniques to communicate with it.
Doesn't sound very elegant from a development perspective, but at least that should comply with the GPL, right?
It also sounds like you'd have to be very careful with making sure your separate
application remains a completely separate product to ensure compliance with the
SkypeKit license.

John

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20121110/586afd88/attachment.bin>
Thijs Alkemade
2012-11-11 10:43:42 UTC
Permalink
Post by John Bailey
Post by Daniel Muhra
Anyhow, so the only solution for this case would be to pack all
SkypeKit related stuff into a separate application and write a (GPL
compatible) Adium plugin that uses IPC techniques to communicate with it.
Post by John Bailey
Post by Daniel Muhra
Doesn't sound very elegant from a development perspective, but at least
that should comply with the GPL, right?
Post by John Bailey
It also sounds like you'd have to be very careful with making sure your separate
application remains a completely separate product to ensure compliance with the
SkypeKit license.
John
I think you could do this, and also save yourself a lot of work, by writing
it as a proxy for a protocol Adium already supports, like XMPP.
Any functions you want for Skype but don't have on XMPP would be an ad-hoc
command or data form (audio chats might also work by simply having the
proxy application do the audio input and output, but for video I have no
idea).

I also have no idea wether the SkypeKit license actually allows this, or if
it's been done before. Spectrum 2 seems to support Skype, but that's using
the linux GUI client. So you'd have to read the license carefully. But
you're using a standardized protocol to communicate with Adium, so it's
easier to argue that they are different "products".

Good luck,

Thijs Alkemade
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20121111/7fea1f97/attachment.html>
Joe Hildebrand (jhildebr)
2012-11-11 16:12:24 UTC
Permalink
If you were to build that by putting it into an XMPP server, it would be
what we used to call a "transport", and other clients would be able to use
it also. You typically write a transport as a standalone program that
communicates to the XMPP server via XEP-0114
(http://xmpp.org/extensions/xep-0114.html) and knows about XEP-0100
(http://xmpp.org/extensions/xep-0100.html).
Post by Thijs Alkemade
Post by Daniel Muhra
Post by Daniel Muhra
Anyhow, so the only solution for this case would be to pack all
SkypeKit related stuff into a separate application and write a (GPL
compatible) Adium plugin that uses IPC techniques to communicate with it.
Post by Daniel Muhra
Doesn't sound very elegant from a development perspective, but at
least that should comply with the GPL, right?
It also sounds like you'd have to be very careful with making sure your
separate
application remains a completely separate product to ensure compliance
with the
SkypeKit license.
John
I think you could do this, and also save yourself a lot of work, by
writing it as a proxy for a protocol Adium already supports, like XMPP.
Any functions you want for Skype but don't have on XMPP would be an
ad-hoc command or data form (audio chats might also work by simply having
the proxy application do the audio input and output, but for video I have
no idea).
I also have no idea wether the SkypeKit license actually allows this, or
if it's been done before. Spectrum 2 seems to support Skype, but that's
using the linux GUI client. So you'd have to read the license carefully.
But you're using a standardized protocol
to communicate with Adium, so it's easier to argue that they are
different "products".
Good luck,
Thijs Alkemade
--
Joe Hildebrand
Thijs Alkemade
2012-11-11 18:11:06 UTC
Permalink
Yeah, I'm aware of that, but from what I've heard about the SkypeKit
license (I don't have it myself, and I'm not a lawyer), it explicitly
forbids one instance of a "product" from signing multiple accounts
into Skype and also forbids "Server Applications".

About SkypeKit in general, I'd really like Adium to officially support
Skype, but SkypeKit is just not it. It sounds a legal minefield. Even
if we would find a weird multi-process way to not violate the SkypeKit
license and the GPL, their API uses developer keys they can revoke
whenever they feel like it. If their lawyers decide they don't like
our legal trick they can block us in a second, with nothing to fall
back on.

Thijs

On Sun, Nov 11, 2012 at 5:12 PM, Joe Hildebrand (jhildebr)
Post by Joe Hildebrand (jhildebr)
If you were to build that by putting it into an XMPP server, it would be
what we used to call a "transport", and other clients would be able to use
it also. You typically write a transport as a standalone program that
communicates to the XMPP server via XEP-0114
(http://xmpp.org/extensions/xep-0114.html) and knows about XEP-0100
(http://xmpp.org/extensions/xep-0100.html).
Post by Thijs Alkemade
Post by Daniel Muhra
Post by Daniel Muhra
Anyhow, so the only solution for this case would be to pack all
SkypeKit related stuff into a separate application and write a (GPL
compatible) Adium plugin that uses IPC techniques to communicate with it.
Post by Daniel Muhra
Doesn't sound very elegant from a development perspective, but at
least that should comply with the GPL, right?
It also sounds like you'd have to be very careful with making sure your separate
application remains a completely separate product to ensure compliance with the
SkypeKit license.
John
I think you could do this, and also save yourself a lot of work, by
writing it as a proxy for a protocol Adium already supports, like XMPP.
Any functions you want for Skype but don't have on XMPP would be an
ad-hoc command or data form (audio chats might also work by simply having
the proxy application do the audio input and output, but for video I have
no idea).
I also have no idea wether the SkypeKit license actually allows this, or
if it's been done before. Spectrum 2 seems to support Skype, but that's
using the linux GUI client. So you'd have to read the license carefully.
But you're using a standardized protocol
to communicate with Adium, so it's easier to argue that they are
different "products".
Good luck,
Thijs Alkemade
--
Joe Hildebrand
Loading...