GSOC 2016 Project Ideas

From Joomla! Documentation

Welcome to GSoC 2016 Ideas Page

Welcome to the Joomla! Google Summer of Code (GSoC) 2016 project ideas page. As we move forward with the 2016 version of the Joomla! GSoC, we will post ideas that have been submitted to the GSoC Team below.

Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!

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 ideas on our joomla-gsoc mailing list.

Guidelines for sending proposal are present on our GSoC Home Page

Find examples of other years at https://docs.joomla.org/GSOC_2014_Project_Ideas


Idea Pool

Joomla CMS Ideas


Project I: Improved multi-lingual content management

Project Description:
The idea is that when users want to translate content items on a multi-language site, they can have the articles side-by-side (dual-pane). This way you don't have to switch back and forth between articles. Respect also the ACL settings. So someone assigned for Dutch cannot translate any French documents for example.
Expected Results:
A dual-pane translation screen
An ACL setting for allowing access to language based articles
Knowledge Prerequisite:
PHP, Joomla CMS multi-lingual system, JavaScript, Joomla ACL
Difficulty:
Medium to Hard
Possible mentors:
Jean-Marie Simonet, Achal Aggarwal

Project II: Shareable Draft Content

Brief explanation:
There is currently no easy way to share a draft version of an unpublished article with people who do not have Administrator access. This project would add elements to the Articles: Edit user interface that would support the generation of a shareable link that would allow those with the link to view a draft version of an article. This project would be a complete new feature that could be merged into Joomla 3.
Expected Results:
The details of the user interface would be subject to change/discussion, but could look something like the following:

A new "Save as Draft" toolbar button on the Articles: Edit page. When clicked the article will be saved as a draft in the content version history. The version history page will need to be modified to show this special version of the article. A new "Share" toolbar button on the same page. When clicked, the draft version of the article opens in a new tab with a special URL which can be copy-pasted so that the draft may be shared prior to publication. Bonus points for adding a "Preview" toolbar button that will open a new browser tab with a preview of the article currently being edited, without needing to save the article first.

Code must be accompanied by documentation in the form of wiki pages and full help screens. Code must be accompanied by appropriate tests.
Knowledge Prerequisite:
PHP, Joomla CMS
Difficulty:
Medium
Possible mentors:
NA

Project III: Administrator Menu Editor

Brief explanation:
This has been discussed at some length here: https://issues.joomla.org/tracker/joomla-cms/5492
Expected Results:
An appropriately coded extension that could be merged into Joomla 3.x.

Code must be accompanied by documentation in the form of wiki pages and full help screens.

Code must be accompanied by appropriate tests.
Knowledge Prerequisite:
PHP, Joomla CMS
Difficulty:
Medium
Possible mentors:
Tharuna Balaji

Project IV: Embedded Content Done Right!

Brief explanation:
Develop a unified framework for adding any form of embedded content. A standardised syntax for embedded content tags would be used to call a content plugin that would parse the tag and call plugins in a new embed group to return the appropriate embed code. This builds on the idea of oembed(http://oembed.com/) but with the capability of overcoming the problems of invalid content associated with some oembed providers. It is not restricted to oembed providers and can be used to embed any kind of content for which an embed plugin can be written. Support for new data sources can be added by writing an embed plugin, making it easy for site builders to integrate new embed sources to their sites. We would gain a powerful, extendable method of embedding content anywhere that supports content plugins.
Expected Results:
An appropriately coded set of plugins that could be merged into Joomla 3.x, including a selection of embed extensions for popular services such as YouTube, Vimeo, Slideshare, Twitter, Facebook, MediaWiki, etc.

Bonus points for writing a JavaScript extension for TinyMCE to make it even easier to embed content.

Code must be accompanied by documentation in the form of wiki pages and full help screens.

Code must be accompanied by appropriate tests.
Knowledge Prerequisite:
PHP, Joomla CMS
Difficulty:
Medium
Possible mentors:
Ashwin Date, Ashan Fernando

Project V: NoSQL Database Driver (Redis, MongoDB)

Brief explanation:
The goal of this is project is to add a lightweight database driver for the most commonly used NoSQL databases (Redis, MongoDB) to the Joomla CMS, and not to write yet another ORM, that is outside the scope of this project dued to the 8 weeks timeframe.
Important Links:
The original pull request: “implementation of Redis caching” https://github.com/joomla/joomla-cms/pull/3615 merged on Joomla 3.4
An open pull request “Redis sessions handler” https://github.com/joomla/joomla-cms/pull/7659
The PHP Driver https://github.com/phpredis/phpredis
Expected Results:
Starting from version 3.4, Joomla already has a Redis cache management.

The student is expected to extend the actual cache and session management

allowing the storage with the NoSQL (mongodb, redis). As a wanted side effect, the code written (drivers) should became an easy starting point for developers, to write extensions that can store data on NoSQL databases.
Knowledge Prerequisite:
Joomla, PHP, SQL, Nosql, data model(relational, key-value, document), Redis, MongoDB, Github
Difficulty:
Medium to Hard
Possible mentors:
Nicola Galgano, Achal Aggarwal

Project VI: Improve Acceptance Tests with PageObjects

Brief explanation:
Joomla! currently does not have a viable system test coverage. That leads to regression bugs all the time. The project needs acceptance tests urgently. Using PageObjects as the main concept in this test class will enable us to re-use the tests in future versions, thus to provide better backward compatibility between major versions.
Expected Results:
Coverage of the backend pages with PageObjects, Coverage of core frontend pages with PageObjects, A reasonable coverage of the backend with system tests
Knowledge Prerequisite:
PHP, OOP. Basic knowledge about Docker and CodeCeption would be an advantage.
Difficulty:
Easy
Possible mentors:
Niels Braczek

Project VII: Create Menu Item From Article or Other Component

Brief explanation:
Return to the old option to Link Menu (V! 1.0.11) facilitating the creation of menus from the creation of an article. Bolder would allow this menu created from other components, such as index search, contact, and even extensions.
Expected Results:
1. Could be a plugin, with an option to choose which parent menu item and the specific content would be linked.

2. To save the item, add the field to the menu.

3. There could be a inputText to enter the title menu

Knowledge Prerequisite:
PHP, OOP, Javascript
Difficulty:
Easy
Possible mentors:
Pedro Renan

Project VIII: Browser Automated Tests for Joomla! CMS (covering Users and Content features)

Brief explanation:
The idea behind the project is to create the system tests for joomla User Management and Content features(For Joomla 3.x). The suggested technology for developing the tests layer is the Codeception Open Source Testing Framework (more info at http://codeception.com).

Test will have to cover the User cases of: creating, editing, removing, publishing articles of content and being modified by different user roles. Also the student is asked to create the integration tests that links the Administrator, the Frontend (by creating menu items) and the Modules and Plugins applications that are related to the Users and Content Features. For example: create an article in frontend, listing all the featured articles, show the articles of an specific category or create a menu item that links to an article.

Joomla is a Mobile Ready CMS, therefore the tests will have to cover different screen resolutions and the different positions of the elements.

The student will have to study the old system tests structure built in the Nearsoft PHP Library and propose a new structure for testing the Joomla Core. The resulting tests need to accomplish the goal of being easily maintainable while being well architectured dividing the responsibilities in scenarios, Pages and Step objects. The mentors will provide the student with code samples that will help the student to achieve the mentioned goals.

To read more about using Codeception with Joomla! Read here: https://docs.joomla.org/Testing_Joomla_Extensions_with_Codeception
Expected Results:
At the end of the project the student should create a Pull request against the Joomla-cms repository (https://github.com/joomla/joomla-cms) providing the system tests for the Users and Content features.
Knowledge Prerequisite:
PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML and basic Git usage.

Value will be given to these candidates that have basic understanding of Selenium, xPath, Codeception framework, Javascript and Knowledge on linux console and Docker Containers.

Is a must for being a candidate for this project to proof that you have been able to run in your local machine the current Webdriver Test Suite. See instructions at https://github.com/joomla-extensions/weblinks#tests
Difficulty:
Medium to Hard
Possible mentors:
Javier Gomez, Yves Hoppe

Project IX: One-click Multiple Images Adding Into Article

Brief explanation:
Current workflow for adding images to article is costly for human time and efforts:

1. Before you start create article you have to create folder for new images in Media Manager.

2. At article creating screen you need to open extra window to upload images in necessary folder or in root of media folder.

3. You can upload multiple files here, but you can't paste more than one image into article, so if you have upload image in path like /2015/02/20/something - you have navigate into this folder again.

And now multiple it on ~10 articles in day.
Expected Results:
One-click multiple images adding into article.

Image folders should be created automatically by template. And as result, end-users are not wasting time with files/folders/pop-ups juggling.

Knowledge Prerequisite:
Usability, user experience, programmer-free outlook on life. PHP, AJAX, Jquery, cross-browser JavaScript.
Difficulty:
Medium
Possible mentors:
Abu Huraira Bin Aman

Project X: Name

Brief explanation:
Texto
Expected Results:
Texto
Knowledge Prerequisite:
Texto
Difficulty:
Texto
Possible mentors:
Texto

Project XI: Name

Brief explanation:
Texto
Expected Results:
Texto
Knowledge Prerequisite:
Texto
Difficulty:
Texto
Possible mentors:
Texto

Project XII: Name

Brief explanation:
Texto
Expected Results:
Texto
Knowledge Prerequisite:
Texto
Difficulty:
Texto
Possible mentors:
Texto
Idea Submitted By:
Texto

Issue Tracker Ideas

In addition to the Joomla CMS, the Joomla Project also maintains a piece of software called "JIssue tracker". This is Joomla's issue tracker which handles how bugs in the CMS are identified and fixed. The Issue Tracker relies heavily on Joomla's own framework packages.

Visit the Joomla Issue Tracker

There are two major enhancement projects for the issue tracker. NOTE: Because each of these projects are 'smaller' in scale, students should plan to implement both features as a single project during the GSoC period.

For more information please see this mailing list discussion