Kord Extensions Help

Licensing Information

We understand that software licensing can be confusing at the best of times. This is especially true when dealing with an uncommon or poorly-documented software license — such as the EUPL, which is the primary license we use as of Kord Extensions v2.

About the license

According to the European Commission, the EUPL is a copyleft license, designed to be compatible with other copyleft licenses when combined downstream into a larger work — and to be interoperable, according to European copyright law. It includes multiple translated versions which hold equal legal value, covers distribution through a network (such as Discord), and includes a Developer Certificate of Origin.

What this ultimately means is that the EUPL functions like a more compatible and interoperable AGPL, including a network use clause, but also a linking exception. Instead of containing its own definition for what a derivative work is, it defers to European copyright law — specifically, Directive 91/250/EEC, re-codified 2009/24/EC.

It additionally defers to the copyright law of the EU member state where the project owner resides, or the one defined within the files' license headers, if provided. In our case, this means that the applicable law applies to the Republic of Ireland, specifically within Dublin's jurisdiction for legal challenges.

Our interpretation

While our interpretation cannot be treated as legal advice, we feel it may be helpful to explain what we expect from our users.

  • The EUPL is a copyleft license. This means you can freely copy and distribute Kord Extensions, as long as you comply with the conditions set forth in the license text.

  • European law allows for the reproduction of "interfaces" without the permission of the rights-holders. This means that the copying of names from an API (such as what happens with linking) does not require that your project be licensed under the EUPL, or indeed any specific license.

    This was particularly important to us, as we didn't want to force any specific license onto bots, modules, plugins, or other related projects using Kord Extensions, and we wanted to allow for use by proprietary and commercial projects.

  • The EUPL includes a "network use" clause — distribution and communication are treated as equal, and communications of functionality over a network (such as Discord) require you to follow all the distribution requirements.

    Due to the linking exception described above, this doesn't apply to your bots' code, but it does apply to Kord Extensions itself, as explained below.

  • The EUPL states that all distributions or communications of a work must include all copyright, patent or trademark notices that refer to the license and to the disclaimer of warranties. In our case, we simply ask for a mention of Kord Extensions and a link back to our site, which is provided by default in the bundled about command.

    The GitHub Discussion used to collect contributors' permission to relicense under the EUPL also asked for permission to provide alternative licenses pending an application process. This process has not yet been defined (as nobody has asked for an alternative license), but the option remains open if this arrangement doesn't work for your project.

  • When creating a combined work (such as a fat JAR containing your bot along with Kord Extensions) for public distribution or use, the EUPL version 1.2 defines a number of compatible downstream licenses you may use.

    • GNU Licenses:

      • AGPL version 3

      • GPL version 2 or 3

      • LGPL version 2.1 or 3.0

    • Other Software Licenses:

      • Cea Cnrs Inria Logiciel Libre License (CeCILL) version 2.0 or 2.1

      • Eclipse Public License (EPL) version 1.0

      • European Union Public Licence (EUPL) version 1.1 or 1.2

      • Mozilla Public Licence (MPL) version 2

      • Open Software License (OSL) version 2.1 or 3.0

      • Québec Free and Open-Source Licence (LiLiQ-R or LiLiQ-R+)

    It's worth noting that the aforementioned linking exception means that, in the vast majority of cases, you won't need to worry about this — as, generally, Discord bots aren't distributed in a runnable binary format.

Your work

While the EUPL applies specifically to Kord Extensions above, we felt it was worth explaining the specifics of what it means for your projects.

Linking

While the legal definition for linking hasn't been tested in Europe, we understand it to mean the copying of names and API definitions from another project yours is compiled against, without actually distributing the project you're linking to.

Under European law, this doesn't require rights-holder permission, and it doesn't impact how your project must be distributed or licensed.

Ultimately, this means that you're welcome to keep your bots and plugins closed-source or open-source them under any license you wish, as long as they don't include a distribution of Kord Extensions.

Modifying

If you modify Kord Extensions and use it in a bot or other distribution or communication, you must provide access to the source code of your modified version and state what changes you've made to it. Additionally, you are not allowed to remove the references to Kord Extensions in the about command (including removing the command or extension), unless you reproduce those references in another public command with equal visibility.

The simplest way to do provide your source code and list of changes is to fork the project on GitHub, and this is what we'd prefer. However, you may also provide a link and state your changes in your bot's about command.

We believe that Kord Extensions is at its best when it accounts for as many project types as possible, and we always prefer contributions that make Kord Extensions more suitable, rather than multiple diverging forks.

As all Kord Extensions forks must be similarly licensed under the EUPL version 1.2, we may inspect forks and make changes that are either inspired by those forks or taken from contributions to them, without notice. However, we will do our best to credit you by listing you as an additional author in each relevant commit.

Combining

While we don't really see any realistic reason for someone to create a public combined work, we want to ensure that every project type is accounted for.

We understand a combined work to be a larger work (such as a bot) that itself includes a distribution of Kord Extensions — regardless of whether that distribution is modified — in either source code, compiled or binary format. Examples of combined works include:

Where a combined work is made available to the public, it must be distributed under one of the EUPL's compatible downstream licenses. If you aren't distributing Kord Extensions' source code along with your project's, then this doesn't mean your project's code must be licensed this way, or that your project must be open-source. However, your project must be distributed in a way that follows the terms of the collective license you're using.

We recommend against distributing Kord Extensions in source code format, and you should dynamically link to it whenever possible, ideally using the KordEx Gradle plugin.

Running

Under the terms of the EUPL, a "distribution" or "communication" are treated as equal, and the same terms are applied to both. To quote the EUPL directly:

This means that running a Discord bot using Kord Extensions counts as a "distribution" or "communication," as you are exposing its functionality to users on Discord. As a result, you will need to comply with the terms of the EUPL, even if your project's source code is not publicly available, and you're not using a modified version of Kord Extensions. This is true even if it's a small bot for a private server, as Discord ultimately decides who has access to your bot, rather than you having direct control over it.

To make this easier, Kord Extensions provides an about command, which includes a small footer mentioning Kord Extensions, linking to its website, and mentioning its license. You should configure this command with your bot's information, otherwise it'll look strange and a little barren.

Questions and concerns

If you have any questions regarding Kord Extensions and its licensing, please feel free to contact us on Discord or via GitHub Discussions.

If you have any questions about the EUPL's wording or how to use it, the European Commission provides a contact form you can use to ask legal questions.

Last modified: 20 November 2024