I think that rewriting the extension modules in cython would be a great way to make the project accessible to new developers.
Writing extensions in C, as it is now, requires that developers have 1. Good C skills, 2. Understanding of the Python C library, 3. Knowledge of the SDL library, 4. Understanding of low-level details about the platforms it supports, and finally, 5. a good sense of how pygame works. If you can imagine those skills charted as a Venn diagram, it's not difficult to understand why it is hard to maintain pygame as is, because only a handful of people have those skills and actually care. Cython is not difficult to learn and looks like Python. It would be less of a barrier of entry for new developers to contribute. Also, let's not forget that C in general is losing mindshare, as new developers tend to learn JS, java, and Python for their classes. At that point however, Toms python_sdl2 is already doing that so, where does that leave pygame2? If cython is chosen, better to let pygame 1.9 die gracefully and move on to a better platform and not duplicate effort (by moving to python_sdl2). Good night, sweet prince, in that case. On Sun, Mar 19, 2017 at 5:02 PM Lenard Lindstrom <le...@telus.net> wrote: > Hi René and everyone else, > > I like this approach. My patches achieve the first step, using SDL2. The > next step is to introduce new SDL2 features as new modules and classes. > > I suppose the SDL2 patches can be incorporated as conditionally compiled > code. They can be added one at a time, but must all be in place to work > properly. Then any new Pygame modules will expose SDL2 features only, so > not be built for SDL1. > > As a long term goal SDL1 can be removed and SDL1 legacy modules > reimplemented on top of the SDL2 specific code. > > Is there any reason new modules should not be written in Cython? If not > then we could try to use parts of pygame_sdl2 to quickly introduce SDL2 > specific features. > > Lenard Lindstrom > > > On 17-03-18 05:02 AM, René Dudfield wrote: > > Hello, > > > > so, I've spent some more time reading source code, and investigating > > SDL2 and the options a lot. > > > > I *think* this plan below could be the best way forward for us. > > > > tldr; > > * have a single source SDL1, and SDL2 code base with a compile time > > option. (like we have single source py2 and py3). > > * move bitbucket/pygame repo to github/pygame. > > > > > > Rather than reimplementing everything, and introducing lots of > > compatibility bugs, Instead I think a gradual approach would work > > better. I'm starting to think that perhaps pygame_sdl2 by Tom, is not > > such a great way forward (for the pygame project, I think it was > > necessary and good for Ren'Py). > > > > A big breaking change is kind of silly for how little resources we > > have. Python 3 managed to pull it off... after a decade, and with > > massive resources having poured into it. And it only took off once > > they put compatibility code back in. Here's the thread where some > > discussion has been happening. > > > https://bitbucket.org/pygame/pygame/issues/174/pygame-20-the-sdl2-edition > > > > > > What we do have is some patches to get the current code base working > > with SDL2. > > https://bitbucket.org/llindstrom/pygame-1.10-patch > > > > I think it should be possible with some work to improve an SDL2 > > compatibility layer, so that pygame code base can work with either (as > > a compile time option). Then newer APIs can be introduced in time, in > > a non break-every-program kind of way. Also, it's been proven that > > 'hardware' blitting does not need to break SDL1 API compatibility to > > use hardware accelerated APIs (Angle, SDL_gpu, [insert 4 or 5 other > > projects], ...). > > > > Having a pygame2, or whatever separate repo would also make > > maintenance harder. Since for the foreseeable future, we will likely > > need to do maintenance releases for this anyway (at least I want to!, > > and I know other users of pygame will). > > > > --- > > > > For pip uploads, they would continue to be for SDL1, until we can > > finish the SDL2 changes, and it works better. There would be no new > > additions until compatibility is mostly there. > > > > The work would progress by slowly adding in compatibility changes > > whilst keeping pygame working. By keeping the SDL2 patch set as is, > > and slowly reducing the patch set until it is size zero. So we always > > have a pygame with sdl2, and a pygame with sdl1 that is producible. > > Eventually the patch set will disappear. > > > > --- > > > > A pygame2 module would just cause confusion amongst users, and that > > really boring 'pygame 1 or pygame 2' type debate would go on, and on > > like the "python 2, verses python 3" one did. For me, just avoiding > > that discussion for the next decade would be worth it. > > > > Then there would need to be two sets of documentation on the website. > > And two sets of tutorials... and... we'd have 2 of everything to *do*, > > and 2 of everything for people to look at. > > > > Finally, "import pygame2" looks kind of weird. I've grown used to > > "import pygame". > > > > ... > > > > > > > > I'm keen to get moving on this. I've been trying to get feedback on > > the 'pygame sdl2 addition' issue for the last month, and the issue has > > been open since 2013. So I'd like to put a time limit on this decision > > for one more week. > > > > I'd really like to hear back from contributors, and users (everyone). > > > > > > > > > > ps. Interestingly SDL_gfx has an SDL2 release now. > > http://www.ferzkopp.net/wordpress/2016/01/02/sdl_gfx-sdl2_gfx/ > > > >