GSOC 2016 Project Ideas

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


Gsoc2016.png

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, Needs MVC knowledge and ability to set up a basic multilingual Joomla site
Difficulty:
Medium to Hard
Mentors:
Rob Clayburn,Jean-Marie Simonet
Gsoc2016.png

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
Mentors:
Achal Aggarwal, Ashwin Date
Gsoc2016.png

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
Mentors:
Peter Martin, Llewellyn, Tharuna Balaji
Gsoc2016.png

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:
Ruchika Nagarkar
Gsoc2016.png

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
Mentors:
Nicola Galgano, Achal Aggarwal
Gsoc2016.png

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
Mentors:
Niels Braczek, Yves Hoppe
Gsoc2016.png

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
Mentors:
Pedro Renan, Md. Toufiqur Rahman, Peter Martin
Gsoc2016.png

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

More details about the project at https://groups.google.com/d/msg/jgsoc-2016/nzLDqY-chYA/V6ByOHalBQAJ

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
Mentors:
Javier Gomez, Yves Hoppe
Gsoc2016.png

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
Mentors:
Abu Huraira Bin Aman, Rishi Vishwakarma, Rob Clayburn
Gsoc2016.png

Project X: JavaScript Unit Tests

Brief explanation:
Joomla uses a collection of custom written JavaScript libraries for its core functionality. This keeps on increasing and it makes it difficult to do enhancements and upgrades for these libraries without conducting extensive manual testing for dependent features in CMS. The goal of this project is to write unit tests for custom JavaScript libraries in Joomla and integrate it with its build system(Travis) to build a solid foundation for future enhancements of these libraries.
Expected Results:
Setup a JavaScript Unit Testing framework and a test runner to evaluate Unit Tests on Travis Build. Write Unit Tests to increase the test coverage above 90% for custom JavaScript libraries written for Joomla. Document JavaScript Unit Test Guide for Joomla.
Knowledge Prerequisite:
Understanding Unit Testing, Unit Testing Frameworks for JavaScript, JavaScript, jQuery, PHP, Travis CI
Difficulty:
Medium to hard
Mentors:
Ashan Fernando
Gsoc2016.png

Project XI: Introduction of Accessibility Standards & Code

Brief explanation:
Joomla has a lot of accessibility capabilities for visually impaired users but there are a lot of areas where it can improve. Currently there is a lot of work to bring the CMS to WCAG 2.0 AA standards and bringing it closer to being a listed ATAG 2.0 resource for content publishing.
Expected Results:
All templates distributed in Joomla to meet WCAG 2.0 AA standards Template and coding guidelines to help developers create standards compliant code that will meet WCAG 2.0 AA
Knowledge Prerequisite:
Strong front end development skills, bootstrap 2, JS, Joomla dev & accessibility testing and coding skills.
Difficulty:
Medium to Hard
Mentors:
Akarawuth Tamrareang, Gunjan Patel, Peter Bui
Gsoc2016.png

Extension Ideas

Project XI: Larger Joomla ACL publication

Brief explanation:
Add to new levels publishing stream: author, reviewer, publisher, supervisor. Where you can determine the profiles, according to the category of the content. essential tool for large projects where there are various teams and responsibilities.
Expected Results:
1. A publishing stream screen, linked to categories (com_categories)

2. Adding action buttons Approve / Review
3. Flag for the backend module, to-do items for review / approval, according to the user profile

Knowledge Prerequisite:
php, oo, javascript
Difficulty:
Medium
Mentors:
Roberson Augusto, Niels Braczek
Gsoc2016.png

Project XII: Recording actions logs, accessible by super admin

Brief explanation:
Store the tasks performed by any user, informing those who did, where did when did and what made within the project.
Expected Results:
A component to map The Croods within the CMS, with filters by date, extension and user
Knowledge Prerequisite:
php, oo, javascript
Difficulty:
Medium
Mentors:
Allan Walker, Llewellyn
Gsoc2016.png

Project XIII: Double marking position for modules

Brief explanation:
Allow a module to be used in two or more menu items, but in different positions. often módulso need to be duplicated in order to be used in more than one menu item and / or home site. allowing tow module and position + menu reduce the amount of unnecessary duplication
Expected Results:
Option interface to change the position, the selected menu item
Knowledge Prerequisite:
php, oo, javascript
Difficulty:
Medium to hard
Possible mentors:
Nils Ruckmann
Gsoc2016.png

Project XIV: Improve Joomla front and back-end performance through better compatibility with reverse proxies and PageSpeed Module

Brief explanation:
The CMS Joomla has a good native cache system that improves back-end performance in order to accelerate the HTML generation by 2 to 4 times. With the help of third-party extensions, you can increase the front-end performance (e.g how fast the site seems to load to the user, as well as savings in file transfer), however such extensions can harm back-end performance.

Websites with Joomla CMS focused in high performance, with big amounts of traffic, or with the requirement of generating HTML in less than 100ms, usually use Joomla without performance-enhancing extensions, and implement those tweaks at the webserver level with the PageSpeed module. Furthermore, it is common to employ a caching system like Varnish (or similar) to do a complete ephemeral storage of the resulting HTML response. Such system is greatly appreciated

Joomla, by default (without third-party extensions), does not allow reverse proxy caching. With the use of extensions in Joomla it’s possible, however it's still not a trivial process nor a pleasant experience, and in some cases - in order to completely disable unnecessary features - might even require changing the core of Joomla, like disabling the use of sessions for guests and hit counts on articles.

This idea is about using the Joomla CMS for what it does best: managing content. To do this we need to trust the cache and HTML/CSS/JS/images optimization to the webserver, in order to allow Joomla to run even faster and spending less money with hosting and CPU time.

Expected Results:
It is expected that - as an additional option and not by default - you make Joomla able to control the HTTP caching headers to set a different caching time to one or more reverse proxies, just as the cache time sent to the visitor's browser. This feature should obligatorily be tested and functional for the main reverse proxies that are typically used in the market. Ideally, but not necessarily required, compatibility with services that deliver HTML caching as a service (like possibly CloudFlare and Fastly ®) could also be sought.

If enabled, when a manager create, edit or delete Joomla articles, it will trigger an event to automatically detect major typically changed URLs (for example, the article page itself, the listing page of the categories and the site's homepage) and thereby allow immediate cache invalidation on those URLs, and on those URLs only, in order to reduce the Joomla administrator’s burden that has to manually invalidate each cached URL- which is a major discouraging aspect of the use of cache invalidation in itself. (Note: The CMS Joomla allows triggers, see https://docs.joomla.org/Plugin/Events)

As to these triggers, it is not required to implement the functionality in a way that automatically use these triggers to effectively invalidate the main reverse proxies’s cache, only allow - in the future - people can use this code base to extend this functionality. However, it tends to be interesting to choose at least one effective example, like Varnish-cache, so this functionality can be througly tested.

Compatibility with Pagespeed Module probably shouldn’t need special changes, but this project should be tested presuming the module is enabled. In case of incompatibilities with the default settings, the produced PHP code should work around these, or there should be produced specific documentation warning about the caveats. A good example of a PageSpeed-related change is to disable content optimizations inside the CMS for specific browsers, such as conversion of images to WEBP - which could provide a cached image that would not work on incompatible browsers.

In addition to the code produced, it is expected that the student create benchmarks comparing before-and-after performance, and also comparing your solution with the solutions using the old native Joomla Caching. At the end of the project, there will be required documentation on how to use the solution, including the provision of configuration suggestions that are relevant to the server, in order to achieve the expected result.

IMPORTANT: In additional improvements that changes the Joomla core, which are not needed when you have full page cache like the option to disable hit count in Joomla articles and session creation for guest users, the student will have help from mentors and the Joomla developer community to decide whether it’s worth being implemented. Both this, and other expected results, may change if a strong technical impediment is detected beyond the scope expected for a student during the GSoC period.

Knowledge Prerequisite:
It is recommended to already know how to use a POSIX-like operating system, and it is essential to know how to deal with the command line. You must also have previous knowledge in PHP.

It is not necessary to have prior knowledge with Joomla CMS itself, since this you can learn from us. It is also not required to have previous experience with reverse proxies and the PageSpeed Module, but you must be willing to learn about it, and be pro-active after initial support. Of course, you will have help from mentors in complex situations that will likely arise.

This is more of a DevOps project (https://en.wikipedia.org/wiki/DevOps) than a programmer-only idea. It will be less about just coding in PHP, and will be required to be capable of setting enviroments to test and benchmark the resulting performance. This can be a particularly good project depending on the area you want to work professionally, mainly because having such experience in this area is rar. Finally, it is expected that you have commitment to the idea and the Joomla community.
Difficulty:
Medium to Hard
Mentors:
Emerson Rocha Luiz, Bernardo Donadio
Gsoc2016.png

For more information please see this mailing list discussion

Advertisement