<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=St3fan</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=St3fan"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/St3fan"/>
	<updated>2026-08-15T06:19:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=108589</id>
		<title>GSOC 2014 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=108589"/>
		<updated>2014-02-25T14:59:37Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Inline editing directly on any page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC_2014.png|300px|left]]&lt;br /&gt;
&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 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!&lt;br /&gt;
&lt;br /&gt;
For students who want a general overview of Joomla&#039;s GSoc, project plans, proposals, and timelines, please [http://docs.joomla.org/GSOC_2014 refer to the GSoC 2014 page]. &lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/d/forum/joomla-gsoc-2014&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2014].&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [[GSOC_2012_Project_Ideas|2013]], [[GSOC_2012_Project_Ideas|2012]], [[Summer_of_Code_2010_Project_Ideas|2010]] and [[Summer_of_Code_2009_Project_Ideas|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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Important Guidelines on Submitting Ideas ==&lt;br /&gt;
&lt;br /&gt;
There are some important guidelines to submit ideas, please read these carefully before adding your ideas:&lt;br /&gt;
* Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program. &lt;br /&gt;
* Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion (&#039;pencils down&#039;) date. &lt;br /&gt;
* Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package. &lt;br /&gt;
* Respect Joomla&#039;s Release Cycle. Joomla&#039;s release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way. &lt;br /&gt;
* Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.&lt;br /&gt;
* When in doubt, reach out. If you&#039;re unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community&#039;s interest. &lt;br /&gt;
* No documentation-focused projects. Google Summer of &#039;&#039;Code&#039;&#039; is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.&lt;br /&gt;
&lt;br /&gt;
== Joomla CMS Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your CMS project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Refactor CMS to use Dependency Injection ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application&#039;s core components. &lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* [https://github.com/joomla/joomla-framework/tree/staging/src/Joomla/DI Joomla Framework DI Package]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/includes/defines.php Joomla CMS Constants]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Deprecate the current JPATH constants allowing for replacement with Joomla DI&lt;br /&gt;
* Refactor core components and to use new DI container&lt;br /&gt;
* Write documentation for developers to update their extensions to use Joomla DI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Webdriver system tests for CMS===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of [https://github.com/joomla/joomla-cms/tree/staging/tests/system system tests] are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* http://docs.joomla.org/System_Testing&lt;br /&gt;
* http://www.youtube.com/watch?v=8Mmg32lg4nA&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* finish the administrator parts not yet tested&lt;br /&gt;
* add front end testing:&lt;br /&gt;
** menu items&lt;br /&gt;
** modules&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Puneet Kala, Mark Dexter and Javier Gómez&lt;br /&gt;
&lt;br /&gt;
=== Project: Collection of Mini Projects ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently could due with several smaller tasks and projects to help move the software forward and improve its usability and feature set. This project is a *collection* of several smaller projects and improvements. The tasks involved are discrete but they must all be accomplished to a high degree of quality in detail to be considered successful. &lt;br /&gt;
&lt;br /&gt;
===== Decouple Core Extensions =====&lt;br /&gt;
:&#039;&#039;&#039; Description&#039;&#039;&#039; In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.&lt;br /&gt;
&lt;br /&gt;
===== Add Menu Type ACL =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently in the CMS there is no way to have backend based ACL rules per menu-type. This project should add advanced ACL rules and configurability to Joomla&#039;s core menu types. Adding, deleting, and editing menus on a per-menu group basis should be available on a per-group basis.  &lt;br /&gt;
&lt;br /&gt;
===== JError to Exceptions =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently Joomla uses the JError class to handle error management - however there is a desire to move this across to use exceptions for Joomla 4.0 and remove the JError class. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; This project must address and complete each of the above described mini-projects. Proposals should detail each item in detail and outline a timeline for completing them. &lt;br /&gt;
&lt;br /&gt;
===== Implementing Frontend Menu Editing =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently frontend menu editing icon redirects user to backend. But actually frontend menu editing should be able to done at the frontend.Implementation would be much similar to the already implemented frontend configuration &amp;amp; frontend template style editing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Frontend logged authorized users should be able to edit menu items via frontend. Student should have to figure-out what should be in frontend editor and relevant access control levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  General knowledge of Joomla 3&#039;s core feature set and functionality. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
=== Project: Develop dependency manager ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Very challenging, but highly rewarding.&lt;br /&gt;
&lt;br /&gt;
=== Project: Update Core Extensions to use New MVC ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential Mentors:&#039;&#039;&#039; Soren Beck Jensen as he runs the http://www.Component-Creator.com and Buddhima Wijeweera as he worked on a similar project for GSoC 2013 http://magazine.joomla.org/issues/issue-nov-2013/item/1580-new-mvc-for-joomla-cms&lt;br /&gt;
&lt;br /&gt;
===Project: SQL Optimization===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to optimize site performances, between the potential areas where  performance bottleneck resides in a conventional n-tier website architecture, we&#039;ll focus our effort on database side, optimizing slow sql queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; SQL, DBMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
===Project: JIssues tracker===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to finish the JIssues tracker so it is in a position to replace the current Joomla tracker.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The JIssues tracker will be at a place where a transition can take place from Joomla Code to the issues tracker. This will involve working with the JIssues (http://issues.joomla.org/) and working through the issue list (https://github.com/joomla/jissues) as well as contributing any relevant code back into the Framework Project&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla Framework, JoomlaCode, Joomla Bug Tracking Process&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039; Michael Babker&lt;br /&gt;
&amp;lt;!-- copy everything above this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PASTE the copied code on the main Project Ideas Page under the appropriated project type. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2014]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Project: Component for managing predefined emails ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Many Joomla! extensions send confirmation mails to users. It will be great if Joomla! provides a powerful component, which will be used for creating predefined emails. The component has to provide classes, which will be used from developers for loading, parsing and sending those e-mails.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Administration interface that will provide an easy way for creating and managing predefined emails.&lt;br /&gt;
* Classes that will be used for loading, parsing and sending those emails.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Todor Iliev, Daniel Dimitrov&lt;br /&gt;
&lt;br /&gt;
===Project: Inline editing directly on any page ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The aim of this project is to add in the possibility of editing any page in Joomla using an inline editing tool. It would make articles editing easier, being able to do that without going to the admin interface. The proposed editor is Froala Editor(in inline mode) and it must interact with the media manager and use language support. The final result should be similar to [http://www.youtube.com/watch?v=5YE8ISXkLXM].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Useful links:&#039;&#039;&#039; &lt;br /&gt;
* [http://editor.froala.com Froala Editor]&lt;br /&gt;
* [https://groups.google.com/forum/#!topic/joomla-dev-cms/giQzWj7fIj8 Discussion about it on CMS list] - please ignore the long comments about the license. It will be sorted out.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Edit articles in Joomla CMS directly from the page without going to admin interface.&lt;br /&gt;
* Have an API for interacting with Froala Editor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Mentors:&#039;&#039;&#039; Stefan Neculai, Diana Neculai&lt;br /&gt;
&lt;br /&gt;
== Joomla Framework ==&lt;br /&gt;
&lt;br /&gt;
The Joomla Framework project ideas allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-framework github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-framework Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your Framework project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Framework Unit Testing===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework 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 Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/framework-coverage/ code coverage report] for the Joomla Framework 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
===Project: Improve Filesystem classes===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Replace static methods with public ones of classes File, Folder, Path. Let these things to be used as object with theirs methods and properties. Develop classes, which will be used as adapters, for some fundamental actions performed on those file system elements. The adapters should be for uploading, deleting, reading,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* A set of well coded, fully unit tested and documented implementations for the file system classes.&lt;br /&gt;
* Adapters for managing files on some of the most popular cloud services - Amazon S3, Google App Engine,...&lt;br /&gt;
* Classes for validating files size, images,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity with web services and Joomla! Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Improve Date classes===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Develop classes and methods that will give more power to developers working with dates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Methods that calculate dates for yesterday, begin of week, end of week, begin of month, end of month, begin of year, end of year,...&lt;br /&gt;
* Methods that calculate time for begin of day, end of day,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity Joomla! Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code 2014]]&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=108588</id>
		<title>GSOC 2014 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=108588"/>
		<updated>2014-02-25T14:56:37Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Inline editing directly on any page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC_2014.png|300px|left]]&lt;br /&gt;
