Sitelet https://github.com/ankidroid/Anki-Android/issues/20954
Skip to content

Move to SPDX for file-level license headers (mono-license GPL/LGPL only) #20954

Description

@david-allison

My original rationale was that LLMs would be inflating the token count, but it's also 'cleaner' from a code perspective, and makes reviews easier.

https://www.kernel.org/doc/html/v5.7/process/license-rules.html - readable
https://spdx.github.io/spdx-spec/v3.0.1/annexes/spdx-license-expressions/ - spec language

+// SPDX-License-Identifier: GPL-3.0-or-later
+// Copyright (c) 2025 David Allison <david@example.com>
-/*
- *  Copyright (c) 2025 David Allison <david@example.com>
- *
- *  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 <http://www.gnu.org/licenses/>.
- */

EDIT: copyright is now optional - https://github.com/ankidroid/Anki-Android/blob/main/docs/contributing/copyright-headers.md

+ // SPDX-License-Identifier: GPL-3.0-or-later
- // Copyright (c) 2025 David Allison <david@example.com>

This issue will be completed when all mono-licensed files use SPDX.


Future extensions

  • Handle multi-licensed files
    • Mono-licensed files are the majority of the codebase. We are time-limited, and deviations can be handled on a case-by-case basis
    • This issue exists to streamline the code submission process, not as a full SPDX implementation
  • Make copyright headers optional

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Keep Openavoids the stale botcleanupNon functional change that would improve the code readability

Type

Fields

Priority

Low

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions