Differences between revisions 135 and 269 (spanning 134 versions)
Revision 135 as of 2006-05-02 15:03:20
Size: 16507
Editor: dsl82-163-154-235
Comment:
Revision 269 as of 2008-11-15 14:00:01
Size: 5197
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
These are the [http://code.google.com/soc/ Google "Summer of Code"] projects involving Python and mentored by the Python Software Foundation. Discussion about any SoC topic should take place on the mailing list: [mailto:soc2006@python.org soc2006@python.org] [http://mail.python.org/mailman/listinfo/soc2006 "Click here to join the list."] ## page was renamed from SummerOfCode
This page coordinates the [[http://code.google.com/soc/|Google "Summer of Code"]] projects involving Python and mentored by the Python Software Foundation (PSF).
Line 3: Line 4:
For information on the accepted projects for 2005, see ["SummerOfCode/2005"]. Based on previous years, we are expecting a lot of competition so when making your application it is important to note that the PSF is looking for projects that:
Line 5: Line 6:
= How to submit a proposal =  * enhance an existing Python project rather than start something complete from scratch;
 * contribute to the Python community rather than are merely written in Python.
 
Line 7: Line 10:
[http://code.google.com/soc/student_signup.html Apply through Google's online form.]
[http://code.google.com/soc/student_step1.html Submit an application.]
The 2007 PSF SoC coordinator is JamesTauber (jtauber at jtauber dot com). Contact him if you have any questions.
Line 10: Line 12:
The Drupal folks have some nice information for students:
 * [http://drupal.org/node/59963 Student requirements]
 * [http://drupal.org/node/59037 HOWTO write an application]
= Students: How to submit a proposal =
Line 14: Line 14:
Here is the [http://code.google.com/soc/studentfaq.html Student FAQ] Student applications are now open.
Line 16: Line 16:
= How to apply as a mentor = [[http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents|Google's Advice for Students]]
Line 18: Line 18:
The mentor's responsibility is to ensure the student makes progress. This could be coaching them, providing motivation, making sure they aren't stuck, answering technical questions, or pointing the student to the proper resources; however, the mentor is not expected to do work for the student. In order to accomplish this, the mentor is expected to dedicate a couple of hours per week. Looking at the list of PSF [[SummerOfCode/Mentors]] can help you craft your proposal to match their interests.
Line 20: Line 20:
[http://code.google.com/soc/mentor_step1.html Apply through Google's online form.] = Tips on participating =
Line 22: Line 22:
 * [http://mail.python.org/pipermail/python-dev/2006-April/063965.html Announcement made to Python-Dev]
 * [http://code.google.com/soc/mentorfaq.html Mentor FAQ]
 * Contact [mailto:nnorwitz@gmail.com Neal Norwitz]
  * If neither Neal nor Guido know you personally, please provide personal references
= Proposal ideas =
   1. Do not overbook yourself. Working on your project should be your main activity for the entire summer.
Line 28: Line 24:
The following ideas are just suggestions. You're free to invent your own ideas, or to use their suggestions as starting points.    2. You must provide weekly status reports.
Line 30: Line 26:
== Python language / CPython interpreter ==    1. Participate in the developer community by joining python-dev, jython-dev, or whatever mailing list is appropriate.
Line 32: Line 28:
 * Some ideas to help get you started: look at the SimpleTodo and CodingProjectIdeas pages. [http://www.python.org/dev/peps/pep-0042/ PEP 42] also lists feature ideas.
 * Integrate [http://www.nedbatchelder.com/code/modules/coverage.html Ned Batchelder's coverage module] into the core, along with improved performance profiling, and make 'em both thread-smart (so that we can get accurate stats on multicore CPUs).
 * Revive restricted Python -- inspired by a recent thread on the py3k list (would be mentored by Brett Cannon: request that student who takes this on not use it as basis of work to be published because of competition with my dissertation)
 * Add regular code-coverage (both C and Python) to the build system (maybe even to Buildbot?)
 * Provide more and better debugging of reference counting, garbage collection, and other memory issues for extension and embedding authors.
 * Enable I18N identifiers support for py3k.
 * Write tools that leverage the new compiler AST-- tools to analyze code, walk the AST, modify it, allow a modified AST to be compiled back to bytecode. Work on PEP 267.
 * Create a practical statistical profiler designed for inclusion in core Python. (You might want to take a look at Andy Wingo's [http://wingolog.org/archives/2005/10/ statprof] profiler as a starting point. -- SkipMontanaro)
 * The development of the new [http://numeric.scipy.org/ NumPy] has led to good ideas for how to get a generic multidimensional array object into Python 2.6. Somebody willing to work with the !NumPy developers to take the essential portions of !NumPy and create a basearray (also called a dimarray) that could be included as a base-class multidimensional array object along with a general-purpose data-type object. This project has already been started but needs someone with time to help it along. See the [http://numeric.scipy.org/array_interface.html/ Array Interface] description page for an SVN check-out. This project has large impact potential for Python.
 * Improve Python threading performance, maybe remove Global Interpreter Lock (GIL). (Note that the chance of getting a remove-the-GIL patch into core Python is probably zero.)
   1. If you get stuck, ask for help instead of silently struggling. You can ask your mentor for help, or post a question to the development mailing list.
Line 43: Line 30:
== Python libraries ==    3. You will be expected to learn how to use SVN.
 
= Mentors: How to apply =
Line 45: Line 34:
 * Create a bunch of modules like what Squeak has for 3D modeling,
 events etc. (the exact list may be somewhat different, I haven't
 researched this in any depth). This is inspired by a recommendation
 from Alan Kay made at the Shuttleworth workshop.
 * Design and implement an interface for manipulating both [http://www.openoffice.org/product/calc.html Calc] and [http://www.gnome.org/projects/gnumeric/ Gnumeric] spreadsheets (in the same way that DB-API allows programs to interact with a variety of databases).
 * Write an IPC or RPC package to allow for concurrent Python execution. Compare with http://rpyc.sourceforge.net
 * Work on unit test suite. This includes not only developing support code (such as decorators to flag tests that are implementation-specific, known to fail, etc.), but also to have more code coverage in the unit tests.
 * Implement ctypes support for GCC ARM platforms. The underlying issue is lack of closure API support for ARM in libffi. A patch available at http://handhelds.org/~pb/arm-libffi.dpatch, that should be hopefully a good starting point. ctypes CVS has a libffi_arm_wince directory, which also seems to support closure API.
 * Improve Python Debugger(PDB).Some of general ideas are here: ["PdbImprovments"].If you have any sugesstions related to pdb add them there.
 * Create a Python web app server, synthesized from the many options already available, with an eye towards the total developer experience.
 * Integrate a Javascript interpreter with Python. [http://webcleaner.sourceforge.net/ WebCleaner] has some initial work; so extracting, documenting, and refining that code would be in order. The whole spec is probably too much, but you could focus on langauge support, or on "what typical web pages actually need".
 * Push-button web. A prototype system exists to manage HTML and ReST content in a relational database and publish it as static HTML. The wxPython GUI needs improvement and a more consistent substitution mechanism is required, together with better documentation and a supporting web content (which should be managed as a push-button web).
 * Implement [http://www.ieee802.org/1/pages/802.1x.html IEEE Std 802.1X] Authenticator for wired networks,with one of the low-level python networking libraries: [http://www.secdev.org/projects/scapy/ scapy],[http://twistedmatrix.comTwisted.Pair],[http://pycap.sourceforge.net/ pycap] or maybe something else.Probably some python firewall bindings will be needed too.
 * PyGame Projects
  * Implement CodingProjectIdeas/PygameOnCtypes
  * ./PygameGui
  * ./SimpleNetworkingForPygame
 * Data mining in Python (e.g., adding new widget for text mining or 3-D data visualization for Orange, [http://www.ailab.si/orange])
 * Add a wxPython/wax based object browser to the ipipe module which will be part of the next release of [http://ipython.scipy.org/ IPython].
 * Write an RPC mechanism, or prepare an existing RPC mechanism, for the standard library.
 * Implement a pure python library that handles unicode [http://www.unicode.org/cldr/ CLDR]. (like ICU?)
 * Implement the [http://www.unicode.org/reports/tr6/ SCSU] codec.
 * Add C implementation of decimal module.
 * Take an existing set of sources for M2Crypto and build a robust distribution from it. This should include comprehensive API documentation, a full test suite, and providing a better Python interface, not just a light wrapper around openssl, for many of the functions like X.509 certificates that are not currently exposed.
 * Implement [http://sage.scipy.org/sage/ SAGE], which is a Python-based free open source computer algebra system. SAGE is the algebraic analogue of [http://www.scipy.org scipy]---it incorporates and "glues together" a wide range of existing open-source mathematics packages such as Maxima, Matplotlib, and GAP. Here's a [http://sage.scipy.org/sage/projects list of projects] and an [mailto:wstein@gmail.com email contact].
 * Conduct a review of one chunk of functionality in [http://www.scipy.org scipy] similar to the one currently in progress about [http://projects.scipy.org/scipy/scipy/wiki/StatisticsReview the statistics package]. Alternatively, add a chunk of functionality to scipy. Recently discussed requests have been bindings to [http://www.llnl.gov/casc/sundials/ SUNDIALS], sparse matrices in [http://www.netlib.org/lapack/lug/node121.html LAPACK packed storage formats], 3-D Delaunay tetrahedralization and natural neighbour interpolation, and porting the [http://www.ncrg.aston.ac.uk/netlab/index.php Netlab] neural network code to scipy.
 * Write a library around pickle that allows developers to version their pickles such that old pickles can still be read even though the code that created them has been refactored, attributes renamed, and other such changes.
 * Add more plot types to the recently refactored [http://code.enthought.com/chaco/ Chaco] plotting library ([mailto:robert.kern@enthought.com contact]).
 * Make [http://code.enthought.com/traits/ Traits UI] available to Qt, Tk, or GTK applications ([mailto:robert.kern@enthought.com contact]).
 * Help make [http://ipython.scipy.org/ IPython's] capabilities available inside a wxPython application.
 * Use [http://www.cs.washington.edu/research/constraints/cassowary/ Cassowary] or some other constraint solving library to implement automatic, "nice" GUI layout.
 * Write general [http://pango.org/ Pango] bindings that can be used by Python libraries to do general text layout outside of PyGTK and pycairo.
 * Help merge the codebases of [http://matplotlib.sourceforge.net matplotlib] and [http://code.enthought.com/chaco/ Chaco] ([mailto:jdhunter@nitace.bsd.uchicago.edu contact], [mailto:robert.kern@enthought.com contact]).
 * Implement mathematical formula typesetting using TeX algorithms and TeX fonts but without needing a TeX installation.
 * [http://www.soya3d.org/wiki/Soya Soya3d] Projects
  * add multi-texture support (bump/normals mapping, etc)
  * verse support for shapes and materials
  * improved exporters/importers (blender, etc)
  * cal3d per-bone and morph animations
  * improved ode integration
  * api reference and improved examples/tutorials
 * Improve [http://yaml.org/ YAML] [http://pyyaml.org/ support in Python], e.g.,
  * make [http://pyyaml.org/wiki/PySyck Python support in Syck] (C extension) as complete as Ruby's
  * make [http://whytheluckystiff.net/syck/ Syck] support Unicode
  * contribute to [http://pyyaml.org/wiki/PyYAML PyYAML] (pure Python version)
 * Review and consolidate libraries/ modules for, e.g., file metadata reading and writing (MS Word doc, PDF, GIF, MP3/ ID3)
 * Chose some common modules and [http://peak.telecommunity.com/DevCenter/PythonEggs eggsify] them; write about it to promote more eggsification
The mentor's responsibility is to ensure the student makes progress. This could entail coaching them, providing motivation, making sure they aren't stuck, answering technical questions, or pointing the student to the proper resources.
Line 93: Line 36:
== python.org website, docs, tools == Mentors should expect to get a weekly status report from their students, and should badger students who are not communicating. The weekly status should be reported to the PSF SoC coordinator.
Line 95: Line 38:
 * Help improve the www.python.org web site production system (pyramid) and write documentation to prepare it for open source release.
 * Help move www.python.org towards dynamic content generation techniques.
 * Improve Buildbot for python use and/or in general.
  * Add a SQL backend to store build results
  * Implement per-test-case "Problem Tracking"
  * write more status display plugins, both web and IM
 * Several DocumentationTools exist for Python. Choose one and improve it. Choose two and combine their features. Choose four or more and take over the world. The Python documentation world, at least.
 * There are a lot of potential [http://docutils.sourceforge.net/ Docutils] and [http://docutils.sourceforge.net/rst.html reStructuredText] projects in the [http://docutils.sourceforge.net/docs/dev/todo.html To Do List]. Some examples (listed in the "Minimum Requirements..." section): Nested inline markup; Python Source Reader; Suitability for Python module documentation.
 * Create a source code analysis tool similar to that used to produce reports in [http://maven.apache.org/ Maven]. Perhaps integrate it with [http://projects.edgewall.com/trac Trac].
However, the mentor is not expected to do work for the student.
Line 105: Line 40:
== Applications in, of or with Python == Mentoring duties are expected to take a couple of hours per week.
Line 107: Line 42:
 * Write a new and useful application in Python.
 * Improve an existing Python application (e.g. [http://wiki.list.org/display/DEV/Summer+of+Code Mailman], BitTorrent, Zope). Some Python-based projects are SoC mentoring organizations in their own right, so you might end up being mentored by them, not the PSF. (You should probably contact a current developer on the project first, to ensure that your plans mesh with theirs. JimJJewett offers to help if you want to work on [http://www.plkr.org plucker], which lets you read web pages on a disconnected palm pilot.)
 * Add a web-based admin interface and/or user-oriented views to [http://www.third-bit.com/drproject DrProject], a lightweight project management portal intended for use in software engineering courses.
 * There are a number of potential TurboGears projects that may be interesting related to Kid, SQLAlchemy and TurboGears itself (like the FastData package).
 * A web-based offering through-the-web editing (with version control), execution, and testing of code (see ["/WebIDE"])
 * Create a full-featured WSGI app server (taking into account projects like [http://www.saddi.com/software/flup/ flup]) with special attention to things like resource usage and restarting after crashes, to make it suitable for commodity hosting environments ([mailto:ianb@colorstudy.com contact]).
 * A client side web browser. Grail is not currently maintained, and the others are almost entirely for automated or testing purposes, without a good interactive mode. But try to keep the scope reasonable, somehow. Perhaps hooking beautifulsoup or tidy to elementtree, urllib or urllib2, cookielib, and a text (or very basic) Tk front end? Do keep the DOM exposed, so that others can build on it more easily. Alternatively extracting an HTML 2 Tk widget from the grail project and them building more support of HTML 4 into in would be very useful.
 * [http://pyxides.stani.be/ PyxIDE] has several potential projects related to IDEs in Python. Real-time code analysis would be a good project (which could in turn be used to build auto-completion and other tools).
 * Improve the Eclipse IDE's support for Python: http://pydev.sf.net
 * Improved python code generation support in umbrello [http://uml.sourceforge.net/index.php] or alternatively a pure python implementation to parse umbrello files and generate python code.
 * Bring [http://www.enthought.com/enthought/wiki/MayaVi MayaVi 2's] feature set up to the level of [http://mayavi.sourceforge.net MayaVi 1.5] ([mailto:robert.kern@enthought.com contact]).
 * integrate Bayesian Filtering with MoinMoin. see: [http://gauss.ffii.org/BayesWiki full proposal]
  * isn't this better under the MoinMoin mentors? see below..
 * [http://pywinauto.pbwiki.com/ pywinauto]
   * Create tool to allow macro recording (possibly using pyAA or pyHook - or other tools).
   * Research how one pywinauto script can work on any number of (spoken) languages.
See [[http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors|Google's Advice for Mentors]]
Line 124: Line 44:
= Related sponsors = If you are interested in becoming a mentor:
Line 126: Line 46:
While not sponsors themselves, the PyPy and Jython projects have many SoC sized tasks available. For PyPy project has lots of SoC sized tasks. For PyPy, see [http://codespeak.net/pypy/dist/pypy/doc/independent-project-ideas.html] for some concrete suggestions.  * Add your name to the mentor list at [[SummerOfCode/Mentors]].
 * join the [[http://mail.python.org/mailman/listinfo/soc2007-mentors|soc2007-mentors mailing list]]
Line 128: Line 49:
Those interested in working in [http://www.djangoproject.com Django] may do so [http://code.djangoproject.com/wiki/SummerOfCode2006 under the auspices of the Django group].
Line 130: Line 50:
MoinMoin is also participating as their own organization, see [http://moinmoin.wikiwikiweb.de/GoogleSoc2006] for project ideas. == Project ideas ==
Line 132: Line 52:
[http://www.bbc.co.uk/rd/ BBC Research] is also a mentor organisation for python projects using the [http://kamaelia.sourceforge.net/Introduction.html Kamaelia] project for audio/video & multimedia/networking related projects, also for graphical construction of systems. Please see our [http://kamaelia.sourceforge.net/SummerOfCode2006.html Summer of Code] page for more details. (There's some discussion on edu-sig which coincides with some of aims BTW, so if you're interested in python for schools, talk to us, we can't guarantee anything but you'll understand why we're interested if you chat to us!) For 2007, the PSF would like to concentrate on proposals that
advance PSF projects (CPython and its documentation,
Jython and its documentation, the Python web site). That said, projects relating to other Python libraries, applications or implementations (PyPy) that are relevant to the promotion of the Python programming language are also encouraged.
Line 134: Line 56:
= Accepted proposals = The following pages list some ideas:
Line 136: Line 58:
Note: if a project is listed as having two mentors, the first mentor listed is the ''primary'' mentor, and the second one is the ''back-up'' mentor.  * [[CodingProjectIdeas/PythonCore]] -- ideas for the CPython interpreter.
 * [[CodingProjectIdeas/StandardLibrary]]
 * https://www.drproject.org/DrProject/wiki/DrProjectSoC2007 -- DrProject ideas
 * http://wiki.python.org/jython/SummerOfCode -- Jython projects.
 * http://codespeak.net/pypy/dist/pypy/doc/project-ideas.html -- Some ideas for PyPy
 * http://code.google.com/p/sympy/wiki/SummerOfCode -- Ideas for SymPy
 * http://code.google.com/p/pyjamas/wiki/SummerOfCode -- Idea for Pyjamas
 * [[http://docutils.sourceforge.net/docs/dev/todo.html|The Docutils to-do list]] contains a wealth of ideas. Important projects are prioritized. Subscribe to the [[https://lists.sourceforge.net/lists/listinfo/docutils-develop|docutils-develop]] list and ask for advice.
 * http://webpy.infogami.com/ideas -- ideas for web.py
 * http://pyblosxom.sourceforge.net/blog/static/soc2007.html -- ideas for PyBlosxom
 * http://code.google.com/p/crunchy/wiki/SummerOfCodeIdeas -- ideas for Crunchy (educational software).
 * http://www.pysoy.org/wiki/SoC2007 -- ideas for PySoy (3d engine)
See also [[SummerOfCode/Mentors]] where potential mentors have mentioned projects they are willing to mentor.
Line 138: Line 72:
 * None yet. == Other Organizations using Python ==

If you can't find a well-suited PSF project, but you still want to do something with Python for SOC 2007, you can also consider the projects offered by:

 * Bazaar (http://code.google.com/soc/bzr/about.html)
 * Django (http://code.google.com/soc/django/about.html)
 * Kamaelia, BBC Research (http://code.google.com/soc/bbc/about.html and http://kamaelia.sourceforge.net/SummerOfCode2007)
 * MoinMoin (see MoinMoin:GoogleSoc2007 )
 * Open Source Applications Foundation (http://code.google.com/soc/osaf/about.html)
 * Plone Foundation (http://code.google.com/soc/plone/about.html)
 * SCons (http://code.google.com/soc/scons/about.html and http://www.scons.org/wiki/GSoC2007)
 * Subversion (http://code.google.com/soc/svn/about.html)
 * The Space Telescope Science Institute (http://code.google.com/soc/stsci/about.html)
 * wxPython (http://code.google.com/soc/wxpython/about.html)
 * Zope Foundation (http://code.google.com/soc/zope/about.html)

All the mentoring organizations are listed here: http://code.google.com/soc/

== Previous years ==

 * [[SummerOfCode/2005]]
 * [[SummerOfCode/2006]]

This page coordinates the Google "Summer of Code" projects involving Python and mentored by the Python Software Foundation (PSF).

Based on previous years, we are expecting a lot of competition so when making your application it is important to note that the PSF is looking for projects that:

  • enhance an existing Python project rather than start something complete from scratch;
  • contribute to the Python community rather than are merely written in Python.

The 2007 PSF SoC coordinator is JamesTauber (jtauber at jtauber dot com). Contact him if you have any questions.

Students: How to submit a proposal

Student applications are now open.

Google's Advice for Students

Looking at the list of PSF SummerOfCode/Mentors can help you craft your proposal to match their interests.

Tips on participating

  1. Do not overbook yourself. Working on your project should be your main activity for the entire summer.
  2. You must provide weekly status reports.
  3. Participate in the developer community by joining python-dev, jython-dev, or whatever mailing list is appropriate.
  4. If you get stuck, ask for help instead of silently struggling. You can ask your mentor for help, or post a question to the development mailing list.
  5. You will be expected to learn how to use SVN.

Mentors: How to apply

The mentor's responsibility is to ensure the student makes progress. This could entail coaching them, providing motivation, making sure they aren't stuck, answering technical questions, or pointing the student to the proper resources.

Mentors should expect to get a weekly status report from their students, and should badger students who are not communicating. The weekly status should be reported to the PSF SoC coordinator.

However, the mentor is not expected to do work for the student.

Mentoring duties are expected to take a couple of hours per week.

See Google's Advice for Mentors

If you are interested in becoming a mentor:

Project ideas

For 2007, the PSF would like to concentrate on proposals that advance PSF projects (CPython and its documentation, Jython and its documentation, the Python web site). That said, projects relating to other Python libraries, applications or implementations (PyPy) that are relevant to the promotion of the Python programming language are also encouraged.

The following pages list some ideas:

See also SummerOfCode/Mentors where potential mentors have mentioned projects they are willing to mentor.

Other Organizations using Python

If you can't find a well-suited PSF project, but you still want to do something with Python for SOC 2007, you can also consider the projects offered by:

All the mentoring organizations are listed here: http://code.google.com/soc/

Previous years

SummerOfCode/2007 (last edited 2008-11-15 14:00:01 by localhost)

Unable to edit the page? See the FrontPage for instructions.