2015-09-18
phpMyAdmin has participated in this year's Google Summer of Code with five projects. Four of them have been completed successfully and one ended up very early due to the student being hired by Google.
Parser and Analyzer Rewrite
phpMyAdmin uses an internal SQL parser for different purposes, and it was time to rewrite this code for better maintainability and to fix old bugs related to it. Dan Ungureanu accomplished this task with much professionalism, producing an external library which is well integrated with phpMyAdmin's method of calling. The library also takes into account the difference between various MySQL versions.
Page-related settings and other UI improvements
Nisarg Jhaveri took charge of many new features, of which two deserve a special mention. The first one concerns page-related settings. phpMyAdmin already had a central page where the user can tweak personal settings, but it meant always going back on this page when a need arises. With a new icon on top of some of the pages, a user has access to a settings dialog related to the current page, without breaking his workflow. The second one has to do with the SQL debugging feature which permits to see all back-end queries sent by phpMyAdmin to the MySQL server. Now, this feature is directly integrated with the phpMyAdmin's Console, giving a more pleasant experience and permitting to show a tree of back-end queries and explore it.
Feature request project enhancements
One of our two interface improvement projects was completed by Deven Bansod for Google Summer of Code 2015. Deven worked on many different interface improvements. Some of the features were small usability enhancements that affect only a small number of users, for instance saving Designer settings between sessions; other features include much larger code changes that affect many users, such as allowing exports to be performed so that each table is exported to a new file or an improved Print View. Of course, some features are preparing phpMyAdmin for the next generation of MySQL, including support for the new SHA-256 secure password scheme.
Codebase Improvements: OOP and refactoring
Zhang Hao had the task to carry forward codebase improvements this year. The project expected by us was initially in line with incremental refactoring and OOPing of the codebase; and though we didn't mention or expect it explicitly, a tinge of MVC was implicit. During the summer, refactoring materialized quite well as executed by Zhang, in which he introduced a Template system to phpMyAdmin, templated and OOPed the covered project components into Controllers on MVC lines, alongside introducing a nice Dependency Injection Container. The finer details of which components were handled to what extent can be found on the student's weekly blog posts and were also noted in the form of an outlook at our wiki. The project tackled many challenges in radically molding the old codebase without rendering any component unusable and specially because phpMyAdmin's master branch was continuously being updated with the changes and there was less room for wide experimentation as can be possible in a separate and declared unstable branch, but as it was a summer project we chose to keep it working throughout and test coverage was also maintained. Overall, as a result of the changes that we had in this project we positively look forward to a more directed migration towards MVC architecture.
Error Reporting Server
Our successful student from last year, Smita Kumari, has applied for this year's GSoC as well. This time the project was to improve performance and usability of the error reporting server. The project has started very well with focus on upgrading the server to use CakePHP 3. However short after starting this, Smita has been hired by Google, thus she could not no longer participate in the program. Anyway she has managed to complete basic performance improvements and make the error reporting server again usable with the amounts of data we're receiving.