Michal Čihař edited this page May 16, 2016 · 4 revisions

List of ideas for Google Summer of Code 2015. Our development efforts aim towards the release of phpMyAdmin 4.5.

For details about participating in the Summer of Code for the phpMyAdmin project, please refer to our GSoC 2015 Applicant Guide.

Possible mentors are listed for each idea; however, mentors generally do not wish to help a student drafting his proposal. You can use the phpmyadmin-devel mailing list to ask specific questions about these ideas.

For a general reference about Refactoring, see

Parser/analyzer rewrite/replacement

The parser/analyzer component (libraries/ and libraries/sqlparser.lib.php) needs a major rewrite. We need this component for several features. For example, when browsing a table and sorting on a column, we need to extract the sorting part of the query to determine whether a column is part of the sort expression. This is difficult to do with regexp matching, as the keywords we are searching for may be part of database/table/column names (this would be a potential pitfall).

Specifically, the goals of this rewrite are:

We are open to integrating an already existing library for some parts of this project.

Mentor: User: Lem9


It would be great if phpMyAdmin included functionality to synchronize multiple databases, including between two hosts. This feature was implemented in phpMyAdmin 3.3.0, but some problems developed requiring it to be removed. Successfully returning the feature will deal properly with numerous obstacles such as PHP timeout and resource limits, slow or interrupted network connectivity, and differing MySQL versions. Another difficulty is deciding how to address conflicts; for instance how will the software handle if a new auto increment row is added to both instances (thereby occupying the same ID)?

Mentor: User: Ibennetch

User interface improvements

Mentor: User: Lem9 or User: Zixtor

Feature request project enhancements

This project aims to implement several requested features. You're welcome to add to or modify this list when submitting your proposal; these are simply our suggestions

Mentor: User: Ibennetch

Codebase Improvements: OOP and refactoring

PMA has had many refactoring projects in last GSoC years which primarily converted most HTML-PHP mix into meaningful functions, separated concerns at places and broke bulky functions into smaller ones, all this is mostly organized into libraries/*.lib.php files. Further, some of such code got converted to OOP in libraries/*.class.php files. So this project expects further refactoring of codebase, giving it a more pronounced object-oriented form.

Based on applicability, broad guidelines may be:- 1. allowing for more code sharing. 2. using getter and setter methods wherever required. 3. make increased use of inheritance with overridden methods. 4. logical component-wise restructuring of existing class and library files.

Examples of concrete deliverables expected:-

By OOPing, we don't expect plainly putting a class keyword over renamed functions, but it should be done logically, extending re-usability, also keeping in view the actual component you are dealing with and its linkages.

  • Table related functionality: OOPing of following lib.php files related to table functionality and restructuring using above concepts.

libraries/Table.class.php, TableSearch.class.php (these are already classes, just ought to fit into your new Table class scheme) libraries/tbl_chart.lib.php, tbl_columns_definition_form.lib.php, tbl_gis_visualization.lib.php, tbl_indexes.lib.php, tbl_printview.lib.php, tbl_relation.lib.php, tbl_views.lib.php

  • Similarly for database related scripts..

libraries/DbSearch.class.php, libraries/DBQbe.class.php (Look for possible overlaps with Table search functionality) libraries/db_printview.lib.php etc.

  • In the same line, libraries/structure.lib.php handles 'Structure' component of PMA tables and databases, so OOPing it and integrating it with new Table and Database classes of previous points.
  • For Server=>Status component:-

libraries/server_status_monitor.lib.php, server_status_processes.lib.php, server_status_queries.lib.php, server_status_variables.lib.php, server_status_advisor.lib.php, server_user_groups.lib.php

  • For Export/Import component:-

libraries/import.lib.php, libraries/export.lib.php

The idea is open-ended and will be part of a work in progress, feel free to self-analyze the codebase, suggest better improvements and accordingly modify the idea. Also, while making above changes, it is to be incrementally made sure that application runs unaffected after merging the changes.

Update: The actual project being implemented based on this idea in GSoC 2015 is

Mentor: User: zixtor

Automated testing

Do you have passion for maintainable code? Then this project might be great for you.

phpMyAdmin already has quite good code coverage by unit tests, but our functional tests still need improvements. The goal of this project is to have reliable functional tests for most frequently used features.

We currently perform functional tests by Selenium and use BrowserStack to execute them on various browsers, but you can bring another technologies to use, the only condition is that it should seamlessly integrate with our automated testing done on Travis-CI.

Requirements: PHP and MySQL knowledge, unit testing experience welcome.

Mentor: User:Nijel

Error reporting server

phpMyAdmin's error reporting server is a service which collects failures happening on the phpMyAdmin installations all around the word. It's implemented in CakePHP and is serving us already few years.

However the server would need quite some improvements (see it's issue tracker), for example:

  • Performance improvements
  • Improved stats page
  • Mass operations on incidents
  • Public read only interface
  • Maintaining state and microhistory

See it's code at

Requirements: PHP and MySQL knowledge, CakePHP experience welcome.

Mentor: User:Nijel

Multi-table query generator

We currently have this feature (open a database and click on Query) but we are looking for an improved UI. The way the UI works, leads to inconsistencies like the one described in We are not sure whether the improvement should take the form of the current visual builder, or something else. So we seek a student with creativity for this.

Mentor: User:Lem9

Your idea

None of above did attract you? Feel free to come up with your own idea, you can take inspiration from our feature requests:

Please note that the project is supposed to take whole summer, so you will most likely have to combine several feature requests to get big enough project.

Category:Google Summer of Code 2015

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.