GSoC 2020 Project Ideas

From Joomla! Documentation

Welcome to Joomla GSoC 2020 Projects Page
Gsoc2016.png
The application for students is going to open soon!

Welcome to the Joomla Google Summer of Code (GSoC) 2020 projects page.

If you are interested in participating as a student please review the materials on applying that are available at Google. We strongly encourage you to ask questions about process and projects on our joomla-gsoc mailing list and join our public Glip / Ringcentral chat tool.

Note: The GSoC 2020 projects are displayed in no particular order

Project I: Layout Builder[edit]

Project Description[edit]

The main focus of the Layout Builder lies on a Drag & Drop editor, which makes it possible to create a full Joomla! frontend template with custom defined positions without writing any HTML code. Users can use predefined elements - container, grid, column, module position as well as custom elements. 3rd party developers are able to add their own elements via plugins. https://docs.joomla.org/J4.x:Page_Builder

This project is a continuation of the GSoC Page Builder project 2019 (https://github.com/joomla-projects/gsoc19_page-builder ). The idea is to extend the basic implementation to a level where it’s possible to reproduce the Cassiopeia template (current frontend template) using the Layout Builder. The project is now called 'Layout Builder' because that is what it does: users can build a template layout with it.

As a student, here is the list of things expected from you as a deliverable for the project:

  • Improve the function of the Layout Builder and add missing features like parameters, elements, … so at the end of the project it should be possible to create a structure which looks and acts like the current Cassiopeia template (if another template is the current default one, then this should be the reference)
  • Iron out any existing issues to make the Layout Builder release ready.

Knowledge Prerequisite[edit]

  • Must have: Knowledge of PHP, HTML, CSS, VueJS, JavaScript
  • Nice to have: Joomla! 4 template creation

Difficulty[edit]

  • Hard

Mentors[edit]

Gsoc2016.png

Project II: Auto Updater[edit]

Project Description[edit]

An Auto-Updater would decrease the number of hacked pages significantly. With this project Joomla! 4 should be extended by an auto updater. In order to prevent that such an auto-update feature can be weaponized, strong cryptographic signatures have to be used for signing and verifying available updates. A centrally hosted service should trigger site updates on all connected Joomla sites.

As a student, here is the list of things expected from you as a deliverable for the project:

  • Extend the current Joomla! Updater with a secure auto-update function; Available updates need to be downloaded and their integrity has to be verified using cryptographic signatures
  • Implement a CLI tool to sign Joomla updates
  • Implement a centralized service triggering sites that require updates

Knowledge Prerequisite[edit]

  • Must have: Knowledge of PHP

Difficulty[edit]

  • Medium

Mentors[edit]

Gsoc2016.png

Project III: Feature enhancement[edit]

Project Description[edit]

Cookies management[edit]

Create a cookie management system (component / plugin) in Joomla 4 to manage cookies as required by GDPR and other privacy regulations.

Improve Menu List view (Menu Items)[edit]

Add information of the selected menu item (like article title and id, category title and id) to the menu overview list and link it directly to the items. Categories receive a link to the category item as well as to the list of child items. It should be taken care for performance, so e.g. information should be visible on request.

Improve Menu-Module Assignment[edit]

Placing modules on a page (in the menu item form) is currently tedious. Ability to change the module menu assignment in the menu item.

Improve Content[edit]

Remove the view featured and integrate it in the current article list. Take care of the featured ordering.

Improve the incorporation of modules in the Articles-Edit-View[edit]

The function to insert modules in an article will be supplemented with the function to create and edit Modules in the Article-Edit-View.

Knowledge Prerequisite[edit]

  • Must have: PHP, XML, CSS, JS
  • Nice to have: Joomla MVC, Bootstrap 4

Difficulty[edit]

  • Medium

Mentors[edit]

Gsoc2016.png

Project IV: Performance Improvements[edit]

Project Description[edit]

Joomla! has several testing procedures until it gets released, but currently it lacks in terms of high performance tests with thousands of contents.

This project should close this gap by creating tools which support this kind of tests.

As a student, here is the list of things expected from you as deliverable for the project:

  • Create a generic component which allows (via adapters?) to generate content for all extensions (core and 3rd party) in Joomla!
  • Create different “adapter” to support com_content, com_menu, com_categories, com_tags
  • Integrate the Joomla! 4 CLI function into the component to execute the functionality via the CLI.
  • Check the performance of each component where an adapter exists and improve the database queries (as PR against the core)

Knowledge Prerequisite[edit]

  • Must have: PHP, SQL
  • Nice to have: Joomla MVC, Bootstrap 4

Difficulty[edit]

  • Easy

Mentors[edit]

Gsoc2016.png

Project V: Media Manager[edit]

Project Description[edit]

With Joomla 4, the Media Manager got a complete rewrite. The Media Manager team finished milestone 1 from the planned list. In this project milestone 2 should be implemented.

As a student, here is the list of things expected from you as deliverable for the project:

  • Implement a “database abstraction” for the files, so all files will be entries into the database and folders will be categories. A virtual layer above the (cloud) file system. This function should be opt-in (needs probably a htaccess) and still support the old way of handling files.
  • Implement permissions for files and folders, based on the “database abstraction” layer
  • Allow the creation of different image sizes
  • Extend the “add image” editor button to support srcset (with different sizes)

Knowledge Prerequisite[edit]

  • Must have: Knowledge of PHP, HTML, CSS, VueJS, JavaScript
  • Nice to have: Joomla! 4 template creation

Difficulty[edit]

  • Moderate

Mentors[edit]

Gsoc2016.png


More Coming Soon!

Gsoc2016.png