GSoC 2010 Projects
hideThis page is currently for 2010 Google Summer Summer of Code TPF Project "ideas", the more concrete, the better. When the projects for 2010 have been chosen, they will be added to the top of this page. General info about Google Summer of Code and The Perl Foundation may be what you are looking for as well.
Students: Proposals are due April 9th 2010, start researching, hacking on code, and writing that application! The "application" consists of you expounding your detailed plan in this template to implement a certain set of features in a specified amount of time. The first rule of TPF GSOC 2010 is: Use The Template! You (the student) will then submit this to Google's Melange application by April 9: 12 noon PDT / 19:00 UTC. That's soon! See the GSoC Getting Started guide for more info.
Once you've found a project you're interested in, hop on over to the List of TPF mentors or the TPF GSoC Students Mailing List to find a mentor for yourself or to find out more about the project.
Rakudo Projects
- IO::* (from simple things like chdir() to not so simple (but still simple) things like sockets and pipes. This will immediately make Rakudo much more usable. Most of it may be implemented in Perl 6, not PIR!)
- Implement buffer types for byte string handling
- Implement container types like KeySet and KeyBag
Parrot Projects
http://parrot.org, more information - Note: This year only Parrot internals will be accepted (i.e. nothing in languages/*).
- Parrot Debugger improvements
- Improve/Implement new GC algorithms
- GSL bindings via NCI http://docs.parrot.org/parrot/latest/html/docs/pdds/draft/pdd16_native_call.pod.html
- Every dynamic language out there that has GSL bindings has put a lot of sweat, blood and tears into making it happen. This will be "...one ring to bind them all..."
- Perl 5 binding are http://search.cpan.org/dist/Math-GSL/ This has a large test suite (>3000 tests) that can be leveraged
- GNU Scientific Library http://www.gnu.org/software/gsl/
- Immutable strings implementationhttp://wknight8111.blogspot.com/2010/02/gsoc-idea-immutable-strings.html
- NFG string format http://wknight8111.blogspot.com/2010/01/gsoc-idea-strings-and-nfg.html
- Asynchronous I/O system http://wknight8111.blogspot.com/2010/01/asynchronous-io-system.html
- Security-Sandboxing system
- Portable bytecode system
- RTEMS Port and Improvements http://wknight8111.blogspot.com/2010/02/gsoc-idea-parrot-rtems.html
Perl 6 projects
- Module ecosystem: installer, searching website for Perl 6 modules
- Perl 6 Test suite - requires some familarity with Perl, and willingness to learn about Perl 6 in the process. Areas that need (much) more work: (see also the task list)
- built-in types, especially container types (like KeySet, see S02)
- Exceptions, control exceptions, catch-blocks
- concurrency
- November: Wiki engine written in Perl 6 - http://www.november-wiki.org/ (masak)
- SMOP - http://www.perlfoundation.org/perl6/index.cgi?smop
- Solve the memory leaks in mildew (ruoso)
- Bootstrap the type system in mildew CORE (ruoso)
- YAML support. A PGE grammar, wrapped by a Perl 6 module.
- Implement Perl 6 savvy relational types and operators. Start with porting Set::Relation (http://search.cpan.org/dist/Set-Relation/) to Perl 6.
Perl 5 Projects
- SDL Perl / Perl Gaming - http://sdl.perl.org -
- Look at http://sdlperl.ath.cx/projects/SDLPerl/wiki/gsoc2010
- Game Engine
- Cross thread queuing for SDL_perl
- Game Physics
- and more!
- use #sdl on irc.perl.org to discuss ideas with mentors that use cheap car insurance quotes.
- Catalyst - http://www.catalystframework.org/ - use #catalyst-dev on irc.perl.org to discuss ideas with the prospective mentors, like t0m, konobi, rafl and dhoss
- Rework component setup code to be based on Bread::Board and allow for more customisation
- App/Context split for easier-to-reuse catalyst components ex. filigree jewelry
- Replace Catalyst::Engine::* with PSGI/Plack. Work on this has already been done in the psgi branch, but there's many things left to do to get it in a mergeable state.
- Refactor how configuration loading is done. Currently it requires the full application to be loaded, which makes it impossible to use the normal configuration tools in, for example, scripts that are supposed to spin up an application.
- Moose - http://www.iinteractive.com/moose/ - use #moose-dev on irc.perl.org to discuss ideas with the prospective mentors, like Sartak, t0m, and rafl
- Make perl's overloading introspectable and modifiable using the meta object protocol. Prior art for this exists in MooseX::Role::WithOverloading, which could be ported to use the meta api for overloading, once it exists.
- Work on moving parts of the meta object protocol from perl- to c-space to improve Moose performance during both compile- and runtime. A prototype for this already exists in the Moose-XS branch.
- Work on metaclass serialisation in MooseX-Antlers. This also has a big potential for making Moose faster, by not having to compute or even load metaclasses most of the time.
- Improve MooseX::Declare and MooseX::Method::Signatures. Performance could be greatly improved by adding the possibility to inline type constraint checks to Moose and MooseX::Types::Structured. There's also many missing features and minor bugs and edge cases that need to be addressed. Get in touch with #moose-dev for the details.
- KiokuDB - http://www.iinteractive.com/kiokudb/ - use #kiokudb on irc.perl.org for discussion
- Implement an asyncronous interface
- Improve performance
- Pick anything from http://github.com/nothingmuch/KiokuDB/blob/master/TODO
- Plack - http://plackperl.org/ - use #plack on irc.perl.org for discussion
- Build a middleware that implements Edge Side Includes (ESI). That involves both a parser+interpreter for the ESI language, as well as a caching middleware. Prior art for the caching part of the problem already exists at http://github.com/rafl/plack-middleware-cache/
- Come up with a new and useful language feature perl doesn't have yet, and implement it using Devel::Declare and similar techniques. Examples would be backporting the given/when feature from perl 5.10 to older perls, or implementing a new keyword for defining lexical variables with introspectable type constraints.
- Fix bugs in, or add features to, the Perl core. There's a large list of TODO entries in the perltodo documentation. Pick one!
- Make perl5 faster. There are several more possibilities not listed in perltodo: Improve B::CC, jit the runloop walker, restructure the core to help [llvm] to do linker optimizations.
- Mojo/Mojolicious - http://mojolicious.org/ - use #mojo on irc.perl.org to discuss ideas with the author sri or other people out there
- Performance tuning the http/websocket implementation.
- Adding tests for things going wrong and adding nice error messages.
- Improving the reference documentation with small tutorials similar to Mojo::Template and Mojo::IOLoop.
- TAP::* (Test Anything Protocol) - tap
- POE (Perl Object Environment) - http://poe.perl.org/
- SDL bindings for POE. POE developers have been approached to integrate SDL's main loop with POE. We could use a dedicated pair of hands for that. Find us in irc.perl.org #poe.
- Reflex is a modern reactive class library for POE using Moose. Currently it needs foundation libraries for I/O, timers, signals, and higher-level things like servers and clients. There's a huge body of POE code to borrow from. See us on irc.perl.org #reflex.
- There's demand for a lightweight, sessionless callback API for POE. Something along the lines of on_input($handle, \&do_something) would be nice, although there's a lot of freedom to design the interface. Freenode or irc.perl.org #poe is probably a good place to ask.
- Optimize POE. One option is to implement lightweight APIs or classes (i.e., Reflex). Another is to optimize POE itself. The code base has a reputation for being heavyweight, so there should be a lot of low-hanging fruit here, right?
- Other ideas are welcome, of course.
- BioPerl - http://bio.perl.org - GSoC Page - Project Priority List : A well-written goldmine of info for possible BioPerl projects.
- Jifty - http://jifty.org
- Tk - Enhance (fix?)so that it can properly display Arabic (right-to-left, with character joining and shaping)
- Statistics::RI - create a DBI-like interface to R as a replacement for Statistics::R
- Perl toolchain modules
- CPAN/OS package interaction (possible mentor: CHORNY)
- Porting CTypes to Perl 5 (and possibly Parrot) - see http://broadcast.oreilly.com/2008/12/five-features-perl-5-needs-now.html - Shlomi Fish
- Improve the existing Qt4 bindings at http://code.google.com/p/perlqt4/ and make them releaseable.
- Update Symbian Perl, and possibly provide interfaces to Symbian OS features (download movies) - http://sourceforge.net/projects/symbianperl/
- Padre, the Perl IDE http://padre.perlide.org/ (some of the project ideas:)
- Enhancing the context sensitive document viewer
- Enhanced VCS integration (SVN, SVK, Git and maybe others)
- Finishing the FTP/SFTP and remote execution
- Various plug-ins such as
- Social plugin (GUI for Twitter, Identi.ca, Buzz, etc)
- Google Wave client
- GUI for keyword driven testing (wrapping WWW::Mechanize and similar modules)
- GUI for the PerlTidy plugin
- Bricolage, a Perl-based enterprise-class content management system http://www.bricolagecms.org
- Big projects: These are projects that require a solid understanding of Perl and the other technologies mentioned, and a commitment to seeing them through. Each has a dedicated mentor to provide guidance and support to one or more students working to complete the project.
- Full text searching. Either via Solr (Mentor: Alex Krohn) or tsearch2 (Mentor: David Wheeler). Preferably, both would be implemented for algebra help.
- More AJAXification of the Bricolage UI: useful keyboard shortcuts, integrated spell-check, and the like. The sky’s the limit on the ideas that could be applied here (Mentor: Matt Rolf)
- Document conversion: enable story creation by uploading a specific document type, e.g.: Open Office document, Word document, etc. (Mentor: Alex Krohn & Phillip Smith)
- Add a REST interface / API to Bricolage (Mentor: David Wheeler)
- Modernize/Simplify the Bricolage install process via a Module::Build-based installer. (Mentor: David Wheeler)
- Port Bricolage to run over the Muldis Rosetta ORDBMS framework. (Mentor: Darren Duncan)
- Modify version storage to store deltas instead of complete copies. (Mentor: David Wheeler)
- Medium projects: Medium-sized project are excellent for students with a intermediate understanding of the described technology (AJAX, Perl, Javascript, ASP, SQLlite, Firebird, etc.) and a willingness to learn.
- Port Bricolage from mod_perl to Plack/PSGI
- Add support for Javascript templating. Other possible templating additions are EmbPerl, XSLT, JSP, ASP.NET, ERb, and Cheetah. If the templating system isn’t written in Perl, you’ll be able to borrow from the work done on PHP Sandwich the project started to allow PHP templating in Bricolage. (Mentor: David Wheeler)
- Workspace improvements as described in this to do. and this to do medical insurance (Mentor: Matt Rolf)
- Addition of event-triggered callbacks (Mentor: David Wheeler)
- Improvements to Bricolage's SOAP interface with the objective of affordable health insurance providing access to objects, contributors, and more search parameters. (Mentor: Greg Heo)
- Creation of an API "mover" or action to allow Bricolage to more easily publish to other systems that have Web / REST APIs. (Mentor: Phillip Smith)
- Port Bricolage to SQLite and Firebird. (Mentor: David Wheeler)
- TapTinder, continuous integration and automated testing tool used to support Parrot VM development