Archived

Difference between revisions of "GSOC 2012 Project Ideas"

From Joomla! Documentation

Line 116: Line 116:
 
====Project: JStemmer====
 
====Project: JStemmer====
  
:'''Brief explanation:''' Currently the Joomla CMS includes only a Joomla stemmer for English while the Snowball stemmer is wrapped. Build Joomla stemmers for other languages as part of the language package in the platform.
+
:'''Brief explanation:''' Currently the Joomla CMS includes only a Joomla stemmer for English while the Snowball stemmer is wrapped. We would like to move the English stemmer to the Joomla platform and make the class useful by adding Joomla stemmers for other languages.
https://github.com/joomla/joomla-cms/tree/master/administrator/components/com_finder/helpers/indexer
+
 
 +
References:
 +
* https://github.com/joomla/joomla-cms/tree/master/administrator/components/com_finder/helpers/indexer
 +
* http://snowball.tartarus.org/
 +
* http://en.wikipedia.org/wiki/Stemming
 +
*
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, language issues, web standards,  
 
:'''Knowledge Prerequisite:''' Joomla Platform, language issues, web standards,  
Line 124: Line 129:
  
 
:'''Mentor:'''
 
:'''Mentor:'''
:'''Expected Results:'''
+
:'''Expected Results:''' A platform class for stemming with subclasses for a number of specific languages (number and specific languages to be determined in discussion with mentor and the search and translation teams). The final product should be fully documented and unit tested.
  
 
====Project: JCommerce====
 
====Project: JCommerce====

Revision as of 07:47, 5 March 2012

This page has been archived. This page contains information for an unsupported Joomla! version or is no longer relevant. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Welcome![edit]

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

Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2012

Ideas[edit]

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.

Joomla CMS[edit]

Source Code Developer Mailing List

Project: Language Installation[edit]

Create an interface to install language packs from a generated list of accredited language packs during Joomla installation and subsequently from the administrator interface, either the installer or the language manager.

Knowledge Prerequisite: Joomla Platform, JSON
Difficulty: Medium to Hard
Mentor:

Project: Joomla Translations[edit]

Brief explanation: Create a centralized translation tool, which will be a kind of Facebook Self-Translation App for Joomla! communities to have better translation.
Expected Results: 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
Knowledge Prerequisite: PHP, JavaScript, MySQL, Joomla! Framework
Difficulty: Medium
Mentor: Edvard Ananyan

Project: CMS Unit Testing[edit]

Brief explanation: The Joomla CMS has its own set of classes that augment the Joomla platform but these are not well tested. The goal of this project is to improve the code coverage by writing unit tests for library classes specific to the Joomla CMS.
Expected Results: The student will be expected to review the current code coverage for the Joomla CMS libraries (/libraries/cms) and write and agreed-upon number of unit tests with particular attention to packages and classes that are below 50% coverage.
Knowledge Prerequisite: PHP, PHPUnit
Difficulty: Medium
Mentor:

Project: Add Article Image support to Core Content Modules[edit]

Brief explanation: Joomla 2.5.x ships with several core content modules. These modules can display article lists or links. However they do not support bringing in article images. This project would be to make some minor code updates to all the core content modules to add article image support and parameters. Some basic parameters would be to show / hide the article image, specify a thumbnail size, enable or disable article links on the image, and whether or not to respect the image's proportion when resized as a thumbnail.
Expected Results: The student will be expected to modify and update Joomla's core content modules and make modifications to the multiple files in the MVC structure to add parameters, and add additional code to the module's HTML output. The module should interface with the Joomla core class JImage as well to create the thumbnail image.
Knowledge Prerequisite: PHP, Joomla! Framework
Difficulty: Easy
Mentor: Chad Windnagle

Joomla Platform[edit]

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 web services. 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.

All code contributions must follow Joomla coding standards and include full unit test coverage.

Project: Document Classes[edit]

Brief explanation: Create JCard, JCalendar, JCard and other extensible classes that will read and produce standards compliant documents of specific types (e.g. vCard,iCal).

References (examples):

Knowledge Prerequisite: Joomla Platform, XML, web standards,
Difficulty: Medium to Hard
Mentor:
Expected Results: A fully developed, unit tested and document set of classes (specific number and choices will be finalized in discussion with the mentor and platform maintainers) and a simple platform application illustrating use.

Project: Library to Compile and Compress Javascript and CSS Files[edit]

Brief explanation: Compiling and compressng javascript and CSS files can substantially the improve performance of a web site. Providing a package to do this will help the CMS and other web applications.
Knowledge Prerequisite: Joomla Platform, PHP, javascript
Difficulty: Medium to Hard
Mentor:
Expected Results:

Project: JMailer[edit]

Brief explanation: Build out a JMailer class to replace PHPMailer in the platform. This should build upon preliminary work that has already been implemented and is available here.
Knowledge Prerequisite: Joomla Platform, web standards, e-mail protocols.
Difficulty: Medium to Hard
Mentor:
Expected Results:

Project: JStemmer[edit]

