[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[pygame] Re: About Pygame development



Hello,

this is a response to questions like:

'how do we speed up pygame development,
    is it a volunteer project,
    and would funding like a patreon help?'



It's a fairly commonly asked set of questions. Because I guess people would like pygame development to happen faster.
It's an almost entirely an unfunded volunteer effort.
There are some small exceptions like the Google Summer of Code in the past,
and some people have made money selling education products like books,
or get invited to conferences to talk about pygame things. But most pygame development is unfunded.

So that means people give up time they could be earning money in a job, time with families and all that other life stuff.

So, what can we do to speed up development?

Now that pygame 1.9.4 is out I'm going to help out with the SDL2 and 'pygame 2' stuff that Lenard has been working on.
This has me more excited than in a long while to play with all the new things. And for volunteer projects, that's important.
Making it a joyful, and welcoming place to do stuff in is important. As is making sure people get some thanks and credit for their work.

The work that Thomas and others have done with the CI should help us a lot.
But we can improve that further still by moving to continuous deployment.
So every PR merged sends development builds to pypi.
I guess what I'm saying is, making releases take less time to put together makes it quicker to do releases.
Sounds like an obvious thing to say(and it is), but it's worth pointing out as a goal.
And a first step of automating processes is to write them down, which is what happened with the last pygame release.

Soon, I'll announce a 'python artist in residence grant',
and donating some money to someone working on python/pygame related art projects.
I did already plan to announce the first recipient of this, but they are busy at the moment.
Why this? I feel the python world largely ignores the contributions that the game development, graphics, education, music and the arts provides for python. People who make games, music, and art have contributed really major things to the python world. And the python website doesn't even mention that art or games are a thing. We don't exist apparently.
An artist residency usually works something like a person does some time in either a gallery making something to present or in a music club doing a weekly spot.
Because it will initially be a small amount of money, the pygame one will only be a month long.
It will be for someone who is already doing stuff with pygame or python in their arts practice.
There will be a little thumbnail on the website linking towards an artist statement/patreon page/blog or some such.


Another thing is making it easier to contribute. The move to github from bitbucket,
automating the build process, and releasing the website as python was supposed to help with this.
But still contributions are still very small. There is still lots of work to improve things here.

What else can we try to speed things up?

Also, I worked updating the developer guide on the wiki,
and also marked a number of easy issues up with 'first good issue'.
However, some contributors still don't know what even a unit test is, or how to write them,
or how to write them with pygame.
So, the final piece is to finish a guide on how to write unit tests, and pygame.
I've made a prominent link on the home page for how to contribute to pygame the library.
There's also a banner on import pygame now linking to the contribute page.
(Appologies if it annoys you. To disable edit the pygame/__init__.py file).
(If we get to pygame 2, then I think we can remove that banner.)
And there are a few people helping out now,
and lots more improvements for the developer guide planned,
as are more learning resources and interesting tasks for people.

The 'learn python by contributing' is a very interesting idea(to me), and I guess we'll see how it goes.
Hopefully people learn something about python, C, or general software development whilst they do it.


The API cleanup, and C API documentation that was done should make it easier to understand the pygame code.
We can aggressively clean up things for pygame 2 as well.
For example, I have already worked on moving lots of files out of the root of the repo and cleaned up 18 years of cruft.
There is more work to do here, like introducing cpplint for C code, and pylint for python code.

There is now a link to the compile page improvements for the platform the developer is using if the pygame source build fails.
This should help people compile it :) Which is the first step in contributing things.

I'm going to start a weekly online sprint again.
And will try and ask people to contribute unit tests or at least ways to reproduce issues when they submit them.
Engaging with people quickly often gets a response, and people are often more happy to help out in solving their own problems.

The discord chat seems to have quite a few people active these days. Often 50-70 or so online at once.
Invite here: https://discord.gg/r8yreB6
It feels like more of a community than what the old IRC had become.
You can have a chat with people about things, rather that writing a comment
into nothingness of IRC and no one responding.
Also, I think things seem more friendly than they were in the past.

Automate all the things is another step. Which we tried with the website, and the CI.
But that also seems to take a lot of effort and time. But now docs don't need to be built manually, and such.
Spam is still a constant battle, and hopefully some people can help automate this even more.

I did start to prepare some materials for a funding drive.
But then I realised I could raise money more quickly by simply working and finding some European charity that would take dontations for pygame work.
I know the PSF accepts donations on behalf of some projects now. This could be an avenue to explore. I heard that the pypy project may be moving under the PSF at some point for example. Requests did a funding drive for $33,000 recently, Pypi raised $180,000, and numpy got a grant for $500,000, so who knows. Maybe we can raise $50 or so, and buy someone a pizza. Perhaps worth a try. lol.

Various nefarious shady people have approached different people in the pygame community
about paying for advertising by including hundreds of _javascript_s or including malware in executables.
And I don't think anyone wants that.

Some people, and companies have made money by selling educational products about pygame. And I think this model of selling educational products can be good for funding this type of work for people. Having such external learning materials and documentation available for everyone in the pygame community is such a wonder. This is mostly beneficial for people wanting to learn stuff, and toward funding the authors of these products. But not all that beneficial to pygame (the library) development so far in terms of .py files and .c files getting some attention. Also, topics covered tend to be simple ones, and not so much for newer functionality (which we personally write examples, docs, tests for).

