© 1999-2004 Southampton University, 2004 onwards Andy Rushton. 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 chosen to use the BSD license as my template. This is approximately equivalent to the Creative Commons "Attribution" license. I chose this because it achieves my aims simply and reasonable briefly. It is easy to understand and contains no traps for the unwary.
I have two personal aims in having a license agreement for the STLplus library. I wish to protect myself from (1) intellectual property thieves and (2) litiginous idiots. However, another aspect of my choice is that this software's early development was publicly funded and I have a duty to make it widely available.
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 use the library then you are implicitly agreeing to these terms. 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 have chosen not to restrict this software to only free software developers. I believe in the principles of the Free Software Foundation and of the Gnu Project (and early versions were licensed under the Gnu Public License), but my duty to the original funding source has led me to decide that I should allow the 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 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 cannot be applied to a C++ template library anyway.
The above license is all very well, but what does it mean?
Development of this software started whilst I was employed as a Research Fellow by Southampton University, UK, in April 1999. Components were added to the library as I needed them for a major development project I was working on at the time - a VHDL compiler for a behavioural synthesis system called MOODS. I continued development (of the compiler and the library) whilst working for LME - a University spin-off company - from September 1999 until October 2001. Most of the basic development of the compiler and STLplus was completed by then. When LME went bust that October, I resumed working at the University. The STLplus library was released as an open source library on SourceForge with permission from the University in December 2003. I left the University in June 2004. I have been maintaining and bug-fixing the library since then as a personal project, using it in other software projects. In 2007 I embarked on a major redesign to make the library more up-to-date in terms of its exploitation of C++ features as well as splitting it into a library collection for the version 3 release.
I claim copyright of the software from 2004 onwards on two counts: as the primary developer both before public release and after; as the person responsible for maintaining the software and protecting its copyright on behalf of myself and the University. Southampton University clearly has residual rights to the software, since it paid for the initial development from 1999-2004.