Differences between revisions 5 and 106 (spanning 101 versions)
Revision 5 as of 2005-06-29 08:02:33
Size: 10932
Comment: Remove withdrawn proposal
Revision 106 as of 2006-04-25 22:36:47
Size: 12204
Editor: vpn
Comment: More projects
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Python Implementation of the Data Access Protocol = These are the [http://code.google.com/soc/ Google "Summer of Code"] projects involving Python and mentored by the Python Software Foundation.
Line 3: Line 3:
(Roberto Antonio Ferreira De Almeida) For information on the accepted projects for 2005, see ["SummerOfCode/2005"].
Line 5: Line 5:
The Data Access Protocol (DAP) is a data transmission protocol
designed specifically for science data. The protocol relies on the
widely used HTTP and MIME standards, and provides data types to
accommodate gridded data, relational data, and time series, as well as
allowing users to define their own data types. The initiative is
funded by NASA, and counts with the support of several
institutions. Hundreds of scientific datasets are available on the
internet through DAP servers, which can be accessed remotely by DAP
clients in a transparent and efficient way. Here I propose to develop
a Python implementation of the protocol based on its latest
specification. The proposed implementation will consist of a client
module that will allow Python applications to access remote datasets,
as well as a server for data stored in a variety of formats commonly
used by the scientific community, including NetCDF and Matlab files.
= How to apply as a mentor =
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.
Line 20: Line 8:
Mentor: Paul DuBois. [http://code.google.com/soc/mentor_step1.html "Apply through Google's online form."]
Line 22: Line 10:
 * [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
Line 23: Line 15:
= Bitten: A Python framework for collecting software metrics from automated builds = = How to submit a proposal =
Line 25: Line 17:
(Christopher Lenz)
  mentors: gregwilson; trentm | = Bitten: A Python framework for collecting software metrics from automated builds = Today's auto
 * [http://code.google.com/soc/studentfaq.html Student FAQ]
Line 28: Line 19:
The goal of this work is to design and implementat of a distributed system for automated builds and continuous integration that allows the central collection and storage of software metrics generated during the build. The information collected this way needs to be structured and available in a machine-readable format, so that it can be analyzed, aggregated/correlated and presented after the build itself has completed. = Proposal ideas =
Line 30: Line 21:
Mentors: Greg Wilson, Trent Mick. The following ideas are just suggestions. You're free to invent your own ideas, or to use their suggestions as starting points.
Line 32: Line 23:
= A Program Visualization Tool =  * 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)
 * 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).
 * 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.
 * Help improve the www.python.org web site production system (pyramid) and write documentation to prepare it for open source release.
 * There are a number of potential TurboGears projects that may be interesting related to Kid, SQLAlchemy and TurboGears itself (like the FastData package).
 * Help move www.python.org towards dynamic content generation techniques.
 * Improve Buildbot for python use and/or in general.
 * Add regular code-coverage (both C and Python) to the build system (maybe even to Buildbot?)
 * The PyPy project has lots of SoC sized tasks. Ask on the pypy-dev mailing list.
 * Improve Jython
 * 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.)
 * 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.
 * A web-based IDE, offering through-the-web editing (with version control), execution, and testing of code.
 * 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".
 * 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.
 * [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).
 * 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.
 * 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).
 * 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.
 * Improve the Eclipse IDE's support for Python: http://pydev.sf.net
 * 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.com Twisted.Pair],[http://pycap.sourceforge.net/ pycap] or maybe something else.Probably some python firewall bindings will be needed too.
 * Implement CodingProjectIdeas/PygameOnCtypes
 * Data mining in Python (e.g., adding new widget for text mining or 3-D data visualization for Orange, [http://www.ailab.si/orange])
 * ./PygameGui
 * 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.
 * Provide more and better debugging of reference counting, garbage collection, and other memory issues for extension and embedding authors.
 * 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.
 * Enable I18N identifiers support for py3k.
 * 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.
 * 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.
 * ./SimpleNetworkingForPygame
 * 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)
 * 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.
 * 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.
 * 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]).
 * 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.
 * Implement mathematical formula typesetting using TeX algorithms and TeX fonts but without needing a TeX installation.
 * 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.
 * 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.
 * 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]).
Line 34: Line 82:
(Tero Kuusela) = Related sponsors =
Line 36: Line 84:
The goal is to write, in Python, a functional program visualization
tool that can visualize Python code. With the visualization tool, one
can write a program and see the execution visualized to help
understanding how the program works. This is especially useful to
assist students learning how to program.
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 42: Line 86:
Mentor: David Ascher. = Accepted proposals =
Line 44: Line 88:
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.
Line 45: Line 90:

= Object-Oriented File System Virtualisation =

(Adam Kerz)

Create an object oriented model of a file system in Python that can be used to interface many different resource types (with appropriate implementations).

