# Source File Header Templates License headers should be placed at the top of source files to indicate copyright and licensing. --- ## When to Use Source Headers **Required:** - GPL/LGPL/AGPL (strongly recommended by FSF) - MPL-2.0 (required per file) - Apache-2.0 (recommended) **Recommended:** - All licenses for clarity - Multi-contributor projects - Projects that may be forked **Optional:** - Small personal projects - MIT/BSD with clear LICENSE file --- ## MIT License Header ``` // Copyright (c) [YEAR] [FULLNAME] // SPDX-License-Identifier: MIT ``` **Extended version:** ``` // [PROJECT NAME] // Copyright (c) [YEAR] [FULLNAME] // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. ``` --- ## Apache-2.0 License Header **Standard (recommended by Apache Foundation):** ``` // Copyright [YEAR] [COPYRIGHT HOLDER] // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. ``` **Short version (with SPDX):** ``` // Copyright [YEAR] [COPYRIGHT HOLDER] // SPDX-License-Identifier: Apache-2.0 ``` --- ## BSD-3-Clause Header ``` // Copyright (c) [YEAR], [FULLNAME] // SPDX-License-Identifier: BSD-3-Clause ``` **Extended version:** ``` // Copyright (c) [YEAR], [FULLNAME] // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // 3. Neither the name of the copyright holder nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. ``` --- ## GPL-3.0 Header **Standard (recommended by FSF):** ``` // [one line description of the program] // Copyright (C) [YEAR] [FULLNAME] // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . ``` **Short version:** ``` // Copyright (C) [YEAR] [FULLNAME] // SPDX-License-Identifier: GPL-3.0-or-later ``` --- ## LGPL-3.0 Header ``` // [one line description of the library] // Copyright (C) [YEAR] [FULLNAME] // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 3 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this library; if not, see . ``` --- ## AGPL-3.0 Header ``` // [one line description of the program] // Copyright (C) [YEAR] [FULLNAME] // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published // by the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . ``` --- ## MPL-2.0 Header **Required for each file:** ``` // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. ``` **With copyright:** ``` // Copyright (c) [YEAR] [FULLNAME] // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. ``` --- ## Language-Specific Comment Syntax ### C/C++/Java/JavaScript/Go/Rust/Swift ```c // Single line comment // continuation /* Block comment * for longer headers */ ``` ### Python ```python # Copyright (c) 2024 Author Name # SPDX-License-Identifier: MIT """ Module docstring can also contain license info. """ ``` ### Shell/Bash ```bash #!/bin/bash # Copyright (c) 2024 Author Name # SPDX-License-Identifier: MIT ``` ### HTML ```html ``` ### CSS ```css /* * Copyright (c) 2024 Author Name * SPDX-License-Identifier: MIT */ ``` ### SQL ```sql -- Copyright (c) 2024 Author Name -- SPDX-License-Identifier: MIT ``` ### Ruby ```ruby # Copyright (c) 2024 Author Name # SPDX-License-Identifier: MIT ``` --- ## SPDX License Identifiers Use SPDX identifiers for machine-readable license specification: | License | SPDX Identifier | |---------|-----------------| | MIT | `MIT` | | Apache 2.0 | `Apache-2.0` | | BSD 2-Clause | `BSD-2-Clause` | | BSD 3-Clause | `BSD-3-Clause` | | GPL 2.0 only | `GPL-2.0-only` | | GPL 2.0 or later | `GPL-2.0-or-later` | | GPL 3.0 only | `GPL-3.0-only` | | GPL 3.0 or later | `GPL-3.0-or-later` | | LGPL 3.0 | `LGPL-3.0-only` | | AGPL 3.0 | `AGPL-3.0-only` | | MPL 2.0 | `MPL-2.0` | | ISC | `ISC` | | Unlicense | `Unlicense` | **Dual license expression:** ``` // SPDX-License-Identifier: MIT OR Apache-2.0 ``` --- ## Preserving Headers in Minification Configure your build tools to preserve license headers: ### Terser (JavaScript) ```javascript // terser.config.js module.exports = { output: { comments: /^\s*!|@license|@preserve|Copyright/i } }; ``` ### Webpack ```javascript // webpack.config.js const TerserPlugin = require('terser-webpack-plugin'); module.exports = { optimization: { minimizer: [ new TerserPlugin({ terserOptions: { output: { comments: /@license|@preserve|Copyright/i, }, }, extractComments: false, }), ], }, }; ``` ### CSS (cssnano) ```javascript // postcss.config.js module.exports = { plugins: [ require('cssnano')({ preset: ['default', { discardComments: { removeAll: false, remove: (comment) => !/@license|@preserve|Copyright/i.test(comment) } }] }) ] }; ```