Actions

Project Ideas

From Joomla! Documentation

Revision as of 19:02, 29 June 2012 by Elin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  • Do you want to really learn to code in Joomla?
  • Are you looking for an interesting code challenge?
  • Do you just love to code?

Contents

This is a list of some ideas to get you started.

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: Document Classes

Brief explanation: Create JCard, JCalendar and other extensible classes that will read and produce standards compliant documents of specific types (e.g. vCard,iCal).
References:
Knowledge Prerequisite: Joomla Platform, XML, web standards,
Difficulty: Medium to Hard
Expected Results: A fully developed, unit tested and documented 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: JMailer

Brief explanation: Build out a JMailer class to replace PHPMailer in the platform. This should build upon preliminary work that has already been implemented.

The mail class is mostly a value object and shouldn't be much more complex than it is except handling attachments, etc. The JMailer class (which would obviously be renamed anyway) would need to be reimagined to essentially use the clients to send / retrieve mail

Knowledge Prerequisite: Joomla Platform, web standards, e-mail protocols.
Difficulty: Medium to Hard
Expected Results: A platform package for JMailer that provides the same functionality as PHPMailer, with testing and documentation.

Project: JStemmer

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

Brief explanation: Create a commerce class based on preliminary work that has been done.
References:
Knowledge Prerequisite: Joomla Platform, JSON, web security, standards
Difficulty: Medium to Hard
Expected Results: A completed commerce class (including documentation and tests) for cart management and interaction with payment processors.

Project: JTranscode

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

Project: Extend JImage to work with IMagick

Brief explanation: JImage is an important library added in late 2011. Extend it to work with Imagick.
References:
Knowledge Prerequisite: Joomla Platform
Difficulty: Medium to Hard
Expected Results: Complete, documented and tested code to extend the JImage class to use Imagick

Project: JAmazonS3 Package

Brief explanation: Working from the model of JGithub, implement a class for incorporating the Amazon S3 APIs.
References:
Knowledge Prerequisite: Joomla Platform, familiarity with working with APIs
Difficulty: Medium to Hard
Expected Results: A set of classes and tests for API client code for web services.

Project: JRackspace Package

Brief explanation: Working from the model of JGithub, implement a class for incorporating Rackspace Cloud APIs.
References:
Knowledge Prerequisite: Joomla Platform, familiarity with working with APIs
Difficulty: Medium to Hard
Expected Results: A set of classes and tests for API client code for web services.


Project: JOpenStreetMap Package

Brief explanation: Implement a class for incorporating OpenStreetMap for both editing and using data.
References:
Knowledge Prerequisite: Joomla Platform, familiarity with working with APIs, databases, xml, geodata
Difficulty: Medium to Hard
Expected Results: A set of classes for interacting with Open Street Map.

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