Tags
There are no tags for this page.
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.
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.
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.
- 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
- 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
Full Text Search
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.
Create a Xinha Link-Adding plugin
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.
|