Mentor: Trent Mick.

= Wax GUI for Python =

(Abhishek Reddy)


Wax requires work on four broad fronts. Firstly, support for several
basic controls need to be added, some of which are listed
above. Secondly, the design of the whole module has to be reviewed,
particularly focusing on the initialisation. Thirdly, there are
teething problems with passing data between Wax and wxPython that must
be looked at. Fourthly, documentation, presently lacking, needs to be
written.

Mentor: Hans Nowak

= PyTrails =

(Jennifer Dozar)

I'm working on an extensible opensource engine for implementing
trail-style games such as Oregon Trail or Amazon Trail. The primary
goal is to produce a quality edutainment title that can be used free
of cost. The secondary goal is to make it easy for other edutainment
trail games to be created. PyTrails will be Python based and uses
PyGame. The engine will allow following a branching map including
making stops to rest, hunt, or trade. Additional choices such as
shopping and fording rivers may be available at special points. Each
of these activities will be replacable in other trail games as to
allow for maximum flexibility.

Mentors: Cameron Laird, Andrew Kuchling

= mmpy -- A garbage collection tool kit in Python =

(Carl Friedrich Bolz)

The project aims at producing a framework for writing and
evaluating garbage collectors in Python. The interfaces to
the low level memory and to the object model will be general
enough to make it usable for a wide range of projects in
need for garbage collection as well as for teaching and
research purposes. It will be designed with flexibility and
modularity in mind to encourage component reuse. It aims a
being directly useful for the PyPy project and translatable
by its translation tools.


Mentors: Samuele Pedroni, Armin Rigo

= Efficiently Analysing Data Polymorphism and Deducing Generics in Shedskin =

(Mark Dufour)

As part of my Master's Thesis, I am working on a Python-to-C++ compilation system, called Shedskin. Currently, it performs static type inference based on two techniques. The Cartesian Product Algorithm is used to handle parametric polymorphism (calling functions with different combinations of argument types); single-level class duplication, or 1CFA, is employed to handle data polymorphism (mostly polymorphic containers, such as list; in 1CFA, each allocation site gets its own class type, so we can analyze these (somewhat) precisely.) Run-time checks such as 'isinstance' are considered during inference. Further, short tuples are analyzed internally, which of course is especially important in case of Python.

Based on the statically determined type information, the compiler currently performs stack- and static pre-allocation (using a simple escape analysis, and the static call graph respectively) and unboxing. Further, it generates polymorphic inline caches or virtual calls when a singleton type set cannot be deduced.
 
Single-level class duplication is imprecise, because it only duplicates class types once for each allocation site, and allocation sites may be duplicated during analysis (as CPA possibly creates many templates for each function.) Extending it to N levels, or NCFA, would make the analysis terribly exponential and still not precise for deep polymorphism. For the summer of code, my main goal will be to efficiently and precisely handle data polymorphism up to arbitrary depths. I am currently looking into an iterative technique developed by John Plevyak. (Tiejun & Wang's technique is incomprehensible, and I don't see how the method used in Starkiller would work.) My other large goal will be to generate generics of appreciable complexity, based on the inferred types, i.e. to determine whether types may be uniformly parameterized, and to generate class and function templates. Finally, I will integrate an existing C++ garbage collector into the run-time system in order to clean up objects that could not be stack- or statically pre-allocated.


Mentors: Jeremy Hylton, Brett Cannon

= Mailbox modification =

(Gregory K. Johnson)

I intend to rewrite the Python library's mailbox module to support
mailbox modification. I will extend the module's API (e.g., mailboxes
will sport dictionary-like mapping) and enhance certain existing
functionality (e.g., message objects will maintain
mailbox-format-specific attributes). Full backward compatibility will
be maintained.

Mentor: Andrew Kuchling

= Memory Profiler =

(Nick Smallbone)

I would like to apply to work over the summer on a Python memory
profiler, as listed at CodingProjectIdeas.

To see how much work is involved in this, I've put together a
prototype, which tries to enumerate all objects from a root,
calculating the size of each object it finds.

Mentors: Michael Hudson, Jeremy Hylton

= Python Bayesian Network Toolbox =

(Elliot Cohen)

Understanding about Bayesian Belief Networks and use of them is
becoming more and more widespread. As understanding develops and
spreads out of the research community, there is greater and greater
need for a simple to use efficient open source Bayesian Network
Toolbox. Bayesian Networks have been used to study a wide array of
different areas including, ecological systems, medical diagnoses and
financial modeling, among others. Currently, tools to define and use
Bayesian Networks are limited to expensive closed source libraries or
open source libraries designed for too specific a domain. One package
that does support many varieties of Bayesian Networks is Kevin
Murphy's Full BNT, which supports both discrete and continuous
probability distributions in static and dynamic Bayesian Networks.