Patreon? The Gimp project started listing a couple of their developers patreon links on their page under a donate button. After some years they are making about $1000/month between them. A similar amount is being made by the Inkscape, SDL, and renpy authors on their patreon pages. If you compare that to the market rates a python/C/asm/C++/objectiveC/... developer with decades of experience can make... it is almost a rounding error. The 'vuejs' project main author is making approximately a market rate salary(on the low side), but there are many companies making commercial products with that. As far as I know this is the only person in the world making almost a salary with a patreon page for an Open Source project. Mostly people seem to be making $12 per month or so. We could put up some links like Gimp does for core developers who want it I guess.

One SDL author works for Valve getting a nice big paycheck after the attempt to turn SDL into a private project and sell licenses didn't really work out. This is a nice relationship, because many games use SDL on steam, so it is in their interest to hire one of the major developers. Also one SDL author has made much money porting commercial games. But I don't see this happening for pygame, because apart from being used in education, other uses of pygame aren't all that commercial. So, there's not really a consulting market for it, or some big company using it.

There are possibly some grants available?. I did try helping someone write a grant proposal to help with the pygame documentation in German... but that wasn't accepted. So these things can be a waste of time. Helping people with GSOC applications was successful back in the day, but that generated way too much work for volunteers to handle in a sustainable way. It was sort of successful in helping newer developers on their way into a career. But it was not good in that it created a lot of work for us trying to finish off and maintain that work. I would like to do something like that again, but not for the reason of speeding up development, because it really doesn't. I feel perhaps with the infrastructure available with git, and learning from previous experiences, the GSOC experience could be much better for everyone involved.

Working with others more is probably a great way to go. I feel if various python game/gfx/sound/music libraries, and SDL users worked together more it could help everyone.
For example, distribution is one area where lots of projects are working on their own. Panda 3d is working on their own tool for making packaged executable for different platforms. Kivy, and renpy have also been working on their own tools to mobile distribution. We can help find people find that these efforts in other communities actually exist, and join in and help them with some pieces rather than working on our own things. Why can't we collaborate more with the love2d people? There are many opportunities for collaboration, and sharing the work load where multiple communities can benefit.

Helping pygame users be more successful could also help with pygame development if people decide to contribute back.
This is everything from cheering on book authors, and game devs when they do releases.
But also trying to find ways to help them get more reach and make better things.
Work on distribution tools here would help, but also making it less of a chore for people to share and promote their work.
How do we help library authors?

What is pygame anyway? Apart from being a thing you import, it's also a community of developers making interesting things.

There's lots of 'awesome pygame' related stuff out there. How do we help people find it and support the authors working on this stuff? If the question is 'how do we help people make better games?' then a good answer to that would be to help library authors. Because, does a map library (as one example) installable as a python package have to be included in pygame to be awesome and useful to people? No. But is it currently harder for people to use these libraries, and harder for people to know that these things even exist? Yes. Helping to improve python packaging is one way, but also actually contributing packages for things. Even bringing together a small list of python game related projects made me aware of many things (and I live and breathe pygame stuff every day). There's lots we could do here still, but simply publishing that list of 'awesome pygame' stuff we made some months ago on the website will be a good help. Perhaps a 'project' of the month would be another idea, where we as a community try to help out one project that month. With packaging, docs, promotion, bug fixes, examples, and all the other polish that is required to make it a better thing.

What can we learn from other projects and people? A lot. These last weeks I've been looking at how some successful projects operate for ideas.

The project method of funding development seems to work for some other projects.
The blender/gimp model of development where they make a community project together. They have made short films and animations that raised a lot of money. This way there are potentially cultural funds available, such as what blender got. As part of making a game, there will be improvements needed for pygame itself. I also know a Super Collider dev who uses this model too. Perhaps there's a couple of people in the community who are good at making games, art, music, marketing, so that there would be a team of 3-5 including a person working on pygame improvements. Maybe it could raise enough money to fund a 1, 2, or 3 month project? It's possible, and something that has worked before.

It could be pretty Epic to have some sort of 'pygame community game'.


Just some ideas.




On Sun, Jul 8, 2018 at 9:02 PM, Thomas Kluyver <takowl@xxxxxxxxx> wrote:
Hi Marc-Alexandre,

I pushed a bit for a release to happen so that there was an official release with Python 3 support, and I also worked a bit on packaging so that it's practical to 'pip install pygame' (that mostly works now, but there are still some problems). I've tried to help keep the project moving, but I don't really do any development work on it myself.

René is working towards a 1.9.4 release https://github.com/pygame/pygame/issues/390 .

Meanwhile, Lenard has been quietly working on SDL2 support: https://github.com/pygame/pygame/tree/SDL2_patches . If there's ever a pygame 2.0, SDL2 support would probably be the headline feature.

So René & Lenard would be in a better position than me to say whether any kind of funding model would help Pygame.

Best wishes,
Thomas


On 7 July 2018 at 18:04, Marc-Alexandre Espiaut <marc-alexandre.espiaut@xxxxxxxxxxxxxxxxx> wrote:

Hello,

I would like to know more about the current Pygame development.

I’m glad to see that the Pygame development slowly sped up from December 2016 with the release of versions 1.9.2 and 1.9.3.

I would like to know more about your ideas to speed up development even more and reach v2.0 one day. I suppose(?) that like most FLOSS projects, the work on Pygame is unpaid and made during free time.

Does starting something like a Patreon would help the Pygame project in anyway?

Best regards,
Marc-Alexandre Espiaut