tags:

views:

881

answers:

2

Hi, I am considering using libavcodec in my project, I know it is under LGPL license, but I don't quite understand about licenses.

My project is not a open source projcet, and I don't change the code in libavcodec. I can only use link method to use libavcodec.

With these conditions, I would like to ask : Can I use libavcodec in my project?

Thanks.

+6  A: 

I don't think many of us here are lawyers, so take any answers with the appropriate sized pinch of salt (or, preferably, professional legal advice), but...

In terms of copyright on the code, the LGPL provides a license to do what you want: you'll have to make the code to libavcodec available, along with any modifications you make to it, but you don't have to make your code available.

(EDIT: as pointed out by Pavel below, you need to allow your users to also make modifications to your copy of libavcodec; in practice, dynamically linking to libavcodec is the easiest way to comply with this. )

For what you're doing, copyright may not be the only consideration. If you're in/distributing to the US, and probably other countries, you've also got software patents to worry about -- many of the codecs implemented by libavcodec are covered by patents, and to be legal you'll need to acquire the necessary licenses from the patent owners.

Stephen Veiss
+3  A: 

The answer to whether you can use the library depends on what's your notion about "use". You should better read the original LGPL text, it's not that big as the text of GPL. The difference between it and GPL require you to provide a possibility for users to change the LGPL'ed library code (for example, upgrade it or fix bugs in the library) within your application without need to disassemble your program, hack it and fight crashing due to some kind of integrity checks. If this condition is met, you don't have to license your product with GPL.

This effectively means that you dynamicaly link your app against libavcodec. Or provide some other handy mechanism for changing LGPL'ed code, because authout of the library permits such changes and you should respect it. This also means that you can't use portions of libvacodec's code in your sources (unless you're including header files), because the user will then lose the ability to change that code.

Pavel Shved