If I modify and dynamically link against a modified LGLP Lib, do I have to make the changes available? [closed] - licensing

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I have found a bug in an LGPL Lib that I currently link against dynamically.
The application is closed source
I link dynamically to the LGPL Lib
The application will be available to the public
If I modify the lib my understanding is that I will have to make the changed source files availible with the application, is this correct?

You are redistributing the modified code of the LGPL library, so you need to release the source for that library (your bug fix). That does not mean you need to release the source code for your entire application, just the library that's LGPL'ed.
Also note that the GPL/LGPL only requires you to give the source code to someone that you give the binary to. It does not require you to e.g. put the source on the web for anyone in the world to download. A sure way to comply is to pack the source inside your distribution so people get it together with the binaries, then nobody can ever complain that the source wasn't available.

Another solution (although it may not always be possible) is to derive your own subclasses from the LGPL'ed library and make the necessary fixes there. Of course a better approach is to submit the fix to the maintainers of the library, but if you need to ship your code soon, this may be something to consider. By deriving stuff, you're not violating the LGPL.
From the License:
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.

Related

Distributing free software (Qt) [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 8 years ago.
Improve this question
I have built a small program for plotting data from serial port using Qt and QCustomPlot. I am an engineering student, and I had a project that required me to manipulate data from the ADC of an mbed, so I built this app for my convenience and for experience. I would like to share it with other people who need such a tool (will put it on the mbed website).
I am not a programmer and I do not know a thing about licenses. The QCustomPlot is under GPL. I read that I cannot use static linkage with the GPL licence for QT; I do not intend to, (I will post the source too), but would like to include a statically built version of the program for people who would rather just use the program.
So without going in too much detail, what can I do? Also, do I need to include any disclaimers in my source?
First of all: choose a license for your software. The website http://choosealicense.com can help you in doing that.
Usually a license requires to add a text header to your source code files. This is just a fragment of text which shows the terms of the license right within the source code.
Also, a license.txt file is often required in which the full license has to be pasted. Anyway choosealicense.com clearly explains what to do.
Notice that some licenses (e.g. the GPL) need that a list of changes is added to your source code. This list has to be mantained through the entire life of your software distribution and updated when you provide new releases.
When you are ready with your package use a website like GitHub to distribute it as a source code.
Do not include binaries. Just add the source code and a README file in which you explain how to compile them.

Distribution of commercial front-end for LGPL-licensed console application [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
There's a LGPL-licensed console application. I want to create a commercial GUI front-end for it and distribute it bundled with this console app. Does LGPL license allow that?
Note that I am not using a LGPL-licensed library, I am using a stand-alone application.
I tried reading the license itself, but it is still unclear to me.
Note that I am not using a LGPL-licensed library, I am using a stand-alone application.
The first L in LGPL stands for Lesser not Library. So it does not play much of a role whether it is a library or a stand-alone application.
LGPL is with weaker copyleft. That means, if you re-distribute that LGPL'ed software in object code (binary) you need to offer the source for it (for that version you distribute).
However it is lesser, meaning that you do not need to put your code under LGPL as well. Take care that your users should be able to tell both applications apart (and replace the one or other part easily).
However if you write GUI frontend, I think this is a pretty standard case, you will create a command-line and then execute the LGPL'ed binary.
Take care that this is from a developers perspective, not from a lawyer. A lawyer would require to see your current application and then could tell you in more detail the whats and whereabouts for your very concrete case.
It's also practical you get in contact with the author of the LGPL'ed software, they might be interested to know which supporting tools exist. As they have choosen the LGPL it's likely they do not expect your software to be under LGPL as well. So if you get in touch with the original authors you can also clarify your issue, albeit I don't think there is one technically.

Is it possible to use CKEditor in commercial web site? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I plan to use CKEditor in commercial site. I've read http://ckeditor.com/license but I didn't understand how it is possible to have pricing for commercial use while they offer LGPL(which is good choice for commercial use)
Imagine you want to compile the javascript code of CkEditor into a binary application. Just assume this is possible. Then you would not ship the source code of the library any longer.
If you now even make modifications to the source code to distribute within the binary, you do not satisfy the LGPL as it requires that you provide the source for the library along with your binary. Same for the MPL on the file level.
If you don't want to distribute (your changes in) the source-code form of the library, you then can get a commercial license by the project (you buyout the license).
Next to such specific cases I can imagine that some folks just would like to have a commercial license as form of a backup if their legal department is too much puzzled. If the license is relatively cheap, they can opt for it and continue with their own work w/o being further interrupted. Business, you need to keep it running.
But regarding the LGPL, as long as you offer source (incl. the changes you probably make) of the library, you're fine to use it with non-free programs. So this does not mean that your website must be LGPL it's just using a LGPL'ed library.
You can use it for your commercial website. However, if you build a product and want to include (distribute) CKEditor with it then you might need a commercial license.
The condition whether you need the license is based on your product's license. If your product is closed sourced then including an open source product with it without sharing the source code is illegal. So, this commercial/closed distribution license fills the gap. You pay for it and you can distribute your product with the CKEditor closed sourced. Additionally you may do any closed source modifications to CKEditor.
TL;DR: if you want to modify and distribute it with a commercial license then you need to pay, otherwise you are free to use to for free!

Using LGPL library in a commercial Java application [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I have a commercial Java application which I will be distributing.
I want to use an LGPL'd java library.
I wont be modifying the library.
Does the LGPL license of that library have any impact on my application's license?
Yes, it does to a certain degree. You are e.g required to allow people to upgrade the LGPL'd library without your help. I suggest reading through the whole license yourself, as you're legally obligated to adhere to it's clauses. Know what you oblige yourself to, don't just take other people's words for it :)
As far as I understand the LGPL, no, you can distribute it however you like. You will only be linking to the library, not creating a derivative work, and the LGPL doesn't restrict linking.
There is no impact on your application. LGPL license allows inclusion in commercial application as long as the terms of the license are fulfilled (LGPL license text in the distribution, indication of the use of the library, etc).
My guess is that as long as your linking is dynamic (i.e. dynamic loading of the .dll/.so/.a/.class/whatever file at runtime), you're OK. If you statically compile your code to include the library, you're at risk of violating the license, depending on how your code is structured.
If it's Java, however, you can not link statically - it's an impossibility of the platform.

best articles about organizing code files in C [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Can you recommend me what should I read/learn in order to make a well organized code in C?
One of the things I want to learn is the principles of splitting project in .h and .c files, what goes where and why, variable naming, when to use global variables ...
I am interested in books and articles that deal with this specific problem.
A good book that covers a lot of this (for both C and C++) is Large Scale C++ Software Design, by John Lakos:
Also, a good rule of thumb to remember is "Never do anything that allocates memory in a header file"
Regarding the files layout there are not too many alternatives.
The partitioning is typically one of the following (package here is a single library or binary):
.../project/.../package/module.{c,h}
.../project/.../{src,include}/package/module.{c,h} // non-interface headers go to src
.../project/.../package/{src,include}/module.{c,h} // non-interface headers go to src
The partitioning (1) is convenient in that all files belonging to particular package are stored in a single directory, so package can be easily moved around, but with this approach detaching API headers from private ones and detecting API changes is not trivial.
(2) and (3) are very similar, they make API release and API changes detection trivial, while (2) is slightly easier for the case when you always release the whole project and (3) is slightly better when you release individial packages (e.g. for patching purposes)
In any C/C++ project there is typically the following common packages:
Common macros, and data types
Logging package
Application bootstrap package (in case there are
more than 1 binaries in the project).
Specific to unix (and not to c, natch), but none the less:
Recursive Make Considered Harmful
With the build structure described, you can afford to use a lot of files. So each logical unit gets a header and a source file.
I think the best educational reading you're going to get on this subject, is reading something like the Linux Kernel source. It's got a good source layout, and is basically the standard large C project. Here is a guide for how source files should be put together for BSD source, as well.
Seriously, just start reading Kernel source and get a feel for how everything is put together. It's a very well planned project, obviously.

Resources