Mentor: James Tauber

= asyncIO =

(Vladimir Sukhoy)

The proposed goal is to bring cross-platform proactive I/O
capabilities to Python. That will enable whole new style of
application development with Python in cases when I/O is a bottleneck.

Mentor: Mark Hammond


= Interactive Python Notebook =

(Toni Alatalo)

See <http://ipython.scipy.org/google_soc/ipnb_google_soc.pdf>.

Mentor: Fernando Perez

= Porting _sre.c and arraymodule.c to Python =

(Niklaus Haldimann)

I would like to create a port of the standard library modules "_sre" and "array" to pure Python. This will benefit alternative Python implementations like PyPy, Jython and IronPython. These projects all have to provide their own implementations of standard library modules written in C if they're not available in pure Python.

Mentors: Armin Rigo, Samuele Pedroni

= Python Profile Replacement Project =

(Floris Bruynooghe)

Idea from ProfileReplacementProject page.

The current profiler is not free according to the DFSG (Debian Free
Software Guidelines) and has been taken out of the main Debian
distribution (bug #293932, http://bugs.debian.org/293932). This
affects many users as the profiler is integrated into ipython for
example[1]. Patches for these programs to run without the profiler
have been incorporated, but this is only patchwork and ipython or one
lost previously standard functionality.

Mentors: Brett Cannon

= Wax =

(Jason Gedge)

This project consists of updating the Wax library for Python. Code
will be updated, or even added, to further develop the Wax
library. Also, a primary focus will be that of documentation, which
Wax currently lacks.

Mentors: Hans Nowak

= Data Serving/Collection Framework in Python/WSGI =

(Ho Chun Wei)

A framework based on bulk data serving/collection via the
internet. Bulk data are in the form of files that could easily be
several hundred MB (not surveys or simple POST data).

The client has a file repository that it wishes to sync to the server
(a WSGI application). This server should be able to facilitate
transfer via a number of protocols, including HTTP file transfer, HTTP
form upload, FTP, Email.

This project is aimed not at yet another ad-hoc file transfer or p2p
file-sharing program but as a persistent production setup for
transferring data from data collection sites/areas to a server,
possibly via internet through different methods to get through strict
organizational firewalls and web admins.

Mentors: Ian Bicking


= A Mathematica-like Notebook GUI for IPython =

(Tzanko Matev)

I propose to write a GUI for IPython resembling the
interfaces of the computer algebra applications Mathematica
and Maple.

Mentor: Fernando Perez
 * None yet.

These are the [http://code.google.com/soc/ Google "Summer of Code"] projects involving Python and mentored by the Python Software Foundation.

For information on the accepted projects for 2005, see ["SummerOfCode/2005"].

How to apply as a mentor

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.

[http://code.google.com/soc/mentor_step1.html "Apply through Google's online form."]

How to submit a proposal

Proposal ideas

The following ideas are just suggestions. You're free to invent your own ideas, or to use their suggestions as starting points.

  • 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)
  • 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).

  • 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.

  • Help improve the www.python.org web site production system (pyramid) and write documentation to prepare it for open source release.
  • There are a number of potential TurboGears projects that may be interesting related to Kid, SQLAlchemy and TurboGears itself (like the FastData package).

  • Help move www.python.org towards dynamic content generation techniques.
  • Improve Buildbot for python use and/or in general.
  • Add regular code-coverage (both C and Python) to the build system (maybe even to Buildbot?)
  • The PyPy project has lots of SoC sized tasks. Ask on the pypy-dev mailing list.

  • Improve Jython
  • 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.)

  • 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.
  • A web-based IDE, offering through-the-web editing (with version control), execution, and testing of code.
  • 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".

  • 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.
  • [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).

  • 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.

  • 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).
  • 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.

  • Improve the Eclipse IDE's support for Python: http://pydev.sf.net

  • 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.com Twisted.Pair],[http://pycap.sourceforge.net/ pycap] or maybe something else.Probably some python firewall bindings will be needed too.

  • Implement CodingProjectIdeas/PygameOnCtypes

  • Data mining in Python (e.g., adding new widget for text mining or 3-D data visualization for Orange, [http://www.ailab.si/orange])

  • ./PygameGui

  • 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.

  • Provide more and better debugging of reference counting, garbage collection, and other memory issues for extension and embedding authors.
  • 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.
  • Enable I18N identifiers support for py3k.
  • 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.
  • 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.
  • ./SimpleNetworkingForPygame

  • 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)

  • 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.

  • 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.

  • 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]).

  • 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.
  • Implement mathematical formula typesetting using TeX algorithms and TeX fonts but without needing a TeX installation.
  • 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.

  • 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.

  • 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]).

Related sponsors

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].

Accepted proposals

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.

  • None yet.

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

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