Karl Pietrzak's Google Summer of Code 2006 Proposal

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:

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 improvementEstimated Time to CompletionNotes
adding 64-bit supportthree 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 improvementEstimated Time to CompletionNotes
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 improvementEstimated Time to CompletionNotes
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.