Support Joomla!
Google Summer of Code 2006 PDF Print

Thank you for your interest in Joomla! Joomla! is a great place to spend a summer learning, coding, participating and contributing. We are an exciting open source project with a vibrant community, and we look forward to your application and your project ideas.

Below you will find many resources when choosing a Summer of Code organization, writing your application, and choosing a project to work on. If you have questions at any point along the way, please post your question on the special Summer of Code forum

Student requirements

Here is a short list of requirements (as specified by the Joomla project) that you must be able to meet in order to get accepted as a student participant in Google's Summer of Code program.

  1. Working on your Joomla! project should be your main activity for the entire summer.
  2. You must be willing to provide weekly status reports.
  3. You will be expected to learn how to use SVN and maintain a SVN account on forge.joomla.org.
  4. You need to have decent PHP coding skills and basic knowledge of the Joomla! 1.5 framework and API.

The most important item is #1. You'll have a lot to learn before you will get to the point where you can begin coding your project, and the projects are all non-trivial. We will provide you with amazing support from the mentors and community, but it is up to you to make sure that you can focus on your Joomla! project.

 

Writing a Summer of Code application

During Summer of Code 2005, over 100 applications were received, of which only 6 were chosen. This year we are likely to receive even more. Competition will be fierce, so what can you do to help make sure your application gets serious consideration? Here are some tips, straight from last year's mentors themselves.

Sell your idea. Describe your idea in detail. What is its ultimate goal? What components will it have? What benefits does it have for Joomla! itself and its community? How do you plan to achieve completion of your project? If a specification already exists, what will you do that will go above and beyond expectations?

Sell yourself. Get across your enthusiasm for the project. Tell us what makes you stand out from the rest of the crowd. Talk about your past experiences, what makes you tick. Why are you interested in open source software, and Joomla! in particular? What interests do you have, and how do these interests relate to the project for which you're applying? There is a basic assumption that people applying for Summer of Code will have at least some programming skills already. So rather than spend a lot of time elaborating on these (though by all means, do tell us what you know), spend time talking about you.

Show enthusiasm. Summer of Code is a very exciting opportunity, and Joomla! is an extremely exciting project to work on. We're not just looking for people who want a summer job to pass the time, we're looking for devoted people who have an intrinsic passion for open source, and are (or will become) Joomla! experts in particular. ;)

Tailor your application to the project. It was painfully obvious last year that certain people copied/pasted parts (or even the entirety) of their applications to multiple projects. This can be seen from a mile away, and it is a sure-fire way for your application to not be taken seriously. Each application you send should be targeted and tailored for the specific mentoring organization and project to which you are applying.

Get feedback on your idea from the community. Discussing your idea with some established Joomla! folks is vital. If your idea duplicates existing efforts or code (and does not provide a very convincing reason for doing so), it will be rejected. Try to have your application reviewed by someone before you submit it, whether that be the mentor for a particular project itself (in the case of already generated ideas below), or a person with expertise in a certain area (such as the file system, or AJAX). Don't be afraid to ask the community for help; we want you to succeed just as much as you do. :)

Don't be afraid to go out on a limb. Have a brilliant idea that's not covered by the proposals on the following pages? Great! Don't be scared to try and think "outside the box" and come up with a fantastic idea of your own.

 

Note : 'Writing a Summer of Code Application ' is copyright by Angie Byron and Karoly Negyesi and available under a CC Attribution Share-Alike 2.0'
 

2006 Mentors

  • Johan Janssens (Lead Developer, core team member)
  • Louis Landry (Developer,  core team member)
  • Andy Miller (Developer, core team member)
  • Mateusz Krzeszowiec (Developer, core team member)
  • Mitch Pirtle (Developer, core team member)
  • Shayne Bartlett (Developer, core team member)
  • Sam Moffatt (Developer, core team member) 
  • Alex Kempkens (Developer, core team member)
  • Rastin Mehr (rmdstudio.com, community member)
  • Lee Cher Yeong (mosets.com, community member)
  • Wilco Jansen (community member)
  • Mark Withington (plmresearch.com, community member)
  • Gareth Hinde (ninjah.com, community member)
  • Gerben Dierick (khleuven.be, community member)

Project Ideas

Workflow library/component

With workflow becoming more important, it would be essential to provide this kind of flexibility to Joomla!. This component will provide an interface to exisiting/new components and allow processes to be triggered according to user-defined criteria. The workflow engine itself will monitor transactions being passed through the controller and fire of other transactions (auto, useror timer driven). The component will also provide users with work-items whenuser interaction is required to continue the workflow process. This component will also make use of user/role definitions to allow for role-based work-items.The engine itself is built using Petri Nets as the underlying concept.

A Petri Net (also known as a place/transition net or P/T net) is one of several mathematical representations of discrete distributed systems. As a modelinglanguage, it graphically depicts the structure of a distributed system as adirected bipartite graph with annotations. As such, a Petri net has placenodes, transition nodes, and directed arcs connecting places with transitions.Petri nets were invented in 1962 by Carl Adam Petri in his doctorate thesis.

