SummerOfCode2009Ideas
Contents |
[edit] Ideas for Summer of Code 2009
Like the last two years, MySQL is planning on participating in the Google Summer of Code 2009.
This is the beginning of a list of ideas for projects. Feel free to add your own suggestions. See also SummerOfCode2008Ideas, but make sure the project wasn't done last year (hint: ask if unsure).
[edit] Ideas
Ideas with a 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-dev and the official #gsoc channel
[edit] MySQL Server
- WL#3295 - plugin run-time dependencies
- plugin error reporting service (part of WL#2940 and my_vsnprintf() extensions from WL#751)
- regex enhancements: replace regex library, regex_replace function, perhaps regex_insrt/regex_substr too (WL#2627, WL#353)
- WL#681 - Per query variable settings
- WL#4034 - INFORMATION_SCHEMA storage engine
- parallel filesort
- WL#975 - Extend perror to know about server errors
- "MySQL feedback daemon" - a tool that generates a report describing the mysql server environment and usage (hardware, os, some status variables) and optionally sends it to the feedback server. a couple of drafts: WL#4201 and http://askmonty.org/worklog/?tid=12
[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: TBD)
- Cookbook library. Create a library of commonly used routines to be used across all proxy scripts. (mentor: TBD)
- 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] MySQL Sandbox
MySQL Sandbox is a tool created to install MySQL servers in a few seconds. The Sandbox roadmap has plenty of tasks that could be delivered within a Summer of Code project. For example:
- Install across a network, not only on a single server;
- Make it installable with standard Perl Makefile.PL or Build.PL;
- Make it into a Ubuntu package;
Candidates need to either be proficient in Perl, or be prepared to convert the whole project in another language. Language migration will be considered only if it improves portability.
(Mentor: Giuseppe Maxia)
[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.
- Create a GTK-based setup GUI for Linux/UNIX.
[edit] MySQL Documentation
- The Dynamic Docs enable us to insert structured information into the documentation multiple times. One of the existing formats is used to document the command-line arguments to the MySQL server and client programs (see mysqlcheck). We'd like to automate the process of extracting the options from the different versions so that we can output the right list of options for each version of the manual. Candidates will be expected to produce a system that will automatically check the supported arguments for all the different commands and generate the XML files that contain the information in the right format. (Mentor: MC Brown)
- Create consistent examples for APIs and Connectors. The examples in all the Connectors and API documentation (http://dev.mysql.com/doc/refman/5.1-maria/en/connectors-apis.html) should use the Sakila database (see http://dev.mysql.com/doc/index.html#sampledb) so that we have a consistent set of examples. This should be done for the MySQL 5.1 Reference Manual and later versions.
Using the same database (and generating a suite of examples that use it) will mean that users can easily find an example that fits the language they know, or re-adapt their skills to use a different Connector/API while still understanding the same basic MySQL statements and queries.
Read the full specification here: http://forge.mysql.com/worklog/task.php?id=4843
Mentor: Tony Bedford
- Create Examples for MySQL Cluster APIs More examples illustrating the use of NDB API method calls and MGM API functions are needed for MySQL Cluster NDB 6.2 and later. These should be consistent with one another as well as existing NDB API sample application programmes.
As part of the work for this task, the candidate may need to perform some prioritisation, since these APIs are large and complex, and it may not be possible (or even desirable) for one person to provide useful examples for all API methods and functions within the time span of the project. Some work on this project has already been done and can be made available to the candidate.
Mentor: Jon Stephens; some assistance from MySQL Cluster developers and others may also be available.
[edit] phpMyAdmin
phpMyAdmin is a popular web interface for MySQL. In GSoC 2008, this project mentored two students under the MySQL umbrella. Here are a few ideas for new phpMyAdmin features:
- New import modules (for example, Open Document Spreadsheet and XML). (Mentor: Michal Čihař)
- Permanent user preferences. (Mentor: Marc Delisle)
- Changes tracking (structure and data). (Mentor: Michal Čihař)
[edit] A Rewrite of the Pool of Threads Scheduler
The pool of threads scheduler was initially designed for higher concurrency. However, it has been observed that while it performs well for some work loads, it can have very poor performance on other workloads. This project would entail investigating the pool of threads code, demonstrating what workloads it performs poorly on and documenting why it performs poorly on those workloads. Based on this investigation, a rewrite of the pool of threads scheduler could be performed. More information on the pool of threads code is available here and 1 blog post about some of its problems is here.
Mentor: Eric Day and other Drizzle community members.
[edit] Drizzle Related Ideas
Drizzle is a community-driven project based on the popular MySQL DBMS that is focused on MySQL's original goals of ease-of-use, reliability and performance. Drizzle projects can be submitted as part of the MySQL umbrella. More information on potential projects related to Drizzle are available on the Drizzle wiki at its GSoC ideas page.
