Slashdot Mirror


LGPL or BSD-Style License for Media Codecs?

Josh Coalson asks: "I am the author of FLAC, an open-source lossless audio codec. The core of the project is a reference encoder/decoder library currently licensed under the LGPL. As the format grows more popular I am being been approached by third parties about implementation in proprietary hardware systems. This is natural and I don't have anything against it, but several people are voicing concerns that the LGPL is too strict for use in embedded systems. I want the codec to remain Free, but then again, wide adoption of a format makes it more useful to all users."

"More specifically, the nature of many embedded systems force them to be bound by the stringent requirements of Section 6 the LGPL. In some cases, dynamic linkage is not possible, ruling out 6(b), or causing the terms of the FLAC library to come into conflict with other proprietary libraries. In other cases, it simply is not possible to provide an environment, according to 6(a), where the user can re-link with a different copy of the library.

What are my options? I could stick to my guns, which might limit the adoption of the format, or change the license. I know Vorbis uses the BSD license, but I feel strongly about modifications that are useful for others going back into the free code base. Perhaps there is another middle-ground license that could preserve the Freedom of the code in these cases? Or maybe I am not interpreting the verbiage of the LGPL correctly? Can't I have my cake and eat it too?"

12 of 203 comments (clear)

  1. Oh don't worry about licensing... by tswinzig · · Score: 5, Interesting

    If the people really like your media format, they will just use it however they like, even if its patented.

    Just look at MP3.

    Now for a more serious answer... Why don't you just re-license it to specific companies that you want to see use it? Maybe even for a re-licensing fee, so that you can make some money off your open source software.

    --

    "And like that ... he's gone."
  2. If the code is yours... by Molech · · Score: 5, Informative

    IANAL, This may have been said already, but if the code is all yours(or if contributors have signed over the copyright), its yours to do with as you see fit. That includes relicensing(maybe for a fee, maybe not) with companies doing embedded systems. Now what gets sticky is if you have accepted patches not written by you, then you are bound by LGPL on that code, and thus can't do that, but if all the code is yours go for it.

    1. Re:If the code is yours... by renehollan · · Score: 5, Insightful
      If there is a free version, and your code is useful (and flac looks like it is), you will get patches. It would be a pain to not be able to include them in the non-free version if only because of the maintenance difficulties that a license-based fork would cause.

      Of course, contributers could agree to let their contributions be dual-licensed as well, but it strikes me as unfair that you'd get paid by proprietary licensees for those contributions and the contributors get nothing. This would discourage dual-licensed contributions and lead to a license-based fork soon enough. This would be less of a problem, I suppose, if you received no compensation from proprietary licenses, but that would be unfair for you.

      There is a way out, though, that would (I think) let you GPL the code, and still be able to use it in proprietary products, but it is one hell of a kludge, and relies on a fair amount of trampoline code.

      The GPL requires all statically, and depending on who you ask, dynamically (RMS, of course, says "yes, dynamically too" [my paraphrase]), linked code to be GPL if the result is distributed (an exception is made for libraries normally provided with the O/S, but what is O/S and what is app gets sticky in an embedded environment). However, non-complex communication with non-GPL code via pipes or sockets is O.K. "Non-complex" here is a matter of interpretation, but a classic server or filter utility is generally fine.

      It strikes me that a codec can be interpreted as a filter, or simple server, in a loop-backed TCP/IP networked environment, so this could work. Is this overkill? Sure, but it would avoid the licensing issue completely: embedded systems could just ship with the source. I suppose that even that would not be necessary if the system were ordered on-line -- then an FTP server would suffice.

      From a technical standpoint, this does introduce a lot of pressure on the embedded side: you need a whole TCP/IP stack and ROM and RAM tend to be precious in such systems. The overhead of packetizing and unpacketizing will require a bit of a beefier CPU to boot. I tend to think that even the smallest embedded systems today could handle that, but it is a concern. Of course, the network type the sockets use doesn't have to be AF_INET, permitting some short-cuts.

      As a bonus, the pipe- or socket-based codec would be useful in a processing stream on non-embedded systems -- if you provided a traditional library instead, someone would quickly write such a filter (in the Unix sense, not the audio sense) app anyway.

      --
      You could've hired me.
    2. Re:If the code is yours... by bfree · · Score: 4, Insightful

      Traditional Flamebait, traditional response :-)

      The problem with the BSD approach of "people should be free" is that it gives people the freedom to destroy the work upon which they are building. What if MS had realised early enough that the Internet was the Next Big Thing and had incorporated the BSD TCP-IP stack in from Dos 3 (for example) but they had modified it slightly so you could work on the MSNet or the Internet? Who would have won the war? Would the net have split? It seems ridiculous now, but then it could have been fiery if they had done early enough!

      The GPL is far more than a BSD licence, it imposes a simple (in theory and concept but maybe not practice yet) set of rules which say that anyone who receives the work under it cannot undermine the project by releasing closed incompatible versions. What if MS now pick up Ogg Vorbis and use a minorly modified but incompatible version for their prefered audio format from now on? These new users will be orphans from the existing user base, benefiting from its work, but unable to benefit from the Freedom they would have had were it still GPL. So BSD does not make people free past one generation (each BSD receiver is free to do what they want, but their users are not free) whereas the GPL makes the software Free and all the users free, the developers are as Free as is possible while preventing them from having the opportunity of reverting some of the benefits of the Freedoms the GPL is designed to uphold.

      --

      Never underestimate the dark side of the Source

  3. Ogg Vorbis Example by jeriqo · · Score: 5, Informative

    Maybe you should use both licenses, like OggVorbis did.
    The bundled OggVorbis utility software is released under the terms of the GNU GPL, and, the libraries and SDKs are released under the more business friendly BSD license.

    Note that developers are still free to use the specification to independently write closed-source implementations of OggVorbis which are not bound by these licenses.

    --
    Alexis 'jeriqo' BRET
  4. BSD won't let you sofware free. by famazza · · Score: 4, Insightful

    By using BSD-type license you let your code to every software house uses it as they want. It can even release a version using your "free" code using a non-free license.

    Perhaps as you said LGPL will be very restrive for embedded systems, you are almost right, there's no how to recompile embedded software.

    I think you have 3 choices. Fork LGPL and build your own version with a special paragraph for embedded systems. Build a special version of your library with another license.

    Or you can ask every potencial "user" (the library user is the programmer/projectist) to find a way to easily update the firmware and allow the user to compile it.

    I think that the second option is the best, but you can choose. :o)

    --

    -=-=-=-=
    I know life isn't fair, but why can't it ever be un-fair in MY favor!?
  5. LGPL. Absolutely. by DG · · Score: 4, Informative

    Any piece of software, in order to be forever useful, needs three essential freedoms:

    1) Universal availibility of source

    2) Freedom to modify that source

    3) Freedom to redistribute that modified source, under any terms you (as the modifier) wish, as long as those terms do not infringe any of these three freedoms.

    Lose any of these Three Freedoms, and the project is irrevocably harmed.

    Using a "looser" licence may help the adoption rate, initially, but you run the signifigant risk of having one of these adopters modify the code and refuse to fold those modifications back into the main tree. Once you have done that, then the project has forked, and it's whole purpose (a common standard that is sure to work anywhere) has been compromised.

    Far better that the adoption rate be slower, if by doing so it ensures universal compatibility and the retention of the project's Freedom.

    Go with the LGPL. The leading "L" allows those who would use your library to remain proprietary, if they so choose (ie, the use of your library does not force the GPL on them - the freedom to choose not to adopt the GPL at project start is important too) but ensures that the library itself remains Free and useful.

    Good luck!

    --
    Want to learn about race cars? Read my Book
  6. use the BSD license by TheGratefulNet · · Score: 5, Interesting
    speaking as a software developer who works on embedded systems (routers, in my case), there's just NO WAY we'd ever touch anything that wasn't BSD. in all the jobs I've had that used any form of unix in our product, it either was BSD style licensing or it was ignored by us.

    the legal issues are just not worth messing with. case in point - we've had to go out of our way to NOT use libreadline since its so 'hardline' on being GPL. it would be great to be able to use it, but we fear having to release our own code just due to the overzealousness of GPL when it comes to touching our own proprietary code.

    I can say for sure, if you care about getting your code in shipping commercial products, consider BSD licensing. be aware that there's nothing forcing a company to pay or even ask you if they can use it, then. otoh, even when we were willing to compensate the readline author, he didn't want to consider any other licensing scheme, so we 'walked away' and had to find another lib to solve our problem.

    GPL is a total mess when it comes to a commercial company that wants to ship a product without fear of being told it has to release ALL its code (even its local home-grown code).

    I'm a major linux fan. I like the idea of opensource. but I also have to work for a living and that means writing software that will be owned by the company and never ever given out. there IS a balance - and GPL ain't it.

    --

    --
    "It is now safe to switch off your computer."
  7. First, what are your goals? by Per+Abrahamsen · · Score: 4, Informative
    There is no right license for all purposes, it all depends on your goals.

    In this case, if you find it acceptable that people make changes to your code and distribute the result without sharing them, use the (new) , it is small, simple and give you the minimal legal protection against getting sued.

    If not, I suggest the MPL/GPL/LGPL tripple license used by Mozilla for new code (actually the GPL part is unnecesary, but it is safest to use the text pointed to by the link, since it has been proffread by lawyers). The MPL part will make it useful for embedded and most other purposes, the (L)GPL for use in (L)GPL projects, and it still means changes to your files will be made public.

  8. Very good Idea by Srin+Tuar · · Score: 5, Insightful


    Charge them a reasonable one-time relicensing fee that gives them an non-exclusive unlimited license to the code base with the exception that they may not patent any algorithms derived from the codebase. Also make sure the price is reasonable and small.


    You can keep the main release LGPL, and anytime you take on a new code contributor ask them to agree to a release saying that FLAC may be privately relicensed upon those specific terms above and that all proceeds will go towards the development of FLAC.


    So you can eat your cake and have it too. And if the company comes back wanting a license to a more recent version of the code- which has been evolving with LGPL contributions, then they can pay another one-time relicensing fee (a form of recurring funding if development keeps up)


    Now this probably wont get you as wide distribution as a BSD license, because of the small hassle, but its the next best thing if you want to keep your copyleft. And your guaranteed to get compensated by anyone who wants to develop FLAC, either with LGPL code or hard cash.

  9. Re:Oh don't worry about licensing... [NOT SO FAST] by ryanvm · · Score: 5, Insightful
    Why don't you just re-license it to specific companies that you want to see use it?

    Although it would be nice, this is probably not going to be as easy as you suggest.

    The problem is that FLAC is an open source project hosted on SourceForge. As such, it is probably very likely that the project owner has accepted code from various contributors. This means that unless these contributors have explicitly granted him the copyright ownership of their code, he is in no position to re-license it.

    At this point, he has two options:
    1 - Replace all contributed code with his own; and do so without infringing on the anyone's copyright.
    2 - Get everyone who contributed to grant him copyright ownership. Which, depending on how many people contributed, can be quite difficult.

    I've always liked this idea for making money from Free software. You basically charge only those people who have no intention of giving back to the community. Unfortunately, unless you have planned ahead, it can be pretty difficult to pull off.

    Good luck, buddy.

  10. Re:Embedded software is different - look at Tivo by Fnkmaster · · Score: 4, Informative
    I will beg to differ entirely on the Tivo. I've gained lots of benefits from the fact that the kernel is GPLed. For example, people were able to build loadable modules for TivoNet, a hacked together ethernet card for Tivo, because of it. If it used some weird proprietary kernel, it would be tons harder to do all the great stuff I've done. Admittedly, nobody has gone around recompiling the kernel, though there is a fishy issue with their 2.5 software - they added some nasty filesystem checksum checks to the kernel to prevent hacks. Some people were waiting for them to release source, but we ended up getting around the problem with a bit of hex editing before the 2.5 Tivo software kernel source was ever released.


    So you are partially right, but there have clearly been huge benefits in comprehensibility and hackability which have contributed significantly to the market success of the Tivo in the "geek" crowd, which has driven adoption among a lot of others, even if they gain nothing per se from the use of Linux on the Tivo.