Summer of Code 2007 Ideas
A number of great ideas have been swirling around ruby-talk (and other mailing lists). This page tries to collect some of them. If you don't see an project idea that interests you, please feel free to submit your own ideas instead.
Once you have an idea, visit the Google Summer of Code home page, where you'll see a link for student applications.
The list:
- Build an RSpec suite that validates the Ruby core (for use by multiple implementations)
- Enhance RSpec to run on one platform but test another (e.g., run on Ruby 1.8.6, but test rubinius)
- A Ruby benchmark suite: there are a number of alternative Ruby implementations in progress, and improved performance of Ruby is a key goal of all of them. There are a few benchmarks, but there's no "big formal benchmark suite" to correspond with the "big formal test suite". This project would involve collecting the existing benchmarks, designing new ones, profiling the Ruby interpreter and generated code where possible, a benchmark results database and statistical analysis and reporting tools
- Implement RSpec support in RDT/RadRails/Eclipse, NetBeans or IntelliJ IDEA (or all of them!).
- A 'find' module that's more useful (i.e. options based on the command line tool)
- Bench::Unit (i.e. a more formal benchmark suite) — with statistical support baked right in
- Extensions to Watir: Watir needs a recorder, so that someone can record a test script simply by using the application. It is also currently aimed primarily at functional testing, and some simple enhancements would make it a good load and scalability testing tool as well.
- Extensions to the Matrix module: Ruby ships with a module called "Matrix", which defines operations on matrices. When combined with "Rational" and "Complex", this module is capable of performing *exact* computations on matrices. Right now, it only defines data management operations like row selection and matrix multiplication, inversion and determinant. Some possible enhancements include LU, QR and singular value decompositions, eigenvalue and eigenvector calculations, function minimization, Kronecker products and sums, and sparse matrix operations.
- A built in load tester for Rails applications
- A lightweight Ruby interpreter for distributed / embedded processing
- It would be really neat to combine scintilla and irb to get a lightweight drscheme-like environment optimised for iterative, interactive development.
- Event Machine is very ripe ground for Summer of Code projects:
- EventMachine::HTTP, EventMachine::Telnet, etc.
- getting DRb running on top of EventMachine, which would likely make it quite a bit more robust and scalable
- protocol parser generators
- DSLs for defining protocols
- callback systems for reacting to protocol events
- generic event loops
- create an abstract description format (e.g., in XML or YAML) for use by the dozens of "documentation generators" listed on Wikipedia
- Ruby GUI toolkits have their fair share of issues. The general method to dodging this is to distribute your application as a standalone web application. My idea was to augment this with a "wrapper" GUI generator for each of the big OS's. This GUI would be a simple, OS specific window, that displayed the page. It would include a few simple menu choices, exit, about, help, and provide ruby based callbacks to direct the application to the proper page for each
- Port Google's Web ToolKit functionality to RubyJS. I think it's more advanced than simply porting the code from Java to RubyJS, because Ruby doesn't require interfaces, has open-classes and features meta-programming (limited to "compile-time" for RubyJS).
- Implement and test a Rails adapter for the Rack web server interface
- Extensions to Rails: one of the key tasks in application performance engineering is measuring the response time that an actual user sees. Typically this is done with testing tools, but given a web application framework like Rails with Ajax, there's no reason a Rails application can't gather these response times in actual operation and collect them in a database for analysis. In addition, there's also no reason why the Rails application can't collect platform performance data using open source tools, and there's no reason it can't provide tools for analyzing the data and notifying the application's managers of bottlenecks.
