Nemo Library Source Code License


Copyright © 2023, Hrvoje Lukatela. All rights reserved.

Redistribution and use in source and binary form, without modification, is permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

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 holder 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.


No modifications: The above license is, with only a single exception, identical to the industry-standard, well-known "3‑clause BSD License". The difference between the two is that the BSD license permits redistribution "...with or without modification,..", while this license permits only the redistribution of unmodified source and binaries.

In situations involving monolithic applications, redistribution of modified work is a necessary condition for the desirable evolution of the software product. In the case of a modular library however, it is good software engineering practice not to modify an existing module, but instead to replace it with a new, independently developed, documented and tested version. This is especially the case when the replaceable modules are C language functions that consist of only a dozen or two of source code statements, and the interface between any module and the rest of the system consist of nothing other than the function calling sequence and its return value. The module or modules, replacements and additions, can be packaged as a different library, with the application build process controlling which modules are linked-in from which library.

In order to make the replacements and additions as straightforward as possible, all numeric constants and data type names, together with their internal composition, as defined by the C language pre‑processor #typedef's in nemo.h header file (specifically: nemoPtPln, nemoPtCc3, nemoAzCc2, nemoDxCc3, nemoPtNcs, nemoElRot, nemoPtEll, nemoPtEnr and nemoElRot) can be used in any other software product, without any restriction.

Note that the copyright never extends to mathematics - in this case the algebraic fundamentals of computational geometry: these are, once published, free to use for all, with no restrictions whatsoever.