GSOC 2014 Project Ideas
From Joomla! Documentation

Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. 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!
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013
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 the mailing list.
If you are interested in serving as a mentor, please fill out the Mentor Application Form 2013.
Ideas
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the Joomla! Idea Pool. Those wishing to add ideas to this listing are encouraged to review the Idea Pool and base their idea on the input received there. You can also view the past lists for 2013, 2012, 2010 and 2009, which may be useful for reference. We ask that you keep ideas realistic for the time frame that students will have to complete their projects.
Unless a mentor has proposed a specific project, mentors from the mentor pool will be matched with student projects. However members of the mentor pool are available to answer questions on the Joomla GSoC mailing list.
Joomla CMS Ideas
Please add your CMS project ideas below. You can use the GSOC 2014 Project template.
Project: Build New Media Manager for CMS 3
- Brief Explanation: The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include:
- Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).
- Allow renaming of files
- Automated creation of thumbnails to dimensions that the webmaster can configure
- Support for a variety of media types that addresses security concerns
- Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.
- Use of nesting for management and display of media options
- Management of both local and remote media
- Support for creation of collections of media for example for display in a carousel as a separate content type.
- Expected Results: A new Media Manager component to improve the usability, functionality, and reusability of the extension. Work should be fully documented and include system tests as well as unit tests for all new classes.
- The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks.
- The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release.
- Knowledge Prerequisite: PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability
- Difficulty: Medium
Project: Create a baseline component based on the Unified Content Model
- Brief explanation: Create a baseline component based on the Unified Content Model which could potentially replace the existing com_content
- Expected Results:
- Knowledge Prerequisite:
- Difficulty:
Joomla Framework
The Joomla Framework allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. The follow list outlines some ideas that will be immediately useful for the Joomla Platform project that a student may consider taking on. In addition to PHP libraries, the Joomla Platform also ships with MooTools and project ideas can be related to client-side operations as well as server-side. One emphasis on this year's list is on the incorporation of packages for accessing web services, however other ideas for libraries and packages are welcome. In some instances multiple students may work on different aspects of the project. Two examples of this are unit testing and JStemmer.
References:
All code contributions must follow Joomla coding standards and include full unit test coverage.
Please add your Framework project ideas below. You can use the GSOC 2014 Project template.
Project: Platform Unit Testing
- Brief explanation: The Joomla Platform has a good suite of automated Unit Tests, but code coverage is lacking in some areas. The goal of this project is to improve the code coverage by writing unit tests for the Joomla Platform.
- Expected Results: The student will be expected to review the current code coverage report for the Joomla Platform and write and agreed-upon number of unit tests with particular attention to packages that are below 50% coverage. Preference should be given to non-deprecated classes but the student may choose from either the core tree (/libraries/joomla) or the legacy tree (/libraries/legacy).
- Knowledge Prerequisite: PHP, PHPUnit
- Difficulty: Medium
Project: Object Relational Mapping (ORM) in Joomla
- Explanation: Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.
- Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler's Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components.
- Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities.
- Expected Results:
- The focus for such a GSOC-project could be one of the following:
- a more general ORM interface in which specific ORM packages could fit; be it a "native" JDataMapper or other 3rd party ORM packages.
- or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.
- Both the Joomla Platform/Framework and the CMS would benefit from such projects.
- Knowledge Prerequisite: Object Relational Mapping theory.
- References:
- Difficulty: Medium to Hard
- Possible Mentors: Herman Peeren
Project: Expand Google API coverage
- Brief explanation: The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs. Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.
- Expected Results: A set of well coded, fully unit tested and documented implementations for a range of Google data.
- Knowledge Prerequisite: Github, PHPUnit, familiarity with web services and the Joomla CMS.
- Difficulty: Medium
Project: Add NoSQL and mongoDB support to the framework
- Brief explanation: Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it's important to make it as generic as possible.
- Expected Results: A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver.
- Knowledge Prerequisite: Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.
- Difficulty: Medium to Hard
- Possible Mentors: Stefan Neculai
Project: Amazon RDS package
- Brief explanation: Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.
- Expected Results: A set of well coded, fully unit tested and documented implementations for Amazon RDS API.
- Knowledge Prerequisite: Github, PHPUnit, familiarity with web services and the Joomla Framework.
- Difficulty: Medium
- References:
- Possible Mentors: Stefan Neculai
Project: Rackspace Database package
- Brief explanation: Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.
- Expected Results: A set of well coded, fully unit tested and documented implementations for Rackspace Database API.
- Knowledge Prerequisite: Github, PHPUnit, familiarity with web services and the Joomla Framework.
- Difficulty: Medium
- References:
- Possible Mentors: Stefan Neculai
Project: Add MariaDB support to the framework
- Brief explanation: Add MariaDB driver and classes that provide easy operation with its store engines - OQGRAPH, SphinxSE, Cassandra. You should add GRAPH and "Full-Text search" abstract layers. Some of the classes will extend NoSQL layer that was mentioned above; others would extend the GRAPH and the "Full-Text search" abstract layers.
- Expected Results: A set of well coded, fully unit tested, documented implementations for GRAPH and "Full-Text search" abstract layers, documented implementations for MariaDB driver.
- Knowledge Prerequisite: GitHub, PHPUnit, familiarity with MariaDB, familiarity with Graph Theory and the Joomla Framework.
- Difficulty: Medium to Hard
- Possible Mentors:
Project: Add Validators package
- Brief explanation: Add set of classes that will be used for input validation. You have to add Validator abstract layer. The validator classes will extend this layer. You have to implement chains-of-command pattern because objects should be able to be used with this design pattern. It should look like Zend Framework Validators.
- Expected Results: A set of well coded, fully unit tested, documented implementations for Validators.
- Knowledge Prerequisite: GitHub, PHPUnit, familiarity with web application security principles, familiarity with design patterns and the Joomla Framework.
- Difficulty: Medium
- References:
- https://www.ibm.com/developerworks/library/os-php-designptrns/#N101DE
- http://framework.zend.com/manual/2.1/en/modules/zend.validator.html
- http://framework.zend.com/manual/2.1/en/modules/zend.validator.validator-chains.html
- https://www.owasp.org/index.php/Data_Validation
- http://phpsecurity.readthedocs.org/en/latest/Input-Validation.html
- https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet
- http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/
- Possible Mentors:
Project: Cloud Storage
- Brief explanation: Add support for cloud storage backends into the Filesystem package. Molajo offered a new Filesystem package for the Framework and your task is to create cloud adapters for it. The proposed APIs are Amazon S3, Dropbox, Google Cloud Storage and Rackspace Cloudfiles, however the implemented APIs should be agreed upon with the mentors.
- Expected Results: A set of well coded, fully unit tested and documented implementations for the cloud storage APIs.
- Knowledge Prerequisite: Github, PHPUnit, familiarity with web services and the Joomla Framework.
- References:
- https://github.com/Molajo/Standard/tree/master/Vendor/Molajo/Filesystem
- https://github.com/Molajo/Standard/blob/master/Vendor/Molajo/Filesystem/README.md#what-is-filesystem
- http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html
- https://www.dropbox.com/developers/core/api
- https://developers.google.com/storage/docs/developer-guide
- http://docs.rackspace.com/files/api/v1/cf-devguide/content/Overview-d1e70.html
- Difficulty: Medium to Hard
- Possible Mentors: Diana Neculai (Prajescu)
Project: Improve Form Fields
- Brief explanation: You have to add many of the newest HTML5 elements and input types. You have to add some of the most used HTML5 attributes to the form elements (form, input, textarea,...). If there are attributes, which are not supported in HTML5, you should remove them.
- Expected Results: A set of well coded, fully unit tested, documented implementations about the form fields.
- Knowledge Prerequisite: GitHub, PHPUnit, familiarity with HTML5 and front-end development. familiarity with the Joomla Framework.
- Difficulty: Easy to Medium
- References:
- Possible Mentors: