Difference between revisions of "GSOC 2014 Project Ideas"

From Joomla! Documentation

Line 161: Line 161:
  
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
 +
 +
:'''Possible mentors:''' Todor Iliev, Daniel Dimitrov
  
 
== Joomla Framework ==
 
== Joomla Framework ==

Revision as of 14:53, 23 February 2014

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

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