&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 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!&lt;br /&gt;
&lt;br /&gt;
For students who want a general overview of Joomla&#039;s GSoc, project plans, proposals, and timelines, please [http://docs.joomla.org/GSOC_2014 refer to the GSoC 2014 page]. &lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/d/forum/joomla-gsoc-2014&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2014].&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [[GSOC_2012_Project_Ideas|2013]], [[GSOC_2012_Project_Ideas|2012]], [[Summer_of_Code_2010_Project_Ideas|2010]] and [[Summer_of_Code_2009_Project_Ideas|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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Important Guidelines on Submitting Ideas ==&lt;br /&gt;
&lt;br /&gt;
There are some important guidelines to submit ideas, please read these carefully before adding your ideas:&lt;br /&gt;
* Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program. &lt;br /&gt;
* Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion (&#039;pencils down&#039;) date. &lt;br /&gt;
* Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package. &lt;br /&gt;
* Respect Joomla&#039;s Release Cycle. Joomla&#039;s release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way. &lt;br /&gt;
* Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.&lt;br /&gt;
* When in doubt, reach out. If you&#039;re unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community&#039;s interest. &lt;br /&gt;
* No documentation-focused projects. Google Summer of &#039;&#039;Code&#039;&#039; is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.&lt;br /&gt;
&lt;br /&gt;
== Joomla CMS Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your CMS project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Refactor CMS to use Dependency Injection ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application&#039;s core components. &lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* [https://github.com/joomla/joomla-framework/tree/staging/src/Joomla/DI Joomla Framework DI Package]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/includes/defines.php Joomla CMS Constants]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Deprecate the current JPATH constants allowing for replacement with Joomla DI&lt;br /&gt;
* Refactor core components and to use new DI container&lt;br /&gt;
* Write documentation for developers to update their extensions to use Joomla DI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Webdriver system tests for CMS===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of [https://github.com/joomla/joomla-cms/tree/staging/tests/system system tests] are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* http://docs.joomla.org/System_Testing&lt;br /&gt;
* http://www.youtube.com/watch?v=8Mmg32lg4nA&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* finish the administrator parts not yet tested&lt;br /&gt;
* add front end testing:&lt;br /&gt;
** menu items&lt;br /&gt;
** modules&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Puneet Kala, Mark Dexter and Javier Gómez&lt;br /&gt;
&lt;br /&gt;
=== Project: Collection of Mini Projects ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently could due with several smaller tasks and projects to help move the software forward and improve its usability and feature set. This project is a *collection* of several smaller projects and improvements. The tasks involved are discrete but they must all be accomplished to a high degree of quality in detail to be considered successful. &lt;br /&gt;
&lt;br /&gt;
===== Decouple Core Extensions =====&lt;br /&gt;
:&#039;&#039;&#039; Description&#039;&#039;&#039; In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.&lt;br /&gt;
&lt;br /&gt;
===== Add Menu Type ACL =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently in the CMS there is no way to have backend based ACL rules per menu-type. This project should add advanced ACL rules and configurability to Joomla&#039;s core menu types. Adding, deleting, and editing menus on a per-menu group basis should be available on a per-group basis.  &lt;br /&gt;
&lt;br /&gt;
===== JError to Exceptions =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently Joomla uses the JError class to handle error management - however there is a desire to move this across to use exceptions for Joomla 4.0 and remove the JError class. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; This project must address and complete each of the above described mini-projects. Proposals should detail each item in detail and outline a timeline for completing them. &lt;br /&gt;
&lt;br /&gt;
===== Implementing Frontend Menu Editing =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently frontend menu editing icon redirects user to backend. But actually frontend menu editing should be able to done at the frontend.Implementation would be much similar to the already implemented frontend configuration &amp;amp; frontend template style editing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Frontend logged authorized users should be able to edit menu items via frontend. Student should have to figure-out what should be in frontend editor and relevant access control levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  General knowledge of Joomla 3&#039;s core feature set and functionality. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
=== Project: Develop dependency manager ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Very challenging, but highly rewarding.&lt;br /&gt;
&lt;br /&gt;
=== Project: Update Core Extensions to use New MVC ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential Mentors:&#039;&#039;&#039; Soren Beck Jensen as he runs the http://www.Component-Creator.com and Buddhima Wijeweera as he worked on a similar project for GSoC 2013 http://magazine.joomla.org/issues/issue-nov-2013/item/1580-new-mvc-for-joomla-cms&lt;br /&gt;
&lt;br /&gt;
===Project: SQL Optimization===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to optimize site performances, between the potential areas where  performance bottleneck resides in a conventional n-tier website architecture, we&#039;ll focus our effort on database side, optimizing slow sql queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; SQL, DBMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
===Project: JIssues tracker===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to finish the JIssues tracker so it is in a position to replace the current Joomla tracker.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The JIssues tracker will be at a place where a transition can take place from Joomla Code to the issues tracker. This will involve working with the JIssues (http://issues.joomla.org/) and working through the issue list (https://github.com/joomla/jissues) as well as contributing any relevant code back into the Framework Project&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla Framework, JoomlaCode, Joomla Bug Tracking Process&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039; Michael Babker&lt;br /&gt;
&amp;lt;!-- copy everything above this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PASTE the copied code on the main Project Ideas Page under the appropriated project type. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2014]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Project: Component for managing predefined emails ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Many Joomla! extensions send confirmation mails to users. It will be great if Joomla! provides a powerful component, which will be used for creating predefined emails. The component has to provide classes, which will be used from developers for loading, parsing and sending those e-mails.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Administration interface that will provide an easy way for creating and managing predefined emails.&lt;br /&gt;
* Classes that will be used for loading, parsing and sending those emails.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Todor Iliev, Daniel Dimitrov&lt;br /&gt;
&lt;br /&gt;
===Project: Inline editing directly on any page ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The aim of this project is to add in the possibility of editing any page in Joomla using an inline editing tool. It would make articles editing easier, being able to do that without going to the admin interface. The proposed editor is Froala Editor(in inline mode) and it must interact with the media manager and use language support. The final result should be similar to [http://www.youtube.com/watch?v=5YE8ISXkLXM].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Useful links:&#039;&#039;&#039; &lt;br /&gt;
* [http://editor.froala.com Froala Editor]&lt;br /&gt;
* [https://groups.google.com/forum/#!topic/joomla-dev-cms/giQzWj7fIj8 Discussion about it on CMS list] - please ignore the long comments about the license&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Edit articles in Joomla CMS directly from the page without going to admin interface.&lt;br /&gt;
* Have an API for interacting with Froala Editor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Mentors:&#039;&#039;&#039; Stefan Neculai, Diana Neculai&lt;br /&gt;
&lt;br /&gt;
== Joomla Framework ==&lt;br /&gt;
&lt;br /&gt;
The Joomla Framework project ideas allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-framework github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-framework Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your Framework project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Framework Unit Testing===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework 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 Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/framework-coverage/ code coverage report] for the Joomla Framework 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
===Project: Improve Filesystem classes===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Replace static methods with public ones of classes File, Folder, Path. Let these things to be used as object with theirs methods and properties. Develop classes, which will be used as adapters, for some fundamental actions performed on those file system elements. The adapters should be for uploading, deleting, reading,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* A set of well coded, fully unit tested and documented implementations for the file system classes.&lt;br /&gt;
* Adapters for managing files on some of the most popular cloud services - Amazon S3, Google App Engine,...&lt;br /&gt;
* Classes for validating files size, images,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity with web services and Joomla! Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Improve Date classes===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Develop classes and methods that will give more power to developers working with dates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Methods that calculate dates for yesterday, begin of week, end of week, begin of month, end of month, begin of year, end of year,...&lt;br /&gt;
* Methods that calculate time for begin of day, end of day,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity Joomla! Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code 2014]]&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=108587</id>
		<title>GSOC 2014 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=108587"/>
		<updated>2014-02-25T14:55:18Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Joomla CMS Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC_2014.png|300px|left]]&lt;br /&gt;
