Under The Microscope

Mea Culpa

Early this morning, it was brought to our attention that Airfoil Speakers for Linux and Airfoil Speakers for Windows both contained a small portion of GPL-licensed code. If you’re not aware, the GPL is a license for open source code, and using GPL code in a closed-source project is a violation of that license. So, having GPL-licensed code in these versions of Airfoil Speakers was a big no-no. What happened here?

Simply put, we screwed up. A 16-line wrapper written by Jon Lech Johanson to access a system API on Windows was being used in Airfoil Speakers, in violation of the GPL. David, the programmer behind Airfoil for Windows, had used the code while making an internal prototype. When he built the official Airfoil Speakers for Windows, he mistakingly reused this code.

We immediately worked to correct this issue. While this was a minor oversight that involved only a few lines of code that were removed right away, violating the GPL is a crummy thing to do in general. These violations happen frequently and sometimes maliciously. We’ve no desire to be lumped in with anyone intentionally stealing code. So, the downloads for Airfoil Speakers for Linux and Airfoil Speakers for Windows were both updated earlier today, just as soon as the offending code was removed. You can grab the latest versions from those links.

To be sure, open source software can be great. We make use of some LGPL’ed libraries (for Audio Hijack Pro and Nicecast) as well as some BSD/MIT-licensed code (as in Airfoil Speakers for Mac). When we use this source, we correctly acknowledge it in our documentation and give back when we can (See our mirror for instance). Our commercial software is closed source, however, and as such, it must remain GPL-free. Hopefully this public apology as well as our speedy fix will prevent any ill-will.

11 Responses to “Mea Culpa”

  1. Steve says:

    So when will you be releasing the source code for those versions of Airfoil Speakers which do have GPL code? Regardless of the fact that you have new versions out now, you *did* release with GPL code. Or are you stating that you intend to violate the GPL by not releasing it?

  2. Paul Ward says:

    I don’t think anyone can find fault in doing the right thing. While some might call on you guys to open your source, that’s not really a viable option for an ISV like you, so fessing up and removing the GPL code is definitely the right thing to do.

  3. Paul Ward says:

    @Steve: The GPL only requires you to release code for GPL software that you’re distributing. If there’s no GPL code in your binary, you don’t have to release the code. Since RA stopped distributing Airfoil after discovering the violation and taking corrective action, wait, why am I bothering to explain this? Stop being a jackass and go read the GPL yourself.

  4. Dave M. says:

    Well said Paul! :)

  5. Jon Lech Johansen says:

    Like Paul said, Rogue Amoeba is not required to release the source code if they are no longer distributing any GPL’ed code. That anyone would be forced to do so is a common misconception, one that is perpetuated by people with an anti-open source agenda (“Open Source is a cancer that will doom your proprietary product if GPL’ed code finds its way into it”).

    Thanks Quentin and Rogue Amoeba for the prompt resolution of this matter.

  6. Steven Fisher says:

    I think it’s equal parts people with an anti-open source agenda and open source proponents with no grasp on reality. Glad to hear neither of the primaries involved in this one has any such agenda.

  7. Quentin Smith says:

    Section 3 of the GPL v2 covers when source code must be distributed:

    “3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)”

    Subsection c does not apply because RA is commercial. Subsection a does not apply because they did not include source code with the download. Therefore, subsection b applies – RA must, “for at least three years”, give the source code out to “any third party”. In a practical sense, this offer only actually applies for those people who download the binary from RA, because those are the people who have a license with RA.

    Or, RA could say they do not agree to the GPL and suffer the results of their copyright infringement. It sounds like that’s what they’re doing here.

    –Quentin (not RA’s Quentin)

  8. Paul says:

    Also, “Paul Ward” is not Rogue Amoeba’s Paul, though he’s echoing most of my thinking 8).

    Anyhow, as noted, this was cleared up quickly, and we took the proper steps to fix the issue. The idea that the GPL can be used as some sort of “Gotcha!”, where if you ever use it you’re suddenly forced to open all your source, is both wrong and ridiculous.

  9. Anonymous says:

    You are mistaken.

    Kindly point out the section in GPLv2 that absolves you of copyright infringement for the copies that you distributed.

    It is certainly true that you cannot be forced to open source your code but you nonetheless have no distribution license if you do not comply with the GPL and have thus committed copyright infringement.

    (GPLv3 has a grace period where you can come into compliance.)

  10. Paul says:

    Anonymous: I’m not sure what your point is, nor where anyone is “mistaken”. Yes, there was copyright infringement, we admitted as much.

    When we learned of this, we immediately rectified the situation, by removing the infringing code. As you can see from the comment above your own (as well as his own site), the copyright holder, Jon Lech Johansen, is quite satisfied. Thus, the matter is resolved.

  11. Todd says:

    So, basically, the copyright holder is cool with how you handled it, right? Cool. End of story.

    Now back off you GPL wolves. Sheesh. In fact, you even mention that there’s a grace period in GPLv3. But that matters not since the copyright holder has basically said “no harm no foul.”

    Stop being so harsh, Anon. Sheesh.

Comments for this post have been closed. Thanks for reading!

Our Software