Hi René,
Here's my proposal. Looking forward to your feedback.
--
Denis Kasak
About You
=========
1) Your Name:
Denis Kasak
2) Contact Information:
[email protected]
IRC nick: dkasak
ICQ: 46413957
XMPP: [email protected]/Laptop
Mobile: (+385) 99 / 595 - 2655
3) Time Zone and Preferred Language:
UTC+1 (CEST), English
4) Time Commitment:
During the three months of GSOC, I would be available full-time, more
or less. I've taken care of major commitments (like exams) so they should not
be disruptive over the summer. I'm confident I could port the major part (if
not everything) of pygame to tinypy.
5) Programming Experience:
10 years experience in C
6 years experience in C++
6 years experience in Python
A few years experience in LISP, Prolog, Pascal (not an expert, but I
have a good working knowledge with all)
I was GSOC participant last year under tinypy and I've implemented a
sandbox feature (memory and time limit) for it. As a result I'm very familiar
with tinypy's internals.
I'm a teaching assistant for Programming classes in my university
I've written a small plotting/linear regression/statistical analysis
library for personal use (for laboratory work in Physics classes)
A few small personal games like a text adventure and a curses Snake game
I've submitted small patches/bugfixes to FOSS projects (like Miranda IM)
6) Pygame Experience:
Not much, but I've often played with it and I use it often to
demonstrate Python programming in Programming classes mentioned above. I've
also ported the aforementioned Snake to Pygame sometime in the past (and
subsequently lost the code in a hard disk failure :-( )
7) Other skills and experience that are of interest for your aplication:
A good knowledge of Mathematics, Physics, Electronics, Signal Theory,
Game Theory, etc. (my university is a sadistic place :-) )
I believe I can write pretty good documentation and I enjoy doing it
Experienced with SVN and some other VCSs (I've particularly been
interested in DVCS lately, e.g. Mercurial)
A good knowledge of Linux, POSIX, etc. (I'm a 6+ years user)
About Your Project
==================
1) Please explain in 2 to 3 paragraphs the project you intend to complete.
My intention is to port pygame to tinypy by using tinypy's C API. This
would mean implementing most (possibly all, if the schedule allows it)
submodules of pygame. It would also include implementing unit tests to test the
new pygame port, either by reimplementing the tests or reimplementing the
Python unittest module (more likely).
The benefits of such a project are rather obvious; pygame would support
another cool platform and expand its userbase/usefulness, tinypy would become a
much more interesting game development platform and it would be of interest to
the entire game development community.
2) What existing or future need does your proposed project fulfill?
My project would help pygame by providing a very small and tightly
integrated Python implementation which could potentially be very attractive for
game developers (particulary for embedded platforms). tinypy still has a lot of
room left for optimization and it could provide pygame a very small, fast and
"no baggage" platform. It would also make tinypy more attractive to game
developers. Overall, it would be beneficiary to the whole game development
community.
3) Provide a rough timeline for how you intend to complete your project, test
it, and document it within the allotted time period.
week 1: Reimplement the unittest module to tinypy so pygame's tests can
be used directly. Study the code and documentation for pygame to familiarize
with the codebase.
weeks 2-3: Implement the pygame module stub. Port the most important
submodules to support basic drawing, along with relevant helper modules (the
surface, display, draw, color, locals etc. submodules)
weeks 4-5: Port some of the more advanced graphical features, like the
ability to render fonts and images (obviously, the font and image submodules
along with transform and rect)
weeks 6-7: Port interactive features to start being really useful (key,
time, event and mouse modules)
weeks 8-9: Port other "usability" modules (like pixelarray, overlay and
mask (for collisions))
weeks 10-11: Port high-level features (mixer, music, movie, cdrom
modules) - this chunk of work could also be resized (by omitting some of the
modules) to be a safety net in case something goes awry and we need to
reschedule.
week 12: Fix bugs, write documentation, packaging.
In the case that some additional unit tests are needed or some need to
be reimplemented, this would be implemented incrementally after porting each
module.
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.
I've posted my initial proposal on the mailing list and got positive
feedback. I was given advice on how to approach unit testing and some other
general tips.