6

I would like to use SMBLibrary in a (potentially) commercial .NET MAUI app for android. Is that possible and what are the requirements/limitations? I don't intend to change the library code, just use it as is.

I noticed that there is at least one project based on SMBLibrary that is licensed under MIT. Is it really possible to relicense a LGPL based implementation? https://github.com/ShadyNagy/SambaFileManager

1 Answer 1

7

I assume that you are referring to ShadyNagy's SambaFileManager (MIT-licensed) that depends on TalAloni's SMBLibrary (LGPLv3-licensed), both written in C#.

It appears that SMBLibrary is not statically linked with SambaFileManager, and it is also not conveyed together with SambaFileManager. It is conveyed by .NET package manager.

SambaFileManager is dynamically linked with SMBLibrary, with a method compliant to 4(d)(1) of LGPLv3:

Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

SMBLibrary was not modified and simply used as a library by SambaFileManager.

I assume your proprietary-licensed software will use SMBLibrary in the same way as SambaFileManager.

SambaFileManager did not relicense SMBLibrary into MIT. It's only using SMBLibrary as a library. That does not change the license of SMBLibrary.

The LGPLv3 defines these terms:

“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.

Also from LGPLv3's definition (from its base GPLv3 license text):

To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

So, SMBLibrary is The Library.

SambaFileManager and your proprietary software are Applications.

And SambaFileManager or your proprietary software using SMBLibrary is considered a Combined Work.

Section 4 of the LGPLv3 places conditions when the Combined Work is conveyed.

In this case, it appears that the .NET package manager is used to convey the Combined Work when it comes to the SambaFileManager.

The way I see it, all conditions of Section 4 of the LGPLv3 are fulfilled including 4(d)(1) which is about dynamic linking.

I don't think you need to explicitly include the license file or source code of SMBLibrary in your software, as it should be made available though the infrastructure of the .NET package manager.

The MIT license does not place any restrictions on linking to GPLv3.

Also Section 4 of the LGPLv3 states that a Combined Work can be conveyed under terms of your choice as long as its conditions are fulfilled. So, you are also free to license your software that uses SMBLibrary under proprietary terms.

However, as good practice, I suggest to create a THIRDPARTY file and put SMBLibrary info in it, as I have suggested in this answer.

Also, if you're displaying copyright notices, you can include that of SMBLibrary too, as requested in 4(c) of LGPLv3:

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.

1
  • Thank you for the detailed answer! I'm still wondering that how does android app comply with the requirement to be able to replace the library? Commented Apr 15 at 18:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.