GSoC_2017_ideas_list
List of ideas for Google Summer of Code 2017. Our development efforts aim towards the release of phpMyAdmin 4.8.
For details about participating in the Summer of Code for the phpMyAdmin project, please refer to our GSoC 2017 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 https://en.wikipedia.org/wiki/Code_Refactoring.
On this page:
- Enhancements collection A
- Enhancements collection B
- Error reporting server
- Selenium testsuite
- Theme generator
- Codebase refactoring towards MVC
- Your idea
For both enhancement collection projects, students are welcome to modify this list in order to swap out for other enhancements that are interesting; this list is simply a suggestion.
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).
Possible mentors: User:Ibennetch
For both enhancement collection projects, students are welcome to modify this list in order to swap out for other enhancements that are interesting; this list is simply a suggestion.
Possible mentors: User:Ibennetch
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 its code at https://github.com/phpmyadmin/error-reporting-server/
Requirements: PHP and MySQL knowledge, CakePHP experience welcome.
Possible mentors: Michal Čihař
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.
Possible mentors: Michal Čihař
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
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 [0]. For general refactoring procedure expected in this project and for more background information, you can look at [1].
Task #1:- Refactoring the existing controllers and templates as per
https://github.com/phpmyadmin/phpmyadmin/issues/11870
Task #2:- Templating, making controllers and associated refactoring for Database search:-
libraries/DbSearch.class.php, libraries/DBQbe.class.php.
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.
[0] https://wiki.phpmyadmin.net/pma/Templates
[1] https://wiki.phpmyadmin.net/pma/Feasibility_assessment_for_MVC_architecture
Possible mentors: Michal Čihař
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.
Popular destinations:
- Team meetings
- GSoC home
- Developer guidelines
- How to install on Debian and Ubuntu
- Issue and pull-request management
User resources: