The STL+ C++ Library Collection
Copyright (c) Andy Rushton 2007. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
This software is provided by the Copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the Copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.
This section explains my intent in having a license agreement for this software.
I have two aims in having a license agreement for the STLplus library. I wish to protect myself from (1) intellectual property thieves and (2) litiginous idiots.
To achieve the first aim, the STLplus library is copyrighted software. Basically I have utter contempt for people who steal other people's creative works and either use it unacknowledged or claim it as their own. So I'm asserting my right to be identified as the author of the original work. You can use, modify and distribute copies of the library provided that it keeps the copyright and license statements. This copyright also protects authors of additions, bug-fixes and other contributions to the library. You can add your own copyright statements for your own contributions to a modified version of the library.
To achieve the second aim, I have included a disclaimer in the license. Basically software is too complex to guarantee and the majority of software is therefore provided on a best-endeavours, as-is policy. Sadly some people, especially those in the legal profession, don't seem to understand this. So the disclaimer states categorically that you use this software entirely at your own risk. For example, if your product crashes because of a bug in the STLplus library, it is 100% your fault for not testing the product fully. If you don't like that, don't use the STLplus library. Or the STL library, or the C run-time, or any part of the operating system for that matter.
That's it really. I don't subscribe to the idealism of some open-source advocates who claim that open-source software should only be available to other open-source developers. I want this library to be used by anyone and everyone, well except intellectual property thieves and litiginous idiots. There are therefore no restrictions saying you have to make your products open source as well because I don't believe in that. If you wish to use this library in an open source project, great. If you wish to use it in a closed-source commercial product, equally great.
I have chosen to use the BSD license as my template. I like this because it achieves my aims simply and reasonable briefly. It is easy to understand and contains no traps for the unwary.
I have tried two other licenses before this one. I started with the Gnu Public License (GPL) but it was far too restrictive for use with a software library in that it forced all derivative works to be GPLed as well. This made the STLplus library unavailable for commercial developers. I then switched to the Lesser (or Library) Gnu Public License (LGPL) which is supposedly aimed at libraries. However, a user pointed out that this also forced derivative works to be LGPLed unless STLplus was provided as a dynamically linked library, and I know from experience that dynamic linking is painful on many platforms, is a deterrent to library use so contrary to my aims and furthermore is useless anyway for a C++ library since template code gets inlined.
The above license is all very well, but what does it mean?