What is happening in the Pygame community?
It is important to note that most of the information I was able to obtain for this article comes from community members on the side of Pygame CE. I’ve yet to see any statement from the Pygame lead and any other maintainers who stayed behind, though I will make an update if I’m made aware of anything. With that being said, I’d just like to emphasize that there are always two sides of a story, and we currently only have one. With all that out of the way, please enjoy the article📌
Pygame is a cross platform library that wraps Simple DirectMedia Layer (SDL)1, a low level C library that provides access to audio, keyboard, mouse, and graphics hardware. Pygame simplifies the process of creating games in Python by providing a set of modules and classes that abstract away the complexity of SDL. Pygame also supports many other features such as sprites, fonts, music, animation, and other tools you’d need to develop a game.
At over 20 years old, Pygame is one of the most widely used Python libraries for game development. It has inspired many beginners and hobbyists to learn Python and create their own games, including myself. It’s also used in schools for educational purposes, for quick prototyping of game mechanics, and multimedia applications. But recently it was forked2. At first this shouldn’t seem unusual, because as of the time of writing, it has over 2.6k forks. People fork open source projects all the time, to contribute code, to make their own experimental changes, or just for fun. But this fork is different, as it is led by many of the core maintainers of the original project. The forked version of Pygame is called Pygame Community Edition (Pygame CE). Adding Community Edition to the name might seem strange at first, as the original project is licensed under the LGPL, has over 6,000 GitHub stars, and over 250 contributors. But the readme of the project on GitHub clarifies the reason.
It is a fork of the upstream pygame project by its former core developers, and was created after impossible challenges prevented them from continuing development upstream. The new distribution aims to offer more frequent releases, continuous bugfixes and enhancements, and a more democratic governance model.
So, it appears that there has been a schism between the head of the project and the core developers. Doing some more digging, we find a Reddit post announcing the project from 3 months ago3. In it, the developers give an overview of the fork and clarify that they intend it to be a drop in replacement for the old version of Pygame. They are very professional and don’t air any grievances about the original project, only mentioning desiring…
A more democratic governance model.
and
We hope to just move on with the community fork in a positive way.
If you’ve been around the open source community for long enough, disagreements that lead to forks happen. There's Glimpse4 a fork of Gimp, Audacium5 a fork of Audacity, various Linux Distributions without Systemd etc. Sometimes it's to protest a change, other times it's due to a conflict with the project lead. I mean there is a reason why the leaders are called Benevolent Dictators for life.
But when disagreements become too large, the leaders either take a step back from the project, like Guido Van Rossum (the creator of Python) did, shut down the project, or the community forks it, as is the case with Pygame CE. For Pygame CE, the fork of Pygame was not a sudden or spontaneous decision. It was the result of a long-standing disagreement between the head of the project, and some of the core developers who had been working on the library for years. These were a few of the sources of conflict.
The management of the website: The website would occasionally be taken down without consulting anyone else on the team or in the community to promote certain messages or causes. This would cause confusion and frustration among the users and developers who relied on the website for documentation, downloads, tutorials, showcases, forums, and other resources
The direction of Pygame: Maintainers often felt that the Pygame lead rejected or ignored suggestions and contributions from other developers who wanted to improve or expand the library in different ways
The governance model: There was effectively only one person who was the sole leader and decision maker of the project. They had full control over the GitHub repository, the website, pypi package, the old Discord, and the Twitter account. This severely limited the other maintainer’s ability to inform users when thing went down, as well as their ability to make changes to the code base
These issues and others eventually came to a head when, while updating Pygame to work with Python 3.11, several core developers were blocked from the GitHub repository and had their projects removed from the project showcases section of the website. This was seen as the last straw by many of the developers who felt that they had no voice or influence in the project. They decided to fork Pygame and create their own version under a new name, Pygame Community Edition.
The fork of Pygame now means that there is a choice for Python game developers who want to use a different version of Pygame. Pygame CE seeks to be an alternative that provides more features, faster updates, and more community involvement. Users have already reported bugs in Pygame that are fixed in Pygame CE, noticed performance improvements in their games due to the improved code, and new conveniences functions that make game development in Pygame CE easier than in Pygame.
The fork of Pygame is also a testament to the power and flexibility of open source software. It allows anyone to fork a project and create their own version, if they are not satisfied with the original one. With that being said, there is a long road ahead for the Pygame CE developers to win the trust of the Python game dev community, and this schism will continue to haunt them for many years to come. For example, there are still people who believe that Dlang (A language that tries to be a better C++) has two separate competing standard libraries, due to a schism that happened in the community 16 years ago. Many people will also be turned off to both projects because of this drama as well. As someone who still dabbles with Python and Pygame from time to time, I’ll be keeping an eye on Python CE and the Pygame community. While my wish would be for the two projects to reconcile, it appears that the decision was made as a last resort, so it may be too late for that.
Call To Action 📣
If you made it this far thanks for reading! If you are new welcome! I like to talk about technology, niche programming languages, AI, and low-level coding. I’ve recently started a Twitter and would love for you to check it out. I also have a Mastodon if that is more your jam. If you liked the article, consider liking and subscribing. And if you haven’t why not check out another article of mine! Thank you for your valuable time.