Skip to main content

Relicensing Pelican to AGPL

· 5 min read
Ryan Kubi
Wings Maintainer
Lance Pioch
Lead Maintainer

Introduction

We forked from Pterodactyl and made the decision to relicense the Panel from the original MIT license to the AGPL license. This is an impactful change that was carefully considered by the team to help us move towards the future we envision. This ensures the community will benefit by encouraging and accepting more open source contributions. One of our core principles is that our software should be free, open source, and benefit the community and ecosystem.

The AGPL-3 License

The AGPL license is what is known as a copyleft type license. It requires that any modifications to a public Panel must be open sourced under the same license. Private Panels do not have that restriction. As long as your Panel is not open to the public, it’s going to be considered for private usage. Private usage typically includes your friends, family, coworkers, etc.

What this means for users

Pelican is completely free to users and always will be!  We are committed to fostering an environment that encourages the community to participate in our development process through various means. You are free to do anything to your private Panel including installing plugins, eggs, and themes!

What this means for developers

Developers are always welcomed and encouraged to build with or on top of our codebase. The new license simply requires these modifications to be released under the same license if your instance is public.

One additional very important point. We want contributors to receive recognition and payment for their hard work. We are working to introduce the concept of paying developers directly for their contributions. A budget has been established that will redirect donations and even specific bounties directly back to developers.

What this means for companies

Companies rely on modifications to set them apart from the competition. We offer Pelican under a commercial license that allows modifications without the requirement to open source your changes. For more information about this commercial license please reach out to team@pelican.dev. This also comes with dedicated 1:1 support calls directly with our team every month.

Relicensing Process

Once we had decided to relicense the project the first question was, how can we do this?  There is little legal precedent on how to relicense open source software, but it has been done many times before. Notable examples include when Mozilla relicensed Firefox from the Netscape Public License to the Mozilla Public License. Additional examples can be found at https://en.wikipedia.org/wiki/Software_relicensing.

It was important to our team the process we undertook to relicense the code was public and shared with the community. There have been many historical contributions and taking these into consideration would complicate the process. Therefore, we decided to use the latest committer in the line-by-line git blame for each file. This means that for every line in every file we’re giving credit to the last person that updated that line.

In order to relicense a source code file we need the permission from the overall majority owner. A file is considered majority owned by an author if 90%+ of the lines have last been updated by that author.

Permission

In order to relicense the code we need permission from the authors we identify. Pelican was launched with the direct support of most of the developers previously from Pterodactyl. We have explicit permission from nearly every majority owner. The remaining authors’ files will retain the original license.

The Tool

We used a simple python script that utilizes git blame to list each file and generate per-line blame listings. The scan_licenses.py script is linked here so that this process can be fully understood and reproduced. Here’s example usage:

$ python3.12 scan_licenses.py | egrep -v 'migration'

The Numbers

The Panel

The Pelican Panel GitHub repository consists of 1332 files as of Mar 29, 2024. With Contributors’ consent we accounted for 1324/1332 of the Panel’s source code files. The remaining files explicitly retain the original license at the top of their source code.

The Contributor License Agreement

In addition to the AGPL license Pelican will also be available under a commercial license.  In order to ensure that we can dual license the Pelican software and still allow open source contributions we’ve created a Contributor License Agreement.  This is a legal agreement, so it’s important to refer to the agreement itself for exact details, but I’ll attempt to summarize here.

  • Contributors retain all rights to their contributions

  • Contributors grant perpetual rights to copyright, patent, relicense, offer for sale, or transfer the Pelican Project including your contributions

  • Contributors represent that their contributions are their own work

Essentially this means that your contributions will always be attributed to you, but you grant the Pelican Developers the right to use it.  In return the CLA commits the Pelican Developers to not use your contributions in a way that is contrary to the public benefit.

Our Commitment to Open Source

The license change was undertaken with the goal of a stronger and more cohesive open source community.  We want Pelican to be free for everyone while also supporting a community that rewards developers for their contributions.  Pelican will always be open source software that is free for personal and commercial use.