V
118  

del.icio.us icon Bookmark this page

Edit the sidebar

Tags
Attachments
Perl 5 Wiki
GSoC2008 Projects

Summer of Code 2008 Projects in progress

The Plagger Page has links and feeds for all of the projects' ongoing progress. Also see the mailing list archive.

The rest of this page is here for archival purposes...

Summer of Code 2008 Project Suggestions

Students

These are only suggestions. You are encouraged to submit a proposal for something completely different. Please contact the appropriate department liaison if you need help finding resources. If you have general questions, contact Eric Wilhelm <ewilhelm at cpan dot org> or ask in #soc-help on irc.perl.org.

Interacting with the community before writing your proposal is mandatory -- please start a discussion on the project's mailing list, mail a potential mentor, or join their irc channel. Please see the proposal template for more information.

Students should not edit the wiki. If you have an idea that is not listed here, you do not need to add it or get some kind of permission or approval before starting on your proposal. You should still discuss it with the mailing list, but whether or not something is listed on this page has nothing to do with how we evaluate your proposal.

For more guidance towards a successful application, please read GSoC2008 Getting Started.

Mentors

Please sign up and list yourself under the suggestion if you are a likely mentor. Try to list suggestions under the appropriate "Department" (if you are uncertain, ask in #soc on irc.perl.org.)

Keep the timeline in mind when suggesting ideas -- the students will be writing their proposals in March and writing code May 26th thru August 11th. Remember also that they're getting paid $4500 for their work. The amount and quality of work should be on par with an 11-week full-time competitive internship.

Do not fully detail or specify the project on this page -- that is the student's job. A synopsis and link should suffice (try to keep the entry on this list short, under 72 characters, say) This is just a list of ideas for students to get a toehold. Students need to contact the appropriate manager, learn about the community, study the references, and write their own proposals.

That being said, it is unwise to list an idea something that you, as a mentor, could not flesh out into a complete project plan - with no more than 10 achievable weekly milestones, given no more than an hour or two to think about it. At least one Summer of Code veteran strongly recommends that the ideas be as fleshed out as possible, as it is certainly the case that failure to construct project plans does not always imply a lack of ability or potential of the student.

Also note that documentation-only projects will not be accepted by google.

Editors: Please do not restructure this page. See the organization for an overview of how the summer is being organized.

Contents




Perl 6 and Parrot Projects

Questions to:

  • Jerry Gay <jerry.gay+soc2008 at gmail dot com>
  • Will Coleda <will at coleda dot com>

Mailing List: perl6-internals@perl.org
IRC: #parrot on irc.perl.org

Flesh out the Perl 6 Test Suite

Write more tests for the Perl 6 Test Suite, currently maintained in the pugscode svn repository (Perl 6).

  • cross-reference features requested in the Synopses documents with the test suite
  • identify key areas that are not tested, and write tests

Mentor: Jerry Gay <jerry.gay+soc2008 at gmail dot com>

Implement the Perl 6 compiler and runtime in Perl 6

*Run the better part of the initial part of the Perl 6 test suite using a Perl 6 interpreter written entirely in Perl 6.

and more...

Implement the incremental garbage collector specified in PDD 09

Investigate the use of LLVM as an optional front end compiler

Investigate the use of LLVM as an optional back-end JIT

Investigate the use of GNU Lightning as an optional JIT

Improve languages/c99 to the point where it can generate NCI signatures and stubs

Implement an existing (or new) language on Parrot

e.g:

  • Improve the state of the tcl compiler for parrot (partcl), e.g.:
    • improving speed
    • coverage of test suite compared to 8.5.1
  • See also Muldis D / Muldis Rosetta for a candidate new language.

Add optimization steps to the Parrot Compiler Toolkit

Optimize Parrot Abstract Syntax Trees similar to gcc's GIMPLE and Tree-SSA

Optimization steps for PAST nodes would benefit all High-Level Languages using the Parrot Compiler Toolkit.

SMOP

  • missing native types
  • built-in lowlevel types
  • p6opaque implementation
  • perl5 integration

Mentor: Daniel Ruoso <daniel@ruoso.com>


Perl 5 Modules and Applications

Questions to:

  • Alberto Simes <ambs at cpan dot org> (until March 24th)
  • Steffen Mueller <smueller at cpan dot org>

Mailing List: Module Authors module-authors@perl.org

Windows Installer for Strawberry Perl

Create a WiX port for Strawberry Perl (msi installer)
Mentor: Adam Kennedy

Common Test Suite for DBI and Drivers

Aggregate/abstract some portion of the DBI and drivers tests into one CPAN distribution which can then be used by driver authors to help ensure that all drivers and DBI adhere to the same specification.

* design and implement a good way for drivers to run tests installed by the new DBI::Test distribution
* needs a set of very simple highly portable scenarios on which to base tests
* refactor existing tests from DBI and drivers into the new DBI::Test distribution
Mentor: Tim Bunce

Pick a CPAN Module, Write Tests

Pick a mentor's module and write tests for it (or extend/rewrite parts of it.)
Mentor: probably any module author on this list: gsoc2008_mentors

Create and publish a new CPAN module

This is a kind of "make your own proposal" category for those who already have a great module project in mind.
Mentor: TBD based on problem domain.

Module::ScanDeps

  • Module::ScanDeps is a module to scan Perl code for dependencies. It is the basis of the PAR packager's dependency detection and thus in wide use. Module::ScanDeps predates the availability of a "real" Perl parser (PPI). Instead it is based on a large set of regular expressions that yield many false-positives. The task is to:
    • Augment the test suite with some of the more obscure corner cases.
    • Refactor or rewrite the module to use PPI for static code analysis instead of the ball of mud^Hregular expressions.
    • Let's go from regexp hacks to parsers!
mentor: Adam Kennedy (wrote PPI), Steffen Mueller (maintains Module::ScanDeps)

B::PIR

  • Write B::PIR similar to B::CC to target parrot. With JIT and exec_save the user doesn't even need a C compiler then, just parrot. See optree guts

Mentor: chromatic

Archive::Zip

  • Squash bugs in Archive::Zip and as part of it write a dissector for the .zip file format to be able to better understand where things go awry. pyconstruct seems like the best starting point, but it doesn't have an already defined grammar for .zip. Such a dissector would be a useful debugging tool for other tools that manipulate .zip files.

Mentor: Shlomi Fish

  • Convert over to the Compress-Zlib-2.0 framework.

Mentor: Steve Peters

Continuity

  • Improve test suite
  • Build a higher-level library or framework on top of Continuity
  • Steal more ideas from Seaside, Magritte, et al
  • See http://continuity.tlt42.org/ or cpan to learn about this HTTP abstraction (continuations like) library

Mentor: Brock Wilcox awwaiid@thelackthereof.org

Math::GSL

Mentor: Jonathan Leto

Module::Build

  • Bundled build dependency support (ie. inc/)

Mentor: Michael G Schwern

ExtUtils::Install

  • Installed modules catalog
    • A record of files installed.
    • Record module meta-data (META.yml) for installed files.
    • Implement uninstall.

Mentor: Michael G Schwern

PPI

  • Optimize PPI, probably by implementing functions of PPI::XS

Mentor: Adam Kennedy?

Devel::Cover

Mentor: Paul Johnson

GUI for CPAN/CPANPLUS

  • Write cross-platform GUI front-end for CPAN and/or CPANPLUS clients using Wx or similar. In principle, this could also be built using a Catalyst backend and browser or web-application specific front-end.

Mentor: Depends on the tools (Wx or Catalyst backend).

Improve the CPAN to Debian/Red Hat/etc. interface

  • Collect more information on the availability of Perl modules in the various Linux and other distributions http://www.szabgab.com/distributions/
  • Improve the way to CPAN modules can be turned into .deb, .rpm and other packages to allow easier and faster inclusion of Perl modules in the distributions

Mentor: Gabor Szabo

GUI for Test::Harness

  • Write cross-platform GUI front-end for the new Test::Harness. For reference, there is an out-of-date stub GTK2 implementation in the Test::Harness distribution.
mentor: Eric Wilhelm / Andy Armstrong

Code Complexity Visualizer

  • GUI to show how code outside a routine effects it.
    • Answer the question "how much code do I need to understand to understand this one routine?"
    • Point to outer lexicals and globals which are used in the routine and all points where they are used.
    • Point to other subroutines called.

Mentor: Michael G Schwern

Improve CPAN::Forum

Changes to CPAN::Forum

* allow other views of the discussions
* make the submission smooth
* create mailto-forum gateway
* make the module tagging embeddable in other web sites via JavaScript etc.
* any of a Long list of other TODO items

Mentor: Gabor Szabo developer and maintainer of CPAN::Forum

TAP - Test Anything Protocol

  • Write TAP Producers for more languages or alternatively extend existing Testing frameworks to generate TAP.
  • Enhance Test::Run (or alternatively TAP::Parser/TAP::Harness) in the following ways,
    • generic "summary data" collection plugin
    • XML summary plugin that makes use of the generic data collection plugin
    • XSLT or Perl converter to translate that XML report to HTML
    • method dispatcher plugin (sending TAP events to a potentially remote system)
    • bi-directional transports for these messages over TCP, HTTP, other
    • iterative.(and/or nonblocking) Test::Run processor

Mentor: Andy Armstrong, Shlomi Fish

Config::AutoConf

  • Extend Config::AutoConf for robustness and flexibility.
  • Although Perl code is portable, there are lot of situations when C code is needed. And when that occurs, it is not easy to detect libraries, detect auxiliary tools like yacc, flex, pkg-config and others.
  • This module aims to be a simple Perl substitute for the well known autoconf gnu tool.
  • Development on this module should take into account the three major platforms.

Mentor: Alberto Simões

XML::XCES, XML::TMX and other PLN formats

  • This project aims the development of different modules to help managing the different formats used to encode Natural Language Processing corpora.
  • XCES is Corpus Encoding Standard for XML, a standard in development for the encoding of corpora;
  • TMX is the Translation Memory eXchange format, used by translation tools to encode parallel corpora;
  • TEI is being used by different researchers to encode parallel corpora as well;
  • XML::XCES, XML::TMX and other modules that can be developed if needed aim the conversion and (efficient and scalable) processing of all these different formats.

Mentor: Alberto Simões

Perl 5 Internals

Please read perlhack.pod
Mailing List: Perl 5 Porters perl5-porters@perl.org

Make autobox core

Get autobox into the Perl core modules
Mentor: Michael G Schwern

Make Devel::Declare core (method signature support)

* see proto.t from the Devel::Declare test suite, also: build_sub_installer.t, pack.t, padstuff.t, and simple.t
Mentor: Michael G Schwern, Matt Trout

Fix Perl's core Num type

Alter the built-in numeric scalar type.

  • Fast, transparent bigint support
  • Fix Infinity and other special numbers

Mentor: Michael G Schwern

An item from the Perl TODO list

Complete any items from the in-core Perl TODO list
Mentor: Steve Peters

Portability and installer work

Work on the installer, improving INSTALL documentation and long-standing bugs.
Mentor: Michael G Schwern

Make built-in list functions continuous

Functions like map often build up intermediate lists unnecessarily, fix this.
Mentor: wren ng thornton

Make certain opcodes overridable

ftis, ftdir, etc. open, close, etc.
This is to allow easier testing and code coverage by faking file existence, open/close failures, etc.
Mentor: tbd

SNMP::NTP

Write an SNMP client module that "speaks" the proposed NTPv4 SNMP MIB. Use the ntpq command to talk to ntpd and get the data being asked for.

Additionally, write a command-line (perl) program that uses this module. (This last part should be a no-brainer, as that's probably how the beast will be tested during development.)

Mentor: Harlan Stenn?


Catalyst

Questions to:

  • Jonathan Rockway <jon at jrock dot us>
  • Kieren Diment <zarquon at cpan dot org>

Catalyst Social Networking Application

Provide a reference implementation for something that might become 'Simple Social Network Communication Protocol' see this thread for details.
Mentor: Kieren Diment

Generic GUI deployment for catalyst apps

Friendly setup, test, configuration automation.
Mentor: Marcus Ramberg

REST Friendly CRUD Framework

Take one of the existing CRUD frameworks built with Catalyst in mind (CatalystX::CRUD, HTML::FormFU, Catalyst::Controller::FormBuilder, any of the other options you can think of) and build some easy to understand and extend code to make an instant API and web based CRUD data entry interface. Bonus points for a. easy install to server, b. demonstration with some external API (e.g. google maps).
Mentor: Zbigniew Lukasiak

Fun with Base Controllers

Has some overlap with the other three suggestions here. Implement a 'bunch of' base controllers to provide common operations for web applications and glue them together into a 'interesting' demonstration application. AKA "name your itch and show us how you scratched it".

Moose

Questions to:

  • Stevan Little <stevan.little at iinteractive dot com>
  • Chris Prather <chris.prather at iinteractive dot com>

Work on the MooseX::Compile module

MooseX::Compile compiles Moose classes to optimized .pmc files

Port Catalyst and/or DBIx::Class to Moose

Write experimental Web-Framework/ORM/Template-system taking advantage of Moose features

Improve test coverage on MooseX::POE

MooseX::POE

Write a MooseX::Gtk module

and demonstrate it working with either MooseX::POE or MooseX::Coro

Improve test coverage on Cogwheel

Cogwheel
Mentor: Chris Prather

Make MooseX::POOP into a standalone module with tests and docs

MooseX::POOP (Perl Object-Oriented Persistence)
Mentor: Chris Prather

Make an experimental Agent concurrency library.

Mentor: Chris Prather

Make Protomoose into a standalone module with tests and docs

Protomoose (Prototype-OOP in Moose)

Mentor: Stevan Little (any of the above projects)
Mentor: Yuval Kogman

Muldis D / Muldis Rosetta

Muldis D is an industrial strength language with fully integrated object-relational DBMS functionality. Muldis Rosetta is an implementation of it hosted in Perl 5 (a Perl 6 version also exists). Use all the relational operators in your applications. No SQL necessary. Easily port over multiple DBMSs, including stored procedures, without losing features in any one; develop and test with DBMS built-in to dev environment. Implements Darwen and Date's "The Third Manifesto". See http://search.cpan.org/src/DUNCAND/Muldis-Rosetta-0.7.0/archives/OSCON2008SessionProposal.txt for a further introduction, or see Muldis D and Muldis Rosetta (separately) on CPAN.

Questions to: Darren Duncan <darren at darrenduncan dot net>

Mailing List: muldis-db-devel@mm.DarrenDuncan.net (http://mm.DarrenDuncan.net/mailman/listinfo/muldis-db-devel)
Mailing List: ttm@thethirdmanifesto.com (ttm-subscribe@thethirdmanifesto.com)
IRC or Mailing List: see also the forums specific to any connected projects

  • Make a proof of concept general purpose DB management app over Muldis Rosetta that can be used like PHP(Pg|My)Admin but that is DBMS-agnostic.
  • Make a common test suite for Muldis Rosetta engines; Muldis::Rosetta::Validator is supposed to be that but it hardly has any tests yet; your suite can flesh it out.
  • Make a new Muldis Rosetta engine as a wrapper over a DBMS that isn't yet supported, or that is implemented in some other way such as over the GIT plumbing or a network service.
  • Make a new Muldis Rosetta engine over Genezzo (see CPAN) or update Genezzo to implement Muldis Rosetta as an API.
  • Make a proof of concept plain-text Muldis D implementation as a Parrot-hosted language; make a compiler that targets Parrot allowing Muldis D to be used there like any Parrot-hosted language; you may also invent or update a Muldis D language dialect in the process if you want. See also Perl 6 and Parrot Projects.
  • Make a wrapper over Muldis D that makes it easier to port code written to access databases using something else; drop-in compatible is even better.
  • Make an implementation of Darwen and Date's Tutorial D over Muldis Rosetta.
  • Make a Catalyst plugin letting Muldis Rosetta be a Catalyst Model. See also Catalyst.
  • Extend and/or port DBIx::Class to use Muldis Rosetta as Storage. See also DBIx::Class.
  • Port Bricolage to Muldis Rosetta. See also Bricolage.
  • Port some other database using project.
  • Make some improvements to PostgreSQL or SQLite or Genezzo or to other existing DBMSs such that they are better capable of supporting a Muldis D implementation over them.
  • Note that another task could be to implement (with tests) Muldis D hosted over some other language than Perl or Parrot, but such a proposal would probably have to be under a different organization than TPF or EP.
  • Many other ideas are possible.

Mentor: Darren Duncan (on the Muldis D language, projects written in Perl; doesn't know much Parrot)
Mentor: staff on other projects you choose to connect it with, and Parrot experts

DBIx::Class

JDBICompat

Write a compatibility layer so that Jifty::DBI uses a DBIx::Class backend. DBIC users would get a nice, sugary interface and JDBI users would get a more powerful and consistent ORM.

Mentor: Matt Trout (DBIx::Class)
Mentor: Shawn M Moore (Jifty::DBI)

SVK

Web UI

Improve SVK's web-based user interface, to facilitate the people who don't use a command line.

git, hg, darcs, etc. support

Even though SVK has been built from the ground up to work with Subversion, it does so in a modular manner. Add support for direct interactaction with other version control systems.

Eclipse

Eclipse is a popular text editor with built-in version control interfaces. But not for SVK.

Shipwright

Admin UI

Improve Shipwright's administrative user interface.

VMWare

Add support for creating a VMWare image to reduce installation to putting a disc in your DVD drive.

RT

Instance Merge

Many sites end up with multiple instances of RT. Add the ability to compose them into a single instance.

Import/Export

Add support for exporting tickets into well-known formats so that they may be imported into other systems, and vice versa.

Builtin Help

RT is a huge project with a large number of features collected over the years. Add support for built-in help pages so people can use RT more effectively.

Collapsible Threads

Some tickets can get very long and take a while to load. Add Gmail-style collapsible threads to delay loading and to manage clutter. You'll want to work on the RT 4 branch which uses Jifty.

Drafts

Editing a ticket can take a while. Let users save the current state as a draft and re-open it later. Also, periodically save drafts automatically.

Bounced Email

Add special handling for bounced email. Make a note in the ticket when an email was undeliverable.

Scrips

Allow administrators to define a partial or total order of scrips running. Allow administrators to enable and disable at the queue level.

Jifty

Prism

Prism (formerly WebRunner) is a new tool from Mozilla to package web applications as ordinary desktop applications. Add support for Prism to Jifty so people can write desktop apps as easily as they can write web apps.

ORM Independence

Refactor the various bits of Jifty that depend directly upon Jifty::DBI so that other ORMs may be used, such as Rose::DB::Object and Fey::ORM. See also the DBIx::Class/Jifty project, JDBICompat.

Bricolage

Add support for full-text search of documents:

  • Add a tsearch index on the appropriate tables/columns.
  • Modify the search API to support full-text search.
  • Add a UI widget and callback to use that API
  • Integrate the API with SOAP.

Port Bricolage to Muldis Rosetta

See Muldis D / Muldis Rosetta.

Add a Bricolage Xinha plugin to create links (to related stories, media, etc).

Learnability improvements

  • User-definable tooltips for fields and elements. This could appear when mousing over the field/element region in the story profile interface.
  • User-definable inline help for fields and elements. This text could appear as smaller, lighter text in the Content area of the Story Profile, just above the element/field it belongs to.
  • User-definable help entries for fields, elements, and story types. This text could be rendered in the help dialog (perhaps under the general help content), whenever that element is in the user's current context, serving as more complete documentation. It might be useful to make these complete stories that can be related the field/element/story definition, so the same content could be given other output channels (reuse the same content for your support documentation, as well as built-in help). Maybe there should be a help button on the content area, to slim down what you see in the help.

Simplify "Out of the Box" Experience

Make for simpler/more powerful/more flexible "out of the box" implementation

  • Provide useful output channels and default template code, so fields and elements can be defined without necessarily writing template code. This effectively makes an out of the box Bricolage do something. The default template code could be easily overriden if it does not do what you need. This would also allow for useful "Element Administrators" - people who can be trained in creating elements and story types, but don't need to be trained in Perl/Mason etc.
  • Create a plugin architecture for custom field types, in a handy package format to install default template code, configuration settings, necessary client/server-side widget code, permissions, etc. Plugins must provide the mecahnism for allowing admins to define preferences (and how/if element administrators can override them), and connect this to the system-wide conf.
  • Allow for user-definable field validation, via preselected, widget-appropriate options (email, date, US phone number, 'not equal to default', etc), regex, or specified template code.
  • Allow for "code select" functionality on all default field types.

Improve the Installer

The Bricolage installer is a big bucket of suck, based on a Makefile. Rewrite the installer to make it easy to use, scriptable, able to be run without user intervention (from command-line options and/or a config file, as well as defaults), and painless for installing all dependencies.


 

Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

 
 
 
File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

 
 
 
Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.

Tag: 

Suggestions: