Actions

Difference between revisions of "GSOC 2013 Project Ideas"

From Joomla! Documentation

(Project: Object Relational Mapping (ORM) in Joomla)
Line 182: Line 182:
 
"As I'm using Doctrine when building complex Joomla extensions, I'd love to mentor this project" ~ Herman Peeren
 
"As I'm using Doctrine when building complex Joomla extensions, I'd love to mentor this project" ~ Herman Peeren
 
'''[[GSOC 2013 Project template]]'''
 
'''[[GSOC 2013 Project template]]'''
 +
 +
 +
====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
 +
 +
 +
<noinclude>[[Category:Google Summer of Code 2013]]</noinclude>
 +
  
 
{{dablink|Please add your project ideas here, you can use this '''[[GSOC 2013 Project template]]'''}}
 
{{dablink|Please add your project ideas here, you can use this '''[[GSOC 2013 Project template]]'''}}

Revision as of 01:42, 10 March 2013

Contents

150px‎

Welcome!

Welcome to the Joomla! Google Summer of Code (GSoC) 2013 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 [1]. 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 Platform 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 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

Project: Build New Media Manager

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 seemless integration for extensions to use. The improvements could include: add other not yet supported medias (PDF, MP·,...), providing a folder tree, file property information, upload capabilities, move/rename files and folders, use of JImage for image basic processing (resize, crop). The manager should also include ACL permissions, programmatic implementations and configurations, and be easily reusable into other Joomla extensions.
Expected Results: A new Media Manager component to improve the usability, functionality, and reusability of the extension.
Knowledge Prerequisite: Joomla Platform, PHP, MySQL, Javascript
Difficulty: Medium

Project: Convert JavaScript from MooTools to jQuery

Brief explanation: Version 3 of the CMS introduced Twitter Bootstrap and jQuery to the core code base. Previous versions of the CMS had been using MooTools as the preferred JavaScript library. Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user's JavaScript functionality. The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery.
Expected Results: Dependency on MooTools is reduced within the CMS.
Knowledge Prerequisite: Joomla CMS, PHP, JavaScript
Difficulty: Medium

Project: html contenteditable front-end editor for content, categories and modules

Brief explanation: Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.
Expected Results: Authors with ACL permissions should be able to directly edit the content (content and categories descriptions and titles) and modules (titles and content/settings, and inserting new modules as well from the front-end. The modules and content parameters editing should not be re-invented but just use the administration interface, if possible in front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.
Knowledge Prerequisite: A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.
Difficulty: Medium to Hard

Project: Add field 'created' in frontend article edit view

Brief explanation: When creating or modifying an article via frontend, the 'created' date is set automatically. Add an input 'created' wherein the date of creation can be modified.
Expected Results: The 'created' date of an article can be modified freely and even set to a future date.
Knowledge Prerequisite: PHP, little HTML
Difficulty: Easy

Project: Add plugin 'modal'

Brief explanation: Generate a plugin that adds the modal behaviour (JHTML::_('behavior.modal');). The plugin can be deactivated by a {}tag (like {modal state=0}).
Create some buttons for backend as well, that allows to create links with the modal attribute.
Background: A link with the attribute 'class="modal"' is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.
Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class 'modal' can easily be generated - via button and/or via editor.
Knowledge Prerequisite: PHP, HTML, Javascript
Difficulty: Easy/Medium

Project: Add plugin 'mvc override'

Brief explanation: Generate a plugin that enables the developer to overwrite models and controllers.
Expected Results: Any model and controller can be overridden.
Knowledge Prerequisite: Joomla! CMS, PHP
Difficulty: Medium

Project: Hathor is beautiful

Brief explanation: Make the admin template 'Hathor' more beautiful. Hathor is Isis' little sister. While Isis is breathtaking, Hathor still lacks a little css: She's edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.
Expected Results: Hathor is beautiful.
Knowledge Prerequisite: CSS
Difficulty: Easy

Project: Refactor document model containers

Brief explanation: When I say document model containers, what I'm really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.
Expected Results: A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.
Knowledge Prerequisite: Joomla! CMS, PHP, some html, some css, and some javascript.
Difficulty: Medium
References:
(the editor would not allow me to post the link)

Project: Add fieldtype 'oclock' in fields

Brief explanation: Joomla!'s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write another field that enables the developer to create a time field, call it 'oclock' or something else sensible. The display of the time should be configurable via a format attribute. It should have the look'n'feel of the calendar field (Calendar form field type)
Expected Results: Generation of a time field called in xml via <field type="oclock" .../>
Knowledge Prerequisite: PHP, HTML, Javascript
Difficulty: Medium

Project: Task scheduler and manager

Brief explanation: Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on
Expected Results:: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task
References:
Knowledge Prerequisite:: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.
Difficulty: Hard

Joomla Framework

The Joomla Platform allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Platform 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.

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: 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 would use a shared table for all content and a specialised table per content type. In order to implement that the MVC was simplified and decoupled from several dependecies. A JData class was made to store data in and a JDataMapper to map the database tables (the general content table and the specialised table for the content type) to the data. In terms of Martin Fowler's Patterns of Enterprise Architecture Patterns (PEAA, page 285-292): Class Table Inheritance. This UCM would be a replacement for the current JTable classes.
This new model still has aspects of the Active Record pattern. A more general Data Mapper would make some implementations easier, especially when one-to-many and many-to-many relations are in play. A lot of this has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel; nowadays you can easily integrate other frameworks using Composer/Packagist. Some work has been done to use Doctrine ORM in Joomla extensions, but a more general approach would be great. The JDataMapper-class could eventually be a special case of this, or, as intended, be an interface between JData and a full blown ORM. The UCM-plans would be realised, but in a more general, object oriented and extendible way.
Expected Results: The focus for a GSOC-project could be on a more general ORM interface in which specific ORM packages could fit, or could be a specific implementation (like Doctrine) with which core CMS extensions could be refactored. Both the Joomla Platform and the CMS would benefit from this project.
Knowledge Prerequisite: Object Relational Mapping theory.
References:

"As I'm using Doctrine when building complex Joomla extensions, I'd love to mentor this project" ~ Herman Peeren GSOC 2013 Project template


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