Brief explanation: Currently the Joomla CMS includes only a Joomla stemmer for English while the Snowball stemmer is wrapped. We would like to move the English stemmer to the Joomla platform and make the class useful by adding Joomla stemmers for other languages.

References:

Knowledge Prerequisite: Joomla Platform, language issues, web standards,
Difficulty: Medium to Hard
Mentor:
Expected Results: A platform class for stemming with subclasses for a number of specific languages (number and specific languages to be determined in discussion with mentor and the search and translation teams). The final product should be fully documented and unit tested.

Project: JCommerce[edit]

Brief explanation: Create a commerce class based on
Knowledge Prerequisite: Joomla Platform, JSON, web security, standards
Difficulty: Medium to Hard
Mentor:
Expected Results:

Project: JTranscode[edit]

Brief explanation: Create a class for transcoding video using ffmpeg.
Knowledge Prerequisite: Joomla Platform, JSON, standards, media handling
Difficulty: Medium to Hard
Mentor:
Expected Results:

References:

Project: Extend JImage to work with IMagick[edit]

Brief explanation: JImage is an important library added in late 2011. Extend it to work with Imagick.
Knowledge Prerequisite: Joomla Platform
Difficulty: Medium to Hard
Mentor:
Expected Results:


References:

Project: JGoogle Package[edit]

Brief explanation: Working from the model of JGithub, implement a class for incorporating Google APIs.

Reference:


Knowledge Prerequisite: Joomla Platform, familiarity with working with APIs
Difficulty: Medium to Hard
Mentor:
Expected Results:

Project: JFacebook Package[edit]

Brief explanation: Working from the model of JGithub, implement a class for incorporating Google APIs.

Reference:


Knowledge Prerequisite: Joomla Platform, familiarity with working with APIs
Difficulty: Medium to Hard
Mentor:
Expected Results:

Project: JAmaonS3 Package[edit]

Brief explanation: Working from the model of JGithub, implement a class for incorporating the Amazon S3 APIs.

Reference:


Knowledge Prerequisite: Joomla Platform, familiarity with working with APIs
Difficulty: Medium to Hard
Mentor:
Expected Results:

Project: JRackspace Package[edit]

Brief explanation: Working from the model of JGithub, implement a class for incorporating Rackspace Cloud APIs.

Reference:


Knowledge Prerequisite: Joomla Platform, familiarity with working with APIs
Difficulty: Medium to Hard
Mentor:
Expected Results:

Project: Social Package[edit]

Brief explanation: Over the last several years, social media has become a dominant force in online media. Based on the number of extensions interacting with various social media APIs, it would be logical to build a Social package for the Joomla! Platform that provides a common and simplified interface to post and retrieve data from various social media networks.
Knowledge Prerequisite: Joomla Platform, familiarity with social media APIs (Facebook, Twitter, Google+, etc.), OAuth
Difficulty: Medium to Hard
Mentor: Michael Babker
Expected Results:

Project: Platform Unit Testing[edit]

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
Mentor:

Platform Applications[edit]

The creation of useful platform applications that can also serve as examplars for other platform developers is a third type of project. These applications, whether web or command line based, are built on the Joomla! Platform.

References

Project: Platform Application to Create PHAR Packages[edit]

Brief explanation: Create a platform application that creates PHAR packages for each library in the Joomla Platform.

Reference:


Knowledge Prerequisite: Joomla Platform, PHP
Difficulty: Medium to Hard
Mentor:

Project: Platform Example or Building Block Applications[edit]

Brief explanation: The Platform Examples repository currently contains a number of very simple sample "Hello world!" applications. Create a number of example web and command line applications using the platform API that could be used as building blocks by developers building more complex applications. Examples would include authentication, cache, form, filesystem, http, and streams classes.


Knowledge Prerequisite: Joomla Platform, PHP
Difficulty: Medium to Hard
Mentor:


Project: Joomla Platform Application Directory[edit]

Brief explanation: The Joomla project has several directory sites dedicated to extensions for the Joomla CMS (the JED) and free and commercial resources (the JRD). With the release of the Joomla Platform, and it's particular attention to allowing other types of applications (not just the CMS), there is a need for a new website to act as a directory for these applications. The goal of this project is to build a new Joomla Platform application (not a Joomla component but a full application) to serve as this directory.
Expected Results: The student will be expected to build a new web application based on JApplicationWeb and the new Universal Content Model (UCM) package loosely inline with the other Joomla directory sites (the JED and the JRD). This is expected to be a "phase 1" project where the features will include user registration (agreeing to terms) and login, simple information pages (like Joomla articles) and listing pages for Joomla Platform applications. Suitable fields will be required and should include such things as application type (command line application, daemon, web application, web service, etc), what the application does, how to get it and so forth. The student is not expected to design the final template but should look to Bootstrap for basic inspiration. Simple categorization will also be required. Global search can be added if time permits.
Knowledge Prerequisite: PHP, OOP
Difficulty: Hard but very rewarding
Mentor: Andrew Eddie