I am planning to release a software under GNU Lesser GPL (not sure yet if v2 or v3 should be used). But I would also like to state a requirement that whenever my software is used commercially the company needs to provide a reference so I could put this information on a website. Can it be done with GNU Lesser GPL or should I switch to different existing open source licensing or should I create my own?
There is no such provision to
provide references when using commercially in the LGPL 2 or 3 and adding such provision may be contradicting the license terms.
There are provisions for attribution and credit though that are rather extensive and these may likely be more than good enough for you.
I will only reference the newer LGPL 3.0 and focus only on the attribution and credit requirements (leaving aside doc and source code related requirements).
So before I dive in the details, I think that while no true free or open source license may achieve what you want (e.g. force a commercial user to provide back a reference or notification of their usage) the LGPL has pretty decent attribution and crediting requirements when redistributed (such as a in commercial product). But these requirements only have to be met with the customer the code is redistributed to, not to you proper.
What are the attribution requirements of the LGPL-3.0 license when redistributing your library in a product or application?
The LGPL-3.0 license includes the GPL 3.0 by reference and all and any attribution and crediting requirements of the GPL 3.0 apply too.
Both licenses are rather clear and explicit on what and how to provide attribution.
In the GPL 3.0 the definitions section explains what are the "Appropriate Legal Notices".
[...] An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
The GPL Section 4 explains what attribution means when you redistribute unmodified copies of the source code:
[...] provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
So when someone redistribute an unmodified copy of your LGPL-3.0-licensed program they would need to "credit" you:
- with a conspicuous copyright statement and notice, with examples
- keep existing notices
- a copy of the GPL license text
The LGPL 3.0 has additional requirements in its Section 4:
a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. [...] c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. [...]
Under the LGPL section 5, there are these additional attribution requirements for "Combined Libraries":
b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
And there are yet more requirements when there are modifications. These are mentioned mostly in the GPL text:
Under the GPL section 5, if a user redistributes modified source code, they have these additional attribution requirements:
It starts with this, clearly establishing that these are extras requirements on top of section 4:
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of the GPL section 4, provided that you also meet all of these conditions:
And then goes on to explain what these new requirements are:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
So when a user (commercial or not) redistributes a modified source copy of your LGPL-3.0-licensed program they would need to additionally credit you with:
- a tracking of the changes they made, with prominent modification dated notices
- if needed, they shall update (or create) notices to state that this code is under the LGPL.
- if there is some user interface, they need to update the code to display a notice following the GPL section 0 and they can use the provided examples.
Under the GPL section 6, when a user of yours redistributes binaries (aka. non-source), they have these additional attribution requirements:
It starts with this, clearly establishing that these are extras requirements on top of section 4 and 5:
If they provide the source code with the binaries then they have no new requirements.
If they do not provide the source code with the binaries they have a few extra requirements:
b) [...] accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source [...], or (2) access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. [...]
d) Convey the object code by offering access from a designated place [...]
So in this case, their new attribution requirement boils down to provide or explain how to get the source code: the license covers several possible approaches and constraints. The simplest way is to provide the source with the binaries.
Finally, at the end and past the "terms and conditions", the GPL license provides guidelines and an example on How to Apply These Terms to Your New Programs: this clarifies what a source code and displayed notice should look like if something was not clear to a user of yours before and these can be used too for the LGPL-licensed code.
You cannot add additional restrictions to the LGPL, and it would make the licensed software incompatible with the LGPL and the GPL, defeating the purpose of the LGPL.
In the licensing notice (but not the LGPL itself), you can add a request for referal. A request is not an additional restriction, and placing it outside of the LGPL/licensing text itself makes that sufficiently clear. You are also free to place whatever conditions you want on any added services you might provide in connection with the software, just not on redistribution of the software/code itself.
If you are the sole author of the software without any use of LGPLed or GPLed third party software, you are of course free to license your software under any terms you like, including LGPLed with added restrictions, which amounts to no redistribution right at all (since any redistribution would have to be under the LGPL without added restrictions). However, it would be extremely misleading to label such terms as "LGPL". And if you wanted to take people to court over not heeding your licensing terms, they'd have quite a good case for claiming good faith, which would mean that you'd be left without damage compensation and with at least your own court costs to bear: all you could hope for is that the redistribution stops.
I think you are much better off not trying to wrap your referal request into the licence proper.