Skip to content

GSoC_2016_Ideas_List

William Desportes edited this page Apr 6, 2019 · 5 revisions

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 https://en.wikipedia.org/wiki/Code_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

Google Authenticator

Filling random test data in database

Facilitate drag and drop of columns between tables

Mentor: User:Ibennetch?

Enhancements collection B

Improve responsive/mobile interface

Disable charset conversion when importing with SET NAMES

Export improvements

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 ===

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

Requirements: PHP and MySQL knowledge, CakePHP experience welcome.

Mentor: User:Nijel

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.

Mentor: User:Nijel

Download customization

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 https://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: https://docs.phpmyadmin.net/en/latest/faq.html#how-can-i-reduce-the-installed-size-of-phpmyadmin-on-disk

Mentor: User:Nijel

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 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

Mentor: User:Zixtor

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 2016

Clone this wiki locally