SummerOfCode2008Ideas
[edit] Ideas for Summer of Code 2008
Like last year, MySQL is participating in the Google Summer of Code 2008.
This is the beginning of a list of ideas for projects. Feel free to add your own suggestions.
[edit] Ideas
Ideas with a online hold'em Mentor listed indicate that someone has volunteered to mentor that project, should a student who applies to complete it be selected.
This is not a final nor official list of projects yet -- feel free to add your own suggestions, whether you are planning to apply for the program as a student, a MySQL developer looking to mentor a project, or just a MySQL user who wants to see a particular project tackled!
[edit] Contact
- Mailing list
- Freenode IRC: visit channel #mysql and the official #gsoc channel
[edit] MySQL Server
- Add support for LDAP authentication. (Mentor: BrianAker)
- New in-memory engine (Mentor: BrianAker)
- SIGAR Information Schema Plugin (Mentor: BrianAker)
- Memcached for Query Cache (Mentor: BrianAker)
- Self-healing replication, and a way for slaves to be "unavailable" until they are in sync (see basic idea: https://sourceforge.net/forum/message.php?msg_id=4840565)
- Re-write of Query Cache + making Query Cache into a pluggable module (WL4210 - new storage layer for QC page allocation + value adding monitor)
- File pre-allocation and other file system hints to improve performance (various engines). Would include Controlling data file fragmentation in MyISAM (Bug#17077: MyISAM: controlling data files fragmentation). (Mentor: StewartSmith)
- INFORMATION_SCHEMA.FILES support for all engines (not just NDB). the FILES table is meant to contain information on the files used for data storage. Currently, only MySQL Cluster (NDB) supports this. This project would be to implement it for other engines. (Mentor: StewartSmith)
- unsafe optimizations in Full-Text Search in natural language mode (simple, can provide ~100+ times speedup) WL#1171 (Mentor: Sergei)
- support for writing plugins in scripting languages (Mentor: Sergei)
- Sharable, persistent, prepared SQL statements. Like stored procedures, but better. The SQL is already parsed and optimized without the parameter values.
[edit] MySQL Cluster
- mod_ndb combines MySQL Cluster and Apache httpd into a platform for building web services. To work on mod_ndb, you will need an understanding of C and C++.
- Implement SOAP support in mod_ndb (mod_ndb issue #55. Mentor: J.D. Duncan)
- Implement a multi-language cursor API in mod_ndb for PHP, Perl, and other Apache languages (mod_ndb issue #59. Mentor: J.D. Duncan)
- Support multipart/form-data and improved BLOB handing in mod_ndb (mod_ndb issues 2 and 16. Mentor: J.D. Duncan)
- Create a SQL optimizer for mod_ndb (mod_ndb issues 45, 46, and 50. Mentor: J.D. Duncan)
- Implement memcache support for mod_ndb (mod_ndb issues 60 and 61. Mentor: J.D. Duncan)
[edit] MySQL Proxy
- Test suite. Enhance the test suite to include tests for all tutorials and libraries (mentor: Giuseppe Maxia)
- Cookbook library. Create a library of commonly used routines to be used across all proxy scripts. (mentor: Giuseppe Maxia)
- Data warehousing features. Create a multi-level cross tabulation library. Currently, the Proxy ships with a simple library for 1 level xtabs. The idea of this proposal is to create a crosstab library with multiple level, similar to the corresponding one written in Perl (see the article), with additional drill-down features. (mentor: Giuseppe Maxia)
[edit] Client Tools
- Add Lua support to the mysql command-line client (Mentor: JimWinstead)
- The long-term objective is to be able to re-implement the functionality of the other command-line clients (mysqldump, mysqlaccess, etc) using the added Lua support, as well as much of the existing mysql command-line client functionality.
- Test language for mysqlslap (Mentor: BrianAker)
[edit] libmysql
- Add support for asynchronous query execution. (Mentor: JimWinstead)
- Add support for client-side prepared statements. (Mentor: JimWinstead)
[edit] mysqlslap
- Extend mysqlslap to operate on arbitrary pre-existing tables (the idea is to have a table and ask mysqlslap to "insert lots of rows" or "update a lot of rows" or "delete a lot of rows"). Useful in bunchmarking and testing for your schema (and later, random schemas). (Mentor: StewartSmith)
[edit] mysqldump
- Parallel mysqldump (Mentor: StewartSmith)
[edit] Connector/ODBC
Connector/ODBC supplies a graphical setup library to work with standard ODBC configuration tools. In Connector/ODBC 3.51, we ship only one cross-platform Qt-based setup library. For Connector/ODBC 5.1, we implemented a native library for Microsoft Windows. These two ideas are about implement additional setup libraries:
- Create a native setup GUI for Mac OS X. (Mentor: JimWinstead)
- Create a GTK-based setup GUI for Linux/UNIX. (Mentor: JimWinstead)
- BLOB Streaming for PHP. (Mentor: Paul McCullagh)
[edit] The Obfuscator
Create a tool that obfuscates MySQL data and queries in a way that preserves the original properties of the data and the execution plan. This would be useful for reporting bugs, filing support requests and posting to public forums without revealing any sensitive information. For more information, please see Obfuscator (Mentor: ArjenLentz).
[edit] MySQL Forge
The new MySQL Forge is an entirely rewritten codebase from the old MySQL Forge, and the codebase is to be open sourced in the next month. There are many features that a seasoned PHP/MySQL developer can implement as modules and plugins that would enhance the user experience for Forge users:
- Develop a "karma system" for Forge users that is integrated with the MySQL forums, mailing list activity, Forge wiki activity, and code snippet creation
- Enhance the user interface so that Forge users can "watch" a project, code snippet, worklog task, etc. Preferably a nice AJAX widget similar to what the rating button currently is
- Develop an RSS and Atom feed system for the Forge "new items" (tasks, projects, code snippets, people?)
- Integrate PlanetMySQL with the MySQL Forge People section
- The user "blogs on PlanetMySQL", for instance...
- Integrate OhLoh.net statistics into the Projects area
- Expand test-suite for MySQL Forge and better integration with PHPUnit3
Jay Pipes will be the mentor for projects related to MySQL Forge
[edit] PlanetMySQL
PlanetMySQL currently is merely an aggregator of submitted RSS feeds, with some functionality for filtering content to keep the discussion on topic. Due to its high volume of posts, many gems get "lost in the noise" and are hard to retrieve.
We'd like to expand the functionality of PlanetMySQL significantly to provide more possibilities for community participation and interaction. For this project, we are looking for a talented PHP hacker to set up a site that provides the current functionality and more:
- Voting on articles/blog postings: it must be possible for logged in users to cast a vote on articles, similar to the Perlmonks.org voting system. This would allow providing different RSS feeds, e.g. only articles that have a certain rating and rankings for articles and authors. Positive votes accumulate and increase the "karma" value of the individual author as well as identifying the quality of a particular posting.
- Archiving/Tagging/Searching: it must be possible to add tags to the aggregated blog postings, to ease the searching of older articles and to facilitate the creation up of a searchable "Community Knowledgebase"
- Authentication: User logins must use the same username/password pair as MySQLForge and the rest of the mysql.com web site (to reduce duplication and allow better integration with other parts of MySQL Forge, e.g. the user profile page)
- Optionally, it should be possible to comment/discuss on the aggregated articles directly on the new PlanetMySQL site. These comments should be sent back to the original blog via Trackbacks (if applicable)
- It should be possible to group feeds from multiple, different authors as a "Team Feed", to allow rankings by Team/Group in addition to the ranking of individuals
- The site must provide Unicode support to allow the handling of postings in multiple languages (e.g. Japanese, Chinese)
- New feed submissions should not be subscribed automatically, but rather should be reviewed by a moderation team first (to avoid spam and off-topic feeds)
The implementor should first make an assessment if these new functions should be developed on top of the existing code base, or if it would make sense to rebuild the existing functionality plus the new features on top of an existing PHP Framework (e.g. Drupal, Silverstripe, Symfony or similar). Making use of Web2.0 techniques (AJAX) is encouraged, if it makes the site easier to use and visually appealing.
Please contact Lenz Grimmer (firstname at MySQL.com) if you are interested in working on this task.
[edit] Worklogs and Bugs open for community development
Several WL's and bugs are also available for development under Summer of Code from the Code Contribution Program
Please contact Georg Richter through the soc mailing list for mentoring advice.
[edit] A test scheduler for the MySQL Build Farm Initiative
Background: The MySQL Build Farm Initiative aims to create a automated environment that tests MySQL in multiple different configurations over a powerful, virtual computing grid provided by community member's local machines.
Typical build farms approaches have several limitations. The effort of multiple nodes can't be coordinated or share results. The process is often hardcoded in that each node repeatedly tests the same small set of configurations. Visualization of the results is fairly primitive. See for example, the PostgreSQL build farm page (www.pgbuildfarm.org/cgi-bin/show_status.pl).
In previous work with MySQL and others, we have built a prototype system that supports flexible computing grids, flexible, coordinated and continuous testing processes, and better data analysis and results visualization. The client code is available at (www.cs.umd.edu/projects/skoll/contribute/) and works with our prototype server. Take a look at [googletesting.blogspot.com/2008/01/testing-systems-with-large-and-complex.html my entry in the Google Testing Blog] for more detailed information .
Our idea is to harden the prototype and distribute it as open source. To this end, we want to create a centralized scheduler for testing MySQL configurations. This effort would focus on the server-side, creating a flexible, open source management framework that supports (1) modeling the configuration space to be tested, (2) selecting specific configurations from this space to be tested based on programmable coverage criteria and analysis of previous results and (3) packaging and distributing build and test scripts to clients who execute them and report results.
Students working on this project will implement a portion of this project in collaboration with other team members. The project programming language(s) are currently open, but may involve Java, Perl and SQL. The student must also be able to work with current participants to define specific tasks, interfaces and testing strategies. (Mentor: Adam Porter)
[edit] phpMyAdmin
Please refer to phpMyAdmin SoC2008 page for more information. phpMyAdmin is a PHP-frontend to administering MySQL
[edit] Last Year
Some of the Ideas from 2007 were not tackled last year, and is a possible source for further ideas.
