├── .config └── nvim │ └── ftplugin │ └── c.lua ├── .editorconfig ├── .gitattributes ├── .private └── .gitkeep ├── .vim └── coc-settings.json ├── .vscode ├── c_cpp_properties.json ├── cosmo-project.code-workspace ├── launch.json ├── settings.json └── tasks.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Doxyfile ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── bin └── .gitkeep ├── build └── .gitkeep ├── cosmo-project.zip ├── docs ├── .gitkeep └── draft │ └── licenses │ ├── AGPL-3.0.txt │ ├── Apache-2.0-License.txt │ ├── BSD-2Clause-Simplified-License.txt │ ├── BSD-3Clause-New-License.txt │ ├── CDDL.txt │ ├── EclipsePublicLicense.txt │ ├── GPL-2.txt │ ├── GPL-3.txt │ ├── LGPL-2.1.txt │ ├── LGPL-3.0.txt │ ├── MIT-License.txt │ └── Mozilla-Public-License-2.0.txt ├── examples └── .gitkeep ├── include └── .gitkeep ├── lib └── .gitkeep ├── src └── main.c ├── test └── .gitkeep ├── third_party └── .gitkeep └── tools └── .gitkeep /.config/nvim/ftplugin/c.lua: -------------------------------------------------------------------------------- 1 | -- Neovim C filetype plugin for multi-toolchain support 2 | local api = vim.api 3 | local fn = vim.fn 4 | local lsp = vim.lsp 5 | 6 | -- Check for toolchain indicator files 7 | local function detect_toolchain() 8 | -- Check for .cosmo file to indicate Cosmopolitan toolchain 9 | if fn.filereadable('.cosmo') == 1 then 10 | return 'cosmo' 11 | end 12 | 13 | -- Default to gcc 14 | return 'gcc' 15 | end 16 | 17 | -- Set up LSP based on detected toolchain 18 | local toolchain = detect_toolchain() 19 | 20 | if toolchain == 'cosmo' then 21 | -- Cosmopolitan-specific settings 22 | lsp.buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') 23 | 24 | -- Add Cosmopolitan include paths 25 | local cosmo_include = fn.getcwd() .. '/tools/cosmocc/include' 26 | api.nvim_command('setlocal path+=' .. cosmo_include) 27 | 28 | -- Set up C compiler for Cosmopolitan 29 | api.nvim_command('compiler gcc') 30 | api.nvim_command('setlocal makeprg=make\\ TOOLCHAIN=cosmo') 31 | else 32 | -- Standard GCC/Clang setup 33 | lsp.buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') 34 | api.nvim_command('compiler gcc') 35 | api.nvim_command('setlocal makeprg=make') 36 | end 37 | 38 | -- Common C settings 39 | api.nvim_command('setlocal expandtab') 40 | api.nvim_command('setlocal tabstop=4') 41 | api.nvim_command('setlocal shiftwidth=4') 42 | api.nvim_command('setlocal softtabstop=4') -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Top-most EditorConfig file 2 | root = true 3 | 4 | # Common settings for all files 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | charset = utf-8 10 | indent_style = space 11 | indent_size = 4 12 | 13 | # Make files use tabs 14 | [Makefile] 15 | indent_style = tab 16 | 17 | # C source files 18 | [*.{c,h}] 19 | # For gcc/clang 20 | indent_size = 4 21 | 22 | # Cosmopolitan-specific settings 23 | # Can be enabled by creating a .cosmo file in the project 24 | [*.{c,h}] 25 | cpp_include_path = include 26 | cpp_standard = c23 27 | 28 | # VS Code/IDE-specific configurations are better placed in their respective config files -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.private/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/.private/.gitkeep -------------------------------------------------------------------------------- /.vim/coc-settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "languageserver": { 3 | "c": { 4 | "command": "clangd", 5 | "filetypes": ["c"], 6 | "rootPatterns": ["compile_commands.json", ".git/"], 7 | "initializationOptions": { 8 | "fallbackFlags": ["-std=c23"] 9 | } 10 | } 11 | }, 12 | "clangd.path": "clangd", 13 | "clangd.arguments": ["--background-index", "--clang-tidy"], 14 | 15 | "workspace.rootPatterns": [".git", "Makefile"] 16 | } -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "GCC-Linux", 5 | "includePath": [ 6 | "${workspaceFolder}/include", 7 | "${workspaceFolder}/src", 8 | "${workspaceFolder}/lib", 9 | "${workspaceFolder}/test/**" 10 | ], 11 | "defines": [], 12 | "compilerPath": "/usr/bin/gcc", 13 | "cStandard": "c23", 14 | "intelliSenseMode": "linux-gcc-x64" 15 | }, 16 | { 17 | "name": "GCC-Mac", 18 | "includePath": [ 19 | "${workspaceFolder}/include", 20 | "${workspaceFolder}/src", 21 | "${workspaceFolder}/lib", 22 | "${workspaceFolder}/test/**" 23 | ], 24 | "defines": [], 25 | "compilerPath": "/usr/local/bin/gcc", 26 | "cStandard": "c23", 27 | "intelliSenseMode": "macos-gcc-x64" 28 | }, 29 | { 30 | "name": "GCC-Win32", 31 | "includePath": [ 32 | "${workspaceFolder}/include", 33 | "${workspaceFolder}/src", 34 | "${workspaceFolder}/lib", 35 | "${workspaceFolder}/test/**" 36 | ], 37 | "defines": [], 38 | "compilerPath": "C:/MinGW/bin/gcc.exe", 39 | "cStandard": "c23", 40 | "intelliSenseMode": "windows-gcc-x86" 41 | }, 42 | { 43 | "name": "Clang-Linux", 44 | "includePath": [ 45 | "${workspaceFolder}/include", 46 | "${workspaceFolder}/src", 47 | "${workspaceFolder}/lib", 48 | "${workspaceFolder}/test/**" 49 | ], 50 | "defines": [], 51 | "compilerPath": "/usr/bin/clang", 52 | "cStandard": "c23", 53 | "intelliSenseMode": "linux-clang-x64" 54 | }, 55 | { 56 | "name": "Clang-Mac", 57 | "includePath": [ 58 | "${workspaceFolder}/include", 59 | "${workspaceFolder}/src", 60 | "${workspaceFolder}/lib", 61 | "${workspaceFolder}/test/**" 62 | ], 63 | "defines": [], 64 | "compilerPath": "/usr/bin/clang", 65 | "cStandard": "c23", 66 | "intelliSenseMode": "macos-clang-x64" 67 | }, 68 | { 69 | "name": "Clang-Win32", 70 | "includePath": [ 71 | "${workspaceFolder}/include", 72 | "${workspaceFolder}/src", 73 | "${workspaceFolder}/lib", 74 | "${workspaceFolder}/test/**" 75 | ], 76 | "defines": [], 77 | "compilerPath": "C:/Program Files/LLVM/bin/clang.exe", 78 | "cStandard": "c23", 79 | "intelliSenseMode": "windows-clang-x86" 80 | }, 81 | { 82 | "name": "Cosmopolitan-Linux", 83 | "includePath": [ 84 | "${workspaceFolder}/include", 85 | "${workspaceFolder}/src", 86 | "${workspaceFolder}/lib", 87 | "${workspaceFolder}/test/**", 88 | "${workspaceFolder}/tools/cosmocc/include" 89 | ], 90 | "defines": [], 91 | "compilerPath": "${workspaceFolder}/tools/cosmocc", 92 | "cStandard": "c23", 93 | "intelliSenseMode": "linux-clang-x64" 94 | }, 95 | { 96 | "name": "Cosmopolitan-Mac", 97 | "includePath": [ 98 | "${workspaceFolder}/include", 99 | "${workspaceFolder}/src", 100 | "${workspaceFolder}/lib", 101 | "${workspaceFolder}/test/**", 102 | "${workspaceFolder}/tools/cosmocc/include" 103 | ], 104 | "defines": [], 105 | "compilerPath": "${workspaceFolder}/tools/cosmocc", 106 | "cStandard": "c23", 107 | "intelliSenseMode": "macos-clang-x64" 108 | }, 109 | { 110 | "name": "Cosmopolitan-Win32", 111 | "includePath": [ 112 | "${workspaceFolder}/include", 113 | "${workspaceFolder}/src", 114 | "${workspaceFolder}/lib", 115 | "${workspaceFolder}/test/**", 116 | "${workspaceFolder}/tools/cosmocc/include" 117 | ], 118 | "defines": [], 119 | "compilerPath": "${workspaceFolder}/tools/cosmocc", 120 | "cStandard": "c23", 121 | "intelliSenseMode": "windows-clang-x86" 122 | } 123 | ], 124 | "version": 4 125 | } -------------------------------------------------------------------------------- /.vscode/cosmo-project.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".." 5 | } 6 | ], 7 | "settings": {} 8 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Debug (GCC/Clang)", 6 | "type": "cppdbg", 7 | "request": "launch", 8 | "program": "${workspaceFolder}/bin/doze", 9 | "args": [], 10 | "stopAtEntry": false, 11 | "cwd": "${workspaceFolder}", 12 | "environment": [], 13 | "externalConsole": false, 14 | "MIMode": "lldb", 15 | "preLaunchTask": "build" 16 | }, 17 | { 18 | "name": "Debug (Cosmopolitan)", 19 | "type": "cppdbg", 20 | "request": "launch", 21 | "program": "${workspaceFolder}/bin/doze.com", 22 | "args": [], 23 | "stopAtEntry": false, 24 | "cwd": "${workspaceFolder}", 25 | "environment": [], 26 | "externalConsole": false, 27 | "MIMode": "gdb", 28 | "preLaunchTask": "build-cosmo" 29 | } 30 | ] 31 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "editor.rulers": [80], 4 | "files.associations": { 5 | "*.h": "c" 6 | }, 7 | "C_Cpp.default.compilerPath": "/usr/bin/gcc", 8 | "C_Cpp.default.cStandard": "c23", 9 | "C_Cpp.default.intelliSenseMode": "linux-gcc-x64", 10 | 11 | // Set configuration by placing a .cosmo file in the project root 12 | // If there's a .cosmo file, use Cosmopolitan settings 13 | "C_Cpp.autoAddFileAssociations": false, 14 | 15 | // Optional: Add Cosmopolitan-specific settings using a script 16 | // "C_Cpp.default.compilerPath": "${workspaceFolder}/tools/cosmocc", 17 | // "C_Cpp.default.includePath": [ 18 | // "${workspaceFolder}/include", 19 | // "${workspaceFolder}/tools/cosmocc/include" 20 | // ], 21 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "build", 6 | "type": "shell", 7 | "command": "make", 8 | "group": { 9 | "kind": "build", 10 | "isDefault": true 11 | }, 12 | "problemMatcher": ["$gcc"] 13 | }, 14 | { 15 | "label": "build-cosmo", 16 | "type": "shell", 17 | "command": "make TOOLCHAIN=cosmo", 18 | "group": "build", 19 | "problemMatcher": ["$gcc"] 20 | }, 21 | { 22 | "label": "build-clang", 23 | "type": "shell", 24 | "command": "make TOOLCHAIN=clang", 25 | "group": "build", 26 | "problemMatcher": ["$gcc"] 27 | }, 28 | { 29 | "label": "clean", 30 | "type": "shell", 31 | "command": "make clean", 32 | "group": "build", 33 | "problemMatcher": [] 34 | }, 35 | { 36 | "label": "run", 37 | "type": "shell", 38 | "command": "make run", 39 | "group": "build", 40 | "problemMatcher": [] 41 | }, 42 | { 43 | "label": "setup-cosmo", 44 | "type": "shell", 45 | "command": "make setup-cosmo", 46 | "group": "build", 47 | "problemMatcher": [] 48 | } 49 | ] 50 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [Unreleased] 9 | 10 | ### Added 11 | 12 | - (added) 13 | 14 | ### Changed 15 | 16 | - (changed) 17 | 18 | ### Deprecated 19 | 20 | - (deprecated) 21 | 22 | ### Removed 23 | 24 | - (removed) 25 | 26 | ### Fixed 27 | 28 | - (fixed) 29 | 30 | ### Security 31 | 32 | - (security) 33 | 34 | ## [0.1.0] - YYYY-MM-DD 35 | 36 | ### Added 37 | 38 | - Initial release. 39 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | [INSERT CONTACT METHOD]. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder][mozilla ladder]. 123 | 124 | For answers to common questions about this code of conduct, see the FAQ at 125 | [https://www.contributor-covenant.org/faq][faq]. Translations are available 126 | at [https://www.contributor-covenant.org/translations][translations]. 127 | 128 | [homepage]: https://www.contributor-covenant.org 129 | [v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html 130 | [mozilla ladder]: https://github.com/mozilla/diversity 131 | [faq]: https://www.contributor-covenant.org/faq 132 | [translations]: https://www.contributor-covenant.org/translations 133 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Cosmo Project 2 | 3 | Thank you for considering contributing to this Cosmopolitan C project! This document outlines the process for contributing to the project and how to get started as a contributor. 4 | 5 | ## Code of Conduct 6 | 7 | Please read and follow our [Code of Conduct](project/CODE_OF_CONDUCT.md) to keep our community respectful and inclusive. 8 | 9 | ## Getting Started 10 | 11 | ### Prerequisites 12 | 13 | - Cosmopolitan C toolchain (cosmocc) 14 | - GCC or Clang (as alternative toolchains) 15 | - Make 16 | - Git 17 | 18 | ### Setting Up the Development Environment 19 | 20 | 1. Clone the repository 21 | 22 | ```sh 23 | git clone https://github.com/your-username/cosmo-project.git 24 | cd cosmo-project 25 | ``` 26 | 27 | 2. Explore the project structure to understand the organization 28 | - `src/`: Source code files 29 | - `include/`: Header files 30 | - `test/`: Test files 31 | - `docs/`: Documentation 32 | - `examples/`: Example code 33 | 34 | 3. Build the project 35 | 36 | ```sh 37 | make 38 | ``` 39 | 40 | 4. Run the project 41 | 42 | ```sh 43 | make run 44 | ``` 45 | 46 | ## Development Workflow 47 | 48 | 1. Create a new branch for your feature or fix 49 | 50 | ```sh 51 | git checkout -b feature/your-feature-name 52 | ``` 53 | 54 | 2. Make your changes, adhering to the coding standards 55 | 56 | 3. Build and test your changes 57 | 58 | ```sh 59 | make rebuild 60 | make test 61 | ``` 62 | 63 | 4. Commit your changes with a descriptive message 64 | 65 | ```sh 66 | git commit -m "Add feature: description of the feature" 67 | ``` 68 | 69 | 5. Push your branch to your fork 70 | 71 | ```sh 72 | git push origin feature/your-feature-name 73 | ``` 74 | 75 | 6. Create a pull request against the main repository 76 | 77 | ## Pull Request Process 78 | 79 | 1. Ensure your code builds without errors and passes all tests 80 | 2. Update documentation if necessary 81 | 3. Include a clear description of the changes in your pull request 82 | 4. Link any related issues in your pull request description 83 | 5. Wait for review and address any feedback 84 | 85 | ## Coding Standards 86 | 87 | ### C Code Style 88 | 89 | - Follow the C23 standard as specified in the Makefile 90 | - Use 4 spaces for indentation (not tabs) 91 | - Keep lines under 100 characters when possible 92 | - Use descriptive variable and function names 93 | - Add comments for non-obvious code sections 94 | - Include proper header documentation for all files 95 | 96 | ### Documentation 97 | 98 | - Document all public functions, types, and constants 99 | - Keep documentation up-to-date with code changes 100 | - Use Doxygen-style comments for API documentation 101 | 102 | ## Testing Guidelines 103 | 104 | - Write tests for all new features and bug fixes 105 | - Ensure all tests pass before submitting a pull request 106 | - Cover edge cases and error conditions in your tests 107 | 108 | ## Reporting Issues 109 | 110 | - Use the GitHub issue tracker to report bugs or suggest features 111 | - Provide clear steps to reproduce bugs 112 | - Include relevant information like OS, compiler version, etc. 113 | - Use labels appropriately to categorize issues 114 | 115 | ## License 116 | 117 | By contributing to this project, you agree that your contributions will be licensed under the same license as the project (Public Domain or the most permissive terms available). 118 | 119 | ## Questions and Support 120 | 121 | If you have questions or need support, please refer to the [SUPPORT.md](SUPPORT.md) file or visit the official [documentation](https://dun.dev/cosmo-project) for additional resources. 122 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright 2025 Matt Dunleavy. 4 | 5 | Permission to use, copy, modify, and/or distribute this software for 6 | any purpose with or without fee is hereby granted, provided that the 7 | above copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 | WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 | WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 | AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 | PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 | PERFORMANCE OF THIS SOFTWARE. 17 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Default compiler selection - can be overridden with TOOLCHAIN=gcc|clang|cosmo 2 | TOOLCHAIN ?= auto 3 | 4 | # Installation prefix - can be overridden, e.g., make PREFIX=/usr/local install 5 | PREFIX ?= $(HOME)/.local 6 | DESTDIR ?= 7 | 8 | # Determine compiler based on TOOLCHAIN value 9 | ifeq ($(TOOLCHAIN), gcc) 10 | CC = gcc 11 | DEBUGGER = gdb 12 | else ifeq ($(TOOLCHAIN), clang) 13 | CC = clang 14 | DEBUGGER = lldb 15 | else ifeq ($(TOOLCHAIN), cosmo) 16 | CC = cosmocc 17 | CFLAGS_EXTRA = -DAPE=1 -O2 18 | DEBUGGER = lldb 19 | else ifeq ($(TOOLCHAIN), auto) 20 | # Auto-detect available compiler - defaulting to cosmocc 21 | CC = cosmocc 22 | CFLAGS_EXTRA = -DAPE=1 -O2 23 | DEBUGGER = lldb 24 | else 25 | $(error Unknown toolchain: $(TOOLCHAIN). Use 'gcc', 'clang', 'cosmo', or 'auto') 26 | endif 27 | 28 | # Common flags 29 | # -MMD generates dependency files (.d) 30 | # -MP ensures dummy targets for headers are created, preventing errors if a header is deleted 31 | CFLAGS = -std=c23 -Wall -Wextra -pedantic -g -MMD -MP $(CFLAGS_EXTRA) 32 | INCLUDE = -Iinclude 33 | SRC_DIR = src 34 | BUILD_DIR = build/$(TOOLCHAIN) 35 | BIN_DIR = bin 36 | TARGET = $(BIN_DIR)/cosmo-project 37 | SRCS = $(wildcard $(SRC_DIR)/*.c) 38 | OBJS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SRCS)) 39 | DEPS = $(OBJS:.o=.d) # Dependency files 40 | 41 | # Check if source files exist 42 | ifneq ($(SRCS),) 43 | all: directories $(TARGET) 44 | else 45 | all: 46 | @echo "No source files found in $(SRC_DIR). Nothing to build." 47 | @exit 1 48 | endif 49 | 50 | directories: 51 | @mkdir -p $(BUILD_DIR) 52 | @mkdir -p $(BIN_DIR) 53 | 54 | # Compile 55 | $(BUILD_DIR)/%.o: $(SRC_DIR)/%.c 56 | $(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@ 57 | 58 | # Link 59 | $(TARGET): $(OBJS) 60 | $(CC) $(CFLAGS) $(OBJS) -o $(TARGET) 61 | 62 | # Clean - Remove build artifacts and the target binary directory 63 | clean: 64 | rm -rf $(BUILD_DIR) $(BIN_DIR) 65 | 66 | # Rebuild 67 | rebuild: clean all 68 | 69 | # Run 70 | run: all 71 | $(TARGET) 72 | 73 | # Install the binary to $(DESTDIR)$(PREFIX)/bin 74 | install: all 75 | mkdir -p $(DESTDIR)$(PREFIX)/bin 76 | cp $(TARGET) $(DESTDIR)$(PREFIX)/bin/$(notdir $(TARGET)) 77 | chmod +x $(DESTDIR)$(PREFIX)/bin/$(notdir $(TARGET)) 78 | 79 | # Uninstall the binary from $(DESTDIR)$(PREFIX)/bin 80 | uninstall: 81 | rm -f $(DESTDIR)$(PREFIX)/bin/$(notdir $(TARGET)) 82 | 83 | # Debug 84 | debug: all 85 | $(DEBUGGER) $(TARGET) 86 | 87 | # Show the current toolchain configuration 88 | info: 89 | @echo "Current configuration:" 90 | @echo " Compiler: $(CC)" 91 | @echo " Debugger: $(DEBUGGER)" 92 | @echo " CFLAGS: $(CFLAGS)" 93 | @echo " Build directory: $(BUILD_DIR)" 94 | @echo " Target binary: $(TARGET)" 95 | 96 | # Include dependency files, suppressing errors if they don't exist yet 97 | -include $(DEPS) 98 | 99 | .PHONY: all directories clean rebuild run debug info 100 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Boilerplate Cross-Platform C Project Layout (Cosmopolitan) 2 | 3 | ## Overview 4 | 5 | This is a basic layout and boilerplate project template for building cross-platform applications in C using the Cosmopolitan toolchain. The package provides everything you'll need to get started quickly, including: 6 | 7 | - a Makefile that allows you to toggle the compiler toolchain between cosmopolitan, GCC and clang 8 | - optimized editor configurations for a better development experience using VSCode, Vim, NeoVim (and others) 9 | - customizable documentation, packaging and license templates based on current open-source conventions to simplify distribution 10 | 11 | If you are creating a simple application or learning Cosmopolitan, this project layout provides a general structure for organizing your applications, focusing on the layout rather than specific implementation details. This template is high-level and doesn't delve into architectural patterns like layered architectures or specific design paradigms. 12 | 13 | This is **`NOT an official standard defined by the developers of Cosmopolitan or C standards groups`**. This is a suggested organizational structure to help maintain clean code separation and organization. While the Cosmopolitan library itself doesn't mandate any specific project layout, this structure builds on common C project conventions and adds Cosmopolitan-specific considerations. 14 | 15 | ## Usage 16 | 17 | 1. Clone this repository (or simply download and unpack `cosmo-project.zip`) 18 | 2. Build something 19 | 20 | You can download the latest version of the template archive file at: 21 | 22 | https://storebrand.angelfire.com/download/cosmo-project.zip 23 | 24 | > [!IMPORTANT] 25 | > 26 | > The `.gitignore` file is only included in the .zip archive to ensure all directories are provided in the public repo. 27 | 28 | ## Building with Cosmopolitan LibC 29 | 30 | Cosmopolitan allows you to create single-file executables that run on multiple platforms, including Linux, macOS, Windows, FreeBSD, OpenBSD, and NetBSD. To build with Cosmopolitan: 31 | 32 | 1. Install the Cosmopolitan library (instructions at https://github.com/jart/cosmopolitan) 33 | 2. Configure your build system to link against Cosmopolitan 34 | 3. Use the provided build scripts to generate portable executables 35 | 36 | Refer to the [Cosmopolitan documentation](https://justine.lol/cosmopolitan/documentation.html) for detailed build instructions and options. 37 | 38 | ## Build Configuration 39 | 40 | The project includes a versatile Makefile that supports multiple compiler toolchains: 41 | 42 | - **Cosmopolitan (default)**: Uses `cosmocc` to build APE (Actually Portable Executable) binaries 43 | - **GCC**: Standard GNU C Compiler 44 | - **Clang**: LLVM C Compiler 45 | 46 | ### Using the Makefile 47 | 48 | The Makefile supports the following commands: 49 | 50 | ```bash 51 | # Build with default toolchain (auto-detected, defaults to Cosmopolitan) 52 | make 53 | 54 | # Build with a specific toolchain 55 | make TOOLCHAIN=gcc 56 | make TOOLCHAIN=clang 57 | make TOOLCHAIN=cosmo 58 | 59 | # Clean build artifacts 60 | make clean 61 | 62 | # Rebuild from scratch 63 | make rebuild 64 | 65 | # Run the application 66 | make run 67 | 68 | # Debug the application 69 | make debug 70 | 71 | # Install to $PREFIX/bin (defaults to ~/.local/bin) 72 | make install 73 | make PREFIX=/usr/local install 74 | 75 | # Get build information 76 | make info 77 | ``` 78 | 79 | ### Toggling Between Toolchains 80 | 81 | You can easily toggle between toolchains by setting the `TOOLCHAIN` environment variable: 82 | 83 | ```bash 84 | # Set temporarily for a single command 85 | TOOLCHAIN=gcc make 86 | 87 | # Set for the current shell session 88 | export TOOLCHAIN=clang 89 | make 90 | 91 | # Or pass directly to the make command 92 | make TOOLCHAIN=cosmo 93 | ``` 94 | 95 | This allows you to quickly test your code with different compilers without changing any configuration files. 96 | 97 | ## Editor Configuration 98 | 99 | This project includes optimized configurations for multiple editors to provide a seamless development experience: 100 | 101 | ### Visual Studio Code 102 | 103 | The `.vscode` directory contains: 104 | 105 | - **tasks.json**: Build tasks for different toolchains 106 | - **launch.json**: Debug configurations 107 | - **c_cpp_properties.json**: IntelliSense configurations for all supported platforms and toolchains 108 | - **settings.json**: Editor settings optimized for C development with Cosmopolitan 109 | 110 | VS Code tasks include: 111 | 112 | - `build`: Default build (uses the auto-detected toolchain) 113 | - `build-cosmo`: Build specifically with Cosmopolitan 114 | - `build-clang`: Build with Clang 115 | - `run`: Run the application 116 | - `clean`: Clean build artifacts 117 | 118 | ### Vim/Neovim 119 | 120 | The project includes configurations for both Vim and Neovim: 121 | 122 | - **`.vim/coc-settings.json`**: Configuration for Conquer of Completion (CoC) extension, with C language server settings 123 | - **`.config/nvim`**: Neovim-specific configurations 124 | 125 | These configurations provide: 126 | 127 | - Language server integration via clangd 128 | - C23 standard support 129 | - Project-aware navigation and code intelligence 130 | 131 | To get the most from these configurations, ensure you have: 132 | 133 | - For Vim: CoC extension and clangd language server installed 134 | - For Neovim: Language server support configured 135 | 136 | ## Directories 137 | 138 | ### `/src` 139 | 140 | Main source code for your application. 141 | 142 | This directory contains all your C source code (`.c` files). For larger projects, you might organize this directory further into subdirectories based on functionality or modules. 143 | 144 | ### `/include` 145 | 146 | Header files for your project. 147 | 148 | Public header files that define your project's API live here. The directory structure should mirror that of `/src` to make it easy to find corresponding headers and source files. 149 | 150 | ### `/lib` 151 | 152 | Internal libraries that are specific to your project. 153 | 154 | If your project has code that can be logically separated into libraries, place that code here. This helps maintain separation of concerns and makes your codebase more modular. 155 | 156 | ### `/third_party` 157 | 158 | External dependencies and libraries. 159 | 160 | This directory contains external code that your project depends on. If you're using git submodules to manage dependencies, they would typically be placed here. 161 | 162 | ## Build and Distribution Directories 163 | 164 | ### `/build` 165 | 166 | Build artifacts and configurations. 167 | 168 | Contains scripts and configuration files needed for building your project. This might include specialized build steps for Cosmopolitan's APE (Actually Portable Executable) format. 169 | 170 | ### `/bin` 171 | 172 | Binary executables output directory. 173 | 174 | The compiled binaries from your project go here. Your build system should output executables to this directory. 175 | 176 | ## Additional Directories 177 | 178 | ### `/test` 179 | 180 | Test code and test data. 181 | 182 | Contains unit tests, integration tests, and test data for your application. For larger projects, consider subdividing this directory to organize different types of tests. 183 | 184 | ### `/docs` 185 | 186 | Documentation for your project. 187 | 188 | Project documentation, including API documentation, usage guides, and other helpful resources. 189 | 190 | ### `/scripts` 191 | 192 | Utility scripts for development, building, and deployment. 193 | 194 | Various scripts that aid in development, building, packaging, or deploying your application. 195 | 196 | ### `/examples` 197 | 198 | Example code demonstrating how to use your project. 199 | 200 | Simple examples that show how to use your code, API, or library. These examples should be easy to understand and well-documented. 201 | 202 | ### `/tools` 203 | 204 | Tools and utilities specific to your project. 205 | 206 | Development tools that help with building, testing, or other aspects of your project. 207 | 208 | ## License 209 | 210 | **This package is released to the public domain.** For the purpose of compliance in and for international jurisdictions which do not recognize the public domain as a license under law, this package is thereby distributed under the most permissive terms and conditions available under the laws of said jurisdiction. 211 | 212 | The software is provided "as is" and the author disclaims all warranties with regard to this software including all implied warranties of merchantability and fitness. In no event shall the author be liable for any special, direct, indirect, or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software. 213 | 214 | Third-party software and libraries containing all or part of the contents of this package are governed by the provisions of their respective licenses. 215 | 216 | 217 | 218 | ### repostars-250 219 | 220 | 221 | 222 | ### **One last thing...** 223 | 224 | If this package helped you out or made things alittle easier, **please ⭐ it before you leave!** They won't send me the actual star, but it still means alot! 225 | 226 | 227 | 228 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | | Version | Supported | 6 | | ------- | ------------------ | 7 | | 1.0.x | :white_check_mark: | 8 | | < 1.0 | :x: | 9 | 10 | ## Reporting a Vulnerability 11 | 12 | We take the security of our project seriously. If you believe you've found a security vulnerability, please follow these guidelines: 13 | 14 | 1. **Do not** disclose the vulnerability publicly 15 | 2. Email us at [security@example.com](mailto:security@example.com) with details about the vulnerability 16 | 3. Allow time for us to respond (typically within 48 hours) 17 | 4. Provide sufficient information to reproduce and validate the issue 18 | 19 | ## Disclosure Policy 20 | 21 | When we receive a security report, our team will: 22 | 23 | 1. Confirm receipt of the report within 48 hours 24 | 2. Verify the vulnerability and its impact 25 | 3. Develop and test a fix 26 | 4. Release a patch and acknowledge contributors (unless anonymity is requested) 27 | 28 | ## Security Updates 29 | 30 | Security updates will be released as part of our standard release cycle or as emergency patches for critical vulnerabilities. 31 | 32 | ## Contact 33 | 34 | For security-related inquiries, please contact: 35 | 36 | - Email: [security@example.com](mailto:security@example.com) 37 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | This document outlines the various support channels available for this project. 4 | 5 | ## How to Get Help 6 | 7 | Before seeking help, please check the following resources: 8 | 9 | 1. **Documentation**: Check our [documentation](https://example.com/docs) for information about features and common issues. 10 | 2. **FAQ**: Review our [Frequently Asked Questions](https://example.com/faq) page. 11 | 3. **Search Issues**: Search for similar issues in our [issue tracker](https://github.com/example/repo/issues). 12 | 13 | ## Asking Questions 14 | 15 | If you still need help, you can: 16 | 17 | - **Open an Issue**: For bugs, feature requests, or questions, [create a new issue](https://github.com/example/repo/issues/new/choose) using the appropriate template. 18 | - **Discussions**: For general questions and community discussions, use our [Discussions forum](https://github.com/example/repo/discussions). 19 | 20 | ## Community Channels 21 | 22 | Join our community through these channels: 23 | 24 | - **Discord**: [Join our Discord server](https://discord.gg/example) 25 | - **Twitter**: Follow us [@exampleproject](https://twitter.com/exampleproject) 26 | - **Community Meetings**: We host monthly community calls. See our [community calendar](https://example.com/community-calendar) for details. 27 | 28 | ## Commercial Support 29 | 30 | For enterprise users requiring dedicated support, please contact [support@example.com](mailto:support@example.com) for information about our commercial support options. 31 | 32 | ## Issue Reporting Guidelines 33 | 34 | When reporting issues, please include: 35 | 36 | 1. Project version 37 | 2. Operating system/environment 38 | 3. Steps to reproduce the issue 39 | 4. Expected vs. actual behavior 40 | 5. Screenshots or logs (if applicable) 41 | 42 | ## Support Policy 43 | 44 | - Community support is provided on a best-effort basis 45 | - Issues are prioritized based on impact and community need 46 | - Security issues receive the highest priority 47 | -------------------------------------------------------------------------------- /bin/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/bin/.gitkeep -------------------------------------------------------------------------------- /build/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/build/.gitkeep -------------------------------------------------------------------------------- /cosmo-project.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/cosmo-project.zip -------------------------------------------------------------------------------- /docs/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/docs/.gitkeep -------------------------------------------------------------------------------- /docs/draft/licenses/AGPL-3.0.txt: -------------------------------------------------------------------------------- 1 | How to Apply These Terms to Your New Programs 2 | 3 | If you develop a new program, and you want it to be of the greatest possible 4 | use to the public, the best way to achieve this is to make it free software 5 | which everyone can redistribute and change under these terms. 6 | 7 | To do so, attach the following notices to the program. It is safest to attach 8 | them to the start of each source file to most effectively state the exclusion 9 | of warranty; and each file should have at least the "copyright" line and a 10 | pointer to where the full notice is found. 11 | 12 | 13 | Copyright (C) 14 | 15 | This program is free software: you can redistribute it and/or modify 16 | it under the terms of the GNU Affero General Public License as 17 | published by the Free Software Foundation, either version 3 of the 18 | License, or (at your option) any later version. 19 | 20 | This program is distributed in the hope that it will be useful, 21 | but WITHOUT ANY WARRANTY; without even the implied warranty of 22 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 | GNU Affero General Public License for more details. 24 | 25 | You should have received a copy of the GNU Affero General Public License 26 | along with this program. If not, see . 27 | Also add information on how to contact you by electronic and paper mail. 28 | 29 | If your software can interact with users remotely through a computer network, 30 | you should also make sure that it provides a way for users to get its source. 31 | For example, if your program is a web application, its interface could display 32 | a "Source" link that leads users to an archive of the code. There are many ways 33 | you could offer source, and different solutions will be better for different 34 | programs; see section 13 for the specific requirements. 35 | 36 | You should also get your employer (if you work as a programmer) or school, if 37 | any, to sign a "copyright disclaimer" for the program, if necessary. For more 38 | information on this, and how to apply and follow the GNU AGPL, see 39 | . 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | Copyright (C) 2007 Free Software Foundation, Inc. 48 | Everyone is permitted to copy and distribute verbatim copies of this license 49 | document, but changing it is not allowed. 50 | 51 | Preamble 52 | The GNU Affero General Public License is a free, copyleft license for software 53 | and other kinds of works, specifically designed to ensure cooperation with the 54 | community in the case of network server software. 55 | 56 | The licenses for most software and other practical works are designed to take 57 | away your freedom to share and change the works. By contrast, our General 58 | Public Licenses are intended to guarantee your freedom to share and change all 59 | versions of a program--to make sure it remains free software for all its users. 60 | 61 | When we speak of free software, we are referring to freedom, not price. Our 62 | General Public Licenses are designed to make sure that you have the freedom to 63 | distribute copies of free software (and charge for them if you wish), that you 64 | receive source code or can get it if you want it, that you can change the 65 | software or use pieces of it in new free programs, and that you know you can do 66 | these things. 67 | 68 | Developers that use our General Public Licenses protect your rights with two 69 | steps: (1) assert copyright on the software, and (2) offer you this License 70 | which gives you legal permission to copy, distribute and/or modify the 71 | software. 72 | 73 | A secondary benefit of defending all users' freedom is that improvements made 74 | in alternate versions of the program, if they receive widespread use, become 75 | available for other developers to incorporate. Many developers of free software 76 | are heartened and encouraged by the resulting cooperation. However, in the case 77 | of software used on network servers, this result may fail to come about. The 78 | GNU General Public License permits making a modified version and letting the 79 | public access it on a server without ever releasing its source code to the 80 | public. 81 | 82 | The GNU Affero General Public License is designed specifically to ensure that, 83 | in such cases, the modified source code becomes available to the community. It 84 | requires the operator of a network server to provide the source code of the 85 | modified version running there to the users of that server. Therefore, public 86 | use of a modified version, on a publicly accessible server, gives the public 87 | access to the source code of the modified version. 88 | 89 | An older license, called the Affero General Public License and published by 90 | Affero, was designed to accomplish similar goals. This is a different license, 91 | not a version of the Affero GPL, but Affero has released a new version of the 92 | Affero GPL which permits relicensing under this license. 93 | 94 | The precise terms and conditions for copying, distribution and modification 95 | follow. 96 | 97 | TERMS AND CONDITIONS 98 | 0. Definitions. 99 | 100 | "This License" refers to version 3 of the GNU Affero General Public License. 101 | 102 | "Copyright" also means copyright-like laws that apply to other kinds of works, 103 | such as semiconductor masks. 104 | 105 | "The Program" refers to any copyrightable work licensed under this License. 106 | Each licensee is addressed as "you". "Licensees" and "recipients" may be 107 | individuals or organizations. 108 | 109 | To "modify" a work means to copy from or adapt all or part of the work in a 110 | fashion requiring copyright permission, other than the making of an exact copy. 111 | The resulting work is called a "modified version" of the earlier work or a work 112 | "based on" the earlier work. 113 | 114 | A "covered work" means either the unmodified Program or a work based on the 115 | Program. 116 | 117 | To "propagate" a work means to do anything with it that, without permission, 118 | would make you directly or secondarily liable for infringement under applicable 119 | copyright law, except executing it on a computer or modifying a private copy. 120 | Propagation includes copying, distribution (with or without modification), 121 | making available to the public, and in some countries other activities as well. 122 | 123 | To "convey" a work means any kind of propagation that enables other parties to 124 | make or receive copies. Mere interaction with a user through a computer 125 | network, with no transfer of a copy, is not conveying. 126 | 127 | An interactive user interface displays "Appropriate Legal Notices" to the 128 | extent that it includes a convenient and prominently visible feature that (1) 129 | displays an appropriate copyright notice, and (2) tells the user that there is 130 | no warranty for the work (except to the extent that warranties are provided), 131 | that licensees may convey the work under this License, and how to view a copy 132 | of this License. If the interface presents a list of user commands or options, 133 | such as a menu, a prominent item in the list meets this criterion. 134 | 135 | 1. Source Code. 136 | 137 | The "source code" for a work means the preferred form of the work for making 138 | modifications to it. "Object code" means any non-source form of a work. 139 | 140 | A "Standard Interface" means an interface that either is an official standard 141 | defined by a recognized standards body, or, in the case of interfaces specified 142 | for a particular programming language, one that is widely used among developers 143 | working in that language. 144 | 145 | The "System Libraries" of an executable work include anything, other than the 146 | work as a whole, that (a) is included in the normal form of packaging a Major 147 | Component, but which is not part of that Major Component, and (b) serves only 148 | to enable use of the work with that Major Component, or to implement a Standard 149 | Interface for which an implementation is available to the public in source code 150 | form. A "Major Component", in this context, means a major essential component 151 | (kernel, window system, and so on) of the specific operating system (if any) on 152 | which the executable work runs, or a compiler used to produce the work, or an 153 | object code interpreter used to run it. 154 | 155 | The "Corresponding Source" for a work in object code form means all the source 156 | code needed to generate, install, and (for an executable work) run the object 157 | code and to modify the work, including scripts to control those activities. 158 | However, it does not include the work's System Libraries, or general-purpose 159 | tools or generally available free programs which are used unmodified in 160 | performing those activities but which are not part of the work. For example, 161 | Corresponding Source includes interface definition files associated with source 162 | files for the work, and the source code for shared libraries and dynamically 163 | linked subprograms that the work is specifically designed to require, such as 164 | by intimate data communication or control flow between those subprograms and 165 | other parts of the work. 166 | 167 | The Corresponding Source need not include anything that users can regenerate 168 | automatically from other parts of the Corresponding Source. 169 | 170 | The Corresponding Source for a work in source code form is that same work. 171 | 172 | 2. Basic Permissions. 173 | 174 | All rights granted under this License are granted for the term of copyright on 175 | the Program, and are irrevocable provided the stated conditions are met. This 176 | License explicitly affirms your unlimited permission to run the unmodified 177 | Program. The output from running a covered work is covered by this License only 178 | if the output, given its content, constitutes a covered work. This License 179 | acknowledges your rights of fair use or other equivalent, as provided by 180 | copyright law. 181 | 182 | You may make, run and propagate covered works that you do not convey, without 183 | conditions so long as your license otherwise remains in force. You may convey 184 | covered works to others for the sole purpose of having them make modifications 185 | exclusively for you, or provide you with facilities for running those works, 186 | provided that you comply with the terms of this License in conveying all 187 | material for which you do not control copyright. Those thus making or running 188 | the covered works for you must do so exclusively on your behalf, under your 189 | direction and control, on terms that prohibit them from making any copies of 190 | your copyrighted material outside their relationship with you. 191 | 192 | Conveying under any other circumstances is permitted solely under the 193 | conditions stated below. Sublicensing is not allowed; section 10 makes it 194 | unnecessary. 195 | 196 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 197 | 198 | No covered work shall be deemed part of an effective technological measure 199 | under any applicable law fulfilling obligations under article 11 of the WIPO 200 | copyright treaty adopted on 20 December 1996, or similar laws prohibiting or 201 | restricting circumvention of such measures. 202 | 203 | When you convey a covered work, you waive any legal power to forbid 204 | circumvention of technological measures to the extent such circumvention is 205 | effected by exercising rights under this License with respect to the covered 206 | work, and you disclaim any intention to limit operation or modification of the 207 | work as a means of enforcing, against the work's users, your or third parties' 208 | legal rights to forbid circumvention of technological measures. 209 | 210 | 4. Conveying Verbatim Copies. 211 | 212 | You may convey verbatim copies of the Program's source code as you receive it, 213 | in any medium, provided that you conspicuously and appropriately publish on 214 | each copy an appropriate copyright notice; keep intact all notices stating that 215 | this License and any non-permissive terms added in accord with section 7 apply 216 | to the code; keep intact all notices of the absence of any warranty; and give 217 | all recipients a copy of this License along with the Program. 218 | 219 | You may charge any price or no price for each copy that you convey, and you may 220 | offer support or warranty protection for a fee. 221 | 222 | 5. Conveying Modified Source Versions. 223 | 224 | You may convey a work based on the Program, or the modifications to produce it 225 | from the Program, in the form of source code under the terms of section 4, 226 | provided that you also meet all of these conditions: 227 | 228 | a) The work must carry prominent notices stating that you modified it, and 229 | giving a relevant date. 230 | b) The work must carry prominent notices stating that it is released under this 231 | License and any conditions added under section 7. This requirement modifies the 232 | requirement in section 4 to "keep intact all notices". 233 | c) You must license the entire work, as a whole, under this License to anyone 234 | who comes into possession of a copy. This License will therefore apply, along 235 | with any applicable section 7 additional terms, to the whole of the work, and 236 | all its parts, regardless of how they are packaged. This License gives no 237 | permission to license the work in any other way, but it does not invalidate 238 | such permission if you have separately received it. 239 | d) If the work has interactive user interfaces, each must display Appropriate 240 | Legal Notices; however, if the Program has interactive interfaces that do not 241 | display Appropriate Legal Notices, your work need not make them do so. 242 | A compilation of a covered work with other separate and independent works, 243 | which are not by their nature extensions of the covered work, and which are not 244 | combined with it such as to form a larger program, in or on a volume of a 245 | storage or distribution medium, is called an "aggregate" if the compilation and 246 | its resulting copyright are not used to limit the access or legal rights of the 247 | compilation's users beyond what the individual works permit. Inclusion of a 248 | covered work in an aggregate does not cause this License to apply to the other 249 | parts of the aggregate. 250 | 251 | 6. Conveying Non-Source Forms. 252 | 253 | You may convey a covered work in object code form under the terms of sections 4 254 | and 5, provided that you also convey the machine-readable Corresponding Source 255 | under the terms of this License, in one of these ways: 256 | 257 | a) Convey the object code in, or embodied in, a physical product (including a 258 | physical distribution medium), accompanied by the Corresponding Source fixed on 259 | a durable physical medium customarily used for software interchange. 260 | b) Convey the object code in, or embodied in, a physical product (including a 261 | physical distribution medium), accompanied by a written offer, valid for at 262 | least three years and valid for as long as you offer spare parts or customer 263 | support for that product model, to give anyone who possesses the object code 264 | either (1) a copy of the Corresponding Source for all the software in the 265 | product that is covered by this License, on a durable physical medium 266 | customarily used for software interchange, for a price no more than your 267 | reasonable cost of physically performing this conveying of source, or (2) 268 | access to copy the Corresponding Source from a network server at no charge. 269 | c) Convey individual copies of the object code with a copy of the written offer 270 | to provide the Corresponding Source. This alternative is allowed only 271 | occasionally and noncommercially, and only if you received the object code with 272 | such an offer, in accord with subsection 6b. 273 | d) Convey the object code by offering access from a designated place (gratis or 274 | for a charge), and offer equivalent access to the Corresponding Source in the 275 | same way through the same place at no further charge. You need not require 276 | recipients to copy the Corresponding Source along with the object code. If the 277 | place to copy the object code is a network server, the Corresponding Source may 278 | be on a different server (operated by you or a third party) that supports 279 | equivalent copying facilities, provided you maintain clear directions next to 280 | the object code saying where to find the Corresponding Source. Regardless of 281 | what server hosts the Corresponding Source, you remain obligated to ensure that 282 | it is available for as long as needed to satisfy these requirements. 283 | e) Convey the object code using peer-to-peer transmission, provided you inform 284 | other peers where the object code and Corresponding Source of the work are 285 | being offered to the general public at no charge under subsection 6d. 286 | A separable portion of the object code, whose source code is excluded from the 287 | Corresponding Source as a System Library, need not be included in conveying the 288 | object code work. 289 | 290 | A "User Product" is either (1) a "consumer product", which means any tangible 291 | personal property which is normally used for personal, family, or household 292 | purposes, or (2) anything designed or sold for incorporation into a dwelling. 293 | In determining whether a product is a consumer product, doubtful cases shall be 294 | resolved in favor of coverage. For a particular product received by a 295 | particular user, "normally used" refers to a typical or common use of that 296 | class of product, regardless of the status of the particular user or of the way 297 | in which the particular user actually uses, or expects or is expected to use, 298 | the product. A product is a consumer product regardless of whether the product 299 | has substantial commercial, industrial or non-consumer uses, unless such uses 300 | represent the only significant mode of use of the product. 301 | 302 | "Installation Information" for a User Product means any methods, procedures, 303 | authorization keys, or other information required to install and execute 304 | modified versions of a covered work in that User Product from a modified 305 | version of its Corresponding Source. The information must suffice to ensure 306 | that the continued functioning of the modified object code is in no case 307 | prevented or interfered with solely because modification has been made. 308 | 309 | If you convey an object code work under this section in, or with, or 310 | specifically for use in, a User Product, and the conveying occurs as part of a 311 | transaction in which the right of possession and use of the User Product is 312 | transferred to the recipient in perpetuity or for a fixed term (regardless of 313 | how the transaction is characterized), the Corresponding Source conveyed under 314 | this section must be accompanied by the Installation Information. But this 315 | requirement does not apply if neither you nor any third party retains the 316 | ability to install modified object code on the User Product (for example, the 317 | work has been installed in ROM). 318 | 319 | The requirement to provide Installation Information does not include a 320 | requirement to continue to provide support service, warranty, or updates for a 321 | work that has been modified or installed by the recipient, or for the User 322 | Product in which it has been modified or installed. Access to a network may be 323 | denied when the modification itself materially and adversely affects the 324 | operation of the network or violates the rules and protocols for communication 325 | across the network. 326 | 327 | Corresponding Source conveyed, and Installation Information provided, in accord 328 | with this section must be in a format that is publicly documented (and with an 329 | implementation available to the public in source code form), and must require 330 | no special password or key for unpacking, reading or copying. 331 | 332 | 7. Additional Terms. 333 | 334 | "Additional permissions" are terms that supplement the terms of this License by 335 | making exceptions from one or more of its conditions. Additional permissions 336 | that are applicable to the entire Program shall be treated as though they were 337 | included in this License, to the extent that they are valid under applicable 338 | law. If additional permissions apply only to part of the Program, that part may 339 | be used separately under those permissions, but the entire Program remains 340 | governed by this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option remove any 343 | additional permissions from that copy, or from any part of it. (Additional 344 | permissions may be written to require their own removal in certain cases when 345 | you modify the work.) You may place additional permissions on material, added 346 | by you to a covered work, for which you have or can give appropriate copyright 347 | permission. 348 | 349 | Notwithstanding any other provision of this License, for material you add to a 350 | covered work, you may (if authorized by the copyright holders of that material) 351 | supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the terms of 354 | sections 15 and 16 of this License; or 355 | b) Requiring preservation of specified reasonable legal notices or author 356 | attributions in that material or in the Appropriate Legal Notices displayed by 357 | works containing it; or 358 | c) Prohibiting misrepresentation of the origin of that material, or requiring 359 | that modified versions of such material be marked in reasonable ways as 360 | different from the original version; or 361 | d) Limiting the use for publicity purposes of names of licensors or authors of 362 | the material; or 363 | e) Declining to grant rights under trademark law for use of some trade names, 364 | trademarks, or service marks; or 365 | f) Requiring indemnification of licensors and authors of that material by 366 | anyone who conveys the material (or modified versions of it) with contractual 367 | assumptions of liability to the recipient, for any liability that these 368 | contractual assumptions directly impose on those licensors and authors. 369 | All other non-permissive additional terms are considered "further restrictions" 370 | within the meaning of section 10. If the Program as you received it, or any 371 | part of it, contains a notice stating that it is governed by this License along 372 | with a term that is a further restriction, you may remove that term. If a 373 | license document contains a further restriction but permits relicensing or 374 | conveying under this License, you may add to a covered work material governed 375 | by the terms of that license document, provided that the further restriction 376 | does not survive such relicensing or conveying. 377 | 378 | If you add terms to a covered work in accord with this section, you must place, 379 | in the relevant source files, a statement of the additional terms that apply to 380 | those files, or a notice indicating where to find the applicable terms. 381 | 382 | Additional terms, permissive or non-permissive, may be stated in the form of a 383 | separately written license, or stated as exceptions; the above requirements 384 | apply either way. 385 | 386 | 8. Termination. 387 | 388 | You may not propagate or modify a covered work except as expressly provided 389 | under this License. Any attempt otherwise to propagate or modify it is void, 390 | and will automatically terminate your rights under this License (including any 391 | patent licenses granted under the third paragraph of section 11). 392 | 393 | However, if you cease all violation of this License, then your license from a 394 | particular copyright holder is reinstated (a) provisionally, unless and until 395 | the copyright holder explicitly and finally terminates your license, and (b) 396 | permanently, if the copyright holder fails to notify you of the violation by 397 | some reasonable means prior to 60 days after the cessation. 398 | 399 | Moreover, your license from a particular copyright holder is reinstated 400 | permanently if the copyright holder notifies you of the violation by some 401 | reasonable means, this is the first time you have received notice of violation 402 | of this License (for any work) from that copyright holder, and you cure the 403 | violation prior to 30 days after your receipt of the notice. 404 | 405 | Termination of your rights under this section does not terminate the licenses 406 | of parties who have received copies or rights from you under this License. If 407 | your rights have been terminated and not permanently reinstated, you do not 408 | qualify to receive new licenses for the same material under section 10. 409 | 410 | 9. Acceptance Not Required for Having Copies. 411 | 412 | You are not required to accept this License in order to receive or run a copy 413 | of the Program. Ancillary propagation of a covered work occurring solely as a 414 | consequence of using peer-to-peer transmission to receive a copy likewise does 415 | not require acceptance. However, nothing other than this License grants you 416 | permission to propagate or modify any covered work. These actions infringe 417 | copyright if you do not accept this License. Therefore, by modifying or 418 | propagating a covered work, you indicate your acceptance of this License to do 419 | so. 420 | 421 | 10. Automatic Licensing of Downstream Recipients. 422 | 423 | Each time you convey a covered work, the recipient automatically receives a 424 | license from the original licensors, to run, modify and propagate that work, 425 | subject to this License. You are not responsible for enforcing compliance by 426 | third parties with this License. 427 | 428 | An "entity transaction" is a transaction transferring control of an 429 | organization, or substantially all assets of one, or subdividing an 430 | organization, or merging organizations. If propagation of a covered work 431 | results from an entity transaction, each party to that transaction who receives 432 | a copy of the work also receives whatever licenses to the work the party's 433 | predecessor in interest had or could give under the previous paragraph, plus a 434 | right to possession of the Corresponding Source of the work from the 435 | predecessor in interest, if the predecessor has it or can get it with 436 | reasonable efforts. 437 | 438 | You may not impose any further restrictions on the exercise of the rights 439 | granted or affirmed under this License. For example, you may not impose a 440 | license fee, royalty, or other charge for exercise of rights granted under this 441 | License, and you may not initiate litigation (including a cross-claim or 442 | counterclaim in a lawsuit) alleging that any patent claim is infringed by 443 | making, using, selling, offering for sale, or importing the Program or any 444 | portion of it. 445 | 446 | 11. Patents. 447 | 448 | A "contributor" is a copyright holder who authorizes use under this License of 449 | the Program or a work on which the Program is based. The work thus licensed is 450 | called the contributor's "contributor version". 451 | 452 | A contributor's "essential patent claims" are all patent claims owned or 453 | controlled by the contributor, whether already acquired or hereafter acquired, 454 | that would be infringed by some manner, permitted by this License, of making, 455 | using, or selling its contributor version, but do not include claims that would 456 | be infringed only as a consequence of further modification of the contributor 457 | version. For purposes of this definition, "control" includes the right to grant 458 | patent sublicenses in a manner consistent with the requirements of this 459 | License. 460 | 461 | Each contributor grants you a non-exclusive, worldwide, royalty-free patent 462 | license under the contributor's essential patent claims, to make, use, sell, 463 | offer for sale, import and otherwise run, modify and propagate the contents of 464 | its contributor version. 465 | 466 | In the following three paragraphs, a "patent license" is any express agreement 467 | or commitment, however denominated, not to enforce a patent (such as an express 468 | permission to practice a patent or covenant not to sue for patent 469 | infringement). To "grant" such a patent license to a party means to make such 470 | an agreement or commitment not to enforce a patent against the party. 471 | 472 | If you convey a covered work, knowingly relying on a patent license, and the 473 | Corresponding Source of the work is not available for anyone to copy, free of 474 | charge and under the terms of this License, through a publicly available 475 | network server or other readily accessible means, then you must either (1) 476 | cause the Corresponding Source to be so available, or (2) arrange to deprive 477 | yourself of the benefit of the patent license for this particular work, or (3) 478 | arrange, in a manner consistent with the requirements of this License, to 479 | extend the patent license to downstream recipients. "Knowingly relying" means 480 | you have actual knowledge that, but for the patent license, your conveying the 481 | covered work in a country, or your recipient's use of the covered work in a 482 | country, would infringe one or more identifiable patents in that country that 483 | you have reason to believe are valid. 484 | 485 | If, pursuant to or in connection with a single transaction or arrangement, you 486 | convey, or propagate by procuring conveyance of, a covered work, and grant a 487 | patent license to some of the parties receiving the covered work authorizing 488 | them to use, propagate, modify or convey a specific copy of the covered work, 489 | then the patent license you grant is automatically extended to all recipients 490 | of the covered work and works based on it. 491 | 492 | A patent license is "discriminatory" if it does not include within the scope of 493 | its coverage, prohibits the exercise of, or is conditioned on the non-exercise 494 | of one or more of the rights that are specifically granted under this License. 495 | You may not convey a covered work if you are a party to an arrangement with a 496 | third party that is in the business of distributing software, under which you 497 | make payment to the third party based on the extent of your activity of 498 | conveying the work, and under which the third party grants, to any of the 499 | parties who would receive the covered work from you, a discriminatory patent 500 | license (a) in connection with copies of the covered work conveyed by you (or 501 | copies made from those copies), or (b) primarily for and in connection with 502 | specific products or compilations that contain the covered work, unless you 503 | entered into that arrangement, or that patent license was granted, prior to 28 504 | March 2007. 505 | 506 | Nothing in this License shall be construed as excluding or limiting any implied 507 | license or other defenses to infringement that may otherwise be available to 508 | you under applicable patent law. 509 | 510 | 12. No Surrender of Others' Freedom. 511 | 512 | If conditions are imposed on you (whether by court order, agreement or 513 | otherwise) that contradict the conditions of this License, they do not excuse 514 | you from the conditions of this License. If you cannot convey a covered work so 515 | as to satisfy simultaneously your obligations under this License and any other 516 | pertinent obligations, then as a consequence you may not convey it at all. For 517 | example, if you agree to terms that obligate you to collect a royalty for 518 | further conveying from those to whom you convey the Program, the only way you 519 | could satisfy both those terms and this License would be to refrain entirely 520 | from conveying the Program. 521 | 522 | 13. Remote Network Interaction; Use with the GNU General Public License. 523 | 524 | Notwithstanding any other provision of this License, if you modify the Program, 525 | your modified version must prominently offer all users interacting with it 526 | remotely through a computer network (if your version supports such interaction) 527 | an opportunity to receive the Corresponding Source of your version by providing 528 | access to the Corresponding Source from a network server at no charge, through 529 | some standard or customary means of facilitating copying of software. This 530 | Corresponding Source shall include the Corresponding Source for any work 531 | covered by version 3 of the GNU General Public License that is incorporated 532 | pursuant to the following paragraph. 533 | 534 | Notwithstanding any other provision of this License, you have permission to 535 | link or combine any covered work with a work licensed under version 3 of the 536 | GNU General Public License into a single combined work, and to convey the 537 | resulting work. The terms of this License will continue to apply to the part 538 | which is the covered work, but the work with which it is combined will remain 539 | governed by version 3 of the GNU General Public License. 540 | 541 | 14. Revised Versions of this License. 542 | 543 | The Free Software Foundation may publish revised and/or new versions of the GNU 544 | Affero General Public License from time to time. Such new versions will be 545 | similar in spirit to the present version, but may differ in detail to address 546 | new problems or concerns. 547 | 548 | Each version is given a distinguishing version number. If the Program specifies 549 | that a certain numbered version of the GNU Affero General Public License "or 550 | any later version" applies to it, you have the option of following the terms 551 | and conditions either of that numbered version or of any later version 552 | published by the Free Software Foundation. If the Program does not specify a 553 | version number of the GNU Affero General Public License, you may choose any 554 | version ever published by the Free Software Foundation. 555 | 556 | If the Program specifies that a proxy can decide which future versions of the 557 | GNU Affero General Public License can be used, that proxy's public statement of 558 | acceptance of a version permanently authorizes you to choose that version for 559 | the Program. 560 | 561 | Later license versions may give you additional or different permissions. 562 | However, no additional obligations are imposed on any author or copyright 563 | holder as a result of your choosing to follow a later version. 564 | 565 | 15. Disclaimer of Warranty. 566 | 567 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE 568 | LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER 569 | PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER 570 | EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 571 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 572 | QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE 573 | DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR 574 | CORRECTION. 575 | 576 | 16. Limitation of Liability. 577 | 578 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY 579 | COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS 580 | PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 581 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE 582 | THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED 583 | INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE 584 | PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY 585 | HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 586 | 587 | 17. Interpretation of Sections 15 and 16. 588 | 589 | If the disclaimer of warranty and limitation of liability provided above cannot 590 | be given local legal effect according to their terms, reviewing courts shall 591 | apply local law that most closely approximates an absolute waiver of all civil 592 | liability in connection with the Program, unless a warranty or assumption of 593 | liability accompanies a copy of the Program in return for a fee. 594 | 595 | END OF TERMS AND CONDITIONS 596 | -------------------------------------------------------------------------------- /docs/draft/licenses/Apache-2.0-License.txt: -------------------------------------------------------------------------------- 1 | To apply the Apache License to your work, attach the following boilerplate 2 | notice, with the fields enclosed by brackets "[]" replaced with your own 3 | identifying information. (Don't include the brackets!) The text should be 4 | enclosed in the appropriate comment syntax for the file format. We also 5 | recommend that a file or class name and description of purpose be included on 6 | the same "printed page" as the copyright notice for easier identification 7 | within third-party archives. 8 | 9 | 10 | Copyright [yyyy] [name of copyright owner] 11 | 12 | Licensed under the Apache License, Version 2.0 (the "License"); 13 | you may not use this file except in compliance with the License. 14 | You may obtain a copy of the License at 15 | 16 | http://www.apache.org/licenses/LICENSE-2.0 17 | 18 | Unless required by applicable law or agreed to in writing, software 19 | distributed under the License is distributed on an "AS IS" BASIS, 20 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | See the License for the specific language governing permissions and 22 | limitations under the License. 23 | -------------------------------------------------------------------------------- /docs/draft/licenses/BSD-2Clause-Simplified-License.txt: -------------------------------------------------------------------------------- 1 | The following is a BSD 2-Clause license template. To generate your own license, 2 | change the values of OWNER and YEAR from their original values as given here, 3 | and substitute your own. 4 | 5 | 6 | Copyright (c) , 7 | All rights reserved. 8 | 9 | Redistribution and use in source and binary forms, with or without 10 | modification, are permitted provided that the following conditions are met: 11 | 12 | 1. Redistributions of source code must retain the above copyright notice, this 13 | list of conditions and the following disclaimer. 14 | 15 | 2. Redistributions in binary form must reproduce the above copyright notice, 16 | this list of conditions and the following disclaimer in the documentation 17 | and/or other materials provided with the distribution. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | -------------------------------------------------------------------------------- /docs/draft/licenses/BSD-3Clause-New-License.txt: -------------------------------------------------------------------------------- 1 | The following is a BSD 3-Clause ("BSD New" or "BSD Simplified") license 2 | template. To generate your own license, change the values of OWNER, 3 | ORGANIZATION and YEAR from their original values as given here, and substitute 4 | your own 5 | 6 | 7 | 8 | Copyright (c) , 9 | All rights reserved. 10 | 11 | Redistribution and use in source and binary forms, with or without 12 | modification, are permitted provided that the following conditions are met: 13 | 14 | 1. Redistributions of source code must retain the above copyright notice, this 15 | list of conditions and the following disclaimer. 16 | 17 | 2. Redistributions in binary form must reproduce the above copyright notice, 18 | this list of conditions and the following disclaimer in the documentation 19 | and/or other materials provided with the distribution. 20 | 21 | 3. Neither the name of the copyright holder nor the names of its contributors 22 | may be used to endorse or promote products derived from this software without 23 | specific prior written permission. 24 | 25 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 26 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 27 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 28 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 29 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 31 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 33 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 34 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35 | 36 | -------------------------------------------------------------------------------- /docs/draft/licenses/CDDL.txt: -------------------------------------------------------------------------------- 1 | COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 (CDDL-1.0) 2 | 1. Definitions. 3 | 4 | 1.1. Contributor means each individual or entity that creates or contributes to 5 | the creation of Modifications. 6 | 7 | 1.2. Contributor Version means the combination of the Original Software, prior 8 | Modifications used by a Contributor (if any), and the Modifications made by 9 | that particular Contributor. 10 | 11 | 1.3. Covered Software means (a) the Original Software, or (b) Modifications, or 12 | (c) the combination of files containing Original Software with files containing 13 | Modifications, in each case including portions thereof. 14 | 15 | 1.4. Executable means the Covered Software in any form other than Source Code. 16 | 17 | 1.5. Initial Developer means the individual or entity that first makes Original 18 | Software available under this License. 19 | 20 | 1.6. Larger Work means a work which combines Covered Software or portions 21 | thereof with code not governed by the terms of this License. 22 | 23 | 1.7. License means this document. 24 | 25 | 1.8. Licensable means having the right to grant, to the maximum extent 26 | possible, whether at the time of the initial grant or subsequently acquired, 27 | any and all of the rights conveyed herein. 28 | 29 | 1.9. Modifications means the Source Code and Executable form of any of the 30 | following: 31 | 32 | A. Any file that results from an addition to, deletion from or modification of 33 | the contents of a file containing Original Software or previous Modifications; 34 | 35 | B. Any new file that contains any part of the Original Software or previous 36 | Modification; or 37 | 38 | C. Any new file that is contributed or otherwise made available under the terms 39 | of this License. 40 | 41 | 1.10. Original Software means the Source Code and Executable form of computer 42 | software code that is originally released under this License. 43 | 44 | 1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, 45 | including without limitation, method, process, and apparatus claims, in any 46 | patent Licensable by grantor. 47 | 48 | 1.12. Source Code means (a) the common form of computer software code in which 49 | modifications are made and (b) associated documentation included in or with 50 | such code. 51 | 52 | 1.13. You (or Your) means an individual or a legal entity exercising rights 53 | under, and complying with all of the terms of, this License. For legal 54 | entities, You includes any entity which controls, is controlled by, or is under 55 | common control with You. For purposes of this definition, control means (a) the 56 | power, direct or indirect, to cause the direction or management of such entity, 57 | whether by contract or otherwise, or (b) ownership of more than fifty percent 58 | (50%) of the outstanding shares or beneficial ownership of such entity. 59 | 60 | 2. License Grants. 61 | 62 | 2.1. The Initial Developer Grant. 63 | 64 | Conditioned upon Your compliance with Section 3.1 below and subject to third 65 | party intellectual property claims, the Initial Developer hereby grants You a 66 | world-wide, royalty-free, non-exclusive license: 67 | 68 | (a) under intellectual property rights (other than patent or trademark) 69 | Licensable by Initial Developer, to use, reproduce, modify, display, perform, 70 | sublicense and distribute the Original Software (or portions thereof), with or 71 | without Modifications, and/or as part of a Larger Work; and 72 | 73 | (b) under Patent Claims infringed by the making, using or selling of Original 74 | Software, to make, have made, use, practice, sell, and offer for sale, and/or 75 | otherwise dispose of the Original Software (or portions thereof). 76 | 77 | (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date 78 | Initial Developer first distributes or otherwise makes the Original Software 79 | available to a third party under the terms of this License. 80 | 81 | (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for 82 | code that You delete from the Original Software, or (2) for infringements 83 | caused by: (i) the modification of the Original Software, or (ii) the 84 | combination of the Original Software with other software or devices. 85 | 86 | 2.2. Contributor Grant. 87 | 88 | Conditioned upon Your compliance with Section 3.1 below and subject to third 89 | party intellectual property claims, each Contributor hereby grants You a 90 | world-wide, royalty-free, non-exclusive license: 91 | 92 | (a) under intellectual property rights (other than patent or trademark) 93 | Licensable by Contributor to use, reproduce, modify, display, perform, 94 | sublicense and distribute the Modifications created by such Contributor (or 95 | portions thereof), either on an unmodified basis, with other Modifications, as 96 | Covered Software and/or as part of a Larger Work; and 97 | 98 | (b) under Patent Claims infringed by the making, using, or selling of 99 | Modifications made by that Contributor either alone and/or in combination with 100 | its Contributor Version (or portions of such combination), to make, use, sell, 101 | offer for sale, have made, and/or otherwise dispose of: (1) Modifications made 102 | by that Contributor (or portions thereof); and (2) the combination of 103 | Modifications made by that Contributor with its Contributor Version (or 104 | portions of such combination). 105 | 106 | (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the 107 | date Contributor first distributes or otherwise makes the Modifications 108 | available to a third party. 109 | 110 | (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for 111 | any code that Contributor has deleted from the Contributor Version; (2) for 112 | infringements caused by: (i) third party modifications of Contributor Version, 113 | or (ii) the combination of Modifications made by that Contributor with other 114 | software (except as part of the Contributor Version) or other devices; or (3) 115 | under Patent Claims infringed by Covered Software in the absence of 116 | Modifications made by that Contributor. 117 | 118 | 3. Distribution Obligations. 119 | 120 | 3.1. Availability of Source Code. 121 | 122 | Any Covered Software that You distribute or otherwise make available in 123 | Executable form must also be made available in Source Code form and that Source 124 | Code form must be distributed only under the terms of this License. You must 125 | include a copy of this License with every copy of the Source Code form of the 126 | Covered Software You distribute or otherwise make available. You must inform 127 | recipients of any such Covered Software in Executable form as to how they can 128 | obtain such Covered Software in Source Code form in a reasonable manner on or 129 | through a medium customarily used for software exchange. 130 | 131 | 3.2. Modifications. 132 | 133 | The Modifications that You create or to which You contribute are governed by 134 | the terms of this License. You represent that You believe Your Modifications 135 | are Your original creation(s) and/or You have sufficient rights to grant the 136 | rights conveyed by this License. 137 | 138 | 3.3. Required Notices. 139 | 140 | You must include a notice in each of Your Modifications that identifies You as 141 | the Contributor of the Modification. You may not remove or alter any copyright, 142 | patent or trademark notices contained within the Covered Software, or any 143 | notices of licensing or any descriptive text giving attribution to any 144 | Contributor or the Initial Developer. 145 | 146 | 3.4. Application of Additional Terms. 147 | 148 | You may not offer or impose any terms on any Covered Software in Source Code 149 | form that alters or restricts the applicable version of this License or the 150 | recipients rights hereunder. You may choose to offer, and to charge a fee for, 151 | warranty, support, indemnity or liability obligations to one or more recipients 152 | of Covered Software. However, you may do so only on Your own behalf, and not on 153 | behalf of the Initial Developer or any Contributor. You must make it absolutely 154 | clear that any such warranty, support, indemnity or liability obligation is 155 | offered by You alone, and You hereby agree to indemnify the Initial Developer 156 | and every Contributor for any liability incurred by the Initial Developer or 157 | such Contributor as a result of warranty, support, indemnity or liability terms 158 | You offer. 159 | 160 | 3.5. Distribution of Executable Versions. 161 | 162 | You may distribute the Executable form of the Covered Software under the terms 163 | of this License or under the terms of a license of Your choice, which may 164 | contain terms different from this License, provided that You are in compliance 165 | with the terms of this License and that the license for the Executable form 166 | does not attempt to limit or alter the recipients rights in the Source Code 167 | form from the rights set forth in this License. If You distribute the Covered 168 | Software in Executable form under a different license, You must make it 169 | absolutely clear that any terms which differ from this License are offered by 170 | You alone, not by the Initial Developer or Contributor. You hereby agree to 171 | indemnify the Initial Developer and every Contributor for any liability 172 | incurred by the Initial Developer or such Contributor as a result of any such 173 | terms You offer. 174 | 175 | 3.6. Larger Works. 176 | 177 | You may create a Larger Work by combining Covered Software with other code not 178 | governed by the terms of this License and distribute the Larger Work as a 179 | single product. In such a case, You must make sure the requirements of this 180 | License are fulfilled for the Covered Software. 181 | 182 | 4. Versions of the License. 183 | 184 | 4.1. New Versions. 185 | 186 | Sun Microsystems, Inc. is the initial license steward and may publish revised 187 | and/or new versions of this License from time to time. Each version will be 188 | given a distinguishing version number. Except as provided in Section 4.3, no 189 | one other than the license steward has the right to modify this License. 190 | 191 | 4.2. Effect of New Versions. 192 | 193 | You may always continue to use, distribute or otherwise make the Covered 194 | Software available under the terms of the version of the License under which 195 | You originally received the Covered Software. If the Initial Developer includes 196 | a notice in the Original Software prohibiting it from being distributed or 197 | otherwise made available under any subsequent version of the License, You must 198 | distribute and make the Covered Software available under the terms of the 199 | version of the License under which You originally received the Covered 200 | Software. Otherwise, You may also choose to use, distribute or otherwise make 201 | the Covered Software available under the terms of any subsequent version of the 202 | License published by the license steward. 203 | 204 | 4.3. Modified Versions. 205 | 206 | When You are an Initial Developer and You want to create a new license for Your 207 | Original Software, You may create and use a modified version of this License if 208 | You: (a) rename the license and remove any references to the name of the 209 | license steward (except to note that the license differs from this License); 210 | and (b) otherwise make it clear that the license contains terms which differ 211 | from this License. 212 | 213 | 5. DISCLAIMER OF WARRANTY. 214 | 215 | COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT 216 | WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT 217 | LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, 218 | MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK 219 | AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD 220 | ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL 221 | DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, 222 | REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART 223 | OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT 224 | UNDER THIS DISCLAIMER. 225 | 226 | 6. TERMINATION. 227 | 228 | 6.1. This License and the rights granted hereunder will terminate automatically 229 | if You fail to comply with terms herein and fail to cure such breach within 30 230 | days of becoming aware of the breach. Provisions which, by their nature, must 231 | remain in effect beyond the termination of this License shall survive. 232 | 233 | 6.2. If You assert a patent infringement claim (excluding declaratory judgment 234 | actions) against Initial Developer or a Contributor (the Initial Developer or 235 | Contributor against whom You assert such claim is referred to as Participant) 236 | alleging that the Participant Software (meaning the Contributor Version where 237 | the Participant is a Contributor or the Original Software where the Participant 238 | is the Initial Developer) directly or indirectly infringes any patent, then any 239 | and all rights granted directly or indirectly to You by such Participant, the 240 | Initial Developer (if the Initial Developer is not the Participant) and all 241 | Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days 242 | notice from Participant terminate prospectively and automatically at the 243 | expiration of such 60 day notice period, unless if within such 60 day period 244 | You withdraw Your claim with respect to the Participant Software against such 245 | Participant either unilaterally or pursuant to a written agreement with 246 | Participant. 247 | 248 | 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user 249 | licenses that have been validly granted by You or any distributor hereunder 250 | prior to termination (excluding licenses granted to You by any distributor) 251 | shall survive termination. 252 | 253 | 7. LIMITATION OF LIABILITY. 254 | 255 | UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING 256 | NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY 257 | OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF 258 | ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, 259 | INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT 260 | LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER 261 | FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN 262 | IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS 263 | LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL 264 | INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW 265 | PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR 266 | LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND 267 | LIMITATION MAY NOT APPLY TO YOU. 268 | 269 | 8. U.S. GOVERNMENT END USERS. 270 | 271 | The Covered Software is a commercial item, as that term is defined in 48 C.F.R. 272 | 2.101 (Oct. 1995), consisting of commercial computer software (as that term is 273 | defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial computer software 274 | documentation as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). 275 | Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 276 | (June 1995), all U.S. Government End Users acquire Covered Software with only 277 | those rights set forth herein. This U.S. Government Rights clause is in lieu 278 | of, and supersedes, any other FAR, DFAR, or other clause or provision that 279 | addresses Government rights in computer software under this License. 280 | 281 | 9. MISCELLANEOUS. 282 | 283 | This License represents the complete agreement concerning subject matter 284 | hereof. If any provision of this License is held to be unenforceable, such 285 | provision shall be reformed only to the extent necessary to make it 286 | enforceable. This License shall be governed by the law of the jurisdiction 287 | specified in a notice contained within the Original Software (except to the 288 | extent applicable law, if any, provides otherwise), excluding such 289 | jurisdictions conflict-of-law provisions. Any litigation relating to this 290 | License shall be subject to the jurisdiction of the courts located in the 291 | jurisdiction and venue specified in a notice contained within the Original 292 | Software, with the losing party responsible for costs, including, without 293 | limitation, court costs and reasonable attorneys fees and expenses. The 294 | application of the United Nations Convention on Contracts for the International 295 | Sale of Goods is expressly excluded. Any law or regulation which provides that 296 | the language of a contract shall be construed against the drafter shall not 297 | apply to this License. You agree that You alone are responsible for compliance 298 | with the United States export administration regulations (and the export 299 | control laws and regulation of any other countries) when You use, distribute or 300 | otherwise make available any Covered Software. 301 | 302 | 10. RESPONSIBILITY FOR CLAIMS. 303 | 304 | As between Initial Developer and the Contributors, each party is responsible 305 | for claims and damages arising, directly or indirectly, out of its utilization 306 | of rights under this License and You agree to work with Initial Developer and 307 | Contributors to distribute such responsibility on an equitable basis. Nothing 308 | herein is intended or shall be deemed to constitute any admission of liability. 309 | -------------------------------------------------------------------------------- /docs/draft/licenses/EclipsePublicLicense.txt: -------------------------------------------------------------------------------- 1 | Eclipse Public License, Version 1.0 (EPL-1.0) 2 | 3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC 4 | LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM 5 | CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 6 | 7 | 1. DEFINITIONS 8 | 9 | "Contribution" means: 10 | 11 | a) in the case of the initial Contributor, the initial code and documentation 12 | distributed under this Agreement, and 13 | b) in the case of each subsequent Contributor: 14 | i) changes to the Program, and 15 | ii) additions to the Program; 16 | where such changes and/or additions to the Program originate from and are 17 | distributed by that particular Contributor. A Contribution 'originates' from a 18 | Contributor if it was added to the Program by such Contributor itself or anyone 19 | acting on such Contributor's behalf. Contributions do not include additions to 20 | the Program which: (i) are separate modules of software distributed in 21 | conjunction with the Program under their own license agreement, and (ii) are 22 | not derivative works of the Program. 23 | "Contributor" means any person or entity that distributes the Program. 24 | 25 | "Licensed Patents " mean patent claims licensable by a Contributor which are 26 | necessarily infringed by the use or sale of its Contribution alone or when 27 | combined with the Program. 28 | 29 | "Program" means the Contributions distributed in accordance with this 30 | Agreement. 31 | 32 | "Recipient" means anyone who receives the Program under this Agreement, 33 | including all Contributors. 34 | 35 | 2. GRANT OF RIGHTS 36 | 37 | a) Subject to the terms of this Agreement, each Contributor hereby grants 38 | Recipient a non-exclusive, worldwide, royalty-free copyright license to 39 | reproduce, prepare derivative works of, publicly display, publicly perform, 40 | distribute and sublicense the Contribution of such Contributor, if any, and 41 | such derivative works, in source code and object code form. 42 | b) Subject to the terms of this Agreement, each Contributor hereby grants 43 | Recipient a non-exclusive, worldwide, royalty-free patent license under 44 | Licensed Patents to make, use, sell, offer to sell, import and otherwise 45 | transfer the Contribution of such Contributor, if any, in source code and 46 | object code form. This patent license shall apply to the combination of the 47 | Contribution and the Program if, at the time the Contribution is added by the 48 | Contributor, such addition of the Contribution causes such combination to be 49 | covered by the Licensed Patents. The patent license shall not apply to any 50 | other combinations which include the Contribution. No hardware per se is 51 | licensed hereunder. 52 | c) Recipient understands that although each Contributor grants the licenses to 53 | its Contributions set forth herein, no assurances are provided by any 54 | Contributor that the Program does not infringe the patent or other intellectual 55 | property rights of any other entity. Each Contributor disclaims any liability 56 | to Recipient for claims brought by any other entity based on infringement of 57 | intellectual property rights or otherwise. As a condition to exercising the 58 | rights and licenses granted hereunder, each Recipient hereby assumes sole 59 | responsibility to secure any other intellectual property rights needed, if any. 60 | For example, if a third party patent license is required to allow Recipient to 61 | distribute the Program, it is Recipient's responsibility to acquire that 62 | license before distributing the Program. 63 | d) Each Contributor represents that to its knowledge it has sufficient 64 | copyright rights in its Contribution, if any, to grant the copyright license 65 | set forth in this Agreement. 66 | 3. REQUIREMENTS 67 | 68 | A Contributor may choose to distribute the Program in object code form under 69 | its own license agreement, provided that: 70 | 71 | a) it complies with the terms and conditions of this Agreement; and 72 | b) its license agreement: 73 | i) effectively disclaims on behalf of all Contributors all warranties and 74 | conditions, express and implied, including warranties or conditions of title 75 | and non-infringement, and implied warranties or conditions of merchantability 76 | and fitness for a particular purpose; 77 | ii) effectively excludes on behalf of all Contributors all liability for 78 | damages, including direct, indirect, special, incidental and consequential 79 | damages, such as lost profits; 80 | iii) states that any provisions which differ from this Agreement are offered by 81 | that Contributor alone and not by any other party; and 82 | iv) states that source code for the Program is available from such Contributor, 83 | and informs licensees how to obtain it in a reasonable manner on or through a 84 | medium customarily used for software exchange. 85 | When the Program is made available in source code form: 86 | 87 | a) it must be made available under this Agreement; and 88 | b) a copy of this Agreement must be included with each copy of the Program. 89 | Contributors may not remove or alter any copyright notices contained within the 90 | Program. 91 | Each Contributor must identify itself as the originator of its Contribution, if 92 | any, in a manner that reasonably allows subsequent Recipients to identify the 93 | originator of the Contribution. 94 | 95 | 4. COMMERCIAL DISTRIBUTION 96 | 97 | Commercial distributors of software may accept certain responsibilities with 98 | respect to end users, business partners and the like. While this license is 99 | intended to facilitate the commercial use of the Program, the Contributor who 100 | includes the Program in a commercial product offering should do so in a manner 101 | which does not create potential liability for other Contributors. Therefore, if 102 | a Contributor includes the Program in a commercial product offering, such 103 | Contributor ("Commercial Contributor") hereby agrees to defend and indemnify 104 | every other Contributor ("Indemnified Contributor") against any losses, damages 105 | and costs (collectively "Losses") arising from claims, lawsuits and other legal 106 | actions brought by a third party against the Indemnified Contributor to the 107 | extent caused by the acts or omissions of such Commercial Contributor in 108 | connection with its distribution of the Program in a commercial product 109 | offering. The obligations in this section do not apply to any claims or Losses 110 | relating to any actual or alleged intellectual property infringement. In order 111 | to qualify, an Indemnified Contributor must: a) promptly notify the Commercial 112 | Contributor in writing of such claim, and b) allow the Commercial Contributor 113 | to control, and cooperate with the Commercial Contributor in, the defense and 114 | any related settlement negotiations. The Indemnified Contributor may 115 | participate in any such claim at its own expense. 116 | 117 | For example, a Contributor might include the Program in a commercial product 118 | offering, Product X. That Contributor is then a Commercial Contributor. If that 119 | Commercial Contributor then makes performance claims, or offers warranties 120 | related to Product X, those performance claims and warranties are such 121 | Commercial Contributor's responsibility alone. Under this section, the 122 | Commercial Contributor would have to defend claims against the other 123 | Contributors related to those performance claims and warranties, and if a court 124 | requires any other Contributor to pay any damages as a result, the Commercial 125 | Contributor must pay those damages. 126 | 127 | 5. NO WARRANTY 128 | 129 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN 130 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR 131 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, 132 | NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each 133 | Recipient is solely responsible for determining the appropriateness of using 134 | and distributing the Program and assumes all risks associated with its exercise 135 | of rights under this Agreement , including but not limited to the risks and 136 | costs of program errors, compliance with applicable laws, damage to or loss of 137 | data, programs or equipment, and unavailability or interruption of operations. 138 | 139 | 6. DISCLAIMER OF LIABILITY 140 | 141 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY 142 | CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, 143 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST 144 | PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 145 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY 146 | WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS 147 | GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 148 | 149 | 7. GENERAL 150 | 151 | If any provision of this Agreement is invalid or unenforceable under applicable 152 | law, it shall not affect the validity or enforceability of the remainder of the 153 | terms of this Agreement, and without further action by the parties hereto, such 154 | provision shall be reformed to the minimum extent necessary to make such 155 | provision valid and enforceable. 156 | 157 | If Recipient institutes patent litigation against any entity (including a 158 | cross-claim or counterclaim in a lawsuit) alleging that the Program itself 159 | (excluding combinations of the Program with other software or hardware) 160 | infringes such Recipient's patent(s), then such Recipient's rights granted 161 | under Section 2(b) shall terminate as of the date such litigation is filed. 162 | 163 | All Recipient's rights under this Agreement shall terminate if it fails to 164 | comply with any of the material terms or conditions of this Agreement and does 165 | not cure such failure in a reasonable period of time after becoming aware of 166 | such noncompliance. If all Recipient's rights under this Agreement terminate, 167 | Recipient agrees to cease use and distribution of the Program as soon as 168 | reasonably practicable. However, Recipient's obligations under this Agreement 169 | and any licenses granted by Recipient relating to the Program shall continue 170 | and survive. 171 | 172 | Everyone is permitted to copy and distribute copies of this Agreement, but in 173 | order to avoid inconsistency the Agreement is copyrighted and may only be 174 | modified in the following manner. The Agreement Steward reserves the right to 175 | publish new versions (including revisions) of this Agreement from time to time. 176 | No one other than the Agreement Steward has the right to modify this Agreement. 177 | The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation 178 | may assign the responsibility to serve as the Agreement Steward to a suitable 179 | separate entity. Each new version of the Agreement will be given a 180 | distinguishing version number. The Program (including Contributions) may always 181 | be distributed subject to the version of the Agreement under which it was 182 | received. In addition, after a new version of the Agreement is published, 183 | Contributor may elect to distribute the Program (including its Contributions) 184 | under the new version. Except as expressly stated in Sections 2(a) and 2(b) 185 | above, Recipient receives no rights or licenses to the intellectual property of 186 | any Contributor under this Agreement, whether expressly, by implication, 187 | estoppel or otherwise. All rights in the Program not expressly granted under 188 | this Agreement are reserved. 189 | 190 | This Agreement is governed by the laws of the State of New York and the 191 | intellectual property laws of the United States of America. No party to this 192 | Agreement will bring a legal action under this Agreement more than one year 193 | after the cause of action arose. Each party waives its rights to a jury trial 194 | in any resulting litigation. 195 | -------------------------------------------------------------------------------- /docs/draft/licenses/GPL-2.txt: -------------------------------------------------------------------------------- 1 | How to Apply These Terms to Your New Programs 2 | 3 | If you develop a new program, and you want it to be of the greatest possible 4 | use to the public, the best way to achieve this is to make it free software 5 | which everyone can redistribute and change under these terms. 6 | 7 | To do so, attach the following notices to the program. It is safest to attach 8 | them to the start of each source file to most effectively convey the exclusion 9 | of warranty; and each file should have at least the "copyright" line and a 10 | pointer to where the full notice is found. 11 | 12 | One line to give the program's name and a brief idea of what it does. 13 | Copyright (C) 14 | 15 | This program is free software; you can redistribute it and/or modify it under 16 | the terms of the GNU General Public License as published by the Free Software 17 | Foundation; either version 2 of the License, or (at your option) any later 18 | version. 19 | 20 | This program is distributed in the hope that it will be useful, but WITHOUT ANY 21 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 22 | PARTICULAR PURPOSE. See the GNU General Public License for more details. 23 | 24 | You should have received a copy of the GNU General Public License along with 25 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple 26 | Place, Suite 330, Boston, MA 02111-1307 USA 27 | Also add information on how to contact you by electronic and paper mail. 28 | 29 | If the program is interactive, make it output a short notice like this when it 30 | starts in an interactive mode: 31 | 32 | Gnomovision version 69, Copyright (C) year name of author Gnomovision comes 33 | with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, 34 | and you are welcome to redistribute it under certain conditions; type `show c' 35 | for details. 36 | The hypothetical commands `show w' and `show c' should show the appropriate 37 | parts of the General Public License. Of course, the commands you use may be 38 | called something other than `show w' and `show c'; they could even be 39 | mouse-clicks or menu items--whatever suits your program. 40 | 41 | You should also get your employer (if you work as a programmer) or your school, 42 | if any, to sign a "copyright disclaimer" for the program, if necessary. Here is 43 | a sample; alter the names: 44 | 45 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 46 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 47 | 48 | signature of Ty Coon, 1 April 1989 49 | Ty Coon, President of Vice 50 | This General Public License does not permit incorporating your program into 51 | proprietary programs. If your program is a subroutine library, you may consider 52 | it more useful to permit linking proprietary applications with the library. If 53 | this is what you want to do, use the GNU Library General Public License instead 54 | of this License. 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | GNU GENERAL PUBLIC LICENSE 63 | Version 2, June 1991 64 | 65 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 66 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 67 | 68 | Everyone is permitted to copy and distribute verbatim copies 69 | of this license document, but changing it is not allowed. 70 | 71 | Preamble 72 | 73 | The licenses for most software are designed to take away your freedom to share 74 | and change it. By contrast, the GNU General Public License is intended to 75 | guarantee your freedom to share and change free software--to make sure the 76 | software is free for all its users. This General Public License applies to most 77 | of the Free Software Foundation's software and to any other program whose 78 | authors commit to using it. (Some other Free Software Foundation software is 79 | covered by the GNU Library General Public License instead.) You can apply it to 80 | your programs, too. 81 | 82 | When we speak of free software, we are referring to freedom, not price. Our 83 | General Public Licenses are designed to make sure that you have the freedom to 84 | distribute copies of free software (and charge for this service if you wish), 85 | that you receive source code or can get it if you want it, that you can change 86 | the software or use pieces of it in new free programs; and that you know you 87 | can do these things. 88 | 89 | To protect your rights, we need to make restrictions that forbid anyone to deny 90 | you these rights or to ask you to surrender the rights. These restrictions 91 | translate to certain responsibilities for you if you distribute copies of the 92 | software, or if you modify it. 93 | 94 | For example, if you distribute copies of such a program, whether gratis or for 95 | a fee, you must give the recipients all the rights that you have. You must make 96 | sure that they, too, receive or can get the source code. And you must show them 97 | these terms so they know their rights. 98 | 99 | We protect your rights with two steps: (1) copyright the software, and (2) 100 | offer you this license which gives you legal permission to copy, distribute 101 | and/or modify the software. 102 | 103 | Also, for each author's protection and ours, we want to make certain that 104 | everyone understands that there is no warranty for this free software. If the 105 | software is modified by someone else and passed on, we want its recipients to 106 | know that what they have is not the original, so that any problems introduced 107 | by others will not reflect on the original authors' reputations. 108 | 109 | Finally, any free program is threatened constantly by software patents. We wish 110 | to avoid the danger that redistributors of a free program will individually 111 | obtain patent licenses, in effect making the program proprietary. To prevent 112 | this, we have made it clear that any patent must be licensed for everyone's 113 | free use or not licensed at all. 114 | 115 | The precise terms and conditions for copying, distribution and modification 116 | follow. 117 | 118 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 119 | 120 | 0. This License applies to any program or other work which contains a notice 121 | placed by the copyright holder saying it may be distributed under the terms of 122 | this General Public License. The "Program", below, refers to any such program 123 | or work, and a "work based on the Program" means either the Program or any 124 | derivative work under copyright law: that is to say, a work containing the 125 | Program or a portion of it, either verbatim or with modifications and/or 126 | translated into another language. (Hereinafter, translation is included without 127 | limitation in the term "modification".) Each licensee is addressed as "you". 128 | 129 | Activities other than copying, distribution and modification are not covered by 130 | this License; they are outside its scope. The act of running the Program is not 131 | restricted, and the output from the Program is covered only if its contents 132 | constitute a work based on the Program (independent of having been made by 133 | running the Program). Whether that is true depends on what the Program does. 134 | 135 | 1. You may copy and distribute verbatim copies of the Program's source code as 136 | you receive it, in any medium, provided that you conspicuously and 137 | appropriately publish on each copy an appropriate copyright notice and 138 | disclaimer of warranty; keep intact all the notices that refer to this License 139 | and to the absence of any warranty; and give any other recipients of the 140 | Program a copy of this License along with the Program. 141 | 142 | You may charge a fee for the physical act of transferring a copy, and you may 143 | at your option offer warranty protection in exchange for a fee. 144 | 145 | 2. You may modify your copy or copies of the Program or any portion of it, thus 146 | forming a work based on the Program, and copy and distribute such modifications 147 | or work under the terms of Section 1 above, provided that you also meet all of 148 | these conditions: 149 | 150 | a) You must cause the modified files to carry prominent notices stating that 151 | you changed the files and the date of any change. 152 | 153 | b) You must cause any work that you distribute or publish, that in whole or in 154 | part contains or is derived from the Program or any part thereof, to be 155 | licensed as a whole at no charge to all third parties under the terms of this 156 | License. 157 | 158 | c) If the modified program normally reads commands interactively when run, you 159 | must cause it, when started running for such interactive use in the most 160 | ordinary way, to print or display an announcement including an appropriate 161 | copyright notice and a notice that there is no warranty (or else, saying that 162 | you provide a warranty) and that users may redistribute the program under these 163 | conditions, and telling the user how to view a copy of this License. 164 | (Exception: if the Program itself is interactive but does not normally print 165 | such an announcement, your work based on the Program is not required to print 166 | an announcement.) 167 | These requirements apply to the modified work as a whole. If identifiable 168 | sections of that work are not derived from the Program, and can be reasonably 169 | considered independent and separate works in themselves, then this License, and 170 | its terms, do not apply to those sections when you distribute them as separate 171 | works. But when you distribute the same sections as part of a whole which is a 172 | work based on the Program, the distribution of the whole must be on the terms 173 | of this License, whose permissions for other licensees extend to the entire 174 | whole, and thus to each and every part regardless of who wrote it. 175 | 176 | Thus, it is not the intent of this section to claim rights or contest your 177 | rights to work written entirely by you; rather, the intent is to exercise the 178 | right to control the distribution of derivative or collective works based on 179 | the Program. 180 | 181 | In addition, mere aggregation of another work not based on the Program with the 182 | Program (or with a work based on the Program) on a volume of a storage or 183 | distribution medium does not bring the other work under the scope of this 184 | License. 185 | 186 | 3. You may copy and distribute the Program (or a work based on it, under 187 | Section 2) in object code or executable form under the terms of Sections 1 and 188 | 2 above provided that you also do one of the following: 189 | 190 | a) Accompany it with the complete corresponding machine-readable source code, 191 | which must be distributed under the terms of Sections 1 and 2 above on a medium 192 | customarily used for software interchange; or, 193 | 194 | b) Accompany it with a written offer, valid for at least three years, to give 195 | any third party, for a charge no more than your cost of physically performing 196 | source distribution, a complete machine-readable copy of the corresponding 197 | source code, to be distributed under the terms of Sections 1 and 2 above on a 198 | medium customarily used for software interchange; or, 199 | 200 | c) Accompany it with the information you received as to the offer to distribute 201 | corresponding source code. (This alternative is allowed only for noncommercial 202 | distribution and only if you received the program in object code or executable 203 | form with such an offer, in accord with Subsection b above.) 204 | The source code for a work means the preferred form of the work for making 205 | modifications to it. For an executable work, complete source code means all the 206 | source code for all modules it contains, plus any associated interface 207 | definition files, plus the scripts used to control compilation and installation 208 | of the executable. However, as a special exception, the source code distributed 209 | need not include anything that is normally distributed (in either source or 210 | binary form) with the major components (compiler, kernel, and so on) of the 211 | operating system on which the executable runs, unless that component itself 212 | accompanies the executable. 213 | 214 | If distribution of executable or object code is made by offering access to copy 215 | from a designated place, then offering equivalent access to copy the source 216 | code from the same place counts as distribution of the source code, even though 217 | third parties are not compelled to copy the source along with the object code. 218 | 219 | 4. You may not copy, modify, sublicense, or distribute the Program except as 220 | expressly provided under this License. Any attempt otherwise to copy, modify, 221 | sublicense or distribute the Program is void, and will automatically terminate 222 | your rights under this License. However, parties who have received copies, or 223 | rights, from you under this License will not have their licenses terminated so 224 | long as such parties remain in full compliance. 225 | 226 | 5. You are not required to accept this License, since you have not signed it. 227 | However, nothing else grants you permission to modify or distribute the Program 228 | or its derivative works. These actions are prohibited by law if you do not 229 | accept this License. Therefore, by modifying or distributing the Program (or 230 | any work based on the Program), you indicate your acceptance of this License to 231 | do so, and all its terms and conditions for copying, distributing or modifying 232 | the Program or works based on it. 233 | 234 | 6. Each time you redistribute the Program (or any work based on the Program), 235 | the recipient automatically receives a license from the original licensor to 236 | copy, distribute or modify the Program subject to these terms and conditions. 237 | You may not impose any further restrictions on the recipients' exercise of the 238 | rights granted herein. You are not responsible for enforcing compliance by 239 | third parties to this License. 240 | 241 | 7. If, as a consequence of a court judgment or allegation of patent 242 | infringement or for any other reason (not limited to patent issues), conditions 243 | are imposed on you (whether by court order, agreement or otherwise) that 244 | contradict the conditions of this License, they do not excuse you from the 245 | conditions of this License. If you cannot distribute so as to satisfy 246 | simultaneously your obligations under this License and any other pertinent 247 | obligations, then as a consequence you may not distribute the Program at all. 248 | For example, if a patent license would not permit royalty-free redistribution 249 | of the Program by all those who receive copies directly or indirectly through 250 | you, then the only way you could satisfy both it and this License would be to 251 | refrain entirely from distribution of the Program. 252 | 253 | If any portion of this section is held invalid or unenforceable under any 254 | particular circumstance, the balance of the section is intended to apply and 255 | the section as a whole is intended to apply in other circumstances. 256 | 257 | It is not the purpose of this section to induce you to infringe any patents or 258 | other property right claims or to contest validity of any such claims; this 259 | section has the sole purpose of protecting the integrity of the free software 260 | distribution system, which is implemented by public license practices. Many 261 | people have made generous contributions to the wide range of software 262 | distributed through that system in reliance on consistent application of that 263 | system; it is up to the author/donor to decide if he or she is willing to 264 | distribute software through any other system and a licensee cannot impose that 265 | choice. 266 | 267 | This section is intended to make thoroughly clear what is believed to be a 268 | consequence of the rest of this License. 269 | 270 | 8. If the distribution and/or use of the Program is restricted in certain 271 | countries either by patents or by copyrighted interfaces, the original 272 | copyright holder who places the Program under this License may add an explicit 273 | geographical distribution limitation excluding those countries, so that 274 | distribution is permitted only in or among countries not thus excluded. In such 275 | case, this License incorporates the limitation as if written in the body of 276 | this License. 277 | 278 | 9. The Free Software Foundation may publish revised and/or new versions of the 279 | General Public License from time to time. Such new versions will be similar in 280 | spirit to the present version, but may differ in detail to address new problems 281 | or concerns. 282 | 283 | Each version is given a distinguishing version number. If the Program specifies 284 | a version number of this License which applies to it and "any later version", 285 | you have the option of following the terms and conditions either of that 286 | version or of any later version published by the Free Software Foundation. If 287 | the Program does not specify a version number of this License, you may choose 288 | any version ever published by the Free Software Foundation. 289 | 290 | 10. If you wish to incorporate parts of the Program into other free programs 291 | whose distribution conditions are different, write to the author to ask for 292 | permission. For software which is copyrighted by the Free Software Foundation, 293 | write to the Free Software Foundation; we sometimes make exceptions for this. 294 | Our decision will be guided by the two goals of preserving the free status of 295 | all derivatives of our free software and of promoting the sharing and reuse of 296 | software generally. 297 | 298 | NO WARRANTY 299 | 300 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR 301 | THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE 302 | STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE 303 | PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, 304 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 305 | FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND 306 | PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU 307 | ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 308 | 309 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL 310 | ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE 311 | PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 312 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 313 | INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA 314 | BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 315 | FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER 316 | OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 317 | 318 | END OF TERMS AND CONDITIONS 319 | 320 | -------------------------------------------------------------------------------- /docs/draft/licenses/GPL-3.txt: -------------------------------------------------------------------------------- 1 | How to Apply These Terms to Your New Programs 2 | If you develop a new program, and you want it to be of the greatest possible 3 | use to the public, the best way to achieve this is to make it free software 4 | which everyone can redistribute and change under these terms. 5 | 6 | To do so, attach the following notices to the program. It is safest to attach 7 | them to the start of each source file to most effectively state the exclusion 8 | of warranty; and each file should have at least the “copyright” line and a 9 | pointer to where the full notice is found. 10 | 11 | 12 | Copyright (C) 13 | 14 | This program is free software: you can redistribute it and/or modify 15 | it under the terms of the GNU General Public License as published by 16 | the Free Software Foundation, either version 3 of the License, or 17 | (at your option) any later version. 18 | 19 | This program is distributed in the hope that it will be useful, 20 | but WITHOUT ANY WARRANTY; without even the implied warranty of 21 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 | GNU General Public License for more details. 23 | 24 | You should have received a copy of the GNU General Public License 25 | along with this program. If not, see . 26 | Also add information on how to contact you by electronic and paper mail. 27 | 28 | If the program does terminal interaction, make it output a short notice like 29 | this when it starts in an interactive mode: 30 | 31 | Copyright (C) 32 | 33 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 34 | This is free software, and you are welcome to redistribute it 35 | under certain conditions; type `show c' for details. 36 | The hypothetical commands `show w' and `show c' should show the appropriate 37 | parts of the General Public License. Of course, your program's commands might 38 | be different; for a GUI interface, you would use an “about box”. 39 | 40 | You should also get your employer (if you work as a programmer) or school, if 41 | any, to sign a “copyright disclaimer” for the program, if necessary. For more 42 | information on this, and how to apply and follow the GNU GPL, see 43 | . 44 | 45 | The GNU General Public License does not permit incorporating your program into 46 | proprietary programs. If your program is a subroutine library, you may consider 47 | it more useful to permit linking proprietary applications with the library. If 48 | this is what you want to do, use the GNU Lesser General Public License instead 49 | of this License. But first, please read 50 | . 51 | 52 | 53 | 54 | 55 | GNU GENERAL PUBLIC LICENSE 56 | Version 3, 29 June 2007 57 | 58 | Copyright (C) 2007 Free Software Foundation, Inc. 59 | 60 | Everyone is permitted to copy and distribute verbatim copies of this license 61 | document, but changing it is not allowed. 62 | 63 | Preamble 64 | The GNU General Public License is a free, copyleft license for software and 65 | other kinds of works. 66 | 67 | The licenses for most software and other practical works are designed to take 68 | away your freedom to share and change the works. By contrast, the GNU General 69 | Public License is intended to guarantee your freedom to share and change all 70 | versions of a program--to make sure it remains free software for all its users. 71 | We, the Free Software Foundation, use the GNU General Public License for most 72 | of our software; it applies also to any other work released this way by its 73 | authors. You can apply it to your programs, too. 74 | 75 | When we speak of free software, we are referring to freedom, not price. Our 76 | General Public Licenses are designed to make sure that you have the freedom to 77 | distribute copies of free software (and charge for them if you wish), that you 78 | receive source code or can get it if you want it, that you can change the 79 | software or use pieces of it in new free programs, and that you know you can do 80 | these things. 81 | 82 | To protect your rights, we need to prevent others from denying you these rights 83 | or asking you to surrender the rights. Therefore, you have certain 84 | responsibilities if you distribute copies of the software, or if you modify it: 85 | responsibilities to respect the freedom of others. 86 | 87 | For example, if you distribute copies of such a program, whether gratis or for 88 | a fee, you must pass on to the recipients the same freedoms that you received. 89 | You must make sure that they, too, receive or can get the source code. And you 90 | must show them these terms so they know their rights. 91 | 92 | Developers that use the GNU GPL protect your rights with two steps: (1) assert 93 | copyright on the software, and (2) offer you this License giving you legal 94 | permission to copy, distribute and/or modify it. 95 | 96 | For the developers' and authors' protection, the GPL clearly explains that 97 | there is no warranty for this free software. For both users' and authors' sake, 98 | the GPL requires that modified versions be marked as changed, so that their 99 | problems will not be attributed erroneously to authors of previous versions. 100 | 101 | Some devices are designed to deny users access to install or run modified 102 | versions of the software inside them, although the manufacturer can do so. This 103 | is fundamentally incompatible with the aim of protecting users' freedom to 104 | change the software. The systematic pattern of such abuse occurs in the area of 105 | products for individuals to use, which is precisely where it is most 106 | unacceptable. Therefore, we have designed this version of the GPL to prohibit 107 | the practice for those products. If such problems arise substantially in other 108 | domains, we stand ready to extend this provision to those domains in future 109 | versions of the GPL, as needed to protect the freedom of users. 110 | 111 | Finally, every program is threatened constantly by software patents. States 112 | should not allow patents to restrict development and use of software on 113 | general-purpose computers, but in those that do, we wish to avoid the special 114 | danger that patents applied to a free program could make it effectively 115 | proprietary. To prevent this, the GPL assures that patents cannot be used to 116 | render the program non-free. 117 | 118 | The precise terms and conditions for copying, distribution and modification 119 | follow. 120 | 121 | TERMS AND CONDITIONS 122 | 0. Definitions. 123 | “This License” refers to version 3 of the GNU General Public License. 124 | 125 | “Copyright” also means copyright-like laws that apply to other kinds of works, 126 | such as semiconductor masks. 127 | 128 | “The Program” refers to any copyrightable work licensed under this License. 129 | Each licensee is addressed as “you”. “Licensees” and “recipients” may be 130 | individuals or organizations. 131 | 132 | To “modify” a work means to copy from or adapt all or part of the work in a 133 | fashion requiring copyright permission, other than the making of an exact copy. 134 | The resulting work is called a “modified version” of the earlier work or a work 135 | “based on” the earlier work. 136 | 137 | A “covered work” means either the unmodified Program or a work based on the 138 | Program. 139 | 140 | To “propagate” a work means to do anything with it that, without permission, 141 | would make you directly or secondarily liable for infringement under applicable 142 | copyright law, except executing it on a computer or modifying a private copy. 143 | Propagation includes copying, distribution (with or without modification), 144 | making available to the public, and in some countries other activities as well. 145 | 146 | To “convey” a work means any kind of propagation that enables other parties to 147 | make or receive copies. Mere interaction with a user through a computer 148 | network, with no transfer of a copy, is not conveying. 149 | 150 | An interactive user interface displays “Appropriate Legal Notices” to the 151 | extent that it includes a convenient and prominently visible feature that (1) 152 | displays an appropriate copyright notice, and (2) tells the user that there is 153 | no warranty for the work (except to the extent that warranties are provided), 154 | that licensees may convey the work under this License, and how to view a copy 155 | of this License. If the interface presents a list of user commands or options, 156 | such as a menu, a prominent item in the list meets this criterion. 157 | 158 | 1. Source Code. 159 | The “source code” for a work means the preferred form of the work for making 160 | modifications to it. “Object code” means any non-source form of a work. 161 | 162 | A “Standard Interface” means an interface that either is an official standard 163 | defined by a recognized standards body, or, in the case of interfaces specified 164 | for a particular programming language, one that is widely used among developers 165 | working in that language. 166 | 167 | The “System Libraries” of an executable work include anything, other than the 168 | work as a whole, that (a) is included in the normal form of packaging a Major 169 | Component, but which is not part of that Major Component, and (b) serves only 170 | to enable use of the work with that Major Component, or to implement a Standard 171 | Interface for which an implementation is available to the public in source code 172 | form. A “Major Component”, in this context, means a major essential component 173 | (kernel, window system, and so on) of the specific operating system (if any) on 174 | which the executable work runs, or a compiler used to produce the work, or an 175 | object code interpreter used to run it. 176 | 177 | The “Corresponding Source” for a work in object code form means all the source 178 | code needed to generate, install, and (for an executable work) run the object 179 | code and to modify the work, including scripts to control those activities. 180 | However, it does not include the work's System Libraries, or general-purpose 181 | tools or generally available free programs which are used unmodified in 182 | performing those activities but which are not part of the work. For example, 183 | Corresponding Source includes interface definition files associated with source 184 | files for the work, and the source code for shared libraries and dynamically 185 | linked subprograms that the work is specifically designed to require, such as 186 | by intimate data communication or control flow between those subprograms and 187 | other parts of the work. 188 | 189 | The Corresponding Source need not include anything that users can regenerate 190 | automatically from other parts of the Corresponding Source. 191 | 192 | The Corresponding Source for a work in source code form is that same work. 193 | 194 | 2. Basic Permissions. 195 | All rights granted under this License are granted for the term of copyright on 196 | the Program, and are irrevocable provided the stated conditions are met. This 197 | License explicitly affirms your unlimited permission to run the unmodified 198 | Program. The output from running a covered work is covered by this License only 199 | if the output, given its content, constitutes a covered work. This License 200 | acknowledges your rights of fair use or other equivalent, as provided by 201 | copyright law. 202 | 203 | You may make, run and propagate covered works that you do not convey, without 204 | conditions so long as your license otherwise remains in force. You may convey 205 | covered works to others for the sole purpose of having them make modifications 206 | exclusively for you, or provide you with facilities for running those works, 207 | provided that you comply with the terms of this License in conveying all 208 | material for which you do not control copyright. Those thus making or running 209 | the covered works for you must do so exclusively on your behalf, under your 210 | direction and control, on terms that prohibit them from making any copies of 211 | your copyrighted material outside their relationship with you. 212 | 213 | Conveying under any other circumstances is permitted solely under the 214 | conditions stated below. Sublicensing is not allowed; section 10 makes it 215 | unnecessary. 216 | 217 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 218 | No covered work shall be deemed part of an effective technological measure 219 | under any applicable law fulfilling obligations under article 11 of the WIPO 220 | copyright treaty adopted on 20 December 1996, or similar laws prohibiting or 221 | restricting circumvention of such measures. 222 | 223 | When you convey a covered work, you waive any legal power to forbid 224 | circumvention of technological measures to the extent such circumvention is 225 | effected by exercising rights under this License with respect to the covered 226 | work, and you disclaim any intention to limit operation or modification of the 227 | work as a means of enforcing, against the work's users, your or third parties' 228 | legal rights to forbid circumvention of technological measures. 229 | 230 | 4. Conveying Verbatim Copies. 231 | You may convey verbatim copies of the Program's source code as you receive it, 232 | in any medium, provided that you conspicuously and appropriately publish on 233 | each copy an appropriate copyright notice; keep intact all notices stating that 234 | this License and any non-permissive terms added in accord with section 7 apply 235 | to the code; keep intact all notices of the absence of any warranty; and give 236 | all recipients a copy of this License along with the Program. 237 | 238 | You may charge any price or no price for each copy that you convey, and you may 239 | offer support or warranty protection for a fee. 240 | 241 | 5. Conveying Modified Source Versions. 242 | You may convey a work based on the Program, or the modifications to produce it 243 | from the Program, in the form of source code under the terms of section 4, 244 | provided that you also meet all of these conditions: 245 | 246 | a) The work must carry prominent notices stating that you modified it, and 247 | giving a relevant date. 248 | b) The work must carry prominent notices stating that it is released under this 249 | License and any conditions added under section 7. This requirement modifies the 250 | requirement in section 4 to “keep intact all notices”. 251 | c) You must license the entire work, as a whole, under this License to anyone 252 | who comes into possession of a copy. This License will therefore apply, along 253 | with any applicable section 7 additional terms, to the whole of the work, and 254 | all its parts, regardless of how they are packaged. This License gives no 255 | permission to license the work in any other way, but it does not invalidate 256 | such permission if you have separately received it. 257 | d) If the work has interactive user interfaces, each must display Appropriate 258 | Legal Notices; however, if the Program has interactive interfaces that do not 259 | display Appropriate Legal Notices, your work need not make them do so. 260 | A compilation of a covered work with other separate and independent works, 261 | which are not by their nature extensions of the covered work, and which are not 262 | combined with it such as to form a larger program, in or on a volume of a 263 | storage or distribution medium, is called an “aggregate” if the compilation and 264 | its resulting copyright are not used to limit the access or legal rights of the 265 | compilation's users beyond what the individual works permit. Inclusion of a 266 | covered work in an aggregate does not cause this License to apply to the other 267 | parts of the aggregate. 268 | 269 | 6. Conveying Non-Source Forms. 270 | You may convey a covered work in object code form under the terms of sections 4 271 | and 5, provided that you also convey the machine-readable Corresponding Source 272 | under the terms of this License, in one of these ways: 273 | 274 | a) Convey the object code in, or embodied in, a physical product (including a 275 | physical distribution medium), accompanied by the Corresponding Source fixed on 276 | a durable physical medium customarily used for software interchange. 277 | b) Convey the object code in, or embodied in, a physical product (including a 278 | physical distribution medium), accompanied by a written offer, valid for at 279 | least three years and valid for as long as you offer spare parts or customer 280 | support for that product model, to give anyone who possesses the object code 281 | either (1) a copy of the Corresponding Source for all the software in the 282 | product that is covered by this License, on a durable physical medium 283 | customarily used for software interchange, for a price no more than your 284 | reasonable cost of physically performing this conveying of source, or (2) 285 | access to copy the Corresponding Source from a network server at no charge. 286 | c) Convey individual copies of the object code with a copy of the written offer 287 | to provide the Corresponding Source. This alternative is allowed only 288 | occasionally and noncommercially, and only if you received the object code with 289 | such an offer, in accord with subsection 6b. 290 | d) Convey the object code by offering access from a designated place (gratis or 291 | for a charge), and offer equivalent access to the Corresponding Source in the 292 | same way through the same place at no further charge. You need not require 293 | recipients to copy the Corresponding Source along with the object code. If the 294 | place to copy the object code is a network server, the Corresponding Source may 295 | be on a different server (operated by you or a third party) that supports 296 | equivalent copying facilities, provided you maintain clear directions next to 297 | the object code saying where to find the Corresponding Source. Regardless of 298 | what server hosts the Corresponding Source, you remain obligated to ensure that 299 | it is available for as long as needed to satisfy these requirements. 300 | e) Convey the object code using peer-to-peer transmission, provided you inform 301 | other peers where the object code and Corresponding Source of the work are 302 | being offered to the general public at no charge under subsection 6d. 303 | A separable portion of the object code, whose source code is excluded from the 304 | Corresponding Source as a System Library, need not be included in conveying the 305 | object code work. 306 | 307 | A “User Product” is either (1) a “consumer product”, which means any tangible 308 | personal property which is normally used for personal, family, or household 309 | purposes, or (2) anything designed or sold for incorporation into a dwelling. 310 | In determining whether a product is a consumer product, doubtful cases shall be 311 | resolved in favor of coverage. For a particular product received by a 312 | particular user, “normally used” refers to a typical or common use of that 313 | class of product, regardless of the status of the particular user or of the way 314 | in which the particular user actually uses, or expects or is expected to use, 315 | the product. A product is a consumer product regardless of whether the product 316 | has substantial commercial, industrial or non-consumer uses, unless such uses 317 | represent the only significant mode of use of the product. 318 | 319 | “Installation Information” for a User Product means any methods, procedures, 320 | authorization keys, or other information required to install and execute 321 | modified versions of a covered work in that User Product from a modified 322 | version of its Corresponding Source. The information must suffice to ensure 323 | that the continued functioning of the modified object code is in no case 324 | prevented or interfered with solely because modification has been made. 325 | 326 | If you convey an object code work under this section in, or with, or 327 | specifically for use in, a User Product, and the conveying occurs as part of a 328 | transaction in which the right of possession and use of the User Product is 329 | transferred to the recipient in perpetuity or for a fixed term (regardless of 330 | how the transaction is characterized), the Corresponding Source conveyed under 331 | this section must be accompanied by the Installation Information. But this 332 | requirement does not apply if neither you nor any third party retains the 333 | ability to install modified object code on the User Product (for example, the 334 | work has been installed in ROM). 335 | 336 | The requirement to provide Installation Information does not include a 337 | requirement to continue to provide support service, warranty, or updates for a 338 | work that has been modified or installed by the recipient, or for the User 339 | Product in which it has been modified or installed. Access to a network may be 340 | denied when the modification itself materially and adversely affects the 341 | operation of the network or violates the rules and protocols for communication 342 | across the network. 343 | 344 | Corresponding Source conveyed, and Installation Information provided, in accord 345 | with this section must be in a format that is publicly documented (and with an 346 | implementation available to the public in source code form), and must require 347 | no special password or key for unpacking, reading or copying. 348 | 349 | 7. Additional Terms. 350 | “Additional permissions” are terms that supplement the terms of this License by 351 | making exceptions from one or more of its conditions. Additional permissions 352 | that are applicable to the entire Program shall be treated as though they were 353 | included in this License, to the extent that they are valid under applicable 354 | law. If additional permissions apply only to part of the Program, that part may 355 | be used separately under those permissions, but the entire Program remains 356 | governed by this License without regard to the additional permissions. 357 | 358 | When you convey a copy of a covered work, you may at your option remove any 359 | additional permissions from that copy, or from any part of it. (Additional 360 | permissions may be written to require their own removal in certain cases when 361 | you modify the work.) You may place additional permissions on material, added 362 | by you to a covered work, for which you have or can give appropriate copyright 363 | permission. 364 | 365 | Notwithstanding any other provision of this License, for material you add to a 366 | covered work, you may (if authorized by the copyright holders of that material) 367 | supplement the terms of this License with terms: 368 | 369 | a) Disclaiming warranty or limiting liability differently from the terms of 370 | sections 15 and 16 of this License; or 371 | b) Requiring preservation of specified reasonable legal notices or author 372 | attributions in that material or in the Appropriate Legal Notices displayed by 373 | works containing it; or 374 | c) Prohibiting misrepresentation of the origin of that material, or requiring 375 | that modified versions of such material be marked in reasonable ways as 376 | different from the original version; or 377 | d) Limiting the use for publicity purposes of names of licensors or authors of 378 | the material; or 379 | e) Declining to grant rights under trademark law for use of some trade names, 380 | trademarks, or service marks; or 381 | f) Requiring indemnification of licensors and authors of that material by 382 | anyone who conveys the material (or modified versions of it) with contractual 383 | assumptions of liability to the recipient, for any liability that these 384 | contractual assumptions directly impose on those licensors and authors. 385 | All other non-permissive additional terms are considered “further restrictions” 386 | within the meaning of section 10. If the Program as you received it, or any 387 | part of it, contains a notice stating that it is governed by this License along 388 | with a term that is a further restriction, you may remove that term. If a 389 | license document contains a further restriction but permits relicensing or 390 | conveying under this License, you may add to a covered work material governed 391 | by the terms of that license document, provided that the further restriction 392 | does not survive such relicensing or conveying. 393 | 394 | If you add terms to a covered work in accord with this section, you must place, 395 | in the relevant source files, a statement of the additional terms that apply to 396 | those files, or a notice indicating where to find the applicable terms. 397 | 398 | Additional terms, permissive or non-permissive, may be stated in the form of a 399 | separately written license, or stated as exceptions; the above requirements 400 | apply either way. 401 | 402 | 8. Termination. 403 | You may not propagate or modify a covered work except as expressly provided 404 | under this License. Any attempt otherwise to propagate or modify it is void, 405 | and will automatically terminate your rights under this License (including any 406 | patent licenses granted under the third paragraph of section 11). 407 | 408 | However, if you cease all violation of this License, then your license from a 409 | particular copyright holder is reinstated (a) provisionally, unless and until 410 | the copyright holder explicitly and finally terminates your license, and (b) 411 | permanently, if the copyright holder fails to notify you of the violation by 412 | some reasonable means prior to 60 days after the cessation. 413 | 414 | Moreover, your license from a particular copyright holder is reinstated 415 | permanently if the copyright holder notifies you of the violation by some 416 | reasonable means, this is the first time you have received notice of violation 417 | of this License (for any work) from that copyright holder, and you cure the 418 | violation prior to 30 days after your receipt of the notice. 419 | 420 | Termination of your rights under this section does not terminate the licenses 421 | of parties who have received copies or rights from you under this License. If 422 | your rights have been terminated and not permanently reinstated, you do not 423 | qualify to receive new licenses for the same material under section 10. 424 | 425 | 9. Acceptance Not Required for Having Copies. 426 | You are not required to accept this License in order to receive or run a copy 427 | of the Program. Ancillary propagation of a covered work occurring solely as a 428 | consequence of using peer-to-peer transmission to receive a copy likewise does 429 | not require acceptance. However, nothing other than this License grants you 430 | permission to propagate or modify any covered work. These actions infringe 431 | copyright if you do not accept this License. Therefore, by modifying or 432 | propagating a covered work, you indicate your acceptance of this License to do 433 | so. 434 | 435 | 10. Automatic Licensing of Downstream Recipients. 436 | Each time you convey a covered work, the recipient automatically receives a 437 | license from the original licensors, to run, modify and propagate that work, 438 | subject to this License. You are not responsible for enforcing compliance by 439 | third parties with this License. 440 | 441 | An “entity transaction” is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered work 444 | results from an entity transaction, each party to that transaction who receives 445 | a copy of the work also receives whatever licenses to the work the party's 446 | predecessor in interest had or could give under the previous paragraph, plus a 447 | right to possession of the Corresponding Source of the work from the 448 | predecessor in interest, if the predecessor has it or can get it with 449 | reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the rights 452 | granted or affirmed under this License. For example, you may not impose a 453 | license fee, royalty, or other charge for exercise of rights granted under this 454 | License, and you may not initiate litigation (including a cross-claim or 455 | counterclaim in a lawsuit) alleging that any patent claim is infringed by 456 | making, using, selling, offering for sale, or importing the Program or any 457 | portion of it. 458 | 459 | 11. Patents. 460 | A “contributor” is a copyright holder who authorizes use under this License of 461 | the Program or a work on which the Program is based. The work thus licensed is 462 | called the contributor's “contributor version”. 463 | 464 | A contributor's “essential patent claims” are all patent claims owned or 465 | controlled by the contributor, whether already acquired or hereafter acquired, 466 | that would be infringed by some manner, permitted by this License, of making, 467 | using, or selling its contributor version, but do not include claims that would 468 | be infringed only as a consequence of further modification of the contributor 469 | version. For purposes of this definition, “control” includes the right to grant 470 | patent sublicenses in a manner consistent with the requirements of this 471 | License. 472 | 473 | Each contributor grants you a non-exclusive, worldwide, royalty-free patent 474 | license under the contributor's essential patent claims, to make, use, sell, 475 | offer for sale, import and otherwise run, modify and propagate the contents of 476 | its contributor version. 477 | 478 | In the following three paragraphs, a “patent license” is any express agreement 479 | or commitment, however denominated, not to enforce a patent (such as an express 480 | permission to practice a patent or covenant not to sue for patent 481 | infringement). To “grant” such a patent license to a party means to make such 482 | an agreement or commitment not to enforce a patent against the party. 483 | 484 | If you convey a covered work, knowingly relying on a patent license, and the 485 | Corresponding Source of the work is not available for anyone to copy, free of 486 | charge and under the terms of this License, through a publicly available 487 | network server or other readily accessible means, then you must either (1) 488 | cause the Corresponding Source to be so available, or (2) arrange to deprive 489 | yourself of the benefit of the patent license for this particular work, or (3) 490 | arrange, in a manner consistent with the requirements of this License, to 491 | extend the patent license to downstream recipients. “Knowingly relying” means 492 | you have actual knowledge that, but for the patent license, your conveying the 493 | covered work in a country, or your recipient's use of the covered work in a 494 | country, would infringe one or more identifiable patents in that country that 495 | you have reason to believe are valid. 496 | 497 | If, pursuant to or in connection with a single transaction or arrangement, you 498 | convey, or propagate by procuring conveyance of, a covered work, and grant a 499 | patent license to some of the parties receiving the covered work authorizing 500 | them to use, propagate, modify or convey a specific copy of the covered work, 501 | then the patent license you grant is automatically extended to all recipients 502 | of the covered work and works based on it. 503 | 504 | A patent license is “discriminatory” if it does not include within the scope of 505 | its coverage, prohibits the exercise of, or is conditioned on the non-exercise 506 | of one or more of the rights that are specifically granted under this License. 507 | You may not convey a covered work if you are a party to an arrangement with a 508 | third party that is in the business of distributing software, under which you 509 | make payment to the third party based on the extent of your activity of 510 | conveying the work, and under which the third party grants, to any of the 511 | parties who would receive the covered work from you, a discriminatory patent 512 | license (a) in connection with copies of the covered work conveyed by you (or 513 | copies made from those copies), or (b) primarily for and in connection with 514 | specific products or compilations that contain the covered work, unless you 515 | entered into that arrangement, or that patent license was granted, prior to 28 516 | March 2007. 517 | 518 | Nothing in this License shall be construed as excluding or limiting any implied 519 | license or other defenses to infringement that may otherwise be available to 520 | you under applicable patent law. 521 | 522 | 12. No Surrender of Others' Freedom. 523 | If conditions are imposed on you (whether by court order, agreement or 524 | otherwise) that contradict the conditions of this License, they do not excuse 525 | you from the conditions of this License. If you cannot convey a covered work so 526 | as to satisfy simultaneously your obligations under this License and any other 527 | pertinent obligations, then as a consequence you may not convey it at all. For 528 | example, if you agree to terms that obligate you to collect a royalty for 529 | further conveying from those to whom you convey the Program, the only way you 530 | could satisfy both those terms and this License would be to refrain entirely 531 | from conveying the Program. 532 | 533 | 13. Use with the GNU Affero General Public License. 534 | Notwithstanding any other provision of this License, you have permission to 535 | link or combine any covered work with a work licensed under version 3 of the 536 | GNU Affero General Public License into a single combined work, and to convey 537 | the resulting work. The terms of this License will continue to apply to the 538 | part which is the covered work, but the special requirements of the GNU Affero 539 | General Public License, section 13, concerning interaction through a network 540 | will apply to the combination as such. 541 | 542 | 14. Revised Versions of this License. 543 | The Free Software Foundation may publish revised and/or new versions of the GNU 544 | General Public License from time to time. Such new versions will be similar in 545 | spirit to the present version, but may differ in detail to address new problems 546 | or concerns. 547 | 548 | Each version is given a distinguishing version number. If the Program specifies 549 | that a certain numbered version of the GNU General Public License “or any later 550 | version” applies to it, you have the option of following the terms and 551 | conditions either of that numbered version or of any later version published by 552 | the Free Software Foundation. If the Program does not specify a version number 553 | of the GNU General Public License, you may choose any version ever published by 554 | the Free Software Foundation. 555 | 556 | If the Program specifies that a proxy can decide which future versions of the 557 | GNU General Public License can be used, that proxy's public statement of 558 | acceptance of a version permanently authorizes you to choose that version for 559 | the Program. 560 | 561 | Later license versions may give you additional or different permissions. 562 | However, no additional obligations are imposed on any author or copyright 563 | holder as a result of your choosing to follow a later version. 564 | 565 | 15. Disclaimer of Warranty. 566 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE 567 | LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER 568 | PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER 569 | EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 570 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 571 | QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE 572 | DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR 573 | CORRECTION. 574 | 575 | 16. Limitation of Liability. 576 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY 577 | COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS 578 | PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 579 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE 580 | THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED 581 | INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE 582 | PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY 583 | HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 584 | 585 | 17. Interpretation of Sections 15 and 16. 586 | If the disclaimer of warranty and limitation of liability provided above cannot 587 | be given local legal effect according to their terms, reviewing courts shall 588 | apply local law that most closely approximates an absolute waiver of all civil 589 | liability in connection with the Program, unless a warranty or assumption of 590 | liability accompanies a copy of the Program in return for a fee. 591 | 592 | END OF TERMS AND CONDITIONS 593 | -------------------------------------------------------------------------------- /docs/draft/licenses/LGPL-2.1.txt: -------------------------------------------------------------------------------- 1 | How to Apply These Terms to Your New Libraries 2 | If you develop a new library, and you want it to be of the greatest possible 3 | use to the public, we recommend making it free software that everyone can 4 | redistribute and change. You can do so by permitting redistribution under these 5 | terms (or, alternatively, under the terms of the ordinary General Public 6 | License). 7 | To apply these terms, attach the following notices to the library. It is safest 8 | to attach them to the start of each source file to most effectively convey the 9 | exclusion of warranty; and each file should have at least the "copyright" line 10 | and a pointer to where the full notice is found. 11 | 12 | Copyright 13 | (C) 14 | 15 | This library is free software; you can redistribute it and/or modify it under 16 | the terms of the GNU Lesser General Public License as published by the Free 17 | Software Foundation; either version 2.1 of the License, or (at your option) any 18 | later version. 19 | 20 | This library is distributed in the hope that it will be useful, but WITHOUT ANY 21 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 22 | PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 23 | 24 | You should have received a copy of the GNU Lesser General Public License along 25 | with this library; if not, write to the Free Software Foundation, Inc., 59 26 | Temple Place, Suite 330, Boston, MA 02111-1307 USA 27 | Also add information on how to contact you by electronic and paper mail. 28 | 29 | You should also get your employer (if you work as a programmer) or your school, 30 | if any, to sign a "copyright disclaimer" for the library, if necessary. Here is 31 | a sample; alter the names: 32 | 33 | Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' 34 | (a library for tweaking knobs) written by James Random Hacker. 35 | 36 | signature of Ty Coon, 1 April 1990 37 | Ty Coon, President of Vice 38 | 39 | 40 | 41 | 42 | GNU Lesser General Public License 43 | Version 2.1, February 1999 44 | 45 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 46 | 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute 47 | verbatim copies of this license document, but changing it is not allowed. 48 | 49 | [This is the first released version of the Lesser GPL. It also counts as the 50 | successor of the GNU Library Public License, version 2, hence the version 51 | number 2.1.] 52 | Preamble 53 | The licenses for most software are designed to take away your freedom to share 54 | and change it. By contrast, the GNU General Public Licenses are intended to 55 | guarantee your freedom to share and change free software--to make sure the 56 | software is free for all its users. 57 | 58 | This license, the Lesser General Public License, applies to some specially 59 | designated software packages--typically libraries--of the Free Software 60 | Foundation and other authors who decide to use it. You can use it too, but we 61 | suggest you first think carefully about whether this license or the ordinary 62 | General Public License is the better strategy to use in any particular case, 63 | based on the explanations below. 64 | 65 | When we speak of free software, we are referring to freedom of use, not price. 66 | Our General Public Licenses are designed to make sure that you have the freedom 67 | to distribute copies of free software (and charge for this service if you 68 | wish); that you receive source code or can get it if you want it; that you can 69 | change the software and use pieces of it in new free programs; and that you are 70 | informed that you can do these things. 71 | 72 | To protect your rights, we need to make restrictions that forbid distributors 73 | to deny you these rights or to ask you to surrender these rights. These 74 | restrictions translate to certain responsibilities for you if you distribute 75 | copies of the library or if you modify it. 76 | 77 | For example, if you distribute copies of the library, whether gratis or for a 78 | fee, you must give the recipients all the rights that we gave you. You must 79 | make sure that they, too, receive or can get the source code. If you link other 80 | code with the library, you must provide complete object files to the 81 | recipients, so that they can relink them with the library after making changes 82 | to the library and recompiling it. And you must show them these terms so they 83 | know their rights. 84 | 85 | We protect your rights with a two-step method: (1) we copyright the library, 86 | and (2) we offer you this license, which gives you legal permission to copy, 87 | distribute and/or modify the library. 88 | 89 | To protect each distributor, we want to make it very clear that there is no 90 | warranty for the free library. Also, if the library is modified by someone else 91 | and passed on, the recipients should know that what they have is not the 92 | original version, so that the original author's reputation will not be affected 93 | by problems that might be introduced by others. 94 | 95 | Finally, software patents pose a constant threat to the existence of any free 96 | program. We wish to make sure that a company cannot effectively restrict the 97 | users of a free program by obtaining a restrictive license from a patent 98 | holder. Therefore, we insist that any patent license obtained for a version of 99 | the library must be consistent with the full freedom of use specified in this 100 | license. 101 | 102 | Most GNU software, including some libraries, is covered by the ordinary GNU 103 | General Public License. This license, the GNU Lesser General Public License, 104 | applies to certain designated libraries, and is quite different from the 105 | ordinary General Public License. We use this license for certain libraries in 106 | order to permit linking those libraries into non-free programs. 107 | 108 | When a program is linked with a library, whether statically or using a shared 109 | library, the combination of the two is legally speaking a combined work, a 110 | derivative of the original library. The ordinary General Public License 111 | therefore permits such linking only if the entire combination fits its criteria 112 | of freedom. The Lesser General Public License permits more lax criteria for 113 | linking other code with the library. 114 | 115 | We call this license the "Lesser" General Public License because it does Less 116 | to protect the user's freedom than the ordinary General Public License. It also 117 | provides other free software developers Less of an advantage over competing 118 | non-free programs. These disadvantages are the reason we use the ordinary 119 | General Public License for many libraries. However, the Lesser license provides 120 | advantages in certain special circumstances. 121 | 122 | For example, on rare occasions, there may be a special need to encourage the 123 | widest possible use of a certain library, so that it becomes a de-facto 124 | standard. To achieve this, non-free programs must be allowed to use the 125 | library. A more frequent case is that a free library does the same job as 126 | widely used non-free libraries. In this case, there is little to gain by 127 | limiting the free library to free software only, so we use the Lesser General 128 | Public License. 129 | 130 | In other cases, permission to use a particular library in non-free programs 131 | enables a greater number of people to use a large body of free software. For 132 | example, permission to use the GNU C Library in non-free programs enables many 133 | more people to use the whole GNU operating system, as well as its variant, the 134 | GNU/Linux operating system. 135 | 136 | Although the Lesser General Public License is Less protective of the users' 137 | freedom, it does ensure that the user of a program that is linked with the 138 | Library has the freedom and the wherewithal to run that program using a 139 | modified version of the Library. 140 | 141 | The precise terms and conditions for copying, distribution and modification 142 | follow. Pay close attention to the difference between a "work based on the 143 | library" and a "work that uses the library". The former contains code derived 144 | from the library, whereas the latter must be combined with the library in order 145 | to run. 146 | 147 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 148 | 0. This License Agreement applies to any software library or other program 149 | which contains a notice placed by the copyright holder or other authorized 150 | party saying it may be distributed under the terms of this Lesser General 151 | Public License (also called "this License"). Each licensee is addressed as 152 | "you". 153 | 154 | A "library" means a collection of software functions and/or data prepared so as 155 | to be conveniently linked with application programs (which use some of those 156 | functions and data) to form executables. 157 | 158 | The "Library", below, refers to any such software library or work which has 159 | been distributed under these terms. A "work based on the Library" means either 160 | the Library or any derivative work under copyright law: that is to say, a work 161 | containing the Library or a portion of it, either verbatim or with 162 | modifications and/or translated straightforwardly into another language. 163 | (Hereinafter, translation is included without limitation in the term 164 | "modification".) 165 | 166 | "Source code" for a work means the preferred form of the work for making 167 | modifications to it. For a library, complete source code means all the source 168 | code for all modules it contains, plus any associated interface definition 169 | files, plus the scripts used to control compilation and installation of the 170 | library. 171 | 172 | Activities other than copying, distribution and modification are not covered by 173 | this License; they are outside its scope. The act of running a program using 174 | the Library is not restricted, and output from such a program is covered only 175 | if its contents constitute a work based on the Library (independent of the use 176 | of the Library in a tool for writing it). Whether that is true depends on what 177 | the Library does and what the program that uses the Library does. 178 | 179 | 1. You may copy and distribute verbatim copies of the Library's complete source 180 | code as you receive it, in any medium, provided that you conspicuously and 181 | appropriately publish on each copy an appropriate copyright notice and 182 | disclaimer of warranty; keep intact all the notices that refer to this License 183 | and to the absence of any warranty; and distribute a copy of this License along 184 | with the Library. 185 | 186 | You may charge a fee for the physical act of transferring a copy, and you may 187 | at your option offer warranty protection in exchange for a fee. 188 | 189 | 2. You may modify your copy or copies of the Library or any portion of it, thus 190 | forming a work based on the Library, and copy and distribute such modifications 191 | or work under the terms of Section 1 above, provided that you also meet all of 192 | these conditions: 193 | 194 | a) The modified work must itself be a software library. 195 | 196 | b) You must cause the files modified to carry prominent notices stating that 197 | you changed the files and the date of any change. 198 | 199 | c) You must cause the whole of the work to be licensed at no charge to all 200 | third parties under the terms of this License. 201 | 202 | d) If a facility in the modified Library refers to a function or a table of 203 | data to be supplied by an application program that uses the facility, other 204 | than as an argument passed when the facility is invoked, then you must make a 205 | good faith effort to ensure that, in the event an application does not supply 206 | such function or table, the facility still operates, and performs whatever part 207 | of its purpose remains meaningful. 208 | 209 | (For example, a function in a library to compute square roots has a purpose 210 | that is entirely well-defined independent of the application. Therefore, 211 | Subsection 2d requires that any application-supplied function or table used by 212 | this function must be optional: if the application does not supply it, the 213 | square root function must still compute square roots.) 214 | 215 | These requirements apply to the modified work as a whole. If identifiable 216 | sections of that work are not derived from the Library, and can be reasonably 217 | considered independent and separate works in themselves, then this License, and 218 | its terms, do not apply to those sections when you distribute them as separate 219 | works. But when you distribute the same sections as part of a whole which is a 220 | work based on the Library, the distribution of the whole must be on the terms 221 | of this License, whose permissions for other licensees extend to the entire 222 | whole, and thus to each and every part regardless of who wrote it. 223 | 224 | Thus, it is not the intent of this section to claim rights or contest your 225 | rights to work written entirely by you; rather, the intent is to exercise the 226 | right to control the distribution of derivative or collective works based on 227 | the Library. 228 | 229 | In addition, mere aggregation of another work not based on the Library with the 230 | Library (or with a work based on the Library) on a volume of a storage or 231 | distribution medium does not bring the other work under the scope of this 232 | License. 233 | 3. You may opt to apply the terms of the ordinary GNU General Public License 234 | instead of this License to a given copy of the Library. To do this, you must 235 | alter all the notices that refer to this License, so that they refer to the 236 | ordinary GNU General Public License, version 2, instead of to this License. (If 237 | a newer version than version 2 of the ordinary GNU General Public License has 238 | appeared, then you can specify that version instead if you wish.) Do not make 239 | any other change in these notices. 240 | 241 | Once this change is made in a given copy, it is irreversible for that copy, so 242 | the ordinary GNU General Public License applies to all subsequent copies and 243 | derivative works made from that copy. 244 | 245 | This option is useful when you wish to copy part of the code of the Library 246 | into a program that is not a library. 247 | 248 | 4. You may copy and distribute the Library (or a portion or derivative of it, 249 | under Section 2) in object code or executable form under the terms of Sections 250 | 1 and 2 above provided that you accompany it with the complete corresponding 251 | machine-readable source code, which must be distributed under the terms of 252 | Sections 1 and 2 above on a medium customarily used for software interchange. 253 | 254 | If distribution of object code is made by offering access to copy from a 255 | designated place, then offering equivalent access to copy the source code from 256 | the same place satisfies the requirement to distribute the source code, even 257 | though third parties are not compelled to copy the source along with the object 258 | code. 259 | 260 | 5. A program that contains no derivative of any portion of the Library, but is 261 | designed to work with the Library by being compiled or linked with it, is 262 | called a "work that uses the Library". Such a work, in isolation, is not a 263 | derivative work of the Library, and therefore falls outside the scope of this 264 | License. 265 | 266 | However, linking a "work that uses the Library" with the Library creates an 267 | executable that is a derivative of the Library (because it contains portions of 268 | the Library), rather than a "work that uses the library". The executable is 269 | therefore covered by this License. Section 6 states terms for distribution of 270 | such executables. 271 | 272 | When a "work that uses the Library" uses material from a header file that is 273 | part of the Library, the object code for the work may be a derivative work of 274 | the Library even though the source code is not. Whether this is true is 275 | especially significant if the work can be linked without the Library, or if the 276 | work is itself a library. The threshold for this to be true is not precisely 277 | defined by law. 278 | 279 | If such an object file uses only numerical parameters, data structure layouts 280 | and accessors, and small macros and small inline functions (ten lines or less 281 | in length), then the use of the object file is unrestricted, regardless of 282 | whether it is legally a derivative work. (Executables containing this object 283 | code plus portions of the Library will still fall under Section 6.) 284 | 285 | Otherwise, if the work is a derivative of the Library, you may distribute the 286 | object code for the work under the terms of Section 6. Any executables 287 | containing that work also fall under Section 6, whether or not they are linked 288 | directly with the Library itself. 289 | 290 | 6. As an exception to the Sections above, you may also combine or link a "work 291 | that uses the Library" with the Library to produce a work containing portions 292 | of the Library, and distribute that work under terms of your choice, provided 293 | that the terms permit modification of the work for the customer's own use and 294 | reverse engineering for debugging such modifications. 295 | 296 | You must give prominent notice with each copy of the work that the Library is 297 | used in it and that the Library and its use are covered by this License. You 298 | must supply a copy of this License. If the work during execution displays 299 | copyright notices, you must include the copyright notice for the Library among 300 | them, as well as a reference directing the user to the copy of this License. 301 | Also, you must do one of these things: 302 | 303 | a) Accompany the work with the complete corresponding machine-readable source 304 | code for the Library including whatever changes were used in the work (which 305 | must be distributed under Sections 1 and 2 above); and, if the work is an 306 | executable linked with the Library, with the complete machine-readable "work 307 | that uses the Library", as object code and/or source code, so that the user can 308 | modify the Library and then relink to produce a modified executable containing 309 | the modified Library. (It is understood that the user who changes the contents 310 | of definitions files in the Library will not necessarily be able to recompile 311 | the application to use the modified definitions.) 312 | 313 | b) Use a suitable shared library mechanism for linking with the Library. A 314 | suitable mechanism is one that (1) uses at run time a copy of the library 315 | already present on the user's computer system, rather than copying library 316 | functions into the executable, and (2) will operate properly with a modified 317 | version of the library, if the user installs one, as long as the modified 318 | version is interface-compatible with the version that the work was made with. 319 | 320 | c) Accompany the work with a written offer, valid for at least three years, to 321 | give the same user the materials specified in Subsection 6a, above, for a 322 | charge no more than the cost of performing this distribution. 323 | 324 | d) If distribution of the work is made by offering access to copy from a 325 | designated place, offer equivalent access to copy the above specified materials 326 | from the same place. 327 | 328 | e) Verify that the user has already received a copy of these materials or that 329 | you have already sent this user a copy. 330 | For an executable, the required form of the "work that uses the Library" must 331 | include any data and utility programs needed for reproducing the executable 332 | from it. However, as a special exception, the materials to be distributed need 333 | not include anything that is normally distributed (in either source or binary 334 | form) with the major components (compiler, kernel, and so on) of the operating 335 | system on which the executable runs, unless that component itself accompanies 336 | the executable. 337 | 338 | It may happen that this requirement contradicts the license restrictions of 339 | other proprietary libraries that do not normally accompany the operating 340 | system. Such a contradiction means you cannot use both them and the Library 341 | together in an executable that you distribute. 342 | 343 | 7. You may place library facilities that are a work based on the Library 344 | side-by-side in a single library together with other library facilities not 345 | covered by this License, and distribute such a combined library, provided that 346 | the separate distribution of the work based on the Library and of the other 347 | library facilities is otherwise permitted, and provided that you do these two 348 | things: 349 | 350 | a) Accompany the combined library with a copy of the same work based on the 351 | Library, uncombined with any other library facilities. This must be distributed 352 | under the terms of the Sections above. 353 | 354 | b) Give prominent notice with the combined library of the fact that part of it 355 | is a work based on the Library, and explaining where to find the accompanying 356 | uncombined form of the same work. 357 | 8. You may not copy, modify, sublicense, link with, or distribute the Library 358 | except as expressly provided under this License. Any attempt otherwise to copy, 359 | modify, sublicense, link with, or distribute the Library is void, and will 360 | automatically terminate your rights under this License. However, parties who 361 | have received copies, or rights, from you under this License will not have 362 | their licenses terminated so long as such parties remain in full compliance. 363 | 364 | 9. You are not required to accept this License, since you have not signed it. 365 | However, nothing else grants you permission to modify or distribute the Library 366 | or its derivative works. These actions are prohibited by law if you do not 367 | accept this License. Therefore, by modifying or distributing the Library (or 368 | any work based on the Library), you indicate your acceptance of this License to 369 | do so, and all its terms and conditions for copying, distributing or modifying 370 | the Library or works based on it. 371 | 372 | 10. Each time you redistribute the Library (or any work based on the Library), 373 | the recipient automatically receives a license from the original licensor to 374 | copy, distribute, link with or modify the Library subject to these terms and 375 | conditions. You may not impose any further restrictions on the recipients' 376 | exercise of the rights granted herein. You are not responsible for enforcing 377 | compliance by third parties with this License. 378 | 379 | 11. If, as a consequence of a court judgment or allegation of patent 380 | infringement or for any other reason (not limited to patent issues), conditions 381 | are imposed on you (whether by court order, agreement or otherwise) that 382 | contradict the conditions of this License, they do not excuse you from the 383 | conditions of this License. If you cannot distribute so as to satisfy 384 | simultaneously your obligations under this License and any other pertinent 385 | obligations, then as a consequence you may not distribute the Library at all. 386 | For example, if a patent license would not permit royalty-free redistribution 387 | of the Library by all those who receive copies directly or indirectly through 388 | you, then the only way you could satisfy both it and this License would be to 389 | refrain entirely from distribution of the Library. 390 | 391 | If any portion of this section is held invalid or unenforceable under any 392 | particular circumstance, the balance of the section is intended to apply, and 393 | the section as a whole is intended to apply in other circumstances. 394 | 395 | It is not the purpose of this section to induce you to infringe any patents or 396 | other property right claims or to contest validity of any such claims; this 397 | section has the sole purpose of protecting the integrity of the free software 398 | distribution system which is implemented by public license practices. Many 399 | people have made generous contributions to the wide range of software 400 | distributed through that system in reliance on consistent application of that 401 | system; it is up to the author/donor to decide if he or she is willing to 402 | distribute software through any other system and a licensee cannot impose that 403 | choice. 404 | 405 | This section is intended to make thoroughly clear what is believed to be a 406 | consequence of the rest of this License. 407 | 408 | 12. If the distribution and/or use of the Library is restricted in certain 409 | countries either by patents or by copyrighted interfaces, the original 410 | copyright holder who places the Library under this License may add an explicit 411 | geographical distribution limitation excluding those countries, so that 412 | distribution is permitted only in or among countries not thus excluded. In such 413 | case, this License incorporates the limitation as if written in the body of 414 | this License. 415 | 416 | 13. The Free Software Foundation may publish revised and/or new versions of the 417 | Lesser General Public License from time to time. Such new versions will be 418 | similar in spirit to the present version, but may differ in detail to address 419 | new problems or concerns. 420 | 421 | Each version is given a distinguishing version number. If the Library specifies 422 | a version number of this License which applies to it and "any later version", 423 | you have the option of following the terms and conditions either of that 424 | version or of any later version published by the Free Software Foundation. If 425 | the Library does not specify a license version number, you may choose any 426 | version ever published by the Free Software Foundation. 427 | 428 | 14. If you wish to incorporate parts of the Library into other free programs 429 | whose distribution conditions are incompatible with these, write to the author 430 | to ask for permission. For software which is copyrighted by the Free Software 431 | Foundation, write to the Free Software Foundation; we sometimes make exceptions 432 | for this. Our decision will be guided by the two goals of preserving the free 433 | status of all derivatives of our free software and of promoting the sharing and 434 | reuse of software generally. 435 | 436 | NO WARRANTY 437 | 438 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR 439 | THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE 440 | STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE 441 | LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, 442 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 443 | FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND 444 | PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU 445 | ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 446 | 447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL 448 | ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE 449 | LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 450 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 451 | INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA 452 | BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 453 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER 454 | OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 455 | 456 | END OF TERMS AND CONDITIONS 457 | -------------------------------------------------------------------------------- /docs/draft/licenses/LGPL-3.0.txt: -------------------------------------------------------------------------------- 1 | This license is a set of additional permissions added to version 3 of the GNU 2 | General Public License. 3 | 4 | 5 | 6 | 7 | 8 | GNU LESSER GENERAL PUBLIC LICENSE 9 | Version 3, 29 June 2007 10 | 11 | Copyright (C) 2007 Free Software Foundation, Inc. 12 | 13 | Everyone is permitted to copy and distribute verbatim copies of this license 14 | document, but changing it is not allowed. 15 | 16 | This version of the GNU Lesser General Public License incorporates the terms 17 | and conditions of version 3 of the GNU General Public License, supplemented by 18 | the additional permissions listed below. 19 | 20 | 0. Additional Definitions. 21 | As used herein, “this License” refers to version 3 of the GNU Lesser General 22 | Public License, and the “GNU GPL” refers to version 3 of the GNU General Public 23 | License. 24 | 25 | “The Library” refers to a covered work governed by this License, other than an 26 | Application or a Combined Work as defined below. 27 | 28 | An “Application” is any work that makes use of an interface provided by the 29 | Library, but which is not otherwise based on the Library. Defining a subclass 30 | of a class defined by the Library is deemed a mode of using an interface 31 | provided by the Library. 32 | 33 | A “Combined Work” is a work produced by combining or linking an Application 34 | with the Library. The particular version of the Library with which the Combined 35 | Work was made is also called the “Linked Version”. 36 | 37 | The “Minimal Corresponding Source” for a Combined Work means the Corresponding 38 | Source for the Combined Work, excluding any source code for portions of the 39 | Combined Work that, considered in isolation, are based on the Application, and 40 | not on the Linked Version. 41 | 42 | The “Corresponding Application Code” for a Combined Work means the object code 43 | and/or source code for the Application, including any data and utility programs 44 | needed for reproducing the Combined Work from the Application, but excluding 45 | the System Libraries of the Combined Work. 46 | 47 | 1. Exception to Section 3 of the GNU GPL. 48 | You may convey a covered work under sections 3 and 4 of this License without 49 | being bound by section 3 of the GNU GPL. 50 | 51 | 2. Conveying Modified Versions. 52 | If you modify a copy of the Library, and, in your modifications, a facility 53 | refers to a function or data to be supplied by an Application that uses the 54 | facility (other than as an argument passed when the facility is invoked), then 55 | you may convey a copy of the modified version: 56 | 57 | a) under this License, provided that you make a good faith effort to ensure 58 | that, in the event an Application does not supply the function or data, the 59 | facility still operates, and performs whatever part of its purpose remains 60 | meaningful, or 61 | b) under the GNU GPL, with none of the additional permissions of this License 62 | applicable to that copy. 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | The object code form of an Application may incorporate material from a header 65 | file that is part of the Library. You may convey such object code under terms 66 | of your choice, provided that, if the incorporated material is not limited to 67 | numerical parameters, data structure layouts and accessors, or small macros, 68 | inline functions and templates (ten or fewer lines in length), you do both of 69 | the following: 70 | 71 | a) Give prominent notice with each copy of the object code that the Library is 72 | used in it and that the Library and its use are covered by this License. 73 | b) Accompany the object code with a copy of the GNU GPL and this license 74 | document. 75 | 4. Combined Works. 76 | You may convey a Combined Work under terms of your choice that, taken together, 77 | effectively do not restrict modification of the portions of the Library 78 | contained in the Combined Work and reverse engineering for debugging such 79 | modifications, if you also do each of the following: 80 | 81 | a) Give prominent notice with each copy of the Combined Work that the Library 82 | is used in it and that the Library and its use are covered by this License. 83 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 84 | document. 85 | c) For a Combined Work that displays copyright notices during execution, 86 | include the copyright notice for the Library among these notices, as well as a 87 | reference directing the user to the copies of the GNU GPL and this license 88 | document. 89 | d) Do one of the following: 90 | 0) Convey the Minimal Corresponding Source under the terms of this License, and 91 | the Corresponding Application Code in a form suitable for, and under terms that 92 | permit, the user to recombine or relink the Application with a modified version 93 | of the Linked Version to produce a modified Combined Work, in the manner 94 | specified by section 6 of the GNU GPL for conveying Corresponding Source. 95 | 1) Use a suitable shared library mechanism for linking with the Library. A 96 | suitable mechanism is one that (a) uses at run time a copy of the Library 97 | already present on the user's computer system, and (b) will operate properly 98 | with a modified version of the Library that is interface-compatible with the 99 | Linked Version. 100 | e) Provide Installation Information, but only if you would otherwise be 101 | required to provide such information under section 6 of the GNU GPL, and only 102 | to the extent that such information is necessary to install and execute a 103 | modified version of the Combined Work produced by recombining or relinking the 104 | Application with a modified version of the Linked Version. (If you use option 105 | 4d0, the Installation Information must accompany the Minimal Corresponding 106 | Source and Corresponding Application Code. If you use option 4d1, you must 107 | provide the Installation Information in the manner specified by section 6 of 108 | the GNU GPL for conveying Corresponding Source.) 109 | 5. Combined Libraries. 110 | You may place library facilities that are a work based on the Library side by 111 | side in a single library together with other library facilities that are not 112 | Applications and are not covered by this License, and convey such a combined 113 | library under terms of your choice, if you do both of the following: 114 | 115 | a) Accompany the combined library with a copy of the same work based on the 116 | Library, uncombined with any other library facilities, conveyed under the terms 117 | of this License. 118 | b) Give prominent notice with the combined library that part of it is a work 119 | based on the Library, and explaining where to find the accompanying uncombined 120 | form of the same work. 121 | 6. Revised Versions of the GNU Lesser General Public License. 122 | The Free Software Foundation may publish revised and/or new versions of the GNU 123 | Lesser General Public License from time to time. Such new versions will be 124 | similar in spirit to the present version, but may differ in detail to address 125 | new problems or concerns. 126 | 127 | Each version is given a distinguishing version number. If the Library as you 128 | received it specifies that a certain numbered version of the GNU Lesser General 129 | Public License “or any later version” applies to it, you have the option of 130 | following the terms and conditions either of that published version or of any 131 | later version published by the Free Software Foundation. If the Library as you 132 | received it does not specify a version number of the GNU Lesser General Public 133 | License, you may choose any version of the GNU Lesser General Public License 134 | ever published by the Free Software Foundation. 135 | 136 | If the Library as you received it specifies that a proxy can decide whether 137 | future versions of the GNU Lesser General Public License shall apply, that 138 | proxy's public statement of acceptance of any version is permanent 139 | authorization for you to choose that version for the Library. 140 | -------------------------------------------------------------------------------- /docs/draft/licenses/MIT-License.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | this software and associated documentation files (the "Software"), to deal in 6 | the Software without restriction, including without limitation the rights to 7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 8 | of the Software, and to permit persons to whom the Software is furnished to do 9 | so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | -------------------------------------------------------------------------------- /docs/draft/licenses/Mozilla-Public-License-2.0.txt: -------------------------------------------------------------------------------- 1 | Mozilla Public License, version 2.0 2 | 1. Definitions 3 | 1.1. “Contributor” 4 | means each individual or legal entity that creates, contributes to the creation 5 | of, or owns Covered Software. 6 | 7 | 1.2. “Contributor Version” 8 | means the combination of the Contributions of others (if any) used by a 9 | Contributor and that particular Contributor’s Contribution. 10 | 11 | 1.3. “Contribution” 12 | means Covered Software of a particular Contributor. 13 | 14 | 1.4. “Covered Software” 15 | means Source Code Form to which the initial Contributor has attached the notice 16 | in Exhibit A, the Executable Form of such Source Code Form, and Modifications 17 | of such Source Code Form, in each case including portions thereof. 18 | 19 | 1.5. “Incompatible With Secondary Licenses” 20 | means 21 | 22 | that the initial Contributor has attached the notice described in Exhibit B to 23 | the Covered Software; or 24 | 25 | that the Covered Software was made available under the terms of version 1.1 or 26 | earlier of the License, but not also under the terms of a Secondary License. 27 | 28 | 1.6. “Executable Form” 29 | means any form of the work other than Source Code Form. 30 | 31 | 1.7. “Larger Work” 32 | means a work that combines Covered Software with other material, in a separate 33 | file or files, that is not Covered Software. 34 | 35 | 1.8. “License” 36 | means this document. 37 | 38 | 1.9. “Licensable” 39 | means having the right to grant, to the maximum extent possible, whether at the 40 | time of the initial grant or subsequently, any and all of the rights conveyed 41 | by this License. 42 | 43 | 1.10. “Modifications” 44 | means any of the following: 45 | 46 | any file in Source Code Form that results from an addition to, deletion from, 47 | or modification of the contents of Covered Software; or 48 | 49 | any new file in Source Code Form that contains any Covered Software. 50 | 51 | 1.11. “Patent Claims” of a Contributor 52 | means any patent claim(s), including without limitation, method, process, and 53 | apparatus claims, in any patent Licensable by such Contributor that would be 54 | infringed, but for the grant of the License, by the making, using, selling, 55 | offering for sale, having made, import, or transfer of either its Contributions 56 | or its Contributor Version. 57 | 58 | 1.12. “Secondary License” 59 | means either the GNU General Public License, Version 2.0, the GNU Lesser 60 | General Public License, Version 2.1, the GNU Affero General Public License, 61 | Version 3.0, or any later versions of those licenses. 62 | 63 | 1.13. “Source Code Form” 64 | means the form of the work preferred for making modifications. 65 | 66 | 1.14. “You” (or “Your”) 67 | means an individual or a legal entity exercising rights under this License. For 68 | legal entities, “You” includes any entity that controls, is controlled by, or 69 | is under common control with You. For purposes of this definition, “control” 70 | means (a) the power, direct or indirect, to cause the direction or management 71 | of such entity, whether by contract or otherwise, or (b) ownership of more than 72 | fifty percent (50%) of the outstanding shares or beneficial ownership of such 73 | entity. 74 | 75 | 2. License Grants and Conditions 76 | 2.1. Grants 77 | Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive 78 | license: 79 | 80 | under intellectual property rights (other than patent or trademark) Licensable 81 | by such Contributor to use, reproduce, make available, modify, display, 82 | perform, distribute, and otherwise exploit its Contributions, either on an 83 | unmodified basis, with Modifications, or as part of a Larger Work; and 84 | 85 | under Patent Claims of such Contributor to make, use, sell, offer for sale, 86 | have made, import, and otherwise transfer either its Contributions or its 87 | Contributor Version. 88 | 89 | 2.2. Effective Date 90 | The licenses granted in Section 2.1 with respect to any Contribution become 91 | effective for each Contribution on the date the Contributor first distributes 92 | such Contribution. 93 | 94 | 2.3. Limitations on Grant Scope 95 | The licenses granted in this Section 2 are the only rights granted under this 96 | License. No additional rights or licenses will be implied from the distribution 97 | or licensing of Covered Software under this License. Notwithstanding Section 98 | 2.1(b) above, no patent license is granted by a Contributor: 99 | 100 | for any code that a Contributor has removed from Covered Software; or 101 | 102 | for infringements caused by: (i) Your and any other third party’s modifications 103 | of Covered Software, or (ii) the combination of its Contributions with other 104 | software (except as part of its Contributor Version); or 105 | 106 | under Patent Claims infringed by Covered Software in the absence of its 107 | Contributions. 108 | 109 | This License does not grant any rights in the trademarks, service marks, or 110 | logos of any Contributor (except as may be necessary to comply with the notice 111 | requirements in Section 3.4). 112 | 113 | 2.4. Subsequent Licenses 114 | No Contributor makes additional grants as a result of Your choice to distribute 115 | the Covered Software under a subsequent version of this License (see Section 116 | 10.2) or under the terms of a Secondary License (if permitted under the terms 117 | of Section 3.3). 118 | 119 | 2.5. Representation 120 | Each Contributor represents that the Contributor believes its Contributions are 121 | its original creation(s) or it has sufficient rights to grant the rights to its 122 | Contributions conveyed by this License. 123 | 124 | 2.6. Fair Use 125 | This License is not intended to limit any rights You have under applicable 126 | copyright doctrines of fair use, fair dealing, or other equivalents. 127 | 128 | 2.7. Conditions 129 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in 130 | Section 2.1. 131 | 132 | 3. Responsibilities 133 | 3.1. Distribution of Source Form 134 | All distribution of Covered Software in Source Code Form, including any 135 | Modifications that You create or to which You contribute, must be under the 136 | terms of this License. You must inform recipients that the Source Code Form of 137 | the Covered Software is governed by the terms of this License, and how they can 138 | obtain a copy of this License. You may not attempt to alter or restrict the 139 | recipients’ rights in the Source Code Form. 140 | 141 | 3.2. Distribution of Executable Form 142 | If You distribute Covered Software in Executable Form then: 143 | 144 | such Covered Software must also be made available in Source Code Form, as 145 | described in Section 3.1, and You must inform recipients of the Executable Form 146 | how they can obtain a copy of such Source Code Form by reasonable means in a 147 | timely manner, at a charge no more than the cost of distribution to the 148 | recipient; and 149 | 150 | You may distribute such Executable Form under the terms of this License, or 151 | sublicense it under different terms, provided that the license for the 152 | Executable Form does not attempt to limit or alter the recipients’ rights in 153 | the Source Code Form under this License. 154 | 155 | 3.3. Distribution of a Larger Work 156 | You may create and distribute a Larger Work under terms of Your choice, 157 | provided that You also comply with the requirements of this License for the 158 | Covered Software. If the Larger Work is a combination of Covered Software with 159 | a work governed by one or more Secondary Licenses, and the Covered Software is 160 | not Incompatible With Secondary Licenses, this License permits You to 161 | additionally distribute such Covered Software under the terms of such Secondary 162 | License(s), so that the recipient of the Larger Work may, at their option, 163 | further distribute the Covered Software under the terms of either this License 164 | or such Secondary License(s). 165 | 166 | 3.4. Notices 167 | You may not remove or alter the substance of any license notices (including 168 | copyright notices, patent notices, disclaimers of warranty, or limitations of 169 | liability) contained within the Source Code Form of the Covered Software, 170 | except that You may alter any license notices to the extent required to remedy 171 | known factual inaccuracies. 172 | 173 | 3.5. Application of Additional Terms 174 | You may choose to offer, and to charge a fee for, warranty, support, indemnity 175 | or liability obligations to one or more recipients of Covered Software. 176 | However, You may do so only on Your own behalf, and not on behalf of any 177 | Contributor. You must make it absolutely clear that any such warranty, support, 178 | indemnity, or liability obligation is offered by You alone, and You hereby 179 | agree to indemnify every Contributor for any liability incurred by such 180 | Contributor as a result of warranty, support, indemnity or liability terms You 181 | offer. You may include additional disclaimers of warranty and limitations of 182 | liability specific to any jurisdiction. 183 | 184 | 4. Inability to Comply Due to Statute or Regulation 185 | If it is impossible for You to comply with any of the terms of this License 186 | with respect to some or all of the Covered Software due to statute, judicial 187 | order, or regulation then You must: (a) comply with the terms of this License 188 | to the maximum extent possible; and (b) describe the limitations and the code 189 | they affect. Such description must be placed in a text file included with all 190 | distributions of the Covered Software under this License. Except to the extent 191 | prohibited by statute or regulation, such description must be sufficiently 192 | detailed for a recipient of ordinary skill to be able to understand it. 193 | 194 | 5. Termination 195 | 5.1. The rights granted under this License will terminate automatically if You 196 | fail to comply with any of its terms. However, if You become compliant, then 197 | the rights granted under this License from a particular Contributor are 198 | reinstated (a) provisionally, unless and until such Contributor explicitly and 199 | finally terminates Your grants, and (b) on an ongoing basis, if such 200 | Contributor fails to notify You of the non-compliance by some reasonable means 201 | prior to 60 days after You have come back into compliance. Moreover, Your 202 | grants from a particular Contributor are reinstated on an ongoing basis if such 203 | Contributor notifies You of the non-compliance by some reasonable means, this 204 | is the first time You have received notice of non-compliance with this License 205 | from such Contributor, and You become compliant prior to 30 days after Your 206 | receipt of the notice. 207 | 208 | 5.2. If You initiate litigation against any entity by asserting a patent 209 | infringement claim (excluding declaratory judgment actions, counter-claims, and 210 | cross-claims) alleging that a Contributor Version directly or indirectly 211 | infringes any patent, then the rights granted to You by any and all 212 | Contributors for the Covered Software under Section 2.1 of this License shall 213 | terminate. 214 | 215 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user 216 | license agreements (excluding distributors and resellers) which have been 217 | validly granted by You or Your distributors under this License prior to 218 | termination shall survive termination. 219 | 220 | 6. Disclaimer of Warranty 221 | Covered Software is provided under this License on an “as is” basis, without 222 | warranty of any kind, either expressed, implied, or statutory, including, 223 | without limitation, warranties that the Covered Software is free of defects, 224 | merchantable, fit for a particular purpose or non-infringing. The entire risk 225 | as to the quality and performance of the Covered Software is with You. Should 226 | any Covered Software prove defective in any respect, You (not any Contributor) 227 | assume the cost of any necessary servicing, repair, or correction. This 228 | disclaimer of warranty constitutes an essential part of this License. No use of 229 | any Covered Software is authorized under this License except under this 230 | disclaimer. 231 | 232 | 7. Limitation of Liability 233 | Under no circumstances and under no legal theory, whether tort (including 234 | negligence), contract, or otherwise, shall any Contributor, or anyone who 235 | distributes Covered Software as permitted above, be liable to You for any 236 | direct, indirect, special, incidental, or consequential damages of any 237 | character including, without limitation, damages for lost profits, loss of 238 | goodwill, work stoppage, computer failure or malfunction, or any and all other 239 | commercial damages or losses, even if such party shall have been informed of 240 | the possibility of such damages. This limitation of liability shall not apply 241 | to liability for death or personal injury resulting from such party’s 242 | negligence to the extent applicable law prohibits such limitation. Some 243 | jurisdictions do not allow the exclusion or limitation of incidental or 244 | consequential damages, so this exclusion and limitation may not apply to You. 245 | 246 | 8. Litigation 247 | Any litigation relating to this License may be brought only in the courts of a 248 | jurisdiction where the defendant maintains its principal place of business and 249 | such litigation shall be governed by laws of that jurisdiction, without 250 | reference to its conflict-of-law provisions. Nothing in this Section shall 251 | prevent a party’s ability to bring cross-claims or counter-claims. 252 | 253 | 9. Miscellaneous 254 | This License represents the complete agreement concerning the subject matter 255 | hereof. If any provision of this License is held to be unenforceable, such 256 | provision shall be reformed only to the extent necessary to make it 257 | enforceable. Any law or regulation which provides that the language of a 258 | contract shall be construed against the drafter shall not be used to construe 259 | this License against a Contributor. 260 | 261 | 10. Versions of the License 262 | 10.1. New Versions 263 | Mozilla Foundation is the license steward. Except as provided in Section 10.3, 264 | no one other than the license steward has the right to modify or publish new 265 | versions of this License. Each version will be given a distinguishing version 266 | number. 267 | 268 | 10.2. Effect of New Versions 269 | You may distribute the Covered Software under the terms of the version of the 270 | License under which You originally received the Covered Software, or under the 271 | terms of any subsequent version published by the license steward. 272 | 273 | 10.3. Modified Versions 274 | If you create software not governed by this License, and you want to create a 275 | new license for such software, you may create and use a modified version of 276 | this License if you rename the license and remove any references to the name of 277 | the license steward (except to note that such modified license differs from 278 | this License). 279 | 280 | 10.4. Distributing Source Code Form that is Incompatible With Secondary 281 | Licenses 282 | If You choose to distribute Source Code Form that is Incompatible With 283 | Secondary Licenses under the terms of this version of the License, the notice 284 | described in Exhibit B of this License must be attached. 285 | 286 | Exhibit A - Source Code Form License Notice 287 | This Source Code Form is subject to the terms of the Mozilla Public License, v. 288 | 2.0. If a copy of the MPL was not distributed with this file, You can obtain 289 | one at http://mozilla.org/MPL/2.0/. 290 | If it is not possible or desirable to put the notice in a particular file, then 291 | You may include the notice in a location (such as a LICENSE file in a relevant 292 | directory) where a recipient would be likely to look for such a notice. 293 | 294 | You may add additional accurate notices of copyright ownership. 295 | 296 | Exhibit B - “Incompatible With Secondary Licenses” Notice 297 | -------------------------------------------------------------------------------- /examples/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/examples/.gitkeep -------------------------------------------------------------------------------- /include/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/include/.gitkeep -------------------------------------------------------------------------------- /lib/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/lib/.gitkeep -------------------------------------------------------------------------------- /src/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(void) { 4 | printf("Hello World\n"); 5 | return 0; 6 | } 7 | -------------------------------------------------------------------------------- /test/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/test/.gitkeep -------------------------------------------------------------------------------- /third_party/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/third_party/.gitkeep -------------------------------------------------------------------------------- /tools/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-dunleavy/cosmo-project/0c81723b245d81b611600e6d5a53ff50dd5bd01d/tools/.gitkeep --------------------------------------------------------------------------------