Goals: 

  • to provide a flexible workflow engine based on Petri-nets
  • to provide an administration area to build workflow processes
  • to provide reporting tool to monitor workflow case status

Resources: http://en.wikipedia.org/wiki/Petri_net and  http://www.informatik.uni-hamburg.de/TGI/PetriNets/  

User & Access Management

Joomla! 1.5 has a limited implementation of the phpGACL library. The goal of this project is to create a fullblown ACL (access control lists) implementation. This will allow for the ability to add and edit the user groups system. It also allows for administrators to alter the access permissions based on function though the user interface. For example, you will need to create a UI that is able to define which group(s) can install components or template, and so on. Also, you will need to allow for controlling permissions at the object level in a more detailed way. For example, you will need to provide a system able to select sections and categories that are viewable only to certain groups. 

Goals 

  • Create full phpGACL implementation on the framework level
  • Create administration interface to manage users, group and permissions

Resources : phpGACL

Javascript Framework

Javascript and AJAX technologies have become an important part of todays web applications. In order to be able to bring these technologies to third party developers they need to be integrated into the Joomla! Framework. Third party developers should be able to make use of a PHP API for adding AJAX behavior to their extensions. In a perfect world it should even be possible to include AJAX behavior on the template level.  

Goals

  • Create Javascript PHP framework to load and manage javascript and AJAX libraries
  • Implement custom or existing AJAX library
  • Implement patTemplate functions to easily integrate AJAX behavior in templates

Resources : Ajax; Templating; and the Separation of Layout and Logic 


Useability and Accessibility Compliance

Joomla! is committed to improving its compliance with web accessibility standards to increase access to users with disabilities. Compliance with WCAG A also means nearly all requirements of 508 compliance will be met. This will be achieved through completely separating the presentation layer (the HTML output) from the business logic.

Goals

  • Create a guidelines document to be used for creating extensions and templates that adhere to WCAG 1.0/2.0 standards
  • Create a proof of concept, by integrating patTemplate into the content component.
  • Create documentation for third party developers

Resources : WCAG 2.0

Cross-Database Support

Joomla! 1.5 provides the plumbing to easily drop in a replacement driver for the database engine of your choice. However, that doesn’t solve the problem of all this MySQL-specific SQL code littering the core. This is extensive, and we need to find a way to replace the hardcoded SQL statements with a more general object-to-relational mapping system that can generate the SQL based on the driver selected. To achieve cross database support, a database abstraction library needs to be implemented. Core scripting also needs to be improved to prepare for compatibility with other database systems platforms.

Goals

  • Create a database abstraction library
  • Create a PostgreSQL driver

Resources : Object relationship mapping and SQL Comparison

Improved SEO Support

Having a website means needing to be noticed.  The best way to get noticed is to be well indexed in search engines.  While Joomla! sites built with search engine optimisation in mind are often well indexed, we are always looking for areas for improvement.  An idea for a project would be to bolster search engine optimisation by integrating dublin core tags, providing a more human readable URL system, etc.

Resources : Dublin Core

OWL/RDF Data Representation

If you spend any amount of time following the latest technology trends, you are undoubtedly familiar with RSS and the "Semantic Web", which have enabled a new way of consuming Web content based upon standards for exchanging syndication information. By exposing Web content as machine readable data, new services have been created that were previously impossible to build. The goal of this project is to take things beyond RSS and research the implemenation of an OWL parser and creator.

OWL is an acronym for Web Ontology Language, a markup language for publishing and sharing data using ontologies on the Internet. OWL is a vocabulary extension of the Resource Description Framework (RDF) and is derived from the DAML+OIL Web Ontology Language. Together with RDF and other components, these tools make up the Semantic Web project.

Resources : OWL

Docbook framework

Over the last 15 years the Docbook markup language has emerged as a standard for documentation both technical and non-technical. Providing users with the ability to import and export in Docbook will provide a major advance in Joomla!'s content management abilities. Ideally this project would firstly create a Docbook framework for that could be utilised by both Joomla!'s core extensions and 3rd party developed extensions. Secondly it would provide an inteface for the direct import and export of Docbook content into and out of Joomla!. 

Resources : docbook.org and docbookxsl

Node based scheme 

The Joomla! content structure is currently based on a two-level section/category hierarchy and taxonomy. In future we want to move towards a more flexible node-based structure and definable taxonomy. The goal of this project is to research and work out a proof of concept implementation for an nested set data model based on the Modified Pre-Order Tree Traversal technique for our content component.

Resources : http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

Enhanced Install/Update Management

Provide an enhanced extension management experience by developing an update client/server architecture as well as "one-click install" functionality from the extension manager.  Models for this system could be the eclipse update framework as well as the mozilla update framework. 

Multi-Site Support

Provide a system by which one administrator application can manage multiple sites. 


webDAV Server

Develop a PHP native webDAV server capable of serving content from the database as files.

Resources : webdav.org  


MVCR Framework

Develop a Model - View - Controller - Renderer framework as a basis for Joomla! 2.0 development.

Resources : Model View Controller

Last Updated ( Saturday, 06 May 2006 )