
David Bellot wrote:
I don't want to restrict users in what they're doing with the library, I mean they can use it for open-source or closed-source products. However, I want to decently protect my work and because it's template-based and can be used in commercial products, I don't want someone to do closed-source fork of it and all those kind of things...
So basically you want people to be able to use your unchanged code without restriction in open-source or closed-source applications, but you want changed versions of your code to be made public, right? Then I think you have one further choice to consider: if someone makes changes to your code but only uses the changed version internally, do you want to require that those modifications are made public? (You might like to consider what "internal" means to e.g. an individual user vs. a huge mega-corporation when you think about that.) If you don't require that internal changes are published, then you want the LGPL. If you do want internal changes to be published, then you want the QPL. (For example CGAL, the geometry library, uses the QPL.) Don't ignore the side-effects of the license choice, though. In particular you should consider license compatibility; it's likely that someone will want to use your code and some other libraries together in their application. The Boost license is not appropriate, because it allows "closed-source forks" as you describe them. In fact, the Boost license deliberately allows just about anything to be done with the code. You will probably get better advice about this from the OSI's mailing lists - see http://www.opensource.org/lists Regards, Phil.