Difference between revisions of "Development Working Group"

From Joomla! Documentation

m (update graphic size, whole page will be reworked)
(31 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{incomplete}}[[Image:workgroups_development.jpg|right]]
+
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100%"
 +
| colspan="1" style="width:100%; vertical-align:top; text-align: center; border:1px solid #A0522D; background-color:#FFF8DC;" |
 +
<div style="border-bottom:1px solid #A0522D; background-color:#F5DEB3; padding:0.2em 0.5em 0.2em 0.5em; font-size:130%; font-weight:bold;">Note</div>
 +
<div style="text-align: center; padding:1em 5em 1em 1em;"> <!--Note: Top, right, bottom, left -->
 +
Please note that some of the content on this page is currently out-of-date.  See also [[Production Working Groups]].
 +
</div>
 +
|}[[Image:workgroups_development.jpg|right|96px]]
  
'''''"..To develop a cutting edge, state of the art Web Content Management application framework..."'''''
+
''''' "...To develop a cutting edge, state of the art Web Content Management application framework..." '''''
 
 
== Introduction ==
 
  
 
The main responsibility of the [[Development Working Group]] is taking care of the development of the Joomla! application framework and the Joomla! Content Management System (CMS). Besides the development of the Joomla! codebase the development working group defines the Joomla! roadmap strategy, creating (architectural) designs for major and minor versions and of course take care of bug and security fixes in maintenance versions.
 
The main responsibility of the [[Development Working Group]] is taking care of the development of the Joomla! application framework and the Joomla! Content Management System (CMS). Besides the development of the Joomla! codebase the development working group defines the Joomla! roadmap strategy, creating (architectural) designs for major and minor versions and of course take care of bug and security fixes in maintenance versions.
Line 11: Line 15:
 
