Contribute Code to the Project

Thank you for your contribution: 

Pull Request

WORK IN PROGRESS ... NOT READY ... DID I MISS SOMETHING VERY IMPORTANT? ... PLEASE COMMENT

Someone has to write the code for Joomla! But how to contribute?

First of all - The code of the CMS and the Platform is stored here https://github.com/joomla

The Joomla! project runs a developer site with a focus on providing information and road maps to all the resources available for developers interesting in extending the Joomla! CMS, writing applications for the Joomla! Platform or helping to improve the Joomla! codebase - http://developer.joomla.org/.

After searching and reading  I realized that a a newbie like you (and me too) is simply lost :)

My findings

For me it was hard to find my way into contributions and it seems that there is no clear defined way how to contribute code. May be there is one, but I didn't find it :( I asked a few people and I got various answers, so I I decided to write up my experiences. First of all I wanted to understand the structure behind the project. So let's try to figure that out. When you read chapter things can be different. I wrote it in Dec. 13-16th 2011.

Joomla Leadership

The Joomla Leadership Team is made up of the leaders of the Joomla Production and the Joomla Community Workgroups. In case of code contribution we want to have a closer look to the Production Workgroup

Production Working Group

Source: http://www.joomla.org/about-joomla/the-project/project-teams.html

  • Task: Create software that is free, secure and of high-quality—encompasses everything that goes into the final product, not just code but also documentation, internationalization and localization efforts of all types.
  • Leaders: Chris Davenport, Christophe Demko,  Mark Dexter, Andrew Eddie, Louis Landry, Ian MacLennan, Sam Moffatt, Omar Ramos, Ron Severdia, Jean-Marie Simonet, Andrea Tarr
  • Responsibilities: Core code development, patches, Joomla Labs, Joomla Bug Squad, localization, internationalization, Joomla Documentation, security, Google Summer of Code
  • Public Discussion: Group: http://groups.google.com/group/joomla-wg...

Productions Leadership Team (PLT)

The PLT is a part of the Production Working Group. Members are (http://www.joomla.org/about-joomla/the-project/leadership-team.html)

  • Christophe Demko
  • Mark Dexter
  • Sam Moffat
  • Omar Ramos
  • Ron Serverdia
  • Andrea Tarr

The PLT itself consists of a development and a bug squad team.

I tried to figured out who are these people and how are processes organised.

I started to draw a kind of a map about that development team. It is of course not 100 % correct but this is how I understood it (Figure 1).

cocoate.com/node/9581

Figure 1: First draft of the structure

A very good overview over the current situation was given by Louis Landry at the Joomla! day in South Africa August 2011. Watch it!

Development Team

This team sometimes also is referred to as core-committers. Some of the members are also core-team members, but the term "core-comitter" refers to team members who have full commit access to the Joomla! code base. The development work group aims at the development of a cutting edge, state of the art Web Content Management application framework. This workgroup is the driving force behind new versions, and building it. Along with the other working groups we try to realize this ambition
(http://docs.joomla.org/Development_Team).

Bug Squad Team

The Job of the Bug Squad Team is to identify and fix bugs in Joomla.

I discovered a webinar recorded in June 2009 by Mark Dexter (Leader of the Development Bug Squad Group). It is a bit outdated in terms of Joomla! versions but I think it shows in a very nice way the idea of the Joomla! Bug Squad. For me it was a bit complicate to watch because it was in a "strange" format and I had to download and install aditional software, so I decided to convert it and put it on Vimeo. You find the original recording on http://docs.joomla.org/Webinar:_Overview_of_Tracker_Process.

Contribute code in a technical way

Nowadays Joomla! is stored on GitHub. You can fork the repository, browse through the code, change something and do a so called pull request.

You can see all the open requests at https://github.com/joomla/joomla-cms/pulls. Someone has to reviews and merge the requests to the core. You can even see the changes that are made in this pull request.

Example: okonomiyaki3000 wants someone to merge 3 commits into joomla:master from okonomiyaki3000:master (Figure 2)

okonomiyaki3000 wants someone to merge 3 commits into joomla:master from okonomiyaki3000:master 
cocoate.com/node/9581

Figure 2: Diff view of a Pull Request in GitHub

So now, anyone who is interested in that topic can comment and it is possible to have a public discussion. There exists an app that collects all the pull requests against the Joomla! CMS and Platform and start automated testing. At the end a member of the described infrastructure above has to decide and merge this request into the core - by one click on the merge button! 

IT WAS NEVER EASIER TO CONTRIBUTE TO THE JOOMLA! PROJECT! TRY IT!

A good description how you can make a pull request is documented here http://docs.joomla.org/Working_with_git_and_github/My_first_pull_request.

Propose new Features

It is absolutely necessary to talk about new features. The best way to do that is the mailing list. All posts are public and as an example here a proposal for a new feature. You can read the message and the discussion afterwards (A notification center for Joomla!) (Figure 3) and you can even try by yourselve and potentially get involved on GitHub (https://github.com/juliopontes/joomla-notification-center).

cocoate.com/node/9581

Figure 3: Proposal for a new feature in Joomla!

PLEASE COMMENT IF YOU HAVE LINKS, HINTS, IDEAS - I AM STILL LOOKING ...

Resources: