GSOC 2014 Project Ideas

From Joomla! Documentation

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: https://groups.google.com/d/forum/joomla-gsoc-2014

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.

Ideas[edit]

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[edit]

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[edit]

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[edit]

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[edit]

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[edit]

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[edit]
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[edit]
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[edit]
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.
Implementing Frontend Menu Editing[edit]
Description Currently frontend menu editing icon redirects user to backend. But actually frontend menu editing should be able to done at the frontend.Implementation would be much similar to the already implemented frontend configuration & frontend template style editing.
Expected Results: Frontend logged authorized users should be able to edit menu items via frontend. Student should have to figure-out what should be in frontend editor and relevant access control levels.


Knowledge Prerequisite: General knowledge of Joomla 3's core feature set and functionality.
Difficulty: Medium to Hard

Project: Develop dependency manager[edit]

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[edit]

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 http://www.Component-Creator.com and Buddhima Wijeweera as he worked on a similar project for GSoC 2013 http://magazine.joomla.org/issues/issue-nov-2013/item/1580-new-mvc-for-joomla-cms

Project: SQL Optimization[edit]

Brief explanation: The goal of this project is to optimize site performances, between the potential areas where performance bottleneck resides in a conventional n-tier website architecture, we'll focus our effort on database side, 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
Potential mentors: Nicola Galgano

Project: JIssues tracker[edit]

Brief explanation: The goal of this project is to finish the JIssues tracker so it is in a position to replace the current Joomla tracker.
Expected Results: The JIssues tracker will be at a place where a transition can take place from Joomla Code to the issues tracker. This will involve working with the JIssues (http://issues.joomla.org/) and working through the issue list (https://github.com/joomla/jissues) as well as contributing any relevant code back into the Framework Project
Knowledge Prerequisite: Joomla Framework, JoomlaCode, Joomla Bug Tracking Process
Difficulty: Medium to Hard
Posible mentors: Michael Babker

Project: Component for managing predefined emails[edit]

Brief explanation: Many Joomla! extensions send confirmation mails to users. It will be great if Joomla! provides a powerful component, which will be used for creating predefined emails. The component has to provide classes, which will be used from developers for loading, parsing and sending those e-mails.
Expected Results:
  • Administration interface that will provide an easy way for creating and managing predefined emails.
  • Classes that will be used for loading, parsing and sending those emails.
Knowledge Prerequisite: PHP, object-oriented programming, Joomla CMS.
Difficulty: Medium to Hard
Possible mentors: Todor Iliev, Daniel Dimitrov

Project: Inline editing directly on any page[edit]

Brief explanation: The aim of this project is to add in the possibility of editing any page in Joomla using an inline editing tool. It would make articles editing easier, being able to do that without going to the admin interface. The proposed editor is Froala Editor(in inline mode) and it must interact with the media manager and use language support. The final result should be similar to [1].
Useful links:
Expected Results:
  • Edit articles in Joomla CMS directly from the page without going to admin interface.
  • Have an API for interacting with Froala Editor.
Knowledge Prerequisite: PHP, object-oriented programming, Joomla CMS (from a user point of view), Javascript.
Difficulty: Medium to Hard
Mentors: Stefan Neculai, Diana Neculai

Project: FrontEnd Components-Management and User-Management[edit]

Brief explanation: The aim of this project is to enable frontend logged authorized uses to manage component options and users. This was a idea when redesigning Joomla! and currently is in the CMS Roadmap. During last year global configuration and template configuration got a frontend configuration. Continuing that further there are 2 possible new frontend configurations:
  • Frontend management for components
  • Frontend user management

Since Joomla! CMS is moving towards Unified Site Administration, this project will play a key role there.

Useful links:
Expected Results:
  • Frontend logged authorize users can configure components via frontend
  • Frontend logged authorize users can manage users via frontend
Knowledge Prerequisite: PHP, Joomla CMS Components, MVC.
Difficulty: Medium to Hard

Project: Enhancing User Profiles[edit]

Brief explanation: The aim of this project is to enhance the existing user profiles by allowing to interact with social media. This will create the basic infrastructure for include social media profiles, and cms developers to profile services. Also this will use existing libraries in joomla and provide a flexible way to incorporate profile services.
Expected Results:
  • cms libraries for profile services (including a local version)
  • Managing keys for profile services
  • Top-level configuration (for webmasters) on which services are allowed to use
  • Enable individual users to specify which Profile service desire to use (select one from allowed ones)
  • Modernize frontend com_contact appearance
Knowledge Prerequisite: PHP, Joomla! Extensions Development, Understanding on Joomla! libararies (JFacebook, JLinkedin, JGoogle etc.), OAuth, Experience as a Joomla!CMS user.
Difficulty: Medium to Hard

Project: Improve Media Handling In Joomla![edit]

Brief explanation: The aim of this project is to add media (video & audio) handling capabilities into Joomla, with the help of external services. At the completion of the project, any interested Joomla extension should be able to handle media related things across this libraries.

Currently it is proposed to use YouTube and Vimeo for video handling, and SoundCloud for audio. But students are encourage for a better solution.

Useful links:

This could take similar approach as JFacebook, JLinkedin and JGoogle. Student expected to come-up with a good plan on how to incorporate new libraries with Joomla! CMS.

Expected Results:
  • Libraries for YouTube, Vimeo and SoundCloud with tests.
  • Library for CMS to handle Media and access above mentioned libraries with tests.
  • Libraries should provide video modification
Knowledge Prerequisite: PHP, Understanding on existing Joomla CMS libraries, Knowledge on mentioned APIs, Joomla! development experience.
Difficulty: Medium to Hard
Potential Mentors: Jonathan Cameron

Project: Extending Tags In Joomla![edit]

Brief explanation: The introduction of Tags is a key thing Joomla 3.x series. That helped a lot to easily keep track of different contents and ease the searching. But still there are drawbacks in following areas.
  • Misspelled tags
  • Short form of words in tags
  • Abbreviations in tags
  • US, UK spelling differences

Because of the above reasons, it’ll have higher chance of missing things when number of tags keep growing. Therefore, though this student is expected to introduce a new section for com_tags, which can accommodate re-tagging process.

Useful links:
Expected Results:
  1. Webmaster should be able to specify connection between tags through com_tags
  2. Underlying re-tagging process
  3. Manage a system for permanently mapping tags that were merged to the preferred tag
Knowledge Prerequisite: PHP, object-oriented programming, experience as a Joomla CMS developer and a user
Difficulty: Medium to Hard

Joomla Framework[edit]

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.

References:

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[edit]

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

Project: Improve Filesystem classes[edit]

Brief explanation: Replace static methods with public ones of classes File, Folder, Path. Let these things to be used as object with theirs methods and properties. Develop classes, which will be used as adapters, for some fundamental actions performed on those file system elements. The adapters should be for uploading, deleting, reading,...
Expected Results:
  • A set of well coded, fully unit tested and documented implementations for the file system classes.
  • Adapters for managing files on some of the most popular cloud services - Amazon S3, Google App Engine,...
  • Classes for validating files size, images,...
Knowledge Prerequisite: GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity with web services and Joomla! Framework.
Difficulty: Medium to Hard

Project: Improve Date classes[edit]

Brief explanation: Develop classes and methods that will give more power to developers working with dates.
Expected Results:
  • Methods that calculate dates for yesterday, begin of week, end of week, begin of month, end of month, begin of year, end of year,...
  • Methods that calculate time for begin of day, end of day,...
Knowledge Prerequisite: GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity Joomla! Framework.
Difficulty: Medium to Hard

Project: Composer GUI installer[edit]

Brief explanation: Creating an installer from the GUI with Composer. Both the Joomla Framework and the CMS are working towards extension packages that can be installed via Composer. A great advantage of Composer is that it handles all dependencies in the background. A disadvantage is, that - until now - Composer is used via the Command Line Interface. The goal of this GSOC project is to create an installer that uses Composer, but entirely from the GUI website administrator.

This project is now put under "Joomla Framework" but there is much interest for it in the Joomla CMS and also in other PHP-projects.

For more info see:

Expected Results:
  • A Composer based extension-installer in the Joomla CMS GUI, that can also be used on shared hosts with limited permissions to use a CLI.
  • The basis for this installer as a package in the Joomla Framework, that can be used by other PHP projects.
Knowledge Prerequisite: PHP, understanding of the use of Composer, understanding of Joomla's extension installer and "Install from Web" (formerly known as the " Joomla App Store"), knowledge of plans to split up Joomla in (composable) subprojects.
Difficulty: Medium to Hard