GSOC 2015 Project Ideas

From Joomla! Documentation

GSOC 2015.jpg

Welcome to GSoC 2015 Ideas Page[edit]

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

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

Important Guidelines on Submitting Ideas[edit]

You do not have to be a GSoC student or mentor to suggest possible project ideas. If you have ideas for the Joomla Google Summer of Code Program please send them to us at this form:

Click for Ideas Submit Form

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 25th 2015 and August 17th 2015. 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.
  • 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 2015.
  • When in doubt, reach out. If you're unsure if your idea belongs on this list, please post to the GSoC 2015 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.

Idea Pool[edit]

Joomla CMS Ideas[edit]

Refactor Joomla CMS to use Dependency Injection[edit]

Brief Description: Joomla's CMS currently runs on a factory based design for allowing developers to access the application and shared library resources. This causes major issues when trying to utilize more modern approaches like auto-loading php libraries and adding in other vendor's libraries.

This project will have the following requirements: - Develop a standard for using dependency injection within the CMS - Develop a proxy, backwards compatible way to use Joomla's JFactory function

Expected Results: At the end of this project we expect to have the ability to autoload Joomla's libraries (if compatible), as well as have a backwards-compatible way to continue using the old factory methods until they are depreciated and removed.

Necessary Skills: php, object oriented programming, joomla cms and joomla framework, php autoloading, composer, vendor packaging

Difficulty: Medium - Hard

Accessibility Template[edit]

Brief Description: Create a new, improved fully accessible administrator template using Joomla's built in User Interface Libraries. This task should holistically address accessibility in Joomla's backend admin area. This project will create a new template, and update or improve associated libraries and scripts as needed to help improve the accessibility of Joomla.

Expected Results: Once completed the project should have a new admin template for Joomla as well as updated libraries which have built-in accessibility features.

Necessary Skills: CSS, Accessibility Standards, javascript

Difficulty: Medium

JavaScript Unit Tests and Automation[edit]

Brief Explanation: In Joomla JavaScript is increasingly becoming complex and difficult to maintain without having proper unit tests. Adding unit tests to JavaScript will help us for future enhancements of JavaScript as well as to do library migrations (e.g. MooTools to JQuery) with less impact to existing functionality.

Expected End Result: Write unit tests for existing JavaScript libraries (Custom written for Joomla). Automate unit test results to be added to Travis Build.

Necessary Skills: JavaScript, Joomla CMS (from a user point of view), JavaScript Unit Testing Tools and Technologies (like Jasmine). JQuery, MooTools

Difficulty: Medium - Hard

Potential Mentors: Roberto Segura, Ashan Fernando, Achal Aggarwal

System Tests for Joomla Extensions (Covering the Official supported extensions)[edit]

Brief Description: "The current roadmap of Joomla is focused on getting a light core, see: http://developer.joomla.org/cms/roadmap.html. Given that several Core components will be moved to independent extensions, the Joomla project needs to define a way to tests extensions. The present project consist in creating the system tests for the officially maintained extensions including: Weblinks, Contacts, Finder, Messages, Newsfeeds, Redirect, Search and PatchTester (see https://docs.joomla.org/Component_Patchtester_for_Testers). For example, the student is asked to: create the tests that install the Weblinks component in Joomla, create links in Administrator, interact with these links in Frontend. All the mentioned extensions features should be covered by the tests.

The student will have to study the old system tests structure built in the Nearsoft PHP Library and propose a new structure for testing extensions with the Codeception PHP testing framework (more info at http://codeception.com). 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 different repositories of each extension providing the system tests that covers all the features of: Weblinks, Contacts, Finder, Messages, Newsfeeds, Redirect, Search and PatchTester.

Knowledge Perquisites: "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, 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://docs.joomla.org/Running_Automated_Tests_for_the_Joomla_CMS

Difficulty: Medium to Hard

Possible Mentors: Javier Gomez, Puneet Kala

System Tests for Joomla! CMS (covering Users and Content features)[edit]

Brief Description: The idea behind the project is to create the system tests for joomla User Management and Content features with the Codeception Testing Framework. Including 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.

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 with the Codeception PHP testing framework (more info at http://codeception.com). 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 Perquisites: 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, 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://docs.joomla.org/Running_Automated_Tests_for_the_Joomla_CMS

Difficulty: Medium to Hard

Possible Mentors: Javier Gomez, Puneet Kala

Refractor Form Manifest Loading[edit]

Brief Description: Joomla's form library currently builds its forms from XML manifest files. We would like to extend the form class so that it can use other file formats such as JSON, YAML etc.

Expected Results: At the end of this project we expect to have extended Joomla's form class so that it can read in various file formats and construct HTML form's from their content. Unit tests should also be provided to cover all formats that the class accepts.

Necessary Skills: php, object oriented programming, joomla cms, JSON

Difficulty: Medium

Issue Tracker Ideas[edit]

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

Part 1: Implement Activity Charts[edit]

'Brief Description:' Create an activity log chart for users based on their contributions on the issue tracker. This would look at user contributed issues, comments, commits, and other issue activity to create a chart of their activity. More details at: https://github.com/joomla/jissues/pull/491

Expected Result: Several feature areas where users can view their activity, other users' activity, and a leaderboard of activities across all users.

Difficulty: Easy - Medium

Necessary Skills: PHP, Object oriented programming, javascript, basic math and algorithms. SQL and database queries. Joomla Framework

Part 2: Releases View[edit]

Create a releases view on the issue tracker which has some automated tools for helping with a Joomla release. There are several features this will implement. More Details at: https://github.com/joomla/jissues/issues/506

- List issues closed during the release cycle. This is essentially a filter of issues. This can integrate with GitHub's milestones but will require more hands on activity from JBS or other project teams that might use the application; only items that were fixed for a release cycle should ultimately be listed with a milestone and other issues be moved to another milestone or unassigned.

- List contributors during a release cycle. his would show a list of all users with activity between two releases, be it code committed or tracker activity. We'll need to write some sort of API for this, but at the basic level it could be two queries: a query of the issues table and joined to the activities and milestones tables, filtered on a milestone ID and unique usernames for all issues processed in a period and a query strictly on the activities table filtered on a start/end timeframe and unique usernames.

- Release metadata - Devise a method of tracking the number of issues open at the start and end of each release period, number of issues submitted during the period, number of issues closed during the period (and under what status; fixed, known issue, etc.), additional numbers as we think of it.

Expected Result: A view and associated functionality as a sort of 'dashboard' for handling releases on issues.joomla.org. This will be where releases can be generated, and necessary data compiled to help with the release.

Necessary Skills: PHP, Joomla Framework, SQL, Github, Github API

Potential Mentors: Michael Babker, Nicola Galgano