GSOC 2014 Project Ideas

From Joomla! Documentation

Revision as of 20:58, 13 February 2014 by Wilsonge (Talk | contribs)

GSOC 2014.png

Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 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!

For students who want a general overview of Joomla's GSoc, project plans, proposals, and timelines, please refer to the GSoC 2014 page.

Discussion of ideas and other GSoC related items is welcome on our Google Group:

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


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.

Important Guidelines on Submitting Ideas

There are some important guidelines to submit ideas, please read these carefully before adding your ideas:

  • Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program.
  • Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion ('pencils down') date.
  • Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package.
  • Respect Joomla's Release Cycle. Joomla's release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way.
  • Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.
  • When in doubt, reach out. If you're unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community's interest.
  • No documentation-focused projects. Google Summer of Code is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.

Joomla CMS Ideas

Adding Project Ideas

Please add your CMS project ideas below. You can use the GSOC 2014 Project template.

Project: Refactor CMS to use Dependency Injection

Brief explanation: The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application's core components.

For more info see:

Expected Results:
  • Deprecate the current JPATH constants allowing for replacement with Joomla DI
  • Refactor core components and to use new DI container
  • Write documentation for developers to update their extensions to use Joomla DI
Knowledge Prerequisite: PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers.
Difficulty: Medium to Hard

Project: Webdriver system tests for CMS

Brief explanation: Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of system tests are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.

For more info see:

Expected Results:
  • finish the administrator parts not yet tested
  • add front end testing:
    • menu items
    • modules
Knowledge Prerequisite: PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML
Difficulty: Medium to Hard
Possible mentors: Puneet Kala, Mark Dexter and Javier Gómez

Project: Collection of Mini Projects

Brief explanation: The CMS currently could due with several smaller tasks and projects to help move the software forward and improve its usability and feature set. This project is a *collection* of several smaller projects and improvements. The tasks involved are discrete but they must all be accomplished to a high degree of quality in detail to be considered successful.
Decouple Core Extensions
Description In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.
Add Menu Type ACL
Description Currently in the CMS there is no way to have backend based ACL rules per menu-type. This project should add advanced ACL rules and configurability to Joomla's core menu types. Adding, deleting, and editing menus on a per-menu group basis should be available on a per-group basis.
JError to Exceptions
Description Currently Joomla uses the JError class to handle error management - however there is a desire to move this across to use exceptions for Joomla 4.0 and remove the JError class.
Expected Results: This project must address and complete each of the above described mini-projects. Proposals should detail each item in detail and outline a timeline for completing them.
Knowledge Prerequisite: General knowledge of Joomla 3's core feature set and functionality.
Difficulty: Easy to Medium

Project: Develop dependency manager

Brief explanation: Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.
Expected Results: A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.
Knowledge Prerequisite:
Difficulty: Very challenging, but highly rewarding.

Project: Update Core Extensions to use New MVC

Brief explanation: The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure.
Expected Results: Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.
Knowledge Prerequisite:
Difficulty: Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.
Potential Mentors: Soren Beck Jensen as he runs the and Buddhima Wijeweera as he worked on a similar project for GSoC 2013

Project: SQL Optimization

Brief explanation: The goal of this project is to increase site performance, optimizing slow sql queries.
Expected Results: After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.
Knowledge Prerequisite: SQL, DBMS
Difficulty: Medium to Hard
Posible mentors: Nicola Galgano

Joomla Framework

The Joomla Framework project ideas 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.


All code contributions must follow Joomla coding standards and include full unit test coverage.

Adding Project Ideas

Please add your Framework project ideas below. You can use the GSOC 2014 Project template.

Project: Framework Unit Testing

Brief explanation: The Joomla Framework 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 Framework.
Expected Results: The student will be expected to review the current code coverage report for the Joomla Framework 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