GSoC_2012_Ideas_List

Michal Čihař edited this page Apr 18, 2016 · 3 revisions
Clone this wiki locally

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

For details about participating to Summer of Code for the phpMyAdmin project, please refer to our GSoC 2012 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 http://en.wikipedia.org/wiki/Refactoring.

Automated testing

phpMyAdmin already has some unittests and a start has been made with selenium tests. We would welcome someone who could create more test cases to increase the code-coverage of the test-suite. And further set up the necessary scripts to automate this.

Due to large amount of refactoring which will be ongoing, the major challenge here will be to keep up with changing code and also help others with creating tests.

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

Mentor: User:Nijel

Plugins and OOP for import/export/transformations/authentication

Currently import, export, transformations and authentication are the only really pluggable pieces in phpMyAdmin. This project is about creating some general plugin interface and convert existing functional code to OOP and this new plugin interface.

Mentor: User:Nijel

Refactoring: Displaying query results

Currently code for displaying query results is not much reusable. It should be converted in class which would allow it's use in all places in phpMyAdmin. For example Processes or Binary log currently use separate code which should not be needed.

Additionally support for displaying results for multiple queries at once should be added. This is necessary when a stored procedure returns more than one result set. Related bug: :bug:3474853

The class should allow defining transformations as current code does, plus add support for define them by user during run without need to store them in pmadb and it should have some built-in transformations where it makes sense.

Feature requests: :rfe:3112137, :rfe:1327651, :rfe:2998185, :rfe:2950664, :rfe:958985

Mentor: User:Nijel

Refactoring: Insert/edit, Privileges, Operations, Structure

Refactoring is needed for the tbl_change.php, tbl_replace.php, libraries/tbl_replace_fields.inc.php and some of the scripts called by these ones. This includes removing the mix of HTML and PHP tags.

The server_privileges.php script would benefit from refactoring; it contains some functions but there are large chunks of code outside functions.

The db_operations.php and tbl_operations.php scripts would benefit from refactoring.

The db_structure.php and tbl_structure.php also need refactoring.

Mentor: User:Lem9

Refactoring: Designer/schema integration

We currently have two pieces of code dealing similar topic - designer and schema (export) feature. These should be tightly integrated and refactored to use as much of shared code as possible.

This project should at least bring:

  • Use designer as editor for schema pages
  • Direct export of schema from designer
  • Usability of designer (with schema export) without configured phpMyAdmin configuration storage
  • Reduce huge duplication of code in schema handling

Mentor: User:Nijel

Refactoring: Table search, Db search, Multi-table query

The goal of this project is to refactor these scripts: tbl_select.php, tbl_zoom_select.php, db_search.php and db_qbe.php.

Mentor: User:Lem9

Synchronize data (big tables)

The Synchronize feature has shortcomings, mostly regarding data sync for big tables. To prepare yourself for this project, it is suggested to test the feature to find out where improvements are needed.

Mentor: User:Lem9

Removal of frames

The navigation panel and main panel will no longer be in frames. This means that JavaScript will be required in the browser. We have to decide about keeping or not the $cfg['AjaxEnable'] directive. To get an idea what we expect : Remove frames

Mentor: User:Ruleant

Category:Google Summer of Code 2012