Karl Pietrzak's Google Summer of Code 2006 Proposal
Table of Contents
Introduction
Summary
I am proposing to work on the PySoy project for the Google Summer of Code 2006. More specifically, I aim to:
- add, test, and verify multi-texture support, including normals mapping, bumpmapping, and specularity
- improve and test 64-bit support on x86_64 and UltraSPARC machines
- improve special effects capabilities, e.g., special effects
The remainder of this document goes into detail about myself and the projects I have illustrated. It will include details:
- implementing these features
- testing them
- estimated timeline for completion
About the Author
My name is Karl Pietrzak, and I am currently a senior at the Rochester Institute of Technology, where I will graduate with a BS in Computer Science in November 2006. I am writing this document in order to receive a PySoy Google Summer of Code 2006 project through the Python Software Foundation. I feel I am qualified—and certainly eager to—tackle any obstacles in making this Python project a success.
Qualifications
The qualifications for this project can be divided into the following sections.
Open-source Project Experience
I have contributed to a variety of open-source projects in a variety of capacities, ranging from tester to developer. I have:
- contributed a few small patches to the PyDev project for better auto-completion of Python code
- submitted a few bug reports to the PyDev project
- PyDev refactoring crash, Bug 1426745
- submitted a few small patches also to the SCons project, a Python-based build management tool used by Blender 3D and many other projects
- tested a few releases and submitted bug reports for the Autopackage project
- reported bugs to a plethora of open-source projects, including KDE, Umbrello UML modeler, openSUSE
- Umbrello UML Modeler
- changing case in file names, Bug 124273
- diagrams print HUGE, Bug 124333
- File menu should have print, Bug 124330
- deleting association name in state diagram may cause crash, Bug 124587
- cannot put subsystems within subsystems in Component diagram, Bug 124278
- openSUSE
- Python path does not contain /usr/local, Bug 149809
- Python's site-packages should contain a directory in /usr/local, Bug 149843
- helix backend for Amarok uses lots of memory, Bug 163481
- latest Scribus fails because of 32bit / 64bit Python issues, Bug 163849
- SCons
- contributed to many Wiki articles
- started my own Wiki page dealing with using having an RPATH of $ORIGIN using SCons
- created Wiki page that deals with delegating SCons responsibilities to help with development
- better Sun CC compiler support, Patch 1192558
- missing function now documented in man page Patch 1208536
- recursive code fix, Patch 1195203
- improper shared object suffix when using Sun CC compiler, Patch 1191940
- Umbrello UML Modeler
- contributed to many Wikipedia articles
In addition to those, I have experience using the following open-source tools:
Commercial Experience
I have worked on a variety of projects for IBM, Advanced Micro Devices, and Thomson Legal and Regulatory throughout my (so far) short career.
These have included, but are not limited to:
- Oracle database manipulation using JDBC
- XML parsing
- XML creation
- advanced GUI programming in Java's Swing
- RPM creation
- middle-ware programming using XMPP
- BIOS testing
- giving presentations on a variety of topics
- demo-ing software for non-technical users
Academic Experience
As I mentioned before, I am currently an undergraduate student at the Rochester Institute of Technology. I am currently taking a course entitled Computer Graphics 1. One of the primary goals of this class is to familiarize the students with OpenGL. As this is a class I am currently taking, OpenGL is fresh in my mind and I am learning everything from hidden surface elimination to texturing in class as we speak.
Additionally, the class(es) I plan on taking over the summer will not impact this Google Summer of Code project. In fact, they will probably be of great help as I learn about artificial intelligence and software engineering in general. The stipend I receive from Google will allow me to work on this project full-time over the summer.
Development Methodology
My development methodology can be described succinctly as careful, tested, and documented. I'm a big fan of software assistance in any kind of endeavour, specially software engineering. I tend to use project management, bug trackers, IDEs, and unit testing frameworks.
Specifically, the following will explain my development methodology in more detail:
- I was thrilled to find out that PySoy now has a Trac page! I feel this can be leveraged extensively to provide tutorials, bug reports, and TODOs
- Unit testing is a big part of my methodology, no matter what language it is. I have used JUNIT for unit testing in Java, CppUnit in C++, and the logging module in Python. I tend to sleep better at night knowing my code is unit tested.
- I feel documentation is extremely important, and not just code documentation. I believe that a picture is worth a thousand words, and as a result, I tend to use UML modeling tools. Specifically, I plan on using the Umbrello UML Modeler, which has Python support.
Purpose
Although I have contributed to a variety of open-source projects, I have not become a major developer for any of them due to time constraints and other circumstances. The Google Summer of Code allows me to become the full-time open-source project developer I've always wanted to!
I think the idea of a very high-level Python 3D engine is a great one! It will allow easy creation of high-quality 3D projects. I would love to be a part of this project and contribute in whatever way possible.
Timeline
I would like to point out that all of my ideas for this proposal are currently TODOs on the PySoy web page. I have divided them into two categories: Core, Extra, and—if enough time is available—Optional. The entire timeline is available in table-format:
| Time Period | Topic | Goal and/or Deliverable |
| May 23 - May 31 | investigation of state of 64-bit support in PySoy and how to fix them | solid understanding on 64-bit support in PySoy, Pyrex, etc. |
| June 1 - June 13 | implementation of 64-bit support in PySoy | PySoy officially supports x86_64 and UltraSPARC (more 64-bit platforms if hardware is available); plethora of unit tests using the logging module in Python |
| June 14 - June 21 | testing 64-bit support | making use of the aforementioned unit tests to verify 64-bit support on x86_64 and UltraSPARC machines |
| June 23 - June 30 | education on multiple texture support (i.e., normals mapping, bumpmapping, specularity, etc.) | good understanding of normals mapping, bumpmapping, etc. through research using the internet and my school's library |
| July 1 - July 29 | investigation and implemention of multiple texture support | understanding of the PySoy API and implementing multiple texture support would "fit" into the rest of the API |
| July 30 - August 13 | merging of my source code into the main PySoy branch | full integration of my patches into the main source tree |
| August 14 - August 21 | further additional testing to make sure nothing went wrong in the process | I feel it's best to reserve one week for any unforeseen issues |
Core improvements
Core improvements are improvements done to the core of PySoy. These include:
| Core improvement | Estimated Time to Completion | Notes |
| adding 64-bit support | three weeks | will need to research Pyrex, ElectricFence for memory management |
I am a great candidate to accomplish this task because I am the only member of the PySoy team with a 64-bit machine. In fact, it is my primary desktop machine is a x86_64 box (specifically, AMD Athlon 64), but, thankfully, I also have a 32-bit machine which I will use for testing. I also have access to a UltraSPARC machine running Sun Solaris 8 as well.
Extra improvements
Extra improvements deals with improvements to PySoy that fall outside the Core.
| Extra improvement | Estimated Time to Completion | Notes |
| multiple texture support | one month | e.g., normals mapping, bumpmapping, specularity, etc. |
| special effects | one month | e.g., particle system, snow, etc. |
Optional improvements
I will work on optional improvements if I finish the above-mentioned tasks.
| Optional improvement | Estimated Time to Completion | Notes |
| animated textures | two weeks | as mentioned in the official TODO list, this would include Ogg Theora and MNG support; possibly APNG support as well |
Conclusion
I feel I am an ideal candidate for this PySoy Google Summer of Code 2006 project because of my previous experience in not only Python but also a variety of open-source projects. I feel I can make a great contribution to the project if given the opportunity to do so through this Google Summer of Code project.
