Differences between revisions 1 and 178 (spanning 177 versions)
Revision 1 as of 2005-06-27 06:59:05
Size: 9185
Comment:
Revision 178 as of 2006-05-25 22:02:12
Size: 20093
Editor: 209
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Python Implementation of the Data Access Protocol =

(Roberto Antonio Ferreira De Almeida)

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.

Mentor: Paul DuBois.


= Interactive Comments & Annotation for the Python Standard Reference =

(Brian Beck)

A flexible system for comments and annotation on web pages, geared towards
the Python standard reference, using Ajax on the client-side and Python on
the server-side.

Mentors: Ian Bicking, Andrew Kuchling

= Bitten: A Python framework for collecting software metrics from automated builds =

(Christopher Lenz)
  mentors: gregwilson; trentm | = Bitten: A Python framework for collecting software metrics from automated builds = Today's auto

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.

Mentors: Greg Wilson, Trent Mick.

= A Program Visualization Tool =

(Tero Kuusela)

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.

Mentor: David Ascher.



= 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

= Python to C++ translator =

(Mark Dufour)

As part of my Master's Thesis, I am working on a
Python-to-C++ compilation system.

Mentors: Jeremy Hylton, Brett Cannon

= Mailbox modification =

(Gregory K. Johnson)

I propose to rewrite the Python library's mailbox module to support
mailbox modification. I would extend the module's API (e.g., mailboxes
would sport dictionary-like mapping) and enhance certain existing
functionality (e.g., message objects would maintain
mailbox-format-specific attributes). Full backward compatibility would
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
This page is about the [http://code.google.com/soc/ Google "Summer of Code"] projects involving Python and mentored by the Python Software Foundation (PSF).

Discussion about any Python-related SoC topic should take place on
[http://mail.python.org/mailman/listinfo/soc2006 the soc2006 mailing list].

For information on last year's accepted projects, see ["SummerOfCode/2005"].

= Improving the Python debugger =

Student: Matthew J Fleming

Mentor: Robert L. Bernstein

Many people have voiced their concern that the Python debugger could be improved in a number of ways. This project aims to incorporate these suggestions into an improved version of Pdb.

= Base multidimensional array type for Python core =

Student: KarolLangner

Mentor: Travis E. Oliphant

The goal is to prepare a simple, generic multidimensional array interface that can be readily placed in the Python core as a new built-in base type (called, for instance, 'dimarray'), and possibly included in a future Python distribution (maybe 2.6?). This new base type will have the same C-structure as the current array implementation in numpy and will be based on a interface recently formulated by Travis Oliphant within a Python Enhancement Proposal (http://svn.scipy.org/svn/PEP/). After preparing a 'ready to insert' version of the array interface, it will be applied to numpy and several other packages that work with multidimensional data, and possibly modified in order to work out an optimal scope.

= Logging Usage in the Standard Library (PEP 337) =

Student: Jackilyn Hoxworth

Mentor: James Joseph Jewett

Implement PEP 337, possibly updating the PEP to take account of any new issues that arise.

= Decimal module in C. =

Student: Mateusz Rukowicz

Mentor: Facundo Batista

Adding C implementation of decimal module, which eventually would replace current implementation, with no side effects to applications using this module.


= Rewrite of the zipfile module. =

Student: Nilton Volpato

Mentor: Ilya Etingof

The project is to write a new and updated version of the
zipfile module for dealing with ZIP files with much more features that
are not supported by zipfile module currently.

These changes are intended to overcome the current limitations of the module, and include, but are not limited to:
 * Add support for bzip2 (de)compression
 * Add support for removing files stored in zip files
 * Add file-like object API to ZIP archive members
 * Add support for the traditional PKWARE encryption


= Ajax in python based on PyPy's JavaScript backend =

Student: Maciej Fijalkowski

Mentor: Eric van Riet Paap

The main target of the project is to produce a framework which
takes advantage of PyPy's JavaScript backend and to make it
easy to write an AJAX based framework written entirely in Python.

The aim is to produce a framework which allows Python applications
to be translated into an AJAX based application split into
a client part (JavaScript running on browser) and a server part
(python running on web server). Communication between client and server
is translated from Python method calls into JSON request and response.


= Complete gencli, the PyPy CLI backend =

Student: Antonio Cuni

Mentor: Armin Rigo

gencli is the PyPy backend targeting the Common Language
Infrastructure (CLI) virtual machine, i.e. .NET.

Once gencli will be complete it will be possible to translate the
Standard Interpreter in order to produce a .NET executable of the
Python interpreter (we could call it PyPy.NET).

The result will be in some way similar to the existing IronPython,
with the difference that IronPython is a compiler (though most of the
job is done by the runtime environment), while PyPy.NET will be an
interpreter.


= PyPy Proposal - Write and port modules from CPython with ctypes =

Student: Lawrence Oluyede

Mentor: Christian Tismer

I'd like to make PyPy ready for encrypted communications adding SSL support in the
ongoing and in-development socket module. The other modules I'll port are: bz2,
fcntl, mmap and time (very fundamental).
If there's time I'd like to start working on 'os' and 'select' modules also.


= SciPy Vector Machine support =

Student: Albert Strasheim

Mentor: David Kammeyer

= Neural Nets in SciPy =

Student: Frederic Mailhot

Mentor: Robert Kern

The goal of this project is to extend SciPy's functionality by adding modules for the design, training and use of a variety of neural network architectures, including standard feedforward and recurrent networks, among others. As a guide I intend to work from the modules in Matlab's Netlab toolkit, as well as from my own experience implementing recurrent networks.

= Enhancements to mathtext (part of matplotlib) - a Python package for typesetting =

Student: Edin Salkovic

Mentor: John D Hunter

After a discussion at the scipy user list, and the comments of the possible
mentor (John Hunter, creator/maintainer of matplotlib), I decided to work
on improving mathtext, which is part of matplotlib. So, for this summer of
code I could work on the following (roughly in order of importance/realization):

 * replace the existing bakoma truetype fonts with a set of good,
 comprehensive, math fonts, eg, STIX (http://www.stixfonts.org/).
 The STIX fonts should be available by the begining of June. Also,
 the code should be refactored so that unicode names for symbols can
 be used. This will allow plugging in any font that supports unicode
 (STIX fonts already support unicode). Currently mathtext hardcodea
 the mapping from TeX symbol name to a (font_file, glyph_index) tuple,
 which ties mathtext to a given set of fonts (eg, the Bakoma fonts).

 * incorporate some of Knuth's layout algorithms into the mathtext
 layout engine.

 * refactor mathtext into a stand-alone module


 * add support for kerning - the current bakoma fonts do not have kerning
 info in them.

 * improve the parser to handle more TeX

 * add support for fractions (\frac), arrays etc.

I plan to continue the work on mathtext after SoC.

= Soya3D Collision API : Improving ODE integration in the core =

Student: David Pierre-Yves

Mentor: Lamy

Soya lacks some very useful tools such as a
collision API or a properly integrated physics engine.

I am applying to Summer of Code 2006 in order to fix these deficiencies by
improving support for the Open Dynamics Engine (ode.org), which is barely working and too low-level in the last release of Soya, and provide a similar collision detection system to
all objects whether ODE is in use or not.

= Soya3D exporting/importing tools for Blender =

Student: Palle Raabjerg

Mentor: Buddha Michael Dylan Buck

Currently, no Soya3D importers exist for Blender. This means you cannot import any Soya3D or Cal3D models into Blender. This can be inconvenient for both the game developer, as he needs to publish the .blend files to allow people to modify models, and for a gamer community surrounding a project, as they can't modify models unless the developer publishes the .blend files. (Note: This might be a perfectly okay and even preferable situation for some proprietary game developers, but Soya3D is built on a philosophy of openness and freedom, making this a more important feature.)

The Soya3D exporter tools basically consists of the blender2soya and blender2cal3d scripts. blender2soya is currently used for static (non-animated) models, and blender2cal3d is used for exporting animated skeletal models to the Cal3D format, which can also be used with Soya.
These two scripts lack many features, however, and still contain known flaws.

If I am assigned to this project, I will create Soya3D and Cal3D importers for Blender, and I will work on both exporter scripts

= Pygame on ctypes =

Student: Alex Holkner

Mentor: Richard Jones

My project proposal is to rewrite Pygame to use ctypes. The current implementation is written as a C module that links to SDL. The proposed addition of ctypes to Python 2.5 is a great catalyst for using it to wrap SDL and reimplementing Pygame in pure Python. This would allow developers to extend Pygame with much more ease than is currently possible, and to make use of SDL features not exported by Pygame, and to give PyPy development another library.

= SQLAlchemy Schema Migration =

Student: Evan Pierce Rosson

Mentor: Jonathan La``Cour

SQLAlchemy is an excellent object-relational database mapper for Python projects. Currently, it does a fine job of creating a database from scratch, but provides no tool to assist the user in modifying an existing database. This project aims to provide such a tool.

= Drop-in WSGI support for Commodity Hosting =

Student: Jonathan Rosebaugh

Mentor: Benjamin C. Bangert

Tentative Pythonesque Project Name: Holy Grail

[http://www.inklesspen.com/trac/grail/ Project Trac]

I intend to take advantage of existing developments in WSGI such as Paste, flup, and various WSGI-compatible frameworks in order to develop a simple drop-in method for hosting WSGI webapps in commodity hosting.

Project Goals in rough order of priority

  * WSGI Admin Panel - A self-contained WSGI app which allows the user to attach various WSGI apps to different urls. At its most basic it will be a simple wrapper around paste.urlmap, but it will be able to handle more complex situations, involving such things as paste.cascade, paste.urlparser, various middleware, and other complex situations. When I can use PasteDeploy I will, but there will have to be support for manual importing of apps from modules.
  * FastCGI made easy - flup has taken us most of the way, but it needs to be friendlier. Some hosting providers want the FastCGI process to be running on a specified port; some providers want the web server to spawn it. Either option should be easy to do, with robust process management to make sure the FastCGI process stays up.
  * Ease of installation for webhosts - Ideally, a commodity webhost should be able to provide this package for their customers; just click a button in the signup and the WSGI admin panel is deployed to the user's account, creating an isolated user environment using workingenv and setuptools.
  * Ease of installation by end users - However, until this has widespread support by webhosts, the user needs a quick and simple install process. We'll have a simple installer--command line for those who have shell access, python cgi, and maybe even a php-based installer--that lets the user set up their WSGI package using workingenv and setuptools.


= PyDev - Python for Eclipse =

Student: [http://www.seanhandley.com Sean Handley]

Mentor: [http://www.blogger.com/profile/4798968 Fabio Zadrozny]

Project Blog: http://www.planet-soc.com/?q=blog/114

My objectives for PyDev are to implement as many of the most popular requested features as I can, bringing the power of Python development in Eclipse up to the same standards as Java. Specifically, I will be adding new features to the debugger and code editor.



= Coder: An extensible web-based programming tutor =

Student: Johannes Woolard

Mentor: André Roberge

I propose a system that serves web-pages locally over the loopback address – this could maybe be extended later to work remotely if “restricted python” is revived.

Tutorials are really the most important part of this application: not only must they be simple to create, they must also be fun for the students. I am proposing a system whereby tutorials are encapsulated in XML and contain not only the raw tutorial (which will be pretty-printed to XHTML using XSLT, which in turn could be personalised with CSS), but also unit tests written in python that must be satisfied for the student to advance to the next stage. I will base my work on Andre Roberge's Crunchy Frog.

= Improving Mailman's User Experience =

Student: Ethan Fremen

Mentor: Barry Warsaw

I propose to port Mailman's web interface to one implemented with Kid in order to improve the UI and enable better handling of i18n.


= Shed Skin project =

Student: Zheng Siyao

Mentor: Mark Dufour

I will extend the Shed Skin compiler, so that memory management of
generated code and hence performance is improved.




= YAML parser and emitter =

Student: Kyrylo Simonov

Mentor: Clark C. Evans

Homepage: http://pyyaml.org/wiki/LibYAML

Timeline: http://pyyaml.org/timeline

I have developed a pure Python YAML parser, which is, as for now, the
only existing YAML parser that fully adheres the current YAML 1.1
specification. I would like to apply to the Google Summer of Code
program in order to continue my work on implementing a YAML parser and
emitter.

My proposal is to write a C library for processing YAML and Python
bindings to it. While existing PyYAML parser is stable and robust,
being a pure Python code, it is slow and not suitable for processing
large amounts of data. Additionally, having a C library will allow
bindings for other languages as well, which will increase
compatibility between various implementations and serve the goal of
YAML: to be a language-independent format for serializing data.

I also plan to progress on another YAML-related project: Writing a
reference YAML parser and emitter, alternative grammar rules for YAML
that matches the way the parser works and a set of guidelines for
parser writers. The language of implementation of the reference
parser should be Python without using its advanced language-specific
features. This will ensure that a proficient programmer can write a
YAML parser and emitter in her language of choice and will greatly
increase the adoption of YAML. I do not expect to complete the
reference parser during the period of SoC though.



= Web-based administration interface for DrProject =

Student: Gregory Lapouchnian

Mentor: Greg Wilson

Currently the administration of a DrProject installation has to be done
through a command line script. This works well in certain situations
where a professor is able (or willing) to write scripts to make use
DrProject's API in order to execute batch operations. However a
web-based administration interface would greatly simplify course
management by providing a central location for common tasks such as
removing a student from a course or moving them from one project to
another. A web-based console will also make it possible to present to
the instructors some general statistics for the groups and students in
their course in a convenient format.

= Cheesecake enhancements and its integration with PyPI. =

''Student'': [http://joker.linuxstuff.pl/ Michał Kwiatkowski]

''Mentor'': [http://agiletesting.blogspot.com Grig Gheorghiu]

''Project timeline and ideas'': [http://pycheesecake.org/wiki/SummerOfCode06 Cheesecake] - feel free to add your comments about the project there!

[http://pycheesecake.org Cheesecake] is an application designed to evaluate and estimate the overall quality (or so called 'kwalitee') of a given software package written in Python. It emphasizes a need for well-written documentation and unit tests, encouraging good programming practices and penalizing sloppy design and careless distribution. Using Cheesecake to check your code gives you confidence that your software doesn't merely run, but is usable and easy to test and modify as well.

Because Python is very easy to learn and use there exists a vast variety of software written in it, most of which was scattered until [http://python.org/pypi PyPI] was created. Now, when new packages are being indexed on Cheese Shop every day, an effort can be made to spread the spirit of good software design and code reuse among the Python community. This can be achieved by combining the power of Cheesecake and Cheese Shop. Everytime a new version of a package would be uploaded to Cheese Shop, its cheesecake index will be calculated and published on web. Having a way to measure a quality of a package with accordance to other existing packages will be of invaluable help for all developers. It will promote well built packages and in the long run raise the overall quality of Python software.

Adding Cheesecake functionality to PyPI has been already [http://mail.python.org/pipermail/catalog-sig/2006-April/000825.html mentioned] by Phillip J. Eby on the catalog-sig mailing list. Together with Cheesecake maintainer Grig Gheorghiu we've discussed modifications needed to be done to Cheesecake code to be reliable enough so it could be incorporated into PyPI service. A [http://pycheesecake.org/wiki/SummerOfCode06 working copy of our ideas] is accessible on the project wiki. It includes enhancing Cheesecake code scoring techniques to take into account unit tests of a package, running tests in secure environment, extending supported archive formats and fixing all known bugs. Development of Cheesecake will adhere to best practices such as unit testing, continuous integration (via buildbot), pylint verification, etc.

The next part of this project will include collaboration with Richard Jones, PyPI maintainer, and merging Cheesecake into PyPI service. Upon completion all PyPI uploads will be automatically scored by Cheesecake. It will be possible to browse packages archive by cheesecake index, sorting results by installability, documentation and code kwalitee index. Statistics in numeric and graphical form will also be made available. This part of a project will involve writing server-side code, with emphasis on security and robustness.

The remaining time will be spent on resolving all problems that would occur during usage of Cheesecake and PyPI. Along with fixing bugs, I will develop a simple Hello world package that can be taken as an example of good development practices for all Python developers. It should also score 100% in the Cheesecake test of course. ;-) It will be what [http://savannah.gnu.org/projects/hello/ hello] is for GNU Project.


= PyCells: Port of CLOS Cells extension =

Student: Ryan Forsythe

Mentor: James Tauber

Summary: Python port of Kenny Tilton's Cells extension to CLOS

Cells is a framework which, rather than defining a class as a set of
methods and attributes, instead defines it as a set of interdependent
slots, each of whose values are determined by formulas. It is
analogous to a spreadsheet. While it is similar to Python's idea of
properties, elements of a class which act like values but which are
generated by a method, cells build in an automemoization function so
their results are recalculated only when needed. My task for Summer of
Code would be to build a package which implemented Cells in Python,
built regression testing for the package, and translate CLOS Cell's
demo applications into PyCell.

= Python interface for writing Mozilla (NPAPI) plugins =

Student: [http://zygfryd.voidfx.net/ Marcin Pertek]

Mentor: Mark Hammond

Writing plugins with the NPAPI requires using the cumbersome and error-prone C or C++. I propose a thin binding of the interface to Python, by the means of a plugin embedding a Python interpreter and exposing inside it the NPAPI. It does not imply executing Python code from webpages, simply a way to write plugins in Python instead of C.

In addition to ease the creation of plugins, I would make bindings to readily enable the use of wxPython, PyGTK, PyGame and Soya3D. These bindings would enable those libraries to handle the in-browser window and associated events.

= Support Vector Machines for SciPy =

Student: [http://students.ee.sun.ac.za/~albert/ Albert Strasheim]

Mentor: Dave Kammeyer

Integrating libsvm (and possibly other SVM libraries) with [http://www.scipy.org/ SciPy] using ctypes and providing various tools for manipulating datasets for use with SVMs.

[http://students.ee.sun.ac.za/~albert/pylibsvm/ Project homepage]

This page is about the [http://code.google.com/soc/ Google "Summer of Code"] projects involving Python and mentored by the Python Software Foundation (PSF).

Discussion about any Python-related SoC topic should take place on [http://mail.python.org/mailman/listinfo/soc2006 the soc2006 mailing list].

For information on last year's accepted projects, see ["SummerOfCode/2005"].

Improving the Python debugger

Student: Matthew J Fleming

Mentor: Robert L. Bernstein

Many people have voiced their concern that the Python debugger could be improved in a number of ways. This project aims to incorporate these suggestions into an improved version of Pdb.

Base multidimensional array type for Python core

Student: KarolLangner

Mentor: Travis E. Oliphant

The goal is to prepare a simple, generic multidimensional array interface that can be readily placed in the Python core as a new built-in base type (called, for instance, 'dimarray'), and possibly included in a future Python distribution (maybe 2.6?). This new base type will have the same C-structure as the current array implementation in numpy and will be based on a interface recently formulated by Travis Oliphant within a Python Enhancement Proposal (http://svn.scipy.org/svn/PEP/). After preparing a 'ready to insert' version of the array interface, it will be applied to numpy and several other packages that work with multidimensional data, and possibly modified in order to work out an optimal scope.

Logging Usage in the Standard Library (PEP 337)

Student: Jackilyn Hoxworth

Mentor: James Joseph Jewett

Implement PEP 337, possibly updating the PEP to take account of any new issues that arise.

Decimal module in C.

Student: Mateusz Rukowicz

Mentor: Facundo Batista

Adding C implementation of decimal module, which eventually would replace current implementation, with no side effects to applications using this module.

Rewrite of the zipfile module.

Student: Nilton Volpato

Mentor: Ilya Etingof

The project is to write a new and updated version of the zipfile module for dealing with ZIP files with much more features that are not supported by zipfile module currently.

These changes are intended to overcome the current limitations of the module, and include, but are not limited to:

  • Add support for bzip2 (de)compression
  • Add support for removing files stored in zip files
  • Add file-like object API to ZIP archive members
  • Add support for the traditional PKWARE encryption

Ajax in python based on PyPy's JavaScript backend

Student: Maciej Fijalkowski

Mentor: Eric van Riet Paap

The main target of the project is to produce a framework which takes advantage of PyPy's JavaScript backend and to make it easy to write an AJAX based framework written entirely in Python.

The aim is to produce a framework which allows Python applications to be translated into an AJAX based application split into a client part (JavaScript running on browser) and a server part (python running on web server). Communication between client and server is translated from Python method calls into JSON request and response.

Complete gencli, the PyPy CLI backend

Student: Antonio Cuni

Mentor: Armin Rigo

gencli is the PyPy backend targeting the Common Language Infrastructure (CLI) virtual machine, i.e. .NET.

Once gencli will be complete it will be possible to translate the Standard Interpreter in order to produce a .NET executable of the Python interpreter (we could call it PyPy.NET).

The result will be in some way similar to the existing IronPython, with the difference that IronPython is a compiler (though most of the job is done by the runtime environment), while PyPy.NET will be an interpreter.

PyPy Proposal - Write and port modules from CPython with ctypes

Student: Lawrence Oluyede

Mentor: Christian Tismer

I'd like to make PyPy ready for encrypted communications adding SSL support in the ongoing and in-development socket module. The other modules I'll port are: bz2, fcntl, mmap and time (very fundamental). If there's time I'd like to start working on 'os' and 'select' modules also.

SciPy Vector Machine support

Student: Albert Strasheim

Mentor: David Kammeyer

Neural Nets in SciPy

Student: Frederic Mailhot

Mentor: Robert Kern

The goal of this project is to extend SciPy's functionality by adding modules for the design, training and use of a variety of neural network architectures, including standard feedforward and recurrent networks, among others. As a guide I intend to work from the modules in Matlab's Netlab toolkit, as well as from my own experience implementing recurrent networks.

Enhancements to mathtext (part of matplotlib) - a Python package for typesetting

Student: Edin Salkovic

Mentor: John D Hunter

After a discussion at the scipy user list, and the comments of the possible mentor (John Hunter, creator/maintainer of matplotlib), I decided to work on improving mathtext, which is part of matplotlib. So, for this summer of code I could work on the following (roughly in order of importance/realization):

  • replace the existing bakoma truetype fonts with a set of good,

    comprehensive, math fonts, eg, STIX (http://www.stixfonts.org/). The STIX fonts should be available by the begining of June. Also, the code should be refactored so that unicode names for symbols can be used. This will allow plugging in any font that supports unicode (STIX fonts already support unicode). Currently mathtext hardcodea the mapping from TeX symbol name to a (font_file, glyph_index) tuple, which ties mathtext to a given set of fonts (eg, the Bakoma fonts).

  • incorporate some of Knuth's layout algorithms into the mathtext layout engine.
  • refactor mathtext into a stand-alone module
  • add support for kerning - the current bakoma fonts do not have kerning info in them.
  • improve the parser to handle more TeX
  • add support for fractions (\frac), arrays etc.

I plan to continue the work on mathtext after SoC.

Soya3D Collision API : Improving ODE integration in the core

Student: David Pierre-Yves

Mentor: Lamy

Soya lacks some very useful tools such as a collision API or a properly integrated physics engine.

I am applying to Summer of Code 2006 in order to fix these deficiencies by improving support for the Open Dynamics Engine (ode.org), which is barely working and too low-level in the last release of Soya, and provide a similar collision detection system to all objects whether ODE is in use or not.

Soya3D exporting/importing tools for Blender

Student: Palle Raabjerg

Mentor: Buddha Michael Dylan Buck

Currently, no Soya3D importers exist for Blender. This means you cannot import any Soya3D or Cal3D models into Blender. This can be inconvenient for both the game developer, as he needs to publish the .blend files to allow people to modify models, and for a gamer community surrounding a project, as they can't modify models unless the developer publishes the .blend files. (Note: This might be a perfectly okay and even preferable situation for some proprietary game developers, but Soya3D is built on a philosophy of openness and freedom, making this a more important feature.)

The Soya3D exporter tools basically consists of the blender2soya and blender2cal3d scripts. blender2soya is currently used for static (non-animated) models, and blender2cal3d is used for exporting animated skeletal models to the Cal3D format, which can also be used with Soya. These two scripts lack many features, however, and still contain known flaws.

If I am assigned to this project, I will create Soya3D and Cal3D importers for Blender, and I will work on both exporter scripts

Pygame on ctypes

Student: Alex Holkner

Mentor: Richard Jones

My project proposal is to rewrite Pygame to use ctypes. The current implementation is written as a C module that links to SDL. The proposed addition of ctypes to Python 2.5 is a great catalyst for using it to wrap SDL and reimplementing Pygame in pure Python. This would allow developers to extend Pygame with much more ease than is currently possible, and to make use of SDL features not exported by Pygame, and to give PyPy development another library.

SQLAlchemy Schema Migration

Student: Evan Pierce Rosson

Mentor: Jonathan LaCour

SQLAlchemy is an excellent object-relational database mapper for Python projects. Currently, it does a fine job of creating a database from scratch, but provides no tool to assist the user in modifying an existing database. This project aims to provide such a tool.

Drop-in WSGI support for Commodity Hosting

Student: Jonathan Rosebaugh

Mentor: Benjamin C. Bangert

Tentative Pythonesque Project Name: Holy Grail

[http://www.inklesspen.com/trac/grail/ Project Trac]

I intend to take advantage of existing developments in WSGI such as Paste, flup, and various WSGI-compatible frameworks in order to develop a simple drop-in method for hosting WSGI webapps in commodity hosting.

Project Goals in rough order of priority

  • WSGI Admin Panel - A self-contained WSGI app which allows the user to attach various WSGI apps to different urls. At its most basic it will be a simple wrapper around paste.urlmap, but it will be able to handle more complex situations, involving such things as paste.cascade, paste.urlparser, various middleware, and other complex situations. When I can use PasteDeploy I will, but there will have to be support for manual importing of apps from modules.

  • FastCGI made easy - flup has taken us most of the way, but it needs to be friendlier. Some hosting providers want the FastCGI process to be running on a specified port; some providers want the web server to spawn it. Either option should be easy to do, with robust process management to make sure the FastCGI process stays up.
  • Ease of installation for webhosts - Ideally, a commodity webhost should be able to provide this package for their customers; just click a button in the signup and the WSGI admin panel is deployed to the user's account, creating an isolated user environment using workingenv and setuptools.
  • Ease of installation by end users - However, until this has widespread support by webhosts, the user needs a quick and simple install process. We'll have a simple installer--command line for those who have shell access, python cgi, and maybe even a php-based installer--that lets the user set up their WSGI package using workingenv and setuptools.

PyDev - Python for Eclipse

Student: [http://www.seanhandley.com Sean Handley]

Mentor: [http://www.blogger.com/profile/4798968 Fabio Zadrozny]

Project Blog: http://www.planet-soc.com/?q=blog/114

My objectives for PyDev are to implement as many of the most popular requested features as I can, bringing the power of Python development in Eclipse up to the same standards as Java. Specifically, I will be adding new features to the debugger and code editor.

Coder: An extensible web-based programming tutor

Student: Johannes Woolard

Mentor: André Roberge

I propose a system that serves web-pages locally over the loopback address – this could maybe be extended later to work remotely if “restricted python” is revived.

Tutorials are really the most important part of this application: not only must they be simple to create, they must also be fun for the students. I am proposing a system whereby tutorials are encapsulated in XML and contain not only the raw tutorial (which will be pretty-printed to XHTML using XSLT, which in turn could be personalised with CSS), but also unit tests written in python that must be satisfied for the student to advance to the next stage. I will base my work on Andre Roberge's Crunchy Frog.

Improving Mailman's User Experience

Student: Ethan Fremen

Mentor: Barry Warsaw

I propose to port Mailman's web interface to one implemented with Kid in order to improve the UI and enable better handling of i18n.

Shed Skin project

Student: Zheng Siyao

Mentor: Mark Dufour

I will extend the Shed Skin compiler, so that memory management of generated code and hence performance is improved.

YAML parser and emitter

Student: Kyrylo Simonov

Mentor: Clark C. Evans

Homepage: http://pyyaml.org/wiki/LibYAML

Timeline: http://pyyaml.org/timeline

I have developed a pure Python YAML parser, which is, as for now, the only existing YAML parser that fully adheres the current YAML 1.1 specification. I would like to apply to the Google Summer of Code program in order to continue my work on implementing a YAML parser and emitter.

My proposal is to write a C library for processing YAML and Python bindings to it. While existing PyYAML parser is stable and robust, being a pure Python code, it is slow and not suitable for processing large amounts of data. Additionally, having a C library will allow bindings for other languages as well, which will increase compatibility between various implementations and serve the goal of YAML: to be a language-independent format for serializing data.

I also plan to progress on another YAML-related project: Writing a reference YAML parser and emitter, alternative grammar rules for YAML that matches the way the parser works and a set of guidelines for parser writers. The language of implementation of the reference parser should be Python without using its advanced language-specific features. This will ensure that a proficient programmer can write a YAML parser and emitter in her language of choice and will greatly increase the adoption of YAML. I do not expect to complete the reference parser during the period of SoC though.

Web-based administration interface for DrProject

Student: Gregory Lapouchnian

Mentor: Greg Wilson

Currently the administration of a DrProject installation has to be done through a command line script. This works well in certain situations where a professor is able (or willing) to write scripts to make use DrProject's API in order to execute batch operations. However a web-based administration interface would greatly simplify course management by providing a central location for common tasks such as removing a student from a course or moving them from one project to another. A web-based console will also make it possible to present to the instructors some general statistics for the groups and students in their course in a convenient format.

Cheesecake enhancements and its integration with PyPI.

Student: [http://joker.linuxstuff.pl/ Michał Kwiatkowski]

Mentor: [http://agiletesting.blogspot.com Grig Gheorghiu]

Project timeline and ideas: [http://pycheesecake.org/wiki/SummerOfCode06 Cheesecake] - feel free to add your comments about the project there!

[http://pycheesecake.org Cheesecake] is an application designed to evaluate and estimate the overall quality (or so called 'kwalitee') of a given software package written in Python. It emphasizes a need for well-written documentation and unit tests, encouraging good programming practices and penalizing sloppy design and careless distribution. Using Cheesecake to check your code gives you confidence that your software doesn't merely run, but is usable and easy to test and modify as well.

Because Python is very easy to learn and use there exists a vast variety of software written in it, most of which was scattered until [http://python.org/pypi PyPI] was created. Now, when new packages are being indexed on Cheese Shop every day, an effort can be made to spread the spirit of good software design and code reuse among the Python community. This can be achieved by combining the power of Cheesecake and Cheese Shop. Everytime a new version of a package would be uploaded to Cheese Shop, its cheesecake index will be calculated and published on web. Having a way to measure a quality of a package with accordance to other existing packages will be of invaluable help for all developers. It will promote well built packages and in the long run raise the overall quality of Python software.

Adding Cheesecake functionality to PyPI has been already [http://mail.python.org/pipermail/catalog-sig/2006-April/000825.html mentioned] by Phillip J. Eby on the catalog-sig mailing list. Together with Cheesecake maintainer Grig Gheorghiu we've discussed modifications needed to be done to Cheesecake code to be reliable enough so it could be incorporated into PyPI service. A [http://pycheesecake.org/wiki/SummerOfCode06 working copy of our ideas] is accessible on the project wiki. It includes enhancing Cheesecake code scoring techniques to take into account unit tests of a package, running tests in secure environment, extending supported archive formats and fixing all known bugs. Development of Cheesecake will adhere to best practices such as unit testing, continuous integration (via buildbot), pylint verification, etc.

The next part of this project will include collaboration with Richard Jones, PyPI maintainer, and merging Cheesecake into PyPI service. Upon completion all PyPI uploads will be automatically scored by Cheesecake. It will be possible to browse packages archive by cheesecake index, sorting results by installability, documentation and code kwalitee index. Statistics in numeric and graphical form will also be made available. This part of a project will involve writing server-side code, with emphasis on security and robustness.

The remaining time will be spent on resolving all problems that would occur during usage of Cheesecake and PyPI. Along with fixing bugs, I will develop a simple Hello world package that can be taken as an example of good development practices for all Python developers. It should also score 100% in the Cheesecake test of course. ;-) It will be what [http://savannah.gnu.org/projects/hello/ hello] is for GNU Project.

PyCells: Port of CLOS Cells extension

Student: Ryan Forsythe

Mentor: James Tauber

Summary: Python port of Kenny Tilton's Cells extension to CLOS

Cells is a framework which, rather than defining a class as a set of methods and attributes, instead defines it as a set of interdependent slots, each of whose values are determined by formulas. It is analogous to a spreadsheet. While it is similar to Python's idea of properties, elements of a class which act like values but which are generated by a method, cells build in an automemoization function so their results are recalculated only when needed. My task for Summer of Code would be to build a package which implemented Cells in Python, built regression testing for the package, and translate CLOS Cell's demo applications into PyCell.

Python interface for writing Mozilla (NPAPI) plugins

Student: [http://zygfryd.voidfx.net/ Marcin Pertek]

Mentor: Mark Hammond

Writing plugins with the NPAPI requires using the cumbersome and error-prone C or C++. I propose a thin binding of the interface to Python, by the means of a plugin embedding a Python interpreter and exposing inside it the NPAPI. It does not imply executing Python code from webpages, simply a way to write plugins in Python instead of C.

In addition to ease the creation of plugins, I would make bindings to readily enable the use of wxPython, PyGTK, PyGame and Soya3D. These bindings would enable those libraries to handle the in-browser window and associated events.

Support Vector Machines for SciPy

Student: [http://students.ee.sun.ac.za/~albert/ Albert Strasheim]

Mentor: Dave Kammeyer

Integrating libsvm (and possibly other SVM libraries) with [http://www.scipy.org/ SciPy] using ctypes and providing various tools for manipulating datasets for use with SVMs.

[http://students.ee.sun.ac.za/~albert/pylibsvm/ Project homepage]

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

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