There is one kind of license called "copy left", as far as I know "LGPL" is one such kind.
My question is: If I use this kind of stuff in my own program, can I still commercialize it? I mean make it a proprietary software and license it and make profit from it.
I am guessing "Eigen" and "vtk" is this kind of stuff, right? Do I need to pay for this library if I commercialize my software?
If I use this kind of stuff in my own program, can I still commercialize it?
Yes, but keep in mind that making profit from OSS generally requires a more complex business model. A common approach is to license as GPL for free, and charge for non-GPL licenses (which would allow the licensees to modify the code and not publish the changes). The GPL is often more suitable for this because it forbids distribution of GPL software linked in any form with closed source software. The LGPL allows distributing LGPL software dynamically linked with closed source software, but not statically linked.
It's also common to charge for support and other services.
I am guessing "Eigen" and "vtk" is this kind of stuff, right? Do I need to pay for this library if I commercialize my software?
Eigen: No, but note that the MPL is incompatible with GPL 1.1.
VTK (Visualization Toolkit): No, the code is licensed as 2-clause + non-endorsement clause BSD.
Could you explain this "A common approach is to license as GPL for free, and charge for non-GPL licenses" further?
Are you saying:
To license my program as GPL and set it for free? and How to charge for non-GPL licenses?
So, GPL cannot be allowed to link in any closed source software, that means if I use GPL code in my program, I have to open my source code? Then why is it more suitable for my needs?
Here is the case, in my software, I am going to link to Eigen and VTK, I am not going to modify any of it. Can I distribute and charge for my software, and saying "Eigen" and "VTK" is required in your computer before install my software?
Could you explain this "A common approach is to license as GPL for free, and charge for non-GPL licenses" further?
Are you saying:
To license my program as GPL and set it for free? and How to charge for non-GPL licenses?
See for example what Qt does. Qt is licensed to anyone as LGPL for free, even for commercial closed source programs. But if you are developing a closed source program and you need to modify Qt and you can't make public those modifications, they'll sell you a commercial license that allows you to do that.
So, GPL cannot be allowed to link in any closed source software, that means if I use GPL code in my program, I have to open my source code? Then why is it more suitable for my needs?
I didn't say it was more suited for your needs. I don't know what your needs are, so how could I say that?
Reread that paragraph.
The GPL is often more suitable for [licensing as GPL for free and charging for non-GPL licenses] because it forbids distribution of GPL software linked in any form with closed source software.
In other words, if you license your code as GPL, other people writing publicly distributed closed source applications will not be able to use it without getting a more permissible license from you.
If you license it as LGPL, closed sourced applications will be able to link with it as long as they don't have to make undisclosed modifications to it.
So, in my case, suppose I use "Eigen" and "VTK", and suppose their license probably are close to GPL. Suppose I link to them without modifying them.
Then, I can sell my software (as long as/and only when) I also ship the source code to my users simultaneously? Do I need to get a written permission from the library author? Under what conditions, they will like to give me that permission? Then can my users sell or modify my software again without my permission?
Oh, okay. You worded your question poorly in your first post.
There is one kind of license called "copy left", as far as I know "LGPL" is one such kind.
My question is: If I use this kind of stuff in my own program, can I still commercialize it?
Your use of "this kind of stuff" suggests you're referring to the LGPL. That is, you're asking about licensing your code under the LGPL.
In fact, you're asking about LGPL software.
Q8 says very clearly that if I want to distribute a software of my own if it used the Eigen, I need make available my code to the user.
Read that question more carefully. It's asking about the case where you want to distribute the result of compiling someone else's unmodified MPL code. That's not what you want to do. You want to take someone else's library, integrate it into your own codebase, compile everything together, and distribute the binary. That case is covered in Q11.
Briefly: No. Because the MPL doesn't consider linking as creating a derived work (unlike the GPL), linking an MPL codebase with a non-MPL codebase doesn't require disclosure of the entirety of both codebases.