Joomla! is as every other open-source project based upon the fundaments of collaborative and is a community-driven project. This means that the software, the documentation, the ever growing number of available the extensions, support (forum, mailing, lists newsletters, user groups are collaboratively produced by users and developers all over the world.
 
Joomla! is as every other open-source project based upon the fundaments of collaborative and is a community-driven project. This means that the software, the documentation, the ever growing number of available the extensions, support (forum, mailing, lists newsletters, user groups are collaboratively produced by users and developers all over the world.
  
In this section of the documentation wiki we have tried to describe all relevant aspects to Joomla! development. OUr effort strives to be as complete as we can be, but we don't rule out that information you are looking for is not (yet) documented. We encourage everyone to help completing the documentation effort and maximize the community effect within the Joomla! project.
+
In this section of the documentation wiki we have tried to describe all relevant aspects to Joomla! development. Our effort strives to be as complete as we can be, but we don't rule out that information you are looking for is not (yet) documented. We encourage everyone to help completing the documentation effort and maximize the community effect within the Joomla! project.
  
 
== Getting started ==
 
== Getting started ==
  
First look around
+
The amount of information that is available from this page is like a small (e-)book. We tried to organize the information in a logical order, and also structure the information in the most efficient way. To prevent you from reading for some hours, we use a simple documentation method. Per topic we draft a short description on the information that can be found, and in the linked pages we will provide as much as possible detail. Keep in mind that you can use the free-text search or the generated table of contents for this documentation category to find your information. If there is information missing, feel free to add this within this wiki.
Guide to this wiki section
+
 
 +
* [[First look around]]
 +
* [[Guide to the Development Documentation wiki section]]
  
 
== Technical infrastructure ==  
 
== Technical infrastructure ==  
  
Mailing lists
+
For collaboration we have set up an infrastructure like version control, the bug tracker and of course this wiki for documentation. These assets are essential for Joomla! development. Below you will find links to the infrastructure that is used within the Joomla! project.
Version control
+
 
Bug tracker
+
* [[Mailing lists]]
IRC/Real-Time Chat
+
* [[Version control]]
Wikis
+
* [[Bug tracker]]
Web sites
+
* [[IRC/Real-Time Chat]]
 +
* [[Wikis]]
 +
* [[Web sites]]
 +
* [[Joomlacode]]
  
 
== Social and Political Infrastructure ==
 
== Social and Political Infrastructure ==
  
Organizational structure
+
Ready for something more heavy at tea? Then you're in the right place here ;-) In this section we describe the basic organizational structures we have put in place, but probably at least important we describe the code of conduct we follow. For open source projects this is especially important because we have no hierarchical relation with our volunteers, the Joomla! project follows the [[http://producingoss.com/en/consensus-democracy.html Consensus Based Democracy]] model.
Code of conduct
+
 
 +
* [[Organizational structure]]
 +
* [[Code of conduct]]
  
 
== Communications ==
 
== Communications ==
  
Development blog
+
There are several ways to get in touch, or communicate with the development community of Joomla! Within the working groups we try to share as much as possible information, using different media. It is a mix of tools and events we organized, details can be found in the links below.
Summer of Code blog
+
 
Development forum
+
* [http://developer.joomla.org/section-blog.html Development blog]
Development meetings
+
* [http://developer.joomla.org/gsoc2008.html Summer of Code blog]
Joomla! events (like Joomla! days)
+
* [http://developer.joomla.org/bug-squad-blog.html Bug Squad blog]
Local user groups
+
* [http://forum.joomla.org/viewforum.php?f=509&sid=fb99f7b1a81437ff25e8dd707343bae0 Development forum]
 +
* [[Development meetings]]
 +
* [http://www.google.com/calendar/embed?src=calendar@joomla.org Joomla! events]
 +
* [http://community.joomla.org/joomla-user-groups.html Local user groups]
 +
* [http://docs.joomla.org/Pizza_Bugs_and_Fun_2 Pizza Bugs and Fun]
  
 
== Packaging, releasing and daily development ==
 
== Packaging, releasing and daily development ==
  
Release numbering
+
* Release numbering
Release branches
+
* Release branches
Sandboxes
+
* Sandboxes
Stabilizing a release
+
* Stabilizing a release
Packaging
+
* Packaging
Testing and releasing
+
* Testing and releasing
Maintaining multiple release lines (general description, and our current release lines)
+
* Maintaining multiple release lines (general description, and our current release lines)
Releases and daily development
+
* Releases and daily development
  
 
== Development community ==
 
== Development community ==
  
How to get involved?
+
* How to get involved?
3rd party development
+
* 3rd party development
Interesting topics to study
+
* Interesting topics to study
Recommended readings and books
+
* Recommended readings and books
  
 
== Licensing and copyrights ==  
 
== Licensing and copyrights ==  
  
General Public License
+
* General Public License
 
 
  
 
== How to contribute to Joomla! development ==
 
== How to contribute to Joomla! development ==
 
  
 
== Coding standards ==
 
== Coding standards ==
 
+
A list of Joomla! coding standards as of 13 February 2010 can be found here: [[Coding style and standards]]. There is also a list of [[Core Development Best Practices]].
Full desciption of coding standards
 
Usage of Docbook markups
 
  
 
== Writing secure Joomla! code ==
 
== Writing secure Joomla! code ==
  
Preventing SQL injections (see http://developer.joomla.org/tutorials/181-preventing-sql-injections.html)
+
* [http://developer.joomla.org/tutorials/181-preventing-sql-injections.html Preventing SQL injections]
 
+
* [[Secure coding guidelines]]
  
 
== Unit testing within Joomla! ==
 
== Unit testing within Joomla! ==
Line 87: Line 98:
 
Ground work on the implementation of unit testing has been done by Enno Klasing during the Summer of Code 2007 project and has been perfected by Alan Langford from the Joomla! [[Development Team]]. The way [[Unit Testing]] is implemented within the Joomla! project has been documented in the [[Unit Testing]] chapter.
 
Ground work on the implementation of unit testing has been done by Enno Klasing during the Summer of Code 2007 project and has been perfected by Alan Langford from the Joomla! [[Development Team]]. The way [[Unit Testing]] is implemented within the Joomla! project has been documented in the [[Unit Testing]] chapter.
  
[[Unit Testing]]
+
* [[Unit Testing]]
 
 
[[Category:Development]]
 
  
 
== What does a Joomla! development environment look like ==
 
== What does a Joomla! development environment look like ==
  
 
== Debugging your Joomla! code ==
 
== Debugging your Joomla! code ==
 +
One way to debug Joomla! code is using the open-source programs Eclipse and XDebug. Instructions for setting up these programs is available in [[Setting up your workstation for Joomla! development]].
  
 
== Joomla! organization ==
 
== Joomla! organization ==
Line 112: Line 122:
 
* [[Unit Testing]] within the Joomla! project
 
* [[Unit Testing]] within the Joomla! project
 
* [[The use of Subversion]]
 
* [[The use of Subversion]]
 +
<noinclude>[[Category:Development Working Group]]</noinclude>
  
[[Category:Development]]
+
[[Category:Working Groups]]

Revision as of 10:30, 13 November 2012

Note

Please note that some of the content on this page is currently out-of-date. See also Production Working Groups.

"...To develop a cutting edge, state of the art Web Content Management application framework..."

The main responsibility of the Development Working Group is taking care of the development of the Joomla! application framework and the Joomla! Content Management System (CMS). Besides the development of the Joomla! codebase the development working group defines the Joomla! roadmap strategy, creating (architectural) designs for major and minor versions and of course take care of bug and security fixes in maintenance versions.

The development working group holds two teams: the Development Team and the so called Bug Squad. Both teams have a separate responsibility but together they form the development force for the Joomla! project.

Joomla! is as every other open-source project based upon the fundaments of collaborative and is a community-driven project. This means that the software, the documentation, the ever growing number of available the extensions, support (forum, mailing, lists newsletters, user groups are collaboratively produced by users and developers all over the world.

In this section of the documentation wiki we have tried to describe all relevant aspects to Joomla! development. Our effort strives to be as complete as we can be, but we don't rule out that information you are looking for is not (yet) documented. We encourage everyone to help completing the documentation effort and maximize the community effect within the Joomla! project.

Getting started[edit]

The amount of information that is available from this page is like a small (e-)book. We tried to organize the information in a logical order, and also structure the information in the most efficient way. To prevent you from reading for some hours, we use a simple documentation method. Per topic we draft a short description on the information that can be found, and in the linked pages we will provide as much as possible detail. Keep in mind that you can use the free-text search or the generated table of contents for this documentation category to find your information. If there is information missing, feel free to add this within this wiki.

Technical infrastructure[edit]

For collaboration we have set up an infrastructure like version control, the bug tracker and of course this wiki for documentation. These assets are essential for Joomla! development. Below you will find links to the infrastructure that is used within the Joomla! project.

Social and Political Infrastructure[edit]

Ready for something more heavy at tea? Then you're in the right place here ;-) In this section we describe the basic organizational structures we have put in place, but probably at least important we describe the code of conduct we follow. For open source projects this is especially important because we have no hierarchical relation with our volunteers, the Joomla! project follows the [Consensus Based Democracy] model.

Communications[edit]

There are several ways to get in touch, or communicate with the development community of Joomla! Within the working groups we try to share as much as possible information, using different media. It is a mix of tools and events we organized, details can be found in the links below.

Packaging, releasing and daily development[edit]

  • Release numbering
  • Release branches
  • Sandboxes
  • Stabilizing a release
  • Packaging
  • Testing and releasing
  • Maintaining multiple release lines (general description, and our current release lines)
  • Releases and daily development

Development community[edit]

  • How to get involved?
  • 3rd party development
  • Interesting topics to study
  • Recommended readings and books

Licensing and copyrights[edit]

  • General Public License

How to contribute to Joomla! development[edit]

Coding standards[edit]

A list of Joomla! coding standards as of 13 February 2010 can be found here: Coding style and standards. There is also a list of Core Development Best Practices.

Writing secure Joomla! code[edit]

Unit testing within Joomla![edit]

The goal of unit testing is to isolate each part of the program and show that the individual parts are correct. A unit test provides a strict, written contract that the piece of code must satisfy. As a result, it affords several benefits. Unit tests find problems early in the development cycle.

In computer programming, unit testing is a method of testing that verifies the individual units of source code are working properly. A unit is the smallest testable part of an application. In procedural programming a unit may be an individual program, function, procedure, etc., while in object-oriented programming, the smallest unit is a method, which may belong to a base/super class, abstract class or derived/child class.

Ideally, each test case is independent from the others; Double objects like stubs, mock or fake objects as well as test harnesses can be used to assist testing a module in isolation. Unit testing is typically done by software developers to ensure that the code they have written meets software requirements and behaves as the developer intended.

Ground work on the implementation of unit testing has been done by Enno Klasing during the Summer of Code 2007 project and has been perfected by Alan Langford from the Joomla! Development Team. The way Unit Testing is implemented within the Joomla! project has been documented in the Unit Testing chapter.

What does a Joomla! development environment look like[edit]

Debugging your Joomla! code[edit]

One way to debug Joomla! code is using the open-source programs Eclipse and XDebug. Instructions for setting up these programs is available in Setting up your workstation for Joomla! development.

Joomla! organization[edit]

Joomla! planning process and procedures[edit]

Miscellaneous[edit]

This is "old" content and needs to be moved to the final location in this wiki, work in progress...