Google SoC Project Ideas
NOTE: In recent years, Google has decided to reduce the number of small projects. As a result, wxPYthon will not be applying to be its own project this year. However, the Python Software Foundation (PSF) will be serving as a mentoring organization, and sponsoring a large number of python projects. wxPython projects will, or course, be welcome. We suggest that you use the wxpython-users and wxpython-dev lists to find a mentor and discuss your project ideas. Once you've got things nailed down, you can apply to Google under the PSF umbrella.
This pages lists some suggested projects that could be proposed and implemented by participants of the Google Summer of Code program. Don't take this as restriction however, we will gladly accept work in any of these areas by others not participating in the Summer of Code too! Please add any ideas youy may even, even if you can't mentor it -- someone else may want to.
Proposals for Summer of Code projects not on this list will be gladly reviewed as well.
- Py3k -- need I say more?
Integrate wxPython with web-based applications. Develop a framework for embedding web-based applications (like Google Docs, calendar, GMail, etc.) into wxPython, likely using wxWebKit as a embedding engine. To the extent possible, make these web-based AJAX/GUI applications look and feel like wxPython components, including having methods and properties (like gcalendar.GetEventsForDay(date=today) or gmail.Contacts) and if possible, support callbacks and user event triggers. This would make it easy to write hybrid web/desktop applications.
- Extend last year's unit testing project. Tasks include: developing a utility for simulating native mouse and keyboard events, for testing user input handling, integrating the wxPython unit tests into the wxPython build process, so any new regressions can be flagged, setting up a buildbot so that changes in SVN automatically rebuild and run the unit tests, and of course adding code to test additional classes and methods.
Make it possible for wxPython wrappers to use the new PEP 3118 buffer protocol (suported in py2.6 and py3k) where appropriate. This would allow copy-free and efficient transfer of data for wx.Image, wx.Bitmap, wx.PointList, etc, etc. The interface is supported by numpy, PIL, and probably other projects by now.
- Implement a solid, good looking, multi-threadead (background loading), Thumbnail View Control of a directory. Plug-in friendly architecture for "file actions" like Crop, Resize, Sent in email, etc. Also, plug-in friendly for custom "thumbs" of certain filetypes: make it generic -- not only for a directiry, but any other source of images (data base, etc.)
A predefined AppFrame framework that will allow rapid creation of applications following a certain user interaction paradigm. Something like what you see in iTunes, iPhoto, Finder:
- - The Split Center should be a simple 2 sides split with the first taking a "zone/subzone selection" control that is a 2 level tree and a the second panel from the split being the actual zone that is selected.
- - The way to build applications with this framework would be by defining the Zones and having the framework create the left panel automatically from the zone definition.
- - The Top and Bottom toolbars should respect FIXED vertical sizes for uniformity.
- Extend py-package (especially pyCrust) with a plugin system. This could also be a model to show, how to design a good plugin basement. For example a idle-like syntax coloring or a user-friendly autocompletion. Integrate iPython while you are at it -- it is a fabuous interactive interpreter.
- Using the new plugin facility, add support for a bunch of widgets that aren't there now.
- A series of screencasts and tutorials that demonstrate how to use XRCed effectivly, and how to use and build upon the layouts and code that XRCed produces.
See also XRCed Wish List
Soc Proposal Guidelines
The application could have similar sections as in the following:
Name: E-mail Address: Project Title: Project Goals: Project Benefits: How does your project benefit Python and its community? Project Tasks and Deliverables: Break your project into tasks or pieces. Describe in detail what you plan to accomplish and what the results will be. Project Schedule: Estimate how long your project will take and how much time you have to dedicate on it. Try to establish a timed roadmap of the tasks to do. Personal Statement: Tell us about yourself. Describe why you are better than any other applicant for this project.
Tips for prospective students
Please try to not underestimate the scope of a project, but also not to overestimate it. Make working on your wxPython project your main activity for the entire summer, as to not go over deadlines. When writing your proposal, keep in mind that you aren't the only one writing one. We will have to accept a certain number of applications, so you have to make your application stand out to be selected.
Sell your idea - Describe your idea in detail. What is the ultimate goal? What components will it have? What are the benefits for the user? How do you plan to ensure that the project gets completed on time? If a more detailed explanation of the idea already exists, what will you do that will go above and beyond all expectations?
Sell yourself - Make sure you get across how enthusiastic you are about the project. The more enthusiastic you are, the more assured we will be that you will finish your project. It also indicates that there is a good chance you will stick around even after the Summer of Code has finished. Why are you interested in Open Source and wxPython in particular? What interests do you have, and how do these relate to the project for which you are applying?
Be enthusiastic - Summer of Code is a very exciting opportunity, and wxPython is a very exciting project, with a long and proven history, to work on. We aren't just looking for someone who wants a summer job to pass their time and earn some money. We want people who have a passion towards open source and are likely to become constant contributors to wxPython and open source also once the summer has passed. The goal of the whole initiative is to have students find their way to open source together with mentoring and a good motivation.
Don't be afraid - Do you have a brilliant idea not covered on the list of project ideas above? Excellent! We'd love to hear it.
Note: You cannot be both a student and a mentor, the reasons why are available here.
Students who want to join and apply can find more information here.
Anyone who wants to become a mentor can find more information here.