Difference between revisions of "Summer of Code 2010 Project Ideas"

From Joomla! Documentation

 
(9 intermediate revisions by 6 users not shown)
Line 54: Line 54:
 
* Map all addresses in a category of contacts
 
* Map all addresses in a category of contacts
  
:'''Mentor:''' Marcelo Eden
+
:'''Mentor:''' Marcelo Eden, Alessandro Nadalin
 
:'''Skills:''' Joomla CMS framework, Javascript
 
:'''Skills:''' Joomla CMS framework, Javascript
 
:'''Difficulty:''' medium
 
:'''Difficulty:''' medium
Line 73: Line 73:
 
* Terms of service plugin.
 
* Terms of service plugin.
  
:'''Mentor:''' Garthee
+
:'''Mentor:''' Garthee, Alessandro Nadalin
 
:'''Skills:''' Joomla CMS framework, MVC, PHP 5.2, MySQL
 
:'''Skills:''' Joomla CMS framework, MVC, PHP 5.2, MySQL
 
:'''Difficulty:''' medium
 
:'''Difficulty:''' medium
Line 81: Line 81:
 
This project would involve a component that builds other components, modules, plugins, languages and templates in skeletal form. It could also be used to create/edit new component and module layout overrides in templates.
 
This project would involve a component that builds other components, modules, plugins, languages and templates in skeletal form. It could also be used to create/edit new component and module layout overrides in templates.
  
:'''Mentor:''' Marcelo Eden, Oleg Nesterov
+
:'''Mentor:''' Marcelo Eden, Oleg Nesterov, Alessandro Nadalin
 
:'''Skills:''' Joomla CMS framework, MVC, PHP 5.2, MySQL
 
:'''Skills:''' Joomla CMS framework, MVC, PHP 5.2, MySQL
 
:'''Difficulty:''' medium
 
:'''Difficulty:''' medium
Line 102: Line 102:
 
Work has been started on this with the goal of a continuous build model, but test coverage is incomplete. We need to add many more unit tests. Proposals should specify an area of concentration. Several projects for different areas would be welcome.
 
Work has been started on this with the goal of a continuous build model, but test coverage is incomplete. We need to add many more unit tests. Proposals should specify an area of concentration. Several projects for different areas would be welcome.
  
:'''Mentor:'''
+
:'''Mentor:''' Alessandro Nadalin
 
:'''Consultant:''' Ian MacLennon
 
:'''Consultant:''' Ian MacLennon
 
:'''Skills Needed:''' PHP, PHPUnit, Joomla! Framework
 
:'''Skills Needed:''' PHP, PHPUnit, Joomla! Framework
Line 110: Line 110:
 
Work has been started on this with the goal of a continuous build model, but test coverage is incomplete. We need to add many more system tests. Proposals should specify an area of concentration. Several projects for different areas would be welcome.
 
Work has been started on this with the goal of a continuous build model, but test coverage is incomplete. We need to add many more system tests. Proposals should specify an area of concentration. Several projects for different areas would be welcome.
  
:'''Mentor:'''
+
:'''Mentor:''' Alessandro Nadalin
 
:'''Skills Needed:''' PHP, Selenium, Joomla! CMS
 
:'''Skills Needed:''' PHP, Selenium, Joomla! CMS
 
:'''Difficulty:''' Medium
 
:'''Difficulty:''' Medium
Line 142: Line 142:
 
* etc
 
* etc
  
:'''Mentor:''' Gary Brooks
+
:'''Mentor:''' Rob Clayburn, Gary Brooks
 
:'''Skills Needed:''' PHP, Javascript, Joomla! CMS
 
:'''Skills Needed:''' PHP, Javascript, Joomla! CMS
 
:'''Difficulty:''' Hard
 
:'''Difficulty:''' Hard
Line 206: Line 206:
 
See
 
See
 
*[http://www.facebook.com/translations/ Facebook Self-Translation]
 
*[http://www.facebook.com/translations/ Facebook Self-Translation]
 +
*[http://localize.drupal.org]
  
 
:'''Mentor:'''
 
:'''Mentor:'''
Line 329: Line 330:
 
:'''Skills:''' Joomla! Framework, MVC, PHP 5.2+, mySQL, AJAX (mootools)
 
:'''Skills:''' Joomla! Framework, MVC, PHP 5.2+, mySQL, AJAX (mootools)
 
:'''Difficulty:''' Hard
 
:'''Difficulty:''' Hard
 +
 +
====Blank Slate Extensions====
 +
 +
The basic idea is to develop a set of example extensions that have less than useful functionality, but show developers some of the core features of using the Joomla Framework.
 +
 +
* Design a sample component that manages a set of records in the database
 +
* Design a sample module that relies on the component and integrates with some of the behaviors
 +
* Design a sample plugin or two that demonstrate the ways plugins can interact with the rendering process
 +
* Utilize pure MVC methodology
 +
* Concept is to focus on developing a project that can be easily repurposed
 +
 +
Project would best suit a programmer with an extreme desire to dig deep into the API. These blank slate extensions could be available for download to developers, for study or for building upon.
 +
 +
:'''Mentor:''' Oleg Nesterov
 +
:'''Skills:''' Joomla CMS framework, MVC, PHP, MySQL, Javascript, MooTools
 +
:'''Difficulty:''' Hard
 +
 +
====Rewrite the internal research with Zend_Lucene====
 +
 +
No many words to say, it would be great if some student would like to
 +
do this amazing job: full-text MySQL make the environment spend lots
 +
of resources, quering a lucene index wouldn't.
 +
 +
The idea is to bring the Zend_Lucene engine, put it on Joomla! and
 +
start rewriting an internal research from scratch.
 +
 +
Things you'll need to focus are:
 +
* an agile strategy to develop this new search engine
 +
* localize entities suitable for the search engine ( articles, contacts, ... )
 +
* add event/triggers for the CRUD of those entities
 +
* index generation/optimization
 +
 +
:'''Mentor:''' Alessandro Nadalin
 +
:'''Skills:''' Joomla CMS framework, MVC, PHP, MySQL, Zend Framework, Lucene
 +
:'''Difficulty:''' Medium - Hard
 +
 +
====Improve Joomla user integration with CiviCRM contact records====
 +
 +
CiviCRM is a contact relationship management extension for Joomla (www.civicrm.org). There are some existing limitations/weaknesses with how Joomla users and CiviCRM contacts connect and interact. The following improvements could be considered:
 +
 +
* delete J user when related C contact is deleted
 +
* allow creation of J user directly from C contact (add button to create user)
 +
* improve editing of J user from within C contact (account popup in modal box)
 +
* ensure email is updated in both C and J if altered from either side
 +
* include J user handling in the C contact deduplication/merge process
 +
* allow automatic redirection of J user registration pages to CiviCRM profile from within the Civi interface (global settings, via a system plugin)
 +
* begin integrating C ACL functions with J 1.6 ACL
 +
 +
:'''Mentor:''' Brian Shaughnessy
 +
:'''Skills:''' Joomla CMS framework, CiviCRM, PHP, MySQL
 +
:'''Difficulty:''' Medium
 +
 +
====JRest====
 +
 +
Develop a JRest class for developers to use REST. Unit testing necessary. Provide both a client and service library.
 +
 +
:'''Mentor:'''
 +
:'''Skills:''' Joomla CMS framework, MVC, PHP, MySQL, REST
 +
:'''Difficulty:''' Hard
 +
 +
====Admin UX Improvements====
 +
 +
The Joomla! admin could do with some improvements to streamline the user experience. This includes making use of AJAX requests to avoid page refreshes where possible. This will be extremely helpful, considering the amount of button clicks and the amount of page refreshes those lead to. It will make managing content of a site at the backend more fun.
 +
 +
Here are a few examples where page refreshes can be avoided:
 +
 +
* Reordering articles/modules/categories
 +
* Changing publish status of articles/modules
 +
* Enabling/disabling a plugin
 +
* Trashing an article/module/plugin
 +
* Changing position of a module
 +
* While filtering (in 1.6)
 +
 +
This could be implemented as a separate template derived from the default one.
 +
 +
:'''Mentor:'''
 +
:'''Skills:''' JavaScript, Mootools, Joomla CMS Framework
 +
:'''Difficulty:''' Medium

Latest revision as of 14:26, 21 March 2010

Welcome![edit]

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

Ideas[edit]

Project Management Tools[edit]

This project could include:

  • Develop a component with project collaboration features (like BaseCamp: http://basecamphq.com/).
  • ProgressBar views based on completed task based on sprints, milestones, project...
  • Different front-end views for Clients, Team, Managers...
  • A module to show the active projects and is respective ProgressBars.
  • Allow Comments and discussions on tasks
  • Allow manager/team to set the function points value of each task (eq: planing poker)
Mentor: Marcelo Eden
Skills: Joomla CMS framework, MVC, PHP, MySQL, Javascript, MooTools
Difficulty: Hard

Improve Image Presentation Capabilities[edit]

This project could include:

  • Expand the JHtml modal behaviour to support groups of images (eg Litebox or similar).
  • A content plugin to support modal gallery displays or inline image sliders.
  • A module to support galleries of images.
Mentor: Unassigned
Skills: Joomla CMS framework, MVC, PHP 5.2, MySQL
Difficulty: medium

Audio/Video Support[edit]

This project could include:

  • Sourcing or creating a FOSS flash audio (see http://flash-mp3-player.net/) and video player.
  • A content plugin to support embedding different types of audio files easily in content.
  • A content plugin to support embedding different types of video files (both local and hosted, eg vimeo) easily in content.
Mentor: Marcelo Eden
Skills: Joomla CMS framework, Flash
Difficulty: medium

Google Map Support[edit]

This project could include:

  • An editor-xtd plugin that allows you to insert "map code" for a content plugin.
  • A content plugin to display a map with content.
  • A module to display a map.
  • Support for finding directions.
  • Map based on address data in individual contacts
  • Map all addresses in a category of contacts
Mentor: Marcelo Eden, Alessandro Nadalin
Skills: Joomla CMS framework, Javascript
Difficulty: medium

Simple User Subscription and User Utilities[edit]

This project would be suite of extensions that would provide enhanced user features such as:

  • Allow you to manage user account expiry.
  • Allow you to manage password expiry.
  • Allow for configurable email messages.
  • Allow for user registration approval.
  • Clean up bad user records.
  • Run simple reports on user registration data.
  • Bulk import of users and user information.
  • Bulk export of users and user information.
  • Allow user to self delete.
  • Terms of service plugin.
Mentor: Garthee, Alessandro Nadalin
Skills: Joomla CMS framework, MVC, PHP 5.2, MySQL
Difficulty: medium

Extension Builder[edit]

This project would involve a component that builds other components, modules, plugins, languages and templates in skeletal form. It could also be used to create/edit new component and module layout overrides in templates.

Mentor: Marcelo Eden, Oleg Nesterov, Alessandro Nadalin
Skills: Joomla CMS framework, MVC, PHP 5.2, MySQL
Difficulty: medium

Joomla! API Reference[edit]

Currently the Joomla! API reference at [1] is not as useful as it could be. Develop a way to present the information in a useful (and search able) format and with the ability to have user contributed notes in a way similar to [2].

Currently api.joomla.org is static html produced by phpdocumenter. The project could achieve these goals by developing an extension or framework application to integrate the output from phpdocumenter with Joomla and incorporating a commenting style system.

Note: There are also materials here in docuwiki format [3] that could be incorporated. Other material is here [4].

Note: If you are interested in working on the API Reference then please talk to the Documentation Team before starting as we are currently working on a very different approach from the one described here.

Mentor:
Skills Needed: PHP, MVC, MySQL, Joomla! CMS Framework
Difficulty: Hard

Improve Unit Test Coverage[edit]

Work has been started on this with the goal of a continuous build model, but test coverage is incomplete. We need to add many more unit tests. Proposals should specify an area of concentration. Several projects for different areas would be welcome.

Mentor: Alessandro Nadalin
Consultant: Ian MacLennon
Skills Needed: PHP, PHPUnit, Joomla! Framework
Difficulty: Medium

Improve System (Functional) Test Coverage[edit]

Work has been started on this with the goal of a continuous build model, but test coverage is incomplete. We need to add many more system tests. Proposals should specify an area of concentration. Several projects for different areas would be welcome.

Mentor: Alessandro Nadalin
Skills Needed: PHP, Selenium, Joomla! CMS
Difficulty: Medium


MooTools[edit]

Build a content editor with Moo Tools.

Mentor:
Skills Needed: PHP, Javascript, Joomla! CMS, MooTools
Difficulty: Medium

Enhanced Template Manager[edit]

Jooomla! 1.6 improves the template manager substantially. Continue this by creating the ability to manage overrides form the template interface, develop an easier interface for beginners to modify css, and similar improvements in usability.

Mentor:
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Medium

Social layer[edit]

Joomla Social API. Not necessarily a component like Community Builder but an API to allow other components to build on top of. Consider API for

Mentor: Rob Clayburn, Gary Brooks
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Hard

Advanced Voting[edit]

Implement an advanced voting system that allows voting on several named dimensions of an item. Should work across all components, possibly as an improvement to the core voting or possibly as a separate extension.

Mentor: Garthee
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Medium

Threaded Commenting and Comment Rating[edit]

Improve the core comment component so that it supports (a) threaded commenting and (b) comment rating (comments can be voted on or give thumbs up thumbs down and commenters can be rated based on comment votes). Troll rating system to allow auto un-publication of comments passing a set criterion of reporting. See Scoop's system as an example of the concept.

Mentor:
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Hard


Community Moderation[edit]

Improve the core comment component so that it supports community moderation of articles and comments in a manner similar to Scoop [5]

Mentor:
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Hard

Module Manager Improvements[edit]

Improve the User Interface and ease of use for the module manager. Examples:

  • Make it easier to select groups of pages to assign modules to.
  • Assign modules to all items in a submenu.
  • Provide ability to assign/override module chrome on a per-module basis through the manager
Mentor: Brian Shaughnessy
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Medium

Moo Tools Depender[edit]

Implement Moo Tools depender within Joomla.

Depender is the official library builder for MooTools libraries.

See

Mentor:
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Easy

Joomla Translations[edit]

Create a centralized translation tool, which will be a kind of Facebook Self-Translation App for Joomla! communities to have better translation.

The centralized website will make better translations for Joomla! It will help non-English speaking translation teams to get feedback about translation quality from people, who speak the same language. So translation teams can involve more volunteers in translation process. It will help also extension developers to translate their software. It will enable ability to submit a new extension translation INI file in English and get the translated version from the translation teams.

See

Mentor:
Skills Needed: PHP, Javascript, Joomla! CMS
Difficulty: Medium


JMail[edit]

Create a Joomla! library to replace the phpmailer library. This should build on existing work in the xxx branch. This would include POP and SMTP clients and data translation. The goal should be to process both read and write. Complete unit testing is a must for this.

Mentor:
Consultant: Louis Landry
Skills Needed: PHP, Joomla! API
Difficulty: Hard


JFeed[edit]

Create a Joomla! library to replace the simplepie library. This should build on existing work in the xxx branch. This should plan for the future such as incorporating advanced atom specs and the ability to embed podcasts.

Complete unit testing is a must for this.

Mentor:
Consultant: Louis Landry
Skills Needed: PHP, Joomla! API
Difficulty: Hard

JXMLRPC[edit]

Complete the Joomla! library for XMLRPC. This should build on existing work in the xxx branch.

Complete unit testing is a must for this.

Mentor: Gary Brooks
Consultant: Louis Landry
Skills Needed: PHP, Joomla! API
Difficulty: Medium

JCalendar[edit]

Create a JCalendar class. This should write iCal and hCal.

Complete unit testing is a must for this.

Mentor:
Consultant: Louis Landry
Skills Needed: PHP, Joomla! API
Difficulty: Hard


JCard[edit]

Create a JCard class. This should write vCard and hCard.

Complete unit testing is a must for this.

Mentor:
Consultant: Louis Landry
Skills Needed: PHP, Joomla! API
Difficulty: Hard

Cache Improvements and Tests[edit]

Mentor:
Consultant: Louis Landry
Skills Needed: PHP, Joomla! API
Difficulty: Hard

JImage[edit]

Mentor:
Consultant: Louis Landry
Skills Needed: PHP, Joomla! API
Difficulty: Hard

Google Wave/Apps API Integration[edit]

Integrate the functionality of Google Wave into the Publishing Workflow and/or Site Management processes.

Mentor: Matt Lipscomb, Sandra Warren
Skills Needed: PHP, MySQL, Joomla! API, Google Wave/Apps API
Difficulty: Hard

Improved Search[edit]

Currently Joomla! does not support term weights. This provides a disadvantage to many sites that rely on search. Users will not find the things that they need and you will loose those users.

This project would include the following:

  • Providing a more advance search API.
  • Create a weight structure for the search API (example: http://phpir.com/alternative-term-weighting)
  • Provide a clean AJAX Advance Search
  • Improve the plugin support for old and new plugins
Mentor: Steven Pignataro - 'corePHP' (www.corephp.com)
Skills: Joomla! CMS Framework, MVC, PHP 5.2+, mySQL, AJAX (mootools)
Difficulty: Advanced

Page Versioning Extension[edit]

Build on work done in the past two years to add page versioning to Joomla!. Create a 1.6 content versioning extension with the goal that this work could be integrated into the core Joomla CMS for future releases. The Page Versioning Extension will allow the ability for frontend and backend content users to be able to save and re-publish/revert previously saved versions of content items that they have access to.

Further user permissions could be introduced in order to restrict access to this overall feature.

Features could include a visual and html code difference between the current and previously saved versions, as well as general searching data such as dates and time of previous saved entries of that content.

Mentor: Vic Drover
Skills: Joomla! Framework, MVC, PHP 5.2+, mySQL, AJAX (mootools)
Difficulty: Medium

Search Plugin Tool and Search Display Customization[edit]

As more and more usage of 3PD extensions occurs, those extensions have data that needs to be integrated into the search capabilities. This idea is part tool, and part plugin. Create an installable tool component that can analyze the database for relevant fields in the database that are added by 3PD components. Display those fields to be selectable in the component and once selected, have the tool create a search plugin to augment either the integrated search or various 3PD search solutions. Once the plugin is created have a second part of the component allow the search results display to be organized in various ways that are customizable. This tool could be part of setting up a site, or could be run at any given time that something new is added to add new fields of data that may be created and needed to be part of search.

Would be an interesting project mixed with Improved Search to include weighting.

Mentor:
Skills: Joomla! Framework, MVC, PHP 5.2+, mySQL, AJAX (mootools)
Difficulty: Hard

Blank Slate Extensions[edit]

The basic idea is to develop a set of example extensions that have less than useful functionality, but show developers some of the core features of using the Joomla Framework.

  • Design a sample component that manages a set of records in the database
  • Design a sample module that relies on the component and integrates with some of the behaviors
  • Design a sample plugin or two that demonstrate the ways plugins can interact with the rendering process
  • Utilize pure MVC methodology
  • Concept is to focus on developing a project that can be easily repurposed

Project would best suit a programmer with an extreme desire to dig deep into the API. These blank slate extensions could be available for download to developers, for study or for building upon.

Mentor: Oleg Nesterov
Skills: Joomla CMS framework, MVC, PHP, MySQL, Javascript, MooTools
Difficulty: Hard

Rewrite the internal research with Zend_Lucene[edit]

No many words to say, it would be great if some student would like to do this amazing job: full-text MySQL make the environment spend lots of resources, quering a lucene index wouldn't.

The idea is to bring the Zend_Lucene engine, put it on Joomla! and start rewriting an internal research from scratch.

Things you'll need to focus are:

  • an agile strategy to develop this new search engine
  • localize entities suitable for the search engine ( articles, contacts, ... )
  • add event/triggers for the CRUD of those entities
  • index generation/optimization
Mentor: Alessandro Nadalin
Skills: Joomla CMS framework, MVC, PHP, MySQL, Zend Framework, Lucene
Difficulty: Medium - Hard

Improve Joomla user integration with CiviCRM contact records[edit]

CiviCRM is a contact relationship management extension for Joomla (www.civicrm.org). There are some existing limitations/weaknesses with how Joomla users and CiviCRM contacts connect and interact. The following improvements could be considered:

  • delete J user when related C contact is deleted
  • allow creation of J user directly from C contact (add button to create user)
  • improve editing of J user from within C contact (account popup in modal box)
  • ensure email is updated in both C and J if altered from either side
  • include J user handling in the C contact deduplication/merge process
  • allow automatic redirection of J user registration pages to CiviCRM profile from within the Civi interface (global settings, via a system plugin)
  • begin integrating C ACL functions with J 1.6 ACL
Mentor: Brian Shaughnessy
Skills: Joomla CMS framework, CiviCRM, PHP, MySQL
Difficulty: Medium

JRest[edit]

Develop a JRest class for developers to use REST. Unit testing necessary. Provide both a client and service library.

Mentor:
Skills: Joomla CMS framework, MVC, PHP, MySQL, REST
Difficulty: Hard

Admin UX Improvements[edit]

The Joomla! admin could do with some improvements to streamline the user experience. This includes making use of AJAX requests to avoid page refreshes where possible. This will be extremely helpful, considering the amount of button clicks and the amount of page refreshes those lead to. It will make managing content of a site at the backend more fun.

Here are a few examples where page refreshes can be avoided:

  • Reordering articles/modules/categories
  • Changing publish status of articles/modules
  • Enabling/disabling a plugin
  • Trashing an article/module/plugin
  • Changing position of a module
  • While filtering (in 1.6)

This could be implemented as a separate template derived from the default one.

Mentor:
Skills: JavaScript, Mootools, Joomla CMS Framework
Difficulty: Medium