gsoc2012ideas

The basic idea is students get paid $5000 from google to do an open source project which they propose.

Students, please:

Note: also accepting pyopengl projects.

You should also take a look at PSF's GSoC pages for more info:

  1. http://wiki.python.org/moin/SummerOfCode/2012
  2. http://wiki.python.org/moin/SummerOfCode/Expectations

Here is the GSOC FAQ from google (check to see if you're eligible):

  1. http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs

The Mentors

These are the people who will help the students, and give them advice whilst they do their projects.

  • Katie Cunningham @kcunning (kcunning in irc)
  • Rene Dudfield @renedudfield (illume in irc)
  • Mike Fletcher blog (mcfletch in irc)
  • Robert Deaton (masquerade in irc)

Student Application Template

Students should adhere to this application format when submitting their final proposals, and it is also a useful set of guidelines to consider when forming and discussing a project proposal.

About You
  1. Your Name
  2. Contact Information. This should include your email address and IRC nick; Gtalk, AIM, MSN, or other modes of communication are optional.
  3. Time Zone and Preferred Language (spoken, not programming)
  4. Time Commitment. Briefly explain how much time you would have over the summer to complete your project, and any significant other time commitments.
  5. Programming Experience. This can include personal, open source, school, or professional projects you have undertaken or helped with. URLs would be very helpful, but not needed.
  6. Pygame Experience. Describe any experience you have using or developing Pygame.
  7. Other skills and experience that are of interest for your application (e.g. in-depth math knowledge, excellent writing and documentation skills, etc.)
About Your Project

  1. Please explain in 2 to 3 paragraphs the project you intend to complete.
  2. What existing or future need does your proposed project fulfill?
  3. Provide a rough timeline for how you intend to complete your project, test it, and document it within the allotted time period.
  4. Describe how you have brought your project proposal to the Pygame community, their reactions to your proposal, and revisions you have made based on those reactions. (Hint: This is something you really want to do before submitting your application.)

Projects

This is a list of projects, sorted by difficulty, that students could take on for GSoC 2009. Feel free to suggest other projects, keeping in mind that they need to be doable in one summer.

Easy

These projects can be completed mostly or entirely in Python, or involving porting existing work.

Improved Sprite and scene system

The sprite system of pygame is currently very specific and does not fit the requirements for many games.

  • Generalize the sprite system to make it more flexible without its current overhead
  • Add a basic scene and state system support for 2D stuff and keep it as generic as possible

This involves a lot of prototyping, sharing design ideas and to communicate a lot with the whole community. You should have made your first steps with Python already and be highly communicative.

pygame-ctypes

Revive pygame-ctypes for fast prototyping and a better idea flow in both directions (there's a large user base interested in pygame-ctypes)

  • Refactor pygame-ctypes.
  • Add test targets and test anything available to flesh out all the tiny bugs.
  • As it is unmaintained for quite some time now, bring it up to date with the latest development efforts of pygame.

Reading and understanding C code as well as being familiar with Python and ideally ctypes should be no matter for interested developers.

Medium

These projects are deeper and would require using the C Python API, and coding in C and Python.

Camera Module for Windows

Mentor: Nirav Patel <nrp> Pygame currently supports camera access for v4l2 cameras in Linux. Adding Windows support would require knowledge of Video for Windows, DirectShow, or Direct3D. The goal would be to make cameras usable in Windows under the same API as Linux. This project would require using the Python C API. Below are some references:

todo#pygame.Camera - Video for windows version ofThis requires some knowledge of the Windows API as well as robust C coding skills.

Camera Module for OS X

Mentor: Nirav Patel <nrp> This is similar to the project above, but would likely use the QuickTime API. See: http:developer.apple.com/documentation/QuickTime/Conceptual/QTKitProgrammingGuide/

Improved font support

Mentor: Marcus von Appen Improved font support (BDF, PCF, TTF, bitmap tables). Especially BDF and PCF are interesting for low resource platforms, such as embedded devices, which also can be interesting for pygame.

  • Research upon the font specifications and standards
  • Design a good, generic font management API for pygame
  • Create or port font loaders for different formats

You should also have good C coding skills as most of this will have to be done in C and Python

pygame for tinypy

tinypy is a tiny version of python, with less than 64K of source code. Porting pygame so it works on tinypy would mean a very minimal python optimised for pygame games. Your journey will take you to the land where bits and bytes are counted, so be sure to fasten your C belt and have your good C coding skills around.

Easy simple software 3d.

Software 3D with the possible option of adding hardware 3D support would be nice to have. Possibly something like tinyGL being used by pygame , and a few extra parts, or just something like a textured polygon drawer. Basically... model = load_model();model.render(screen, (0,0))

You will require some knowledge about 3D APIs and techniques, good C skills and to be strong enough to survive the 2D vs. 3D debates.

Improved graphics format support

Mentor: Marcus von Appen Pygame could deal with even more graphics formats. This would widen its usage fields and allow developers to stick with their preferred graphics requirements.

  • Add alpha channel management for 8-bit palettes
  • Support for float formats and MJPEG and animated GIFs, etc.
  • More colour spaces, more conversion routines for graphics, more, more, more
  • Do research on imaging libraries such as PIL and ImageMagick to evaluate how they can be used or routines be incorporated in pygame

You already should have some undertanding about colour spaces, image formats and conversion routines as well as good C coding skills.

This will be more involved than it first appears. For instance, if float surfaces are to interact seamlessly with currently supported formats then a whole new set of blit loops will need to be added to copy to and from the new format. This will not only affect Surface objects, but also font rendering and array/buffer operations. This is an order N squared increase in code complexity. Until a more streamlined approach is taken to generate blit loops, such as a JIT or a high level loop code generator, such as with Nyquist, adding new formats will just make Pygame, or pgreloaded, code unmanageable.

SDL_pygame

Mentor: Marcus von Appen A pure C library port based on some parts of pygame has been started recently. It aims to clearly isolate certain parts of pygame and wrap them up in a set of functions and modules for C/SDL developers.

  • Implement a cross-platform build suite for the currently availabe SDL_pygame
  • Isolate and migrate code portions of pygame to SDL_pygame.You will require good C coding skills, some knowledge about cross-platform development and build systems such as make.=== Hard

These are extremely difficult projects, and are recommended to be undertaken only if the student has significant prior experience in the subject matter.

OSC networking

OSC is like the new midi protocol for networks. This would let pygame talk to a lot of synths, and music programs. It's a latency aware protocol, so it has high resolution time stamps, and bundles of atomic operations, and you can schedule events in the future etc.All things which are useful for interactive music stuff, but also for games. There's already code that does this, and pygame would then be more useful for multimedia and art type applications.Links about it:
http://en.wikipedia.org/wiki/OpenSound_Control
http://opensoundcontrol.org/ http://www.ixi-audio.net/content/body_backyard_python.html - this is using pygame actively for that purpose. Super collider is the main one to note here. It's a cool programmable synth. It is a smalltalk like language, but the synth part runs as a server controlled by OSC. So you can use it from other programs. But other apps can be controlled with OSC too.You will require strong C skills, having done some network programming already and be really interested in music and synths.

Unsorted or Incomplete

Please help complete these project ideas and categorize their difficulty. Include references to pages with more information if possible, and give a rough outline of what the project would involve, like where to start, and what languages the coding would be in.

finish new movie module.

An ffmpeg based movie module was produced, but is currently incomplete.

Finish it, and perhaps finish the other back ends (there is a VLC based player).

SVG support

Support for importing and rendering SVG files is missing from Pygame. This is currently possible using pycairo to render the image and then loading it into pygame, but a more direct route may be desirable.==== pygame on flash

During the europython 2007 pypy sprints some people made a proof of concept pygame running on the flash vm. Another sprint is going to continue this work at pycon 2008. http://us.pycon.org/2008/sprints/projects/#pygame-on-flash Continue this work to get pygame games running unmodified(or mostly unmodified) on flash.

Easy networking

There were something like 12 student applications for this in 2006.

AI module

ai. A*, flocking etc.

Optimize functions

Get a decent vectorizing compiler like vectorC or an intel compiler to help generate mmx assembly for a lot of stable functions.Architecture specific modules compiled. This could even take advantage of normal gcc optimization flags, which can give a nice speed boost, eg. surface.so, surface_686.so, surface_x86_64.so.So the setup.py could be changed to compile with different CFLAGS, and then have the modules load the correct one for the particular cpu at runtime(if the module is available).

Video effect plugins.

Using some of the real time video effect plugins would be good. There's a video effect plugins that would also be kind of fun for games too :)Probably be a pretty simple module to write to allow using the video effect plugins. http://www.piksel.no/pwiki/LiViDO
http://effectv.sourceforge.net/ Also some of the video stuff from freej (an SDL based VJ software) could be cool to place into pygame. Of course freej uses livido plugins for effects too.

Port PyOpenGL to GLES

First stage would be to make PyOpenGL run on a GLES (2.x) platform. Second stage would be architectural modifications to make PyOpenGL suitable for running on common GLES platforms (i.e. phones, tablets, Raspberry Pi), likely by producing a separate release/package which solely included those components which interface with GLES 2.x. Third stage would be converting PyOpenGL's core library to (optionally) use an efficient wrapping mechanism (e.g. Cython) and adapting the wrapper layers to support that mechanism. A test suite of OpenGL-ES Python programs would be required to confirm operation.

FMOD Support

Pygame's built in sound library is lacking many features found in other libraries such as:

  • Positional Audio
  • Reliable Mixing
  • Hardware Accelerated Playback

FMOD is a widely used and well-known audio library that runs on many different platforms. Although it is a proprietary library, it can be used is OSS projects, and will give PyGame support for more sound file formats.

An older project attempted to do this, but uses pyrex and isn't available in the PyGame library: http://pysonic.sourceforge.net/

Mentors

!!We have the minimum 3 mentors now (there are 4), but could always use more people to help out as a co-mentor or backup mentor.!!

If you are an interested mentor, please contact us on

Updated

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.