Managing the code of Project Joomla! - a peak inside

For Joomla! 1.0 Coding related discussions.
User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Managing the code of Project Joomla! - a peak inside

Postby stingrey » Tue May 23, 2006 3:49 pm

deathwingpnx wrote:To our Hero Stingrey, Sir I saw your name above the joomla.php file, are you the one who created the joomla.php library? But
doesnt matter cause I salute you anyways.  8)

Lol not quite. Let me explain.



Project Joomla! involves programmers throughout the globe (11 different counties - 4 regions) who make up the Core Development Team:
http://www.joomla.org/content/blogcategory/43/85/
It is essential that the Development Code base be managed in some way to allow these disparate group of programmers to work on the code.

Even with programmers located in the same office, there is the problem that people might attempt to work on the same files at the same time for different purposes, how does one manage this, especially where such a group is located in different countries?
How do other members of the team keep up with changes in the code that might occur?
What happens if a somethign changed needs to be reverted?

For this we use a Version Control system. Basically this is a central system that manages the code to:
- avoid version conflicts in development that can arise when multiple programmers work on teh same set of files on a project
- automatically journal changes to files on a project

In our case we use an Open Source Version Control system called Subversion:
http://subversion.tigris.org/

Subversion handles the above objectives via the central Joomla! Forge server.



When one of the Core Development team makes a change in the code base on their local machine, they then commit it to the central server via subversion. 
The server then checks the central server a compares the file on the server and the one from the developers machine.  Subversion then modifies the central server file with the changes made.  If the file was changed by another member of the team, Subversion will intelligently merge the changes - if it cannot it will warn the developer making the commit that it cannot update the central file due to a conflict which the member will need to fix manually.



Every file in the Joomla! project contains some information at the top of each file like from joomla.php

Code: Select all

* @version $Id: joomla.php 3603 2006-05-23 05:22:33Z stingrey $


Every time the file is changed this information is updated with the date and time of the change and the person making the change, it also includes the number of the commit - in this case 3603. 
This means that since Project Joomla! started, the change to joomla.php by stingrey on 2006-05-23 05:22:33Z was the 3603th code commit to the project. 
Every commit to the codebase increases this number.  A commit can involve a change to 1 file or a change to every file.

So at the top of every file in Project Joomla! you can tell when and who made the last change to that particular file. 
Last edited by stingrey on Tue May 23, 2006 4:30 pm, edited 1 time in total.
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D

User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Re: Let us Study, Learn and Understand the Joomla Code Together

Postby stingrey » Tue May 23, 2006 4:09 pm

So for example, at least once every day I update my local versions of the 1.0.x and 1.5.x code base.
Subversion compares my local version of the project with the central servers.  Any new changes on the central server are then syncronized with my local version so that both are in sync.

I then work on the code base and make the changes I wish and commit them back to the central server.



Everytime a commit is made to the central server team members are asked to give a description of what code changes were made with this commit.  This allows other members of the team to view the log and get an idea of the code changes made without examing the files changed in detail.
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D

User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Re: Let us Study, Learn and Understand the Joomla Code Together

Postby stingrey » Tue May 23, 2006 4:10 pm

Below is what an update from using Subversion looks like using ToirtoiseSVN as I develop on a Windows platform:
http://tortoisesvn.tigris.org/

Note since I last updated my local version of the 1.5.x codebase, 2 files were added, 3 were deleted and 39 were changed



Image
Last edited by stingrey on Tue May 23, 2006 4:48 pm, edited 1 time in total.
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D

User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Re: Let us Study, Learn and Understand the Joomla Code Together

Postby stingrey » Tue May 23, 2006 4:10 pm

And here is the log file with the descriptions about the commits using ToirtoiseSVN

Here you see a commit by Akede [Alex Kempkins] you see the commit description and the files modified in the commit also you see the commit number 3591


Image
Last edited by stingrey on Tue May 23, 2006 4:49 pm, edited 1 time in total.
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D

User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Re: Let us Study, Learn and Understand the Joomla Code Together

Postby stingrey » Tue May 23, 2006 4:11 pm

Here you see a diff (with ToirtoiseMerge, which is part of TortoiseSVN) of one of the changes made by Alex comparing between the past and new version of contact.php

This allows us to see exactly what changes Alex made to file



Image
Last edited by stingrey on Tue May 23, 2006 4:49 pm, edited 1 time in total.
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D

User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Re: Managing the code of Project Joomla!

Postby stingrey » Tue May 23, 2006 4:24 pm

Now another intersting part about Project Joomla! is that any person can pull the latest code that the developers are working on and see for themselves what is happening.

They can have the same ability to update their local copy of the code base, they can read the log and they can see the diff changes made in each file.

For more information read here:
http://dev.joomla.org/content/view/17/60/#subversion

The only difference, is that you CANNOT commit your own changes to the codebase, only Joomla! Core Developers can do this  ;)



If that is too much for you, can also view the nightly build of the code base:
http://dev.joomla.org/content/view/17/60/#nightly



You can even view and examine the changes made to the code base online via the web if you dont want to view it locally:
1.0.x
http://forge.joomla.org/integration/vie ... m=exsy1002

1.5.x
http://forge.joomla.org/integration/vie ... m=exsy1002



Why in the world would you do this?
Well you can actively help the Team by testing the changes made and give feedback on the changes:
http://forum.joomla.org/index.php/board,179.0.html
http://forum.joomla.org/index.php/board,126.0.html



Now it should be noted that NOT ALL open source projects allow its users to track so intimately the changes made to the codebase.
Another reason why we think Project Joomla! is one of the best  ;)
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D

User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Re: Managing the code of Project Joomla!

Postby stingrey » Tue May 23, 2006 4:28 pm

Lastly it should be noted that almost every large major software project has some sort of version control system managing the project - whether Commercial to Open Source.
And like Project Joomla! they will also have Standard Operating Procedures regarding how this occurs.

The difference of course is that with Open Source projects, MOST, will allow the community to also monitor the day to day changes made to the code via the Version Contriol system.

If not, then you should ask them why they dont, because this is part of what Open Source is about, having the code open for people to see - including when in the development phase
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D

User avatar
stingrey
Joomla! Hero
Joomla! Hero
Posts: 2756
Joined: Mon Aug 15, 2005 4:36 pm
Location: Marikina, Metro Manila, Philippines
Contact:

Re: Managing the code of Project Joomla! - a peak inside

Postby stingrey » Tue May 23, 2006 4:31 pm

Anyway, hopefully it was of some interest and gave people a little insight into some of the daily inner workings of how the Joomla! code is managed



To keep the succinctness of this thread it is being locked.

You can however, discuss this thread here:
http://forum.joomla.org/index.php/topic,63940.0.html
Last edited by stingrey on Tue May 23, 2006 4:51 pm, edited 1 time in total.
Rey Gigataras
http://www.wizmediateam.com <-- great team of talented Web Designers and Programmers!
http://about.me/reygigataras <-- About Me :)
Partner, Business Development & Project Manager, Event Manager, Sports Coach :D


Return to “Joomla! 1.0 Coding”

Who is online

Users browsing this forum: No registered users and 2 guests