&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 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!&lt;br /&gt;
&lt;br /&gt;
For students who want a general overview of Joomla&#039;s GSoc, project plans, proposals, and timelines, please [http://docs.joomla.org/GSOC_2014 refer to the GSoC 2014 page]. &lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/d/forum/joomla-gsoc-2014&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2014].&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [[GSOC_2012_Project_Ideas|2013]], [[GSOC_2012_Project_Ideas|2012]], [[Summer_of_Code_2010_Project_Ideas|2010]] and [[Summer_of_Code_2009_Project_Ideas|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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Important Guidelines on Submitting Ideas ==&lt;br /&gt;
&lt;br /&gt;
There are some important guidelines to submit ideas, please read these carefully before adding your ideas:&lt;br /&gt;
* Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program. &lt;br /&gt;
* Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion (&#039;pencils down&#039;) date. &lt;br /&gt;
* Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package. &lt;br /&gt;
* Respect Joomla&#039;s Release Cycle. Joomla&#039;s release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way. &lt;br /&gt;
* Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.&lt;br /&gt;
* When in doubt, reach out. If you&#039;re unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community&#039;s interest. &lt;br /&gt;
* No documentation-focused projects. Google Summer of &#039;&#039;Code&#039;&#039; is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.&lt;br /&gt;
&lt;br /&gt;
== Joomla CMS Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your CMS project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Refactor CMS to use Dependency Injection ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application&#039;s core components. &lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* [https://github.com/joomla/joomla-framework/tree/staging/src/Joomla/DI Joomla Framework DI Package]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/includes/defines.php Joomla CMS Constants]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Deprecate the current JPATH constants allowing for replacement with Joomla DI&lt;br /&gt;
* Refactor core components and to use new DI container&lt;br /&gt;
* Write documentation for developers to update their extensions to use Joomla DI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Webdriver system tests for CMS===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of [https://github.com/joomla/joomla-cms/tree/staging/tests/system system tests] are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* http://docs.joomla.org/System_Testing&lt;br /&gt;
* http://www.youtube.com/watch?v=8Mmg32lg4nA&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* finish the administrator parts not yet tested&lt;br /&gt;
* add front end testing:&lt;br /&gt;
** menu items&lt;br /&gt;
** modules&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Puneet Kala, Mark Dexter and Javier Gómez&lt;br /&gt;
&lt;br /&gt;
=== Project: Collection of Mini Projects ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently could due with several smaller tasks and projects to help move the software forward and improve its usability and feature set. This project is a *collection* of several smaller projects and improvements. The tasks involved are discrete but they must all be accomplished to a high degree of quality in detail to be considered successful. &lt;br /&gt;
&lt;br /&gt;
===== Decouple Core Extensions =====&lt;br /&gt;
:&#039;&#039;&#039; Description&#039;&#039;&#039; In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.&lt;br /&gt;
&lt;br /&gt;
===== Add Menu Type ACL =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently in the CMS there is no way to have backend based ACL rules per menu-type. This project should add advanced ACL rules and configurability to Joomla&#039;s core menu types. Adding, deleting, and editing menus on a per-menu group basis should be available on a per-group basis.  &lt;br /&gt;
&lt;br /&gt;
===== JError to Exceptions =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently Joomla uses the JError class to handle error management - however there is a desire to move this across to use exceptions for Joomla 4.0 and remove the JError class. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; This project must address and complete each of the above described mini-projects. Proposals should detail each item in detail and outline a timeline for completing them. &lt;br /&gt;
&lt;br /&gt;
===== Implementing Frontend Menu Editing =====&lt;br /&gt;
:&#039;&#039;&#039; Description &#039;&#039;&#039; Currently frontend menu editing icon redirects user to backend. But actually frontend menu editing should be able to done at the frontend.Implementation would be much similar to the already implemented frontend configuration &amp;amp; frontend template style editing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Frontend logged authorized users should be able to edit menu items via frontend. Student should have to figure-out what should be in frontend editor and relevant access control levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  General knowledge of Joomla 3&#039;s core feature set and functionality. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
=== Project: Develop dependency manager ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Very challenging, but highly rewarding.&lt;br /&gt;
&lt;br /&gt;
=== Project: Update Core Extensions to use New MVC ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential Mentors:&#039;&#039;&#039; Soren Beck Jensen as he runs the http://www.Component-Creator.com and Buddhima Wijeweera as he worked on a similar project for GSoC 2013 http://magazine.joomla.org/issues/issue-nov-2013/item/1580-new-mvc-for-joomla-cms&lt;br /&gt;
&lt;br /&gt;
===Project: SQL Optimization===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to optimize site performances, between the potential areas where  performance bottleneck resides in a conventional n-tier website architecture, we&#039;ll focus our effort on database side, optimizing slow sql queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; SQL, DBMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
===Project: JIssues tracker===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to finish the JIssues tracker so it is in a position to replace the current Joomla tracker.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The JIssues tracker will be at a place where a transition can take place from Joomla Code to the issues tracker. This will involve working with the JIssues (http://issues.joomla.org/) and working through the issue list (https://github.com/joomla/jissues) as well as contributing any relevant code back into the Framework Project&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla Framework, JoomlaCode, Joomla Bug Tracking Process&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039; Michael Babker&lt;br /&gt;
&amp;lt;!-- copy everything above this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PASTE the copied code on the main Project Ideas Page under the appropriated project type. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2014]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Project: Component for managing predefined emails ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Many Joomla! extensions send confirmation mails to users. It will be great if Joomla! provides a powerful component, which will be used for creating predefined emails. The component has to provide classes, which will be used from developers for loading, parsing and sending those e-mails.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Administration interface that will provide an easy way for creating and managing predefined emails.&lt;br /&gt;
* Classes that will be used for loading, parsing and sending those emails.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Todor Iliev, Daniel Dimitrov&lt;br /&gt;
&lt;br /&gt;
===Project: Inline editing directly on any page ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The aim of this project is to add in the possibility of editing any page in Joomla using an inline editing tool. It would make articles editing easier, being able to do that without going to the admin interface. The proposed editor is Froala Editor and it must interact with the media manager and use language support. The final result should be similar to [http://www.youtube.com/watch?v=5YE8ISXkLXM].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Useful links:&#039;&#039;&#039; &lt;br /&gt;
* [http://editor.froala.com Froala Editor]&lt;br /&gt;
* [https://groups.google.com/forum/#!topic/joomla-dev-cms/giQzWj7fIj8 Discussion about it on CMS list] - please ignore the long comments about the license&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Edit articles in Joomla CMS directly from the page without going to admin interface.&lt;br /&gt;
* Have an API for interacting with Froala Editor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Mentors:&#039;&#039;&#039; Stefan Neculai, Diana Neculai&lt;br /&gt;
&lt;br /&gt;
== Joomla Framework ==&lt;br /&gt;
&lt;br /&gt;
The Joomla Framework project ideas allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-framework github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-framework Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your Framework project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Framework Unit Testing===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework 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 Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/framework-coverage/ code coverage report] for the Joomla Framework 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
===Project: Improve Filesystem classes===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Replace static methods with public ones of classes File, Folder, Path. Let these things to be used as object with theirs methods and properties. Develop classes, which will be used as adapters, for some fundamental actions performed on those file system elements. The adapters should be for uploading, deleting, reading,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* A set of well coded, fully unit tested and documented implementations for the file system classes.&lt;br /&gt;
* Adapters for managing files on some of the most popular cloud services - Amazon S3, Google App Engine,...&lt;br /&gt;
* Classes for validating files size, images,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity with web services and Joomla! Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Improve Date classes===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Develop classes and methods that will give more power to developers working with dates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Methods that calculate dates for yesterday, begin of week, end of week, begin of month, end of month, begin of year, end of year,...&lt;br /&gt;
* Methods that calculate time for begin of day, end of day,...&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, PHP, OOP, Design Patterns, familiarity Joomla! Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code 2014]]&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=84016</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=84016"/>
		<updated>2013-04-06T16:54:16Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Joomla Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add MariaDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add MariaDB driver and classes that provide easy operation with its store engines - OQGRAPH, SphinxSE, Cassandra. You should add GRAPH and &amp;quot;Full-Text search&amp;quot; abstract layers. Some of the classes will extend NoSQL layer that was mentioned above; others would extend the GRAPH and the &amp;quot;Full-Text search&amp;quot; abstract layers.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested, documented implementations for GRAPH and &amp;quot;Full-Text search&amp;quot; abstract layers and MariaDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, familiarity with MariaDB, familiarity with Graph Theory and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
====Project: Add Validators package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add set of classes that will be used for input validation. You have to add Validator abstract layer. The validator classes will extend this layer. You have to implement chains-of-command patter because objects should be able to be used with this design pattern. It should look like Zend Framework Validators.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested, documented implementations for Validators. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; GitHub, PHPUnit, familiarity with web application security principles, familiarity with design patterns and Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* https://www.ibm.com/developerworks/library/os-php-designptrns/#N101DE&lt;br /&gt;
:* http://framework.zend.com/manual/2.1/en/modules/zend.validator.html&lt;br /&gt;
:* http://framework.zend.com/manual/2.1/en/modules/zend.validator.validator-chains.html&lt;br /&gt;
:* https://www.owasp.org/index.php/Data_Validation&lt;br /&gt;
:* http://phpsecurity.readthedocs.org/en/latest/Input-Validation.html&lt;br /&gt;
:* https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet&lt;br /&gt;
:* http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Cloud Storage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add support for cloud storage backends into the Filesystem package. Molajo offered a new Filesystem package for the Framework and your task is to create cloud adapters for it. The proposed APIs are Amazon S3, Dropbox, Google Cloud Storage and Rackspace Cloudfiles, however the implemented APIs should be agreed upon with the mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the cloud storage APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* https://github.com/Molajo/Standard/tree/master/Vendor/Molajo/Filesystem&lt;br /&gt;
:* https://github.com/Molajo/Standard/blob/master/Vendor/Molajo/Filesystem/README.md#what-is-filesystem&lt;br /&gt;
:* http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html&lt;br /&gt;
:* https://www.dropbox.com/developers/core/api&lt;br /&gt;
:* https://developers.google.com/storage/docs/developer-guide&lt;br /&gt;
:* http://docs.rackspace.com/files/api/v1/cf-devguide/content/Overview-d1e70.html&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Diana Neculai (Prajescu)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83912</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83912"/>
		<updated>2013-04-04T18:34:07Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Joomla Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83911</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83911"/>
		<updated>2013-04-04T18:33:50Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Add NoSQL and mongoDB support to the framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83910</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83910"/>
		<updated>2013-04-04T18:33:30Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Amazon RDS package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83909</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83909"/>
		<updated>2013-04-04T18:33:20Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Rackspace Database package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83908</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83908"/>
		<updated>2013-04-04T18:33:05Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Rackspace Database package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Stefan Neculai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83907</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83907"/>
		<updated>2013-04-04T18:31:40Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Rackspace Database package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83906</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83906"/>
		<updated>2013-04-04T18:31:30Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Project: Amazon RDS package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/facebook&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/github&lt;br /&gt;
:* https://github.com/joomla/joomla-platform/tree/staging/libraries/joomla/google&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83905</id>
		<title>GSOC 2013 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2013_Project_Ideas&amp;diff=83905"/>
		<updated>2013-04-04T18:29:24Z</updated>

		<summary type="html">&lt;p&gt;St3fan: /* Joomla Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:1em; width:40%;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:1em;&amp;quot;&amp;gt;[[Image:GSOC_2013.png|150px‎]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welcome!==&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2013 project ideas page. As we move forward with the 2013 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/forum/?fromgroups#!forum/joomla-gsoc-2013&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2013].&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Platform or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ 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 [http://docs.joomla.org/GSOC_2012_Project_Ideas 2012] [http://docs.joomla.org/Summer_of_Code_2010_Project_Ideas 2010] and [http://docs.joomla.org/Summer_of_Code_2009_Project_Ideas 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Joomla CMS===&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
====Project: Build New Media Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief Explanation:&#039;&#039;&#039; The current media manager is outdated and limited. Build a new media manager to include a better user interface, more robust functionality, and seamless integration for extensions to use. The improvements could include: &lt;br /&gt;
* Storage of media information in the database (including standard file property information, created by user and date, rights and other meta data and tracking of media as assets).&lt;br /&gt;
* Allow renaming of files&lt;br /&gt;
* Automated creation of thumbnails to dimensions that the webmaster can configure&lt;br /&gt;
* Support for a variety of media types that addresses security concerns &lt;br /&gt;
* Creation of a number of controllers for media manipulation such as cropping, resizing and filtering and implementation of their use.&lt;br /&gt;
* Use of nesting for management and display of media options&lt;br /&gt;
* Management of both local and remote media&lt;br /&gt;
* Support for creation of collections of media for example for display in a carousel as a separate content type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A new Media Manager component to improve the usability, functionality, and reusability of the extension.  Work should be fully documented and include system tests as well as unit tests for all new classes.&lt;br /&gt;
&lt;br /&gt;
: The work will likely include creation of a new media management package in the CMS library as well as reusable controllers for media related tasks. &lt;br /&gt;
&lt;br /&gt;
: The work should align with other work in the content model and the student should expect to interact extensively with the team working on the Joomla 3.2 release. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  PHP, MySQL, Javascript, Joomla CMS, Joomla Platform, HTML5, Usability&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Convert JavaScript from MooTools to jQuery====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Version 3 of the CMS introduced [http://twitter.github.com/bootstrap Twitter Bootstrap] and [http://jquery.com jQuery] to the core code base.  Previous versions of the CMS had been using MooTools as the preferred JavaScript library.  Currently, both JavaScript libraries are shipped and used within the CMS, which occasionally causes conflicts with a user&#039;s JavaScript functionality.  The CMS would like to reduce the dependency on MooTools by converting its core JavaScript behaviors from MooTools to jQuery or providing custom solutions.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Dependency on MooTools is reduced within the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla CMS, PHP, JavaScript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: html contenteditable Ajax based front-end editor for articles, categories, tags and other content====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit all content (content, weblinks, contacts, newsfeeds and categories as well as any new types that are added in the future) from the front-end. Administrators should be able to configure front end editing for appropriate users to have access to the full set of fields available in the back end in the front end (rather than the limited set of fields now available).  All this should be done using Ajax.  This project should focus on editing data from the core_content table and will involve work with the team implementing the migration to core_content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: front-end editor for modules and menus====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Allow seamless ajax-driven content-editing in the fronted of existing content and allowing to insert new modules.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Authors with ACL permissions should be able to directly edit modules (titles and content/settings, and inserting new modules including menus the front-end. There are a number of possible approaches this could take. For example, they could possibly use the administration interface in the front-end, otherwise with links to the corresponding administration page. This would at least allow to remove the guesswork of which module outputs what result. Using an open-source html-contenteditable javascript editor would help here in the formatting.  Another possibility would be to use a services model.&lt;br /&gt;
&lt;br /&gt;
Note: There will be some overlap here with the potential com_services project so project could be incorporated into that project or there could be coordination of the two projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; A good knowledge of Joomla, of jQuery and Ajax techniques would help a lot here.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Update and add new editor plugins====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla has a system of editor_xtd plugins that allow users to safely insert correct html for common items such as images, page breaks, and links to articles independent of the editor used.  This project will involve updating and adding new plugins and improving usabilty.  For example in terms of new plugins might include:&lt;br /&gt;
* A plugin that adds modal behaviour (JHTML::_(&#039;behavior.modal&#039;);). The plugin can be deactivated by a {}tag (like {modal state=0}). &lt;br /&gt;
* A plugin that allows safe embedding of external web services such as video or maps.&lt;br /&gt;
&lt;br /&gt;
Updating plugins would include generalizing the article plugin to work across all content types using the core_content table.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how a plan for a modal plugin would look:&lt;br /&gt;
&lt;br /&gt;
*Background: A link with the attribute &#039;class=&amp;quot;modal&amp;quot;&#039; is opened in a kind of lightbox. Thus easily galleries can be generated. Additionally prepare editor(s) (e. g. via editor.css in template folder) to offer the modal class in their link edit display.&lt;br /&gt;
&lt;br /&gt;
*Expected Results: The modal behaviour is always available - if plugin is published and it is not forbidden by a tag. And a link with class &#039;modal&#039; can easily be generated - via button and/or via editor.&lt;br /&gt;
Note that this may not be the ideal way to provide this functionality, it could be that the existing articles plugin is modified to allow a link type of modal for example. Thus this project would involve a careful review of existing plugins.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; New plugins for a number of useful items, updates to older plugins and improved user interface for the buttons.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy/Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Add plugin &#039;mvc override&#039;====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Generate a plugin that enables the developer to overwrite models and controllers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Any model and controller can be overridden.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Hathor is beautiful====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Make the admin template &#039;Hathor&#039; more beautiful. Hathor is Isis&#039; little sister. While Isis is breathtaking, Hathor still lacks a little css: She&#039;s edgy, and pale, and boring. Yet she always does what she is told. She deserves being tended a little. No additional functionality needed, no html changes, just css beauty.&lt;br /&gt;
&lt;br /&gt;
: Note that for Google Summer of Code here must be substantial coding involved in the project. In the case of Hathor this would likely involve work on making Bootstrap Javascript meet accessibility standards and work on the core administrator layouts.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Hathor is beautiful.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy&lt;br /&gt;
&lt;br /&gt;
====Project: Accesssible Backend Template====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; For most people, the internet has become the norm. Information from around the world is freely available.  But not all people are benefitting from it, especially those with  disabilities. For those who find it difficult to participate fully in social life, much can be gained from communication technology.  But they often face barriers which make it difficult to access information and applications. Take &amp;quot;looking for a job&amp;quot; as an example. The computer gives people with disabilities excellent prospects in overcoming limitations to find employment. Wouldn&#039;t it be nice if they  had full access to the Joomla backend?  New career opportunties would be opened up. If the requirements of accessibility are carefully met, it would make the system easier to understand and easier to use for all users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: We already, have an accessible backend Joomla template, but it is not very attractive and it is not using all the new technical possibilities.&lt;br /&gt;
: For this reason we are looking for someone who will use Bootstrap to build (with our support):&lt;br /&gt;
&lt;br /&gt;
: - an attractive, accessible design with good user guidance (layout &amp;amp; colors, contrast)&lt;br /&gt;
&lt;br /&gt;
: - a meaningful semantic structure based on web standards&lt;br /&gt;
&lt;br /&gt;
: Some preliminary steps have been made to get you started, but this remains a very complex endeavor.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Accessible admin template&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; WAI-ARIA, Javascript, CSS, HTML, PHP&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium-Hard&lt;br /&gt;
&lt;br /&gt;
: Posible mentors: Angie Radtke&lt;br /&gt;
&lt;br /&gt;
====Project: Refactor document model containers====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; When I say document model containers, what I&#039;m really talking about is all those arrays in the document model that store things like metas, scripts, css, etc. Those can be rendered collectively in the template using the jdoc head tag. The project would refactor the document model to allow more robust methods of working with document containers. One solution would be to use PHP ArrayObjects instead of simple arrays.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A robust solution should allow methods for appending and prepending items, method chaining, and the ability to create custom containers from within extensions and templates.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Joomla! CMS, PHP, some html, some css, and some javascript.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* Joomla! Forums topic: [[jtopic:793482|The ArrayObject - a different approach to document containers]]&lt;br /&gt;
:: (the editor would not allow me to post the link)&lt;br /&gt;
&lt;br /&gt;
====Project: Add new &amp;quot;fancy&amp;quot;  fieldtypes such as an &#039;oclock&#039;  field====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Joomla!&#039;s form generation offers a fix group of field types, such as text, textarea, radio, calendar etc. Write a group of new, javascript/AJAX fields that will provide fancier field types for the cms. For example write another field that enables the developer to create a time field, call it &#039;oclock&#039; or something else sensible. The display of the time should be configurable via a format attribute. It should have the look&#039;n&#039;feel of the calendar field ([[Calendar form field type|Calendar form field type]])  Another project would be to create a built in way to use AJAX to create new fields  such as  a field type that lets you enter multiple items, creating a new field each time an old one is submitted.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Generation of a new set of advanced fields&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, HTML, Javascript, web standards, Bootstrap&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
====Project: Task scheduler and manager====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Manage ,schedule and create tasks, from CMS administrator side, such as backup, virus scan, billing, reports, emailing and so on&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;: The student will be expected to build an hosting agnostic solution that act as a framework to manage task, allowing to manage tasks from third party extensions too, and some ready to run common task&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Batch_processing&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Scheduling_(computing)&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Cron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Webcron&lt;br /&gt;
:* http://en.wikipedia.org/wiki/Daemon_(computing)&lt;br /&gt;
:* https://github.com/joomla/joomla-platform-examples/blob/master/cli/cron-plugins/run.php&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;: PHP, Joomla CMS, Joomla Platform, Mysql, Operating Systems.&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&lt;br /&gt;
====Project: Improvements to Template Manager for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Templates are one of the most important elements of the Joomla CMS but except for the addition of template styles and template copy the functionality of the template manager has not changed dramatically since 1.5.  Currently users must go outside of the template manager to add CSS, to add or modify override files or to manage their LESS. This project will make working with templates easier and more user friendly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; By the end of the summer the student will produce fully documented and system tested code to do at least the following tasks in the template manager user interface:&lt;br /&gt;
:* See a list of overrides for a template&lt;br /&gt;
:* Edit the overrides for a template&lt;br /&gt;
:* Create a new override for a template (ideally with option to copy the core layout as a starting point)&lt;br /&gt;
:* Add a new CSS file to a template&lt;br /&gt;
:* Edit LESS file&lt;br /&gt;
:* Compile LESS&lt;br /&gt;
:* Upload images to a template&#039;s image&lt;br /&gt;
:* Provide a method of simple interaction with web based font and other providers.&lt;br /&gt;
Exact details to be developed in discussion with mentors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Familiarity with the Joomla CMS and templates, PHP, file management, usability, javascript&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
==== Project: Remote web services management system for CMS 3====&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039;  Integration with remote services is a central feature of the modern web. This Joomla CMS should provide ways for webmasters to seamlessly and easily manage their interactions withe external service providers.  &lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A system for managing interactions with external services.  This would include but not be limited to:&lt;br /&gt;
:* Secure management of public and private keys using Keychain&lt;br /&gt;
:* Storage of relevant urls&lt;br /&gt;
:* Methods to safely manage embedding by front end users&lt;br /&gt;
:* Plugins for Google, Twitter and Facebook authentication&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, Joomla CMS, Web Servics&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Redesign Users Profiles as a Form of Content for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Build a new way to manage and display user profiles as a content type stored in the core content table with a combination of systems including both he current profile plugin system and new ways of approaching this including the use of the core fields for body, images, urls and xreference. At the same time improve integration with contact data providing the ability to easily search and sort and send email as well as to have complex layouts and integration of web services. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A front end user profile system that provides a flexible way to create and manage use profiles. This system will follow Joomla design patterns and be fully documented, have unit tests for any classes, and have system tests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, usability, familiarity with the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Create com_services for front end website administration for CMS 3====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The user experience for beginning site administrators in particular but also all site administrators will be improved if they can carry out basic administrative tasks such as updating the site title, meta data and email address, clearing cache, setting component defaults and doing basic user management in the front end. In this project you will provide a RESTful service and front end interface to that service to allow this. Specific tasks to be implemented will be decided in discussion with the mentors. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A basic services based system for managing certain administrative tasks from the front end of the Joomla CMS. This will be fully documented, have automated tests, and follow Joomla development best practices. It will also be extensible so that additional tasks can be added over time.  This project will not involve content, only administrative tasks.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Javascript, web services, security practices, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Hard&lt;br /&gt;
&lt;br /&gt;
====Project: Webdriver system tests for CMS ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, most of the system tests are written using the now-outdated Selenium RC program. A small number of tests are currently completed using the newer Selenium Webdriver technology and using the [https://code.google.com/p/selenium/wiki/PageObjects Page Objects] pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will complete the following tasks. &lt;br /&gt;
:# Create a strategy &amp;amp; roadmap for Joomla system tests. This will include things like:&lt;br /&gt;
:## How to organize the tests.&lt;br /&gt;
:## How to cover the critical back-end and front-end functionality of Joomla.&lt;br /&gt;
:# Write the reusable foundation classes for the expanded test coverage. These classes will be used to create the page object classes and test classes for the various portions of the CMS.&lt;br /&gt;
:# Begin the implementation of the roadmap.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Mark Dexter&lt;br /&gt;
&lt;br /&gt;
====Project: Create a &#039;&#039;&#039;translating tool&#039;&#039;&#039; extension for Joomla ====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Projects like Facebook (see [http://www.insidefacebook.com/2008/04/02/now-you-can-help-translate-facebook-into-any-language/ insidefacebook.com/...]), RememberTheMilk ([http://www.rememberthemilk.com/services/translate/ http://www.rememberthemilk.com/...]) or other projects using [https://www.transifex.com] are taking advantage of their communities in order to  localize their software. Joomla is being translated by its community into 64 languages but there is plenty of space for more languages and more community participation.&lt;br /&gt;
At the same time many Joomla 3rd party developers are searching for a solution on how their communities can contribute in the translation of their extensions. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; It is a Goal for this GSoC 2013 project to create an improved tool based in [http://extensions.joomla.org/extensions/languages/language-edition/17755 com_localise] that allows to translators to easily translate and upload their translations to a GitHub repository using [http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Github.html JGithub package]. The tool also should allow frontend community members to suggest translated strings just like Facebook or Rememerthemilk does.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, Git/Github, Joomla CMS and framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;  Medium-Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039;  Javier Gómez, Jean Marie Simonet, Edvard Ananyan&lt;br /&gt;
&lt;br /&gt;
====Project: Module Modernization====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Modules are an important part of the CMS but many of the modules have not been updated in many years and do not take advantage of new features like JImage or JQuery, JLayouts, or PHP 5. In addition aspects of module handling such as loadposition/loadmodule and the handling of modules in templates are due for refactoring and improvement as is the user interface of com_modules. This project will work on bringing modules up to date with the rest of the CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Updated modules and module handling. Although subject to discussion with mentors, some likely areas are:&lt;br /&gt;
*Review all modules and bring up to PHP 5.4 standards.&lt;br /&gt;
*Incorporate JImage into modules as appropriate for example embedding the introtext image in articles modules.&lt;br /&gt;
*Incorporate or add new modules incorporating JQuery features such as image carousels.&lt;br /&gt;
*Add new modules for obviously missing features such as display of contact information.&lt;br /&gt;
*Develop the use of JLayouts in modules for standardization.&lt;br /&gt;
*Update the handling of loadposition.&lt;br /&gt;
*Work on handling modules as content and treating them as assets (i.e. providing module level access control).&lt;br /&gt;
*Work on a way to create basic configurable module default settings for items such as show title or class suffix.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, Joomla CMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Easy to Medium &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Elin Waring&lt;br /&gt;
&lt;br /&gt;
====Project: Smart Search Improvements====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Smart Search is an advanced search system for the Joomla CMS. While extremely powerful, it does has some limitations that we would like to address.  First, it does always not properly handle some multibyte character sets and languages that do not use spaces between words. While partial solutions have been implemented, we would like to have more generic solutions. Also we would like to have a smart search interface in the Joomla Administrator and with the move to the core content model, to have better ties between smart search and other parts of the code base as well as extensions (how about an automated way to create a smart search plugin?). Finally, we would like to see some ongoing issues addressed including time out problems in the CLI application and modernization of queries and code to take advantage of newer databases and PHP versions as well as more parts of the Joomla API.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A much improved Smart Search shipped as part of Joomla CMS 3.2. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, SQL, search principles, Joomla platform, Smart Search.  &lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Joomla Framework===&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-platform github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/strategy.html Development Strategy]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-platform Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
====Project: Platform Unit Testing====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/coverage/ 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).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Object Relational Mapping (ORM) in Joomla====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Explanation:&#039;&#039;&#039; Implementation of Object Relational Mapping to provide an exiting new basis for building (complex) applications on or within Joomla.&lt;br /&gt;
&lt;br /&gt;
:Joomla uses an Active Record implementation. Via JTable and JTableNested data are CRUDded in models to and from database tables. Tables for different content types share the same kind of data and therefore code is duplicated. There are plans to solve this with a Unified Content Model (UCM), which will use a shared table for all content and a specialised table per content type. In order to implement that a JData class was made to store data in and a JDataMapper to map the database tables to the data. In terms of Martin Fowler&#039;s Patterns of Enterprise Architecture Patterns: Class Table Inheritance. This UCM would be a replacement for the current JTable classes and components. &lt;br /&gt;
&lt;br /&gt;
:Object Relational Mapping, especially when one-to-many and many-to-many relations are in play, has already been worked out in the PHP-world with ORM-frameworks like Propel and Doctrine. No need to reinvent a complete new wheel. Some work has been done to use Doctrine ORM in Joomla extensions, but it could be made more generally usable and easily available to open a lot of possibilities. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
:The focus for such a GSOC-project could be one of the following:&lt;br /&gt;
:* a more general ORM interface in which specific ORM packages could fit; be it a &amp;quot;native&amp;quot; JDataMapper or other 3rd party ORM packages.&lt;br /&gt;
:* or a specific implementation (like Doctrine) with which core CMS extensions could be refactored. This would be a UCM-implementation using an existing ORM package.&lt;br /&gt;
:Both the Joomla Platform/Framework and the CMS would benefit from such projects.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Object Relational Mapping theory.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://martinfowler.com/eaaCatalog/ and http://www.martinfowler.com/books/eaa.html&lt;br /&gt;
:* http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/index.html&lt;br /&gt;
:* https://github.com/eBaySF/joomla-platform/blob/data-package/docs/manual/en-US/chapters/packages/data.md#jdatamapper&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Herman Peeren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Expand Google API coverage====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The JGoogle package provides a basic structure for using Google APIs in Joomla based code. However it only includes classes for a limited set of APIs.  Your task is to dramatically expand the coverage of Google data. Specific APIs to be agreed upon with mentors, with some preference for those of immediate usefulness to the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for a range of Google data.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Add NoSQL and mongoDB support to the framework====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Add in a NoSQL abstract layer and use it for the mongoDB driver. You should keep in mind that the layer might be further extended with other NoSQL databases so it&#039;s important to make it as generic as possible. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for the NoSQL abstract layer and mongoDB driver. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with mongoDB and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Amazon RDS package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Amazon that handles the main Amazon API requests (authentication, signing requests) and create a wrapper over the AMAZON RDS API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Amazon RDS API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://aws.amazon.com/documentation/rds/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Project: Rackspace Database package====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Create a package for Rackspace that handles the main Rackspace API requests (authentication, signing requests) and create a wrapper over the Racksapce Database API. You might find it useful the JGoogle, JFacebook and JGithub packages that interact with APIs.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A set of well coded, fully unit tested and documented implementations for Rackspace Database API. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; Github, PHPUnit, familiarity with web services and the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;References:&#039;&#039;&#039;&lt;br /&gt;
:* http://www.rackspace.com/cloud/databases/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{dablink|Please add your project ideas here, you can use this &#039;&#039;&#039;[[GSOC 2013 Project template]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2013]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=API17:JBrowser&amp;diff=67502</id>
		<title>API17:JBrowser</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=API17:JBrowser&amp;diff=67502"/>
		<updated>2012-06-06T08:45:22Z</updated>

		<summary type="html">&lt;p&gt;St3fan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=={{JVer|11.1}} JBrowser==&lt;br /&gt;
===Description===&lt;br /&gt;
{{Description:JBrowser}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[Description:JBrowser|Edit Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
JBrowser is deprecated. [[JApplicationWebClient/12.1]] should be use instead.&lt;br /&gt;
&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Visibility&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::__construct/11.1|__construct]]&lt;br /&gt;
|Create a browser instance (constructor). &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getAgentString/11.1|getAgentString]]&lt;br /&gt;
|Return the full browser agent string. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getBrowser/11.1|getBrowser]]&lt;br /&gt;
|Retrieve the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getFeature/11.1|getFeature]]&lt;br /&gt;
|Retrieve the current browser capability. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getHTTPProtocol/11.1|getHTTPProtocol]]&lt;br /&gt;
|Returns the server protocol in use on the current server. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getMajor/11.1|getMajor]]&lt;br /&gt;
|Retrieve the current browser&#039;s major version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getMinor/11.1|getMinor]]&lt;br /&gt;
|Retrieve the current browser&#039;s minor version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getPlatform/11.1|getPlatform]]&lt;br /&gt;
|Return the currently matched platform. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getQuirk/11.1|getQuirk]]&lt;br /&gt;
|Retrieve unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getVersion/11.1|getVersion]]&lt;br /&gt;
|Retrieve the current browser&#039;s version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::hasFeature/11.1|hasFeature]]&lt;br /&gt;
|Check the current browser capabilities. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::hasQuirk/11.1|hasQuirk]]&lt;br /&gt;
|Check unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isBrowser/11.1|isBrowser]]&lt;br /&gt;
|Determine if the given browser is the same as the current. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isMobile/11.1|isMobile]]&lt;br /&gt;
|Determines if the browser is mobile version or not. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isRobot/11.1|isRobot]]&lt;br /&gt;
|Determines if the browser is a robot or not. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isSSLConnection/11.1|isSSLConnection]]&lt;br /&gt;
|Determine if we are using a secure (SSL) connection. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isViewable/11.1|isViewable]]&lt;br /&gt;
|Determines if a browser can display a given MIME type. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::match/11.1|match]]&lt;br /&gt;
|Parses the user agent string and inititializes the object with all the known features and quirks for the given browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setBrowser/11.1|setBrowser]]&lt;br /&gt;
|Sets the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setFeature/11.1|setFeature]]&lt;br /&gt;
|Set capabilities for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setQuirk/11.1|setQuirk]]&lt;br /&gt;
|Set unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public static &lt;br /&gt;
|[[JBrowser::_sortMime/11.1|_sortMime]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|public static &lt;br /&gt;
|[[JBrowser::getInstance/11.1|getInstance]]&lt;br /&gt;
|Returns the global Browser object, only creating it if it doesn&#039;t already exist. &lt;br /&gt;
|-&lt;br /&gt;
|protected &lt;br /&gt;
|[[JBrowser::_setPlatform/11.1|_setPlatform]]&lt;br /&gt;
|Match the platform of the browser. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Defined in&#039;&#039;&#039; libraries/joomla/environment/browser.php&lt;br /&gt;
* &#039;&#039;&#039;Extends&#039;&#039;&#039; [[JObject/11.1|JObject]]&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( &#039;joomla.environment.browser&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
===See also===&lt;br /&gt;
* {{JVer|11.1}} &#039;&#039;&#039;JBrowser source code&#039;&#039;&#039; on [[jplatform:environment/browser.php|BitBucket]]&lt;br /&gt;
* {{JVer|11.1}} Subpackage [[Subpackage Environment/11.1|Environment]]&lt;br /&gt;
* [[JBrowser|Other versions of JBrowser]]&lt;br /&gt;
{{SeeAlso:JBrowser}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[SeeAlso:JBrowser|Edit See Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
===User contributed notes===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
noresultsheader=\n&lt;br /&gt;
category=JBrowser&lt;br /&gt;
category=CodeExample&lt;br /&gt;
category=ClassExample&lt;br /&gt;
include=*&lt;br /&gt;
namespace=CodeExample&lt;br /&gt;
format= ,,,&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Platform]][[Category:Platform 11.1]][[Category:JBrowser]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=API17:JBrowser&amp;diff=67501</id>
		<title>API17:JBrowser</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=API17:JBrowser&amp;diff=67501"/>
		<updated>2012-06-06T08:44:47Z</updated>

		<summary type="html">&lt;p&gt;St3fan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=={{JVer|11.1}} JBrowser==&lt;br /&gt;
===Description===&lt;br /&gt;
{{Description:JBrowser}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[Description:JBrowser|Edit Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
JBrowser is deprecated get the [[JApplicationWebClient/12.1]] object from the application instead&lt;br /&gt;
&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Visibility&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::__construct/11.1|__construct]]&lt;br /&gt;
|Create a browser instance (constructor). &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getAgentString/11.1|getAgentString]]&lt;br /&gt;
|Return the full browser agent string. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getBrowser/11.1|getBrowser]]&lt;br /&gt;
|Retrieve the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getFeature/11.1|getFeature]]&lt;br /&gt;
|Retrieve the current browser capability. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getHTTPProtocol/11.1|getHTTPProtocol]]&lt;br /&gt;
|Returns the server protocol in use on the current server. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getMajor/11.1|getMajor]]&lt;br /&gt;
|Retrieve the current browser&#039;s major version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getMinor/11.1|getMinor]]&lt;br /&gt;
|Retrieve the current browser&#039;s minor version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getPlatform/11.1|getPlatform]]&lt;br /&gt;
|Return the currently matched platform. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getQuirk/11.1|getQuirk]]&lt;br /&gt;
|Retrieve unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getVersion/11.1|getVersion]]&lt;br /&gt;
|Retrieve the current browser&#039;s version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::hasFeature/11.1|hasFeature]]&lt;br /&gt;
|Check the current browser capabilities. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::hasQuirk/11.1|hasQuirk]]&lt;br /&gt;
|Check unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isBrowser/11.1|isBrowser]]&lt;br /&gt;
|Determine if the given browser is the same as the current. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isMobile/11.1|isMobile]]&lt;br /&gt;
|Determines if the browser is mobile version or not. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isRobot/11.1|isRobot]]&lt;br /&gt;
|Determines if the browser is a robot or not. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isSSLConnection/11.1|isSSLConnection]]&lt;br /&gt;
|Determine if we are using a secure (SSL) connection. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isViewable/11.1|isViewable]]&lt;br /&gt;
|Determines if a browser can display a given MIME type. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::match/11.1|match]]&lt;br /&gt;
|Parses the user agent string and inititializes the object with all the known features and quirks for the given browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setBrowser/11.1|setBrowser]]&lt;br /&gt;
|Sets the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setFeature/11.1|setFeature]]&lt;br /&gt;
|Set capabilities for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setQuirk/11.1|setQuirk]]&lt;br /&gt;
|Set unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public static &lt;br /&gt;
|[[JBrowser::_sortMime/11.1|_sortMime]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|public static &lt;br /&gt;
|[[JBrowser::getInstance/11.1|getInstance]]&lt;br /&gt;
|Returns the global Browser object, only creating it if it doesn&#039;t already exist. &lt;br /&gt;
|-&lt;br /&gt;
|protected &lt;br /&gt;
|[[JBrowser::_setPlatform/11.1|_setPlatform]]&lt;br /&gt;
|Match the platform of the browser. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Defined in&#039;&#039;&#039; libraries/joomla/environment/browser.php&lt;br /&gt;
* &#039;&#039;&#039;Extends&#039;&#039;&#039; [[JObject/11.1|JObject]]&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( &#039;joomla.environment.browser&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
===See also===&lt;br /&gt;
* {{JVer|11.1}} &#039;&#039;&#039;JBrowser source code&#039;&#039;&#039; on [[jplatform:environment/browser.php|BitBucket]]&lt;br /&gt;
* {{JVer|11.1}} Subpackage [[Subpackage Environment/11.1|Environment]]&lt;br /&gt;
* [[JBrowser|Other versions of JBrowser]]&lt;br /&gt;
{{SeeAlso:JBrowser}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[SeeAlso:JBrowser|Edit See Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
===User contributed notes===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
noresultsheader=\n&lt;br /&gt;
category=JBrowser&lt;br /&gt;
category=CodeExample&lt;br /&gt;
category=ClassExample&lt;br /&gt;
include=*&lt;br /&gt;
namespace=CodeExample&lt;br /&gt;
format= ,,,&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Platform]][[Category:Platform 11.1]][[Category:JBrowser]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=API17:JBrowser&amp;diff=67500</id>
		<title>API17:JBrowser</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=API17:JBrowser&amp;diff=67500"/>
		<updated>2012-06-06T08:44:37Z</updated>

		<summary type="html">&lt;p&gt;St3fan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=={{JVer|11.1}} JBrowser==&lt;br /&gt;
===Description===&lt;br /&gt;
{{Description:JBrowser}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[Description:JBrowser|Edit Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
JRequest is deprecated get the [[JApplicationWebClient/12.1]] object from the application instead&lt;br /&gt;
&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Visibility&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::__construct/11.1|__construct]]&lt;br /&gt;
|Create a browser instance (constructor). &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getAgentString/11.1|getAgentString]]&lt;br /&gt;
|Return the full browser agent string. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getBrowser/11.1|getBrowser]]&lt;br /&gt;
|Retrieve the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getFeature/11.1|getFeature]]&lt;br /&gt;
|Retrieve the current browser capability. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getHTTPProtocol/11.1|getHTTPProtocol]]&lt;br /&gt;
|Returns the server protocol in use on the current server. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getMajor/11.1|getMajor]]&lt;br /&gt;
|Retrieve the current browser&#039;s major version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getMinor/11.1|getMinor]]&lt;br /&gt;
|Retrieve the current browser&#039;s minor version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getPlatform/11.1|getPlatform]]&lt;br /&gt;
|Return the currently matched platform. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getQuirk/11.1|getQuirk]]&lt;br /&gt;
|Retrieve unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::getVersion/11.1|getVersion]]&lt;br /&gt;
|Retrieve the current browser&#039;s version. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::hasFeature/11.1|hasFeature]]&lt;br /&gt;
|Check the current browser capabilities. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::hasQuirk/11.1|hasQuirk]]&lt;br /&gt;
|Check unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isBrowser/11.1|isBrowser]]&lt;br /&gt;
|Determine if the given browser is the same as the current. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isMobile/11.1|isMobile]]&lt;br /&gt;
|Determines if the browser is mobile version or not. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isRobot/11.1|isRobot]]&lt;br /&gt;
|Determines if the browser is a robot or not. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isSSLConnection/11.1|isSSLConnection]]&lt;br /&gt;
|Determine if we are using a secure (SSL) connection. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::isViewable/11.1|isViewable]]&lt;br /&gt;
|Determines if a browser can display a given MIME type. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::match/11.1|match]]&lt;br /&gt;
|Parses the user agent string and inititializes the object with all the known features and quirks for the given browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setBrowser/11.1|setBrowser]]&lt;br /&gt;
|Sets the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setFeature/11.1|setFeature]]&lt;br /&gt;
|Set capabilities for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public &lt;br /&gt;
|[[JBrowser::setQuirk/11.1|setQuirk]]&lt;br /&gt;
|Set unique behavior for the current browser. &lt;br /&gt;
|-&lt;br /&gt;
|public static &lt;br /&gt;
|[[JBrowser::_sortMime/11.1|_sortMime]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|public static &lt;br /&gt;
|[[JBrowser::getInstance/11.1|getInstance]]&lt;br /&gt;
|Returns the global Browser object, only creating it if it doesn&#039;t already exist. &lt;br /&gt;
|-&lt;br /&gt;
|protected &lt;br /&gt;
|[[JBrowser::_setPlatform/11.1|_setPlatform]]&lt;br /&gt;
|Match the platform of the browser. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Defined in&#039;&#039;&#039; libraries/joomla/environment/browser.php&lt;br /&gt;
* &#039;&#039;&#039;Extends&#039;&#039;&#039; [[JObject/11.1|JObject]]&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( &#039;joomla.environment.browser&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
===See also===&lt;br /&gt;
* {{JVer|11.1}} &#039;&#039;&#039;JBrowser source code&#039;&#039;&#039; on [[jplatform:environment/browser.php|BitBucket]]&lt;br /&gt;
* {{JVer|11.1}} Subpackage [[Subpackage Environment/11.1|Environment]]&lt;br /&gt;
* [[JBrowser|Other versions of JBrowser]]&lt;br /&gt;
{{SeeAlso:JBrowser}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[SeeAlso:JBrowser|Edit See Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
===User contributed notes===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
noresultsheader=\n&lt;br /&gt;
category=JBrowser&lt;br /&gt;
category=CodeExample&lt;br /&gt;
category=ClassExample&lt;br /&gt;
include=*&lt;br /&gt;
namespace=CodeExample&lt;br /&gt;
format= ,,,&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Platform]][[Category:Platform 11.1]][[Category:JBrowser]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>St3fan</name></author>
	</entry>
</feed>