Actions

Archived

Difference between revisions of "GSOC 2012 Project Ideas"

From Joomla! Documentation

(Project: Joomla Translations)
m (Hutchy68 moved page GSOC 2012 Project Ideas to Archived:GSOC 2012 Project Ideas: cleaning up)
 
(31 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
{{RightTOC}}
 +
 
==Welcome!==
 
==Welcome!==
 
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. 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!
 
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. 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!
Line 6: Line 8:
 
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/spreadsheet/viewform?formkey=dERlY0dxekFUWEg4ME1YZDhVMDhJMGc6MQ#gid=0 Mentor Application Form].
 
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/spreadsheet/viewform?formkey=dERlY0dxekFUWEg4ME1YZDhVMDhJMGc6MQ#gid=0 Mentor Application Form].
  
If you are interested in applying as a student please see our [https://docs.google.com/document/d/1s5chDv-hekOXwgNAjjF-YMQKRaisigasPk-ZCW5KgNQ/edit application template].
+
If you are interested in applying as a student please see our [https://docs.google.com/document/d/1s5chDv-hekOXwgNAjjF-YMQKRaisigasPk-ZCW5KgNQ/edit application template]. You will need to register with Google and submit through their GSOC program.
  
 
If you are interested in participating as a student please review the materials on applying that are available at [http://code.google.com/soc/ Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.
 
If you are interested in participating as a student please review the materials on applying that are available at [http://code.google.com/soc/ Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.
Line 30: Line 32:
 
:'''Brief Explanation:''' 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 extension manager or the language manager.
 
:'''Brief Explanation:''' 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 extension manager or the language manager.
  
References:
+
:'''References:'''
 
* http://joomlacode.org/gf/project/jtranslation1_6/frs/
 
* http://joomlacode.org/gf/project/jtranslation1_6/frs/
 
* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/updater
 
* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/updater
Line 39: Line 41:
  
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
 +
 +
Note: This project was completed in Summer 2012.
  
 
====Project: CMS Unit Testing====
 
====Project: CMS Unit Testing====
Line 53: Line 57:
  
 
:'''Brief explanation:''' Profile the queries in the CMS and optimize them, insuring that they remain database agnostic.
 
:'''Brief explanation:''' Profile the queries in the CMS and optimize them, insuring that they remain database agnostic.
References
+
 
 +
:'''References:'''
 
* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/database
 
* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/database
 
* http://en.wikipedia.org/wiki/SQL
 
* http://en.wikipedia.org/wiki/SQL
Line 63: Line 68:
 
:'''Difficulty:''' Medium
 
:'''Difficulty:''' Medium
  
====Project: Batch processing managment/scheduler====
+
====Project: Batch processing management/scheduler====
  
 
:'''Brief explanation:''' Brief explanation:Manage batch job’s processing, create, schedule  and run jobs, such as backup,virus scan, billing, reports, emailing and much more   
 
:'''Brief explanation:''' Brief explanation:Manage batch job’s processing, create, schedule  and run jobs, such as backup,virus scan, billing, reports, emailing and much more   
  
:'''Expected Results:''' The student will be expected to build an O.S independent solution that act as a wrapper to manage jobs, allowing to manage tasks from 3dp extensions too, in a easy way simplyfing the Joomla webmaster life
+
:'''Expected Results:''' The student will be expected to build an O.S. independent solution that act as a wrapper to manage jobs, allowing to manage tasks from third party extensions too, in a easy way simplifying the Joomla webmaster life
 
See: http://en.wikipedia.org/wiki/Batch_processing
 
See: http://en.wikipedia.org/wiki/Batch_processing
 +
 
:'''Knowledge Prerequisite:''': PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.
 
:'''Knowledge Prerequisite:''': PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.
 +
 
:'''Mentor:''': Nicola Galgano
 
:'''Mentor:''': Nicola Galgano
  
Line 88: Line 95:
 
:'''Brief Explanation:''' Create a component that functions similarly to com_checkin that allows you to manage trash items across all tables.
 
:'''Brief Explanation:''' Create a component that functions similarly to com_checkin that allows you to manage trash items across all tables.
  
:'''Expected Results:''' It should be able to pull records in 'trashed' status that have -2 as the value and allow selection of single deletion, mass deletion, deletion by table, etc.
+
:'''Expected Results:''' It should be able to pull records in 'trashed' status that have -2 as the value and allow selection of single deletion, mass deletion, deletion by table, etc. Include an integrated notification to users that they have trashed item.
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, PHP, MySQL
 
:'''Knowledge Prerequisite:''' Joomla Platform, PHP, MySQL
Line 97: Line 104:
  
 
:'''Brief Explanation:''' Create a data dictionary that will expand on current core database tables to add support for more commonly used data and will be supported on newly created Joomla databases. Also create a process for updating and managing the data dictionary, and document the current data model.  
 
:'''Brief Explanation:''' Create a data dictionary that will expand on current core database tables to add support for more commonly used data and will be supported on newly created Joomla databases. Also create a process for updating and managing the data dictionary, and document the current data model.  
 +
 +
:'''Read more about this idea:'''
 +
*[https://docs.google.com/document/d/1_a08yMHnzGWDw2nsBlu5Ztxxketq9Q8jrkqf8C3iUEg/edit Shared Data Dictionary for Joomla]
  
 
:'''Expected Results:''' A data dictionary will make it easier for different developers to standardize on where to create, read, update, and delete some commonly stored data (such as user profile information), instead of the current situation where multiple extensions may potentially duplicate the same data.
 
:'''Expected Results:''' A data dictionary will make it easier for different developers to standardize on where to create, read, update, and delete some commonly stored data (such as user profile information), instead of the current situation where multiple extensions may potentially duplicate the same data.
Line 103: Line 113:
  
 
:'''Difficulty:''' Medium
 
:'''Difficulty:''' Medium
 +
 +
====Project: Refactor Media Manager====
 +
 +
:'''Brief Explanation:''' The current media manager is outdated and limited. Refactor the media manager to include a better user interface, more robust functionality, and seemless integration for extensions to use. The improvements could include providing a folder tree, file property information, upload capabilities, move/rename files and folders, use of JImage for image basic processing (resize, crop).
 +
 +
:'''Expected Results:''' Refactor the Media Manager to improve the usability, functionality, and reusability of the extension.
 +
 +
:'''Knowledge Prerequisite:''' Joomla Platform, PHP, MySQL, Javascript
 +
 +
:'''Difficulty:''' Medium to Hard
  
 
===Joomla Platform===
 
===Joomla Platform===
  
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.
+
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:
 
*[http://github.com/joomla/joomla-platform github Source Code]
 
*[http://github.com/joomla/joomla-platform github Source Code]
 
*[http://developer.joomla.org/strategy.html Development Strategy]
 
*[http://developer.joomla.org/strategy.html Development Strategy]
Line 117: Line 138:
  
 
:'''Brief explanation:''' Create JCard, JCalendar and other extensible classes that will read and produce standards compliant documents of specific types (e.g. vCard,iCal).
 
:'''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 (examples):
+
 
 +
:'''References:'''
 
* http://en.wikipedia.org/wiki/ICalendar
 
* http://en.wikipedia.org/wiki/ICalendar
 
* http://www.imc.org/pdi/
 
* http://www.imc.org/pdi/
Line 125: Line 147:
  
 
:'''Difficulty:''' Medium to Hard
 
:'''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.
 
:'''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.
Line 131: Line 152:
 
====Project: Library to Compile and Compress Javascript and CSS Files====
 
====Project: Library to Compile and Compress Javascript and CSS Files====
  
:'''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.
+
:'''Brief explanation:''' Compiling and compressing 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
 
:'''Knowledge Prerequisite:''' Joomla Platform, PHP, javascript
Line 137: Line 158:
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
 +
:'''Expected Results:''' A platform package with testing and documentation.
  
:'''Expected Results:'''
+
Note: This project was completed in Summer 2012
  
 
====Project: JMailer====
 
====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 and is available here.
+
:'''Brief explanation:''' Build out a JMailer class to replace PHPMailer in the platform. This should build upon preliminary work that has already been implemented.
 +
*[http://svn.joomla.org/project/labs/playground/people/louis/ember/framework/joomla/client/pop3.php SMTP client class]
 +
*[http://svn.joomla.org/project/labs/playground/people/louis/ember/framework/joomla/client/smtp.php POP3 client class]
 +
*[http://svn.joomla.org/project/labs/playground/people/louis/ember/framework/joomla/mail/mail.php JMail class to encapsulate an email]
 +
* [http://svn.joomla.org/project/labs/playground/people/louis/ember/framework/joomla/mail/mailer.php  JMailer class that would send mail]
 +
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.
 
:'''Knowledge Prerequisite:''' Joomla Platform, web standards, e-mail protocols.
Line 148: Line 176:
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
 
+
:'''Expected Results:''' A platform package for JMailer that provides the same functionality as PHPMailer, with testing and documentation.
:'''Expected Results:'''
+
  
 
====Project: Social Package====
 
====Project: Social Package====
Line 162: Line 189:
  
 
:'''Expected Results:''' A package of classes which can be used to interact with various social media APIs and can be further extended in the future for new APIs and endpoints.
 
:'''Expected Results:''' A package of classes which can be used to interact with various social media APIs and can be further extended in the future for new APIs and endpoints.
 +
 +
Note: Many parts of this project were completed in Summer 2012.
  
 
====Project: JStemmer====
 
====Project: JStemmer====
Line 167: Line 196:
 
:'''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.
 
:'''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:
+
:'''References:'''
 
* https://github.com/joomla/joomla-cms/tree/master/administrator/components/com_finder/helpers/indexer
 
* https://github.com/joomla/joomla-cms/tree/master/administrator/components/com_finder/helpers/indexer
 
* http://snowball.tartarus.org/
 
* http://snowball.tartarus.org/
 
* http://en.wikipedia.org/wiki/Stemming
 
* http://en.wikipedia.org/wiki/Stemming
*
 
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, language issues, web standards,  
 
:'''Knowledge Prerequisite:''' Joomla Platform, language issues, web standards,  
  
 
:'''Difficulty:''' Medium to Hard
 
:'''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.
 
:'''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.
Line 183: Line 210:
 
:'''Brief explanation:''' Create a commerce class based on preliminary work that has been done.
 
:'''Brief explanation:''' Create a commerce class based on preliminary work that has been done.
  
References
+
:'''References:'''
 
* https://github.com/LouisLandry/joomla-platform/tree/commerce/libraries/joomla/commerce
 
* https://github.com/LouisLandry/joomla-platform/tree/commerce/libraries/joomla/commerce
  
Line 195: Line 222:
  
 
:'''Brief explanation:''' Create a  class for transcoding video using ffmpeg.
 
:'''Brief explanation:''' Create a  class for transcoding video using ffmpeg.
 +
 +
:'''References:'''
 +
*http://ffmpeg.org/
 +
*http://en.wikipedia.org/wiki/Transcoding
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, JSON, standards, media handling  
 
:'''Knowledge Prerequisite:''' Joomla Platform, JSON, standards, media handling  
Line 201: Line 232:
  
 
:'''Expected Results:'''
 
:'''Expected Results:'''
References:
 
*http://ffmpeg.org/
 
*http://en.wikipedia.org/wiki/Transcoding
 
  
 
====Project: Extend JImage to work with IMagick ====
 
====Project: Extend JImage to work with IMagick ====
 
:'''Brief explanation:''' JImage is an important library added in late 2011. Extend it to work with Imagick.
 
:'''Brief explanation:''' JImage is an important library added in late 2011. Extend it to work with Imagick.
 +
 +
:'''References:'''
 +
*http://www.imagemagick.org/script/index.php
 +
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/image
  
 
:'''Knowledge Prerequisite:''' Joomla Platform  
 
:'''Knowledge Prerequisite:''' Joomla Platform  
Line 212: Line 244:
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
:'''Expected Results:''' Compltete, documented and tested code to extend the JImage class to use Imagick
+
:'''Expected Results:''' Complete, documented and tested code to extend the JImage class to use Imagick
 
+
 
+
References:
+
*http://www.imagemagick.org/script/index.php
+
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/image
+
  
 
====Project: JGoogle Package ====
 
====Project: JGoogle Package ====
 
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating Google APIs.
 
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating Google APIs.
  
Reference:
+
:'''References:'''
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*http://code.google.com/more/
 
*http://code.google.com/more/
 
*http://code.google.com/more/table/
 
*http://code.google.com/more/table/
 
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
Line 232: Line 258:
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
:'''Expected Results:'''
+
:'''Expected Results:''' A set of classes and tests for API client code for web services.
 +
 
 +
Update: This basic project was completed in Summer 2012.
  
 
====Project: JFacebook Package ====
 
====Project: JFacebook Package ====
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating Google APIs.
+
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating Facebook APIs.
  
Reference:
+
:'''References:'''
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*http://developers.facebook.com/docs/guides/web/
 
*http://developers.facebook.com/docs/guides/web/
 
*http://www.pluralsight-training.net/microsoft/courses/TableOfContents?courseName=fb-platform
 
*http://www.pluralsight-training.net/microsoft/courses/TableOfContents?courseName=fb-platform
 
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
Line 247: Line 274:
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
:'''Expected Results:'''
+
:'''Expected Results:''' A set of classes and tests for API client code for web services.
 +
 
 +
Update: This project was completed in Summer 2012.
  
 
====Project: JAmazonS3 Package ====
 
====Project: JAmazonS3 Package ====
 
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating the Amazon S3 APIs.
 
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating the Amazon S3 APIs.
  
Reference:
+
:'''References:'''
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*http://aws.amazon.com/archives/Amazon-S3/123
 
*http://aws.amazon.com/archives/Amazon-S3/123
 
 
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
Line 262: Line 289:
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
:'''Expected Results:'''
+
:'''Expected Results:''' A set of classes and tests for API client code for web services.
  
 
====Project: JRackspace Package ====
 
====Project: JRackspace Package ====
 
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating Rackspace Cloud APIs.
 
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating Rackspace Cloud APIs.
  
Reference:
+
:'''References:'''
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 
*http://www.rackspace.com/cloud/cloud_hosting_products/servers/api/
 
*http://www.rackspace.com/cloud/cloud_hosting_products/servers/api/
  
 +
:'''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: JMediaWiki Package ====
 +
:'''Brief explanation:''' Working from the model of JGithub, implement a class for incorporating MediaWiki APIs.
 +
 +
:'''References:'''
 +
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 +
*http://www.mediawiki.org/wiki/API:Main_page
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
 
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs
Line 277: Line 315:
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
 +
:'''Expected Results:''' A set of classes and tests for API client code for web services.
  
:'''Expected Results:'''
+
Note: This project was completed in Summer 2012.
  
====Project: Social Package====
+
====Project: JOpenStreetMap Package ====
 +
:'''Brief explanation:''' Implement a class for incorporating OpenStreetMap for both editing and using data.
  
:'''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.  JGitHub and its sub-classes can be used as an example in building this package.
+
:'''References:'''
 +
*https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github
 +
*http://www.openstreetmap.org/
 +
*http://wiki.openstreetmap.org/wiki/Databases_and_data_access_APIs
 +
*http://wiki.openstreetmap.org/wiki/API
 +
*http://wiki.openstreetmap.org/wiki/Databases_and_data_access_APIs
  
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with social media APIs (Facebook, Twitter, Google+, etc.), OAuth
+
:'''Knowledge Prerequisite:''' Joomla Platform, familiarity with working with APIs, databases, xml, geodata
  
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
  
:'''Mentor:''' Michael Babker
+
:'''Expected Results:''' A set of classes for interacting with Open Street Map.
  
:'''Expected Results:''' A package of classes which can be used to interact with various social media APIs and can be further extended in the future for new APIs and endpoints.
+
Note: This project was completed in Summer 2012 outside of the GSoC program
  
 
====Project: Platform Unit Testing====
 
====Project: Platform Unit Testing====
Line 301: Line 346:
  
 
:'''Difficulty:''' Medium
 
:'''Difficulty:''' Medium
 
:'''Expected Results:''' 15% increase in test coverage of lines in the Joomla platform.
 
  
 
===Platform Applications===
 
===Platform Applications===
  
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.
+
The creation of useful platform applications that can also serve as exemplars 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
+
References:
 
*https://github.com/joomla/joomla-platform-examples
 
*https://github.com/joomla/joomla-platform-examples
 
*https://github.com/joomla/joomla-platform
 
*https://github.com/joomla/joomla-platform
Line 314: Line 357:
 
====Project: Platform Application to Create PHAR Packages====
 
====Project: Platform Application to Create PHAR Packages====
  
:'''Brief explanation:''' Create a platform application that creates PHAR packages for each package in the Joomla Platform. The goal here is to make the platform accessible to developers in a modular fashion so that they can access only the packages they need for a given application.  
+
:'''Brief explanation:''' Create a platform application that creates PHAR packages for each package in the Joomla Platform. The goal here is to make the platform accessible to developers in a modular fashion so that they can access only the packages they need for a given application.
Reference:
+
 
 +
:'''References:'''
 
*http://php.net/manual/en/intro.phar.php
 
*http://php.net/manual/en/intro.phar.php
  
 
+
:'''Expected Results:''' A working and documented application for creating PHAR packages.
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, PHP   
 
:'''Knowledge Prerequisite:''' Joomla Platform, PHP   
  
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
:'''Expected Results:'''
+
 
 +
Note: This project was completed by Louis Landry.
  
 
====Project: Platform Example or Building Block Applications====
 
====Project: Platform Example or Building Block Applications====
Line 329: Line 374:
 
:'''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.
 
:'''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.
  
 +
:'''Expected Results:''' A set of fully implemented Joomla Platform applications that can be easily adapted by developers. Specific applications should be listed in your proposal and will be finalized in discussion with the mentor. Ideally every platform package would have an example application, so there is room for multiple projects.
  
 
:'''Knowledge Prerequisite:''' Joomla Platform, PHP   
 
:'''Knowledge Prerequisite:''' Joomla Platform, PHP   
  
 
:'''Difficulty:''' Medium to Hard
 
:'''Difficulty:''' Medium to Hard
 
:'''Expected Results:'''
 
 
  
 
====Project: Joomla Translations====
 
====Project: Joomla Translations====
Line 341: Line 384:
 
:'''Brief explanation:''' Create a platform application for management of the translation process, which will be a kind of Facebook Self-Translation App for Joomla! communities to have better translation.
 
:'''Brief explanation:''' Create a platform application for management of the translation process, which will be a kind of Facebook Self-Translation App for Joomla! communities to have better translation.
  
:'''Expected Results:''' The application 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.
+
:'''References:'''
 
+
:See
+
 
:*[http://www.facebook.com/translations/ Facebook Self-Translation]
 
:*[http://www.facebook.com/translations/ Facebook Self-Translation]
 
:*[http://localize.drupal.org localize.drupal.org]
 
:*[http://localize.drupal.org localize.drupal.org]
 
:*[http://weblate.org/ weblate]
 
:*[http://weblate.org/ weblate]
 +
 +
:'''Expected Results:''' The application 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.
  
 
:'''Knowledge Prerequisite:''' PHP, JavaScript, MySQL, Joomla! Framework
 
:'''Knowledge Prerequisite:''' PHP, JavaScript, MySQL, Joomla! Framework
Line 356: Line 399:
 
====Project: Joomla Platform Application Directory====
 
====Project: Joomla Platform Application Directory====
  
:'''Brief explanation:''' The Joomla project has several directory sites dedicated to extensions for the Joomla CMS (the [http://extensions.joomla.org JED]) and free and commercial resources (the [http://resources.joomla.org 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.
+
:'''Brief explanation:''' The Joomla project has several directory sites dedicated to extensions for the Joomla CMS (the [http://extensions.joomla.org JED]) and free and commercial resources (the [http://resources.joomla.org JRD]). With the release of the Joomla Platform, and its 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 [http://twitter.github.com/bootstrap/ Bootstrap] for basic inspiration. Simple categorization will also be required. Global search can be added if time permits.
+
:'''Expected Results:''' The student will be expected to build a new web application based on JApplicationWeb and the new Universal Content Model (UCM) [see https://github.com/eBaySF/joomla-platform/tree/content/libraries/joomla/content] 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 [http://twitter.github.com/bootstrap/ Bootstrap] for basic inspiration. Simple categorization will also be required. Global search can be added if time permits.
  
 +
:'''References:''' PHP, OOP
 +
 +
* https://github.com/eBaySF/joomla-platform/tree/content/libraries/joomla/content
 +
* http://extensions.joomla.org/
 +
* http://resources.joomla.org/
 +
* https://github.com/eBaySF/joomla-platform/tree/content/docs/manual/en-US
 
:'''Knowledge Prerequisite:''' PHP, OOP
 
:'''Knowledge Prerequisite:''' PHP, OOP
  
 
:'''Difficulty:''' Hard but very rewarding
 
:'''Difficulty:''' Hard but very rewarding
 +
 +
====Project: Joomla Extension Directory====
 +
 +
:'''Brief explanation:''' In this project we would like to experiment with some radical ideas that could change from the ground up how directories such as the JED work (the [http://extensions.joomla.org JED]). Our intention is to try out the model of meritocracy and see if it is a valuable alternative to the current way directories operate. The goal of this project is to build a new Joomla Platform application (not a Joomla component but a full application) to serve as an example of such a model.
 +
 +
:'''Expected Results:''' The student will be expected to build a new web application based on JApplicationWeb and the new Universal Content Model (UCM) [see https://github.com/eBaySF/joomla-platform/tree/content/libraries/joomla/content] . This is expected to be a "phase 1" project where the features will include workflow, listing submit(that checks the code of the submitted extension for some security issues), listing reviews + implementing a good scoring algorithm.  The student is not expected to design the final website but should look to [http://twitter.github.com/bootstrap/ Bootstrap] for basic inspiration.
 +
 +
:'''References:''' PHP, OOP
 +
 +
* The idea in more details https://docs.google.com/document/d/1qa57rZcp0oMpA1mCr3mpletenwcDkx8wbI2vv6GCRsY/edit
 +
* https://github.com/eBaySF/joomla-platform/tree/content/libraries/joomla/content
 +
* http://extensions.joomla.org/
 +
* https://github.com/eBaySF/joomla-platform/tree/content/docs/manual/en-US
 +
:'''Knowledge Prerequisite:''' PHP, OOP
 +
 +
:'''Difficulty:''' Hard but very rewarding
 +
 +
[[Category:Google Summer of Code 2012]]

Latest revision as of 11:27, 20 June 2013

Replacement filing cabinet.png
This page has been archived - Please Do Not Edit or Create Pages placed in this namespace. The pages in the Archived namespace exist only as a historical reference, it will not be improved and its content may be incomplete.

Contents

Welcome!

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

If you are interested in serving as a mentor, please fill out the Mentor Application Form.

If you are interested in applying as a student please see our application template. You will need to register with Google and submit through their GSOC program.

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.

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 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: Language Installation

Brief Explanation: 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 extension manager or the language manager.
References:
Expected Results: The goal is to have code implementing this functionally complete and in a format ready for testings by the Joomla Bug Squad as a new feature in the CMS using the normal new feature process.
Knowledge Prerequisite: Joomla Platform, JSON, web services
Difficulty: Medium to Hard

Note: This project was completed in Summer 2012.

Project: CMS Unit Testing

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

Project: Query optimization

Brief explanation: Profile the queries in the CMS and optimize them, insuring that they remain database agnostic.
References:
Expected Results: Measurable improvement in the performance of the CMS. The project will likely also result in contributions to JDatabaseQuery and other related classes in the Joomla Platform.
Knowledge Prerequisite: SQL, Joomla Platform (JDatabase), ANSI standards.
Difficulty: Medium

Project: Batch processing management/scheduler

Brief explanation: Brief explanation:Manage batch job’s processing, create, schedule and run jobs, such as backup,virus scan, billing, reports, emailing and much more
Expected Results: The student will be expected to build an O.S. independent solution that act as a wrapper to manage jobs, allowing to manage tasks from third party extensions too, in a easy way simplifying the Joomla webmaster life

See: http://en.wikipedia.org/wiki/Batch_processing

Knowledge Prerequisite:: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.
Mentor:: Nicola Galgano

Project: Add Article Image support to Core Content Modules

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

Project: Trash Manager

Brief Explanation: Create a component that functions similarly to com_checkin that allows you to manage trash items across all tables.
Expected Results: It should be able to pull records in 'trashed' status that have -2 as the value and allow selection of single deletion, mass deletion, deletion by table, etc. Include an integrated notification to users that they have trashed item.
Knowledge Prerequisite: Joomla Platform, PHP, MySQL
Difficulty: Medium

Project: Data Dictionary

Brief Explanation: Create a data dictionary that will expand on current core database tables to add support for more commonly used data and will be supported on newly created Joomla databases. Also create a process for updating and managing the data dictionary, and document the current data model.
Read more about this idea:
Expected Results: A data dictionary will make it easier for different developers to standardize on where to create, read, update, and delete some commonly stored data (such as user profile information), instead of the current situation where multiple extensions may potentially duplicate the same data.
Knowledge Prerequisite: Joomla Platform, PHP, MySQL
Difficulty: Medium

Project: Refactor Media Manager

Brief Explanation: The current media manager is outdated and limited. Refactor the media manager to include a better user interface, more robust functionality, and seemless integration for extensions to use. The improvements could include providing a folder tree, file property information, upload capabilities, move/rename files and folders, use of JImage for image basic processing (resize, crop).
Expected Results: Refactor the Media Manager to improve the usability, functionality, and reusability of the extension.
Knowledge Prerequisite: Joomla Platform, PHP, MySQL, Javascript
Difficulty: Medium to Hard

Joomla Platform

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: Library to Compile and Compress Javascript and CSS Files

Brief explanation: Compiling and compressing 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
Expected Results: A platform package with testing and documentation.

Note: This project was completed in Summer 2012

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: Social Package

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. JGitHub and its sub-classes can be used as an example in building this package.
Knowledge Prerequisite: Joomla Platform, familiarity with social media APIs (Facebook, Twitter, Google+, etc.), OAuth
Difficulty: Medium to Hard
Mentor: Michael Babker
Expected Results: A package of classes which can be used to interact with various social media APIs and can be further extended in the future for new APIs and endpoints.

Note: Many parts of this project were completed in Summer 2012.

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: JGoogle Package

Brief explanation: Working from the model of JGithub, implement a class for incorporating Google 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.

Update: This basic project was completed in Summer 2012.

Project: JFacebook Package

Brief explanation: Working from the model of JGithub, implement a class for incorporating Facebook 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.

Update: This project was completed in Summer 2012.

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: JMediaWiki Package

Brief explanation: Working from the model of JGithub, implement a class for incorporating MediaWiki 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.

Note: This project was completed in Summer 2012.

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.

Note: This project was completed in Summer 2012 outside of the GSoC program

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

Platform Applications

The creation of useful platform applications that can also serve as exemplars 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

Brief explanation: Create a platform application that creates PHAR packages for each package in the Joomla Platform. The goal here is to make the platform accessible to developers in a modular fashion so that they can access only the packages they need for a given application.
References:
Expected Results: A working and documented application for creating PHAR packages.
Knowledge Prerequisite: Joomla Platform, PHP
Difficulty: Medium to Hard

Note: This project was completed by Louis Landry.

Project: Platform Example or Building Block Applications

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.
Expected Results: A set of fully implemented Joomla Platform applications that can be easily adapted by developers. Specific applications should be listed in your proposal and will be finalized in discussion with the mentor. Ideally every platform package would have an example application, so there is room for multiple projects.
Knowledge Prerequisite: Joomla Platform, PHP
Difficulty: Medium to Hard

Project: Joomla Translations

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

Project: Joomla Platform Application Directory

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 its 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) [see https://github.com/eBaySF/joomla-platform/tree/content/libraries/joomla/content] 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.
References: PHP, OOP
Knowledge Prerequisite: PHP, OOP
Difficulty: Hard but very rewarding

Project: Joomla Extension Directory

Brief explanation: In this project we would like to experiment with some radical ideas that could change from the ground up how directories such as the JED work (the JED). Our intention is to try out the model of meritocracy and see if it is a valuable alternative to the current way directories operate. The goal of this project is to build a new Joomla Platform application (not a Joomla component but a full application) to serve as an example of such a model.
Expected Results: The student will be expected to build a new web application based on JApplicationWeb and the new Universal Content Model (UCM) [see https://github.com/eBaySF/joomla-platform/tree/content/libraries/joomla/content] . This is expected to be a "phase 1" project where the features will include workflow, listing submit(that checks the code of the submitted extension for some security issues), listing reviews + implementing a good scoring algorithm. The student is not expected to design the final website but should look to Bootstrap for basic inspiration.
References: PHP, OOP
Knowledge Prerequisite: PHP, OOP
Difficulty: Hard but very rewarding