Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
List of ideas for Google Summer of Code 2016. Our development efforts aim towards the release of phpMyAdmin 4.7.
For details about participating in the Summer of Code for the phpMyAdmin project, please refer to our GSoC 2016 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.
Enhancements collection A
New UI for Multi-table query generator
When we open a database and click on Query, a multi-table query generator is presented. The user currently has the option of using this UI or switching to "visual builder".
The new UI (named "Query builder") would replace both the current UI and the visual builder. A proposed UI would be to show a horizontal line of blocks. Each block would represent a SELECT expression (usually tablename.columnname or tablename.*) and would contain the same features as we currently see (alias, show, sort, criteria, etc). However the blocks could be moved left/right with the mouse, because their left-right order represent the order of the generated query.
The UI permits to add and delete blocks.
We can possibly keep the "Use tables" dialog, or switch to something more mouse-driven like dragging a table name to a block. Also, we need to
- generate the query (with automatic JOINS like currently)
- submit the query (with an improved mechanism like in database>Search to be able to see the results alongside the query builder UI)
- save ("bookmark") the query and be able to recall it inside the UI (already exists in the current UI)
In the current visual builder, there is a gear icon that call an options dialog for each column; most of these options should be supported in the new UI (to be discussed).
Default Options for Transformations
Allow designer to show other Databases
Filling random test data in database
Facilitate drag and drop of columns between tables
Enhancements collection B
Improve responsive/mobile interface
Disable charset conversion when importing with
Improve or remove PmaAbsoluteUri
Print comments in print view
Fix broken behavior when
lower_case_table_names is 2
=== No UI to relog when using auth_type = config ===
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:
- Improved stats page
- Mass operations on incidents and notifications
- Public read only interface
- Persistent settings
See it's code at https://github.com/phpmyadmin/error-reporting-server/
Requirements: PHP and MySQL knowledge, CakePHP experience welcome.
phpMyAdmin already has quite good testsuite, but we really lack in browser based testing. The infrastructure is there, there are even some basic tests, but this is not enough. Your task will be to cover all important operations within phpMyAdmin by Selenium based tests. You should define scope of tests, but to give basic idea at least following things needs to be covered:
- Typing and executing SQL query
- Importing data
- Exporting data
- Creating user, granting him access to database
- Creating database
- Creating table
- Query by example
The goal is to make the testsuite reliable so that it can be run on every commit.
Currently we offer two download sets - English or all languages. However there might be more options to customize the download. This idea is about creating tool, which will allow users to build zip/tarball which fits their needs. In the end it should be something like http://getbootstrap.com/customize/.
- Allow users to choose which parts they want to include (with extending list of selectable features)
- Allow to customize the theme (this needs changes in the theme as well)
- Effectively use CDN to cache the results (to avoid need to generate every combination multiple times)
There are already some parts of phpMyAdmin which can be safely removed: http://docs.phpmyadmin.net/en/latest/faq.html#how-can-i-reduce-the-installed-size-of-phpmyadmin-on-disk
This would be a tool that automates and/or makes easier the task of creating themes. Such tool could ask the user for things like link color and text style, then create a theme that matches those characteristics.
Note that actually creating themes is not generally approved by Google as part of GSoC, so if you have a great idea for a standalone theme it probably will not make a good GSoC project.
Possible mentors: User:Ibennetch
Codebase refactoring towards MVC
phpMyAdmin codebase is undergoing refactoring on the lines of MVC architecture. Refactoring under this project will broadly involve Templating and OOPing of the scripts into controllers. The job is to look into the scripts and their linkages across the codebase, and refactor accordingly. Developer documentation regarding templates can be found at . For general refactoring procedure expected in this project and for more background information, you can look at .
Task #1:- Refactoring the existing controllers and templates as per
Task #2:- Templating, making controllers and associated refactoring for Database search:-
Task #3:- Templating, making controllers and associated refactoring for 'Server=>Status':-
libraries/server_status.lib.php, 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, ServerStatusData.php
This project is open-ended, so, you are welcome to approach things differently. You may plan to refactor some other scripts to different levels and accordingly frame your proposal. You can also discuss your plan or doubts on our development mailing list.
None of above did attract you? Feel free to come up with your own idea, you can take inspiration from the enhancement requests: https://github.com/phpmyadmin/phpmyadmin/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement
Please note that the project is supposed to take the whole summer, so you will most likely have to combine several enhancement requests to get a big enough project.