|
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 requirementsHere 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.
- Working on your Joomla! project should be your main activity for the entire summer.
- You must be willing to provide weekly status reports.
- You will be expected to learn how to use SVN and maintain a SVN account on forge.joomla.org.
- 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 applicationDuring 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 IdeasWorkflow library/componentWith 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 ManagementJoomla! 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 FrameworkJavascript 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 ComplianceJoomla! 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 SupportJoomla! 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 SupportHaving 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 RepresentationIf 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 ManagementProvide 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 SupportProvide a system by which one administrator application can manage multiple sites.
webDAV ServerDevelop a PHP native webDAV server capable of serving content from the database as files. Resources : webdav.org
MVCR FrameworkDevelop a Model - View - Controller - Renderer framework as a basis for Joomla! 2.0 development. Resources : Model View Controller
|