GSoC_2017_ideas_list

Isaac Bennetch edited this page Mar 1, 2017 · 12 revisions
Clone this wiki locally

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 http://en.wikipedia.org/wiki/Refactoring.

On this page:


Enhancements collection A

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.

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

Google Authenticator

Consolidate table sorter libraries

Facilitate drag and drop of columns between tables

Possible mentors: User:Ibennetch


Enhancements collection B

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.

Improve responsive/mobile interface

Disable charset conversion when importing with SET NAMES

Export improvements

Configuration storage - try default database and table names

Password No shown for user not in user table

Export progress bar

Upgrade deletes non-phpMyAdmin cookies

Nicer JSON editor

Possible mentors: User:Ibennetch


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 its code at https://github.com/phpmyadmin/error-reporting-server/

Requirements: PHP and MySQL knowledge, CakePHP experience welcome.

Possible mentors: Michal Čihař


Selenium testsuite

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ř


Theme generator

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 [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 perhttps://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ř

Your idea

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.

Category:Google Summer of Code 2017