P. 1
Bugs, Patches and other abnormalities (or how I got hooked to Joomla's bug patching process) - Joomladay South Africa 2013

Bugs, Patches and other abnormalities (or how I got hooked to Joomla's bug patching process) - Joomladay South Africa 2013

|Views: 142|Likes:
Published by Peter Martin
At JandBeyond 2013 (European Joomla conference) I spent one night helping out in the Joomla Bug Squad. With some help I submitted my 1st patch, which got accepted to the Joomla core code! This was fun! That night many of us got enthusiastic, so one month later I helped organizing a Dutch "Joomla Pizza Bugs & Fun" day. We got a lot of Dutch Joomla users with no programming experience to help out with testing bug fixes that other people wrote.

In this session Peter will show how the Bugtracker & Github work, and give you an insight in the whole bugfixing & testing process. At the end I hope to have convinced you that you can help out, with or without programming experience, to make Joomla's code better!
At JandBeyond 2013 (European Joomla conference) I spent one night helping out in the Joomla Bug Squad. With some help I submitted my 1st patch, which got accepted to the Joomla core code! This was fun! That night many of us got enthusiastic, so one month later I helped organizing a Dutch "Joomla Pizza Bugs & Fun" day. We got a lot of Dutch Joomla users with no programming experience to help out with testing bug fixes that other people wrote.

In this session Peter will show how the Bugtracker & Github work, and give you an insight in the whole bugfixing & testing process. At the end I hope to have convinced you that you can help out, with or without programming experience, to make Joomla's code better!

More info:

Categories:Types, Presentations
Published by: Peter Martin on Oct 19, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as ODP, PDF, TXT or read online from Scribd
See more
See less

10/05/2014

pdf

text

original

Sections

(or how I got hooked to Joomla's bug patching process

)

Bugs, Patches and other abnormalities

Peter Martin, twitter: @pe7er www.joomladay.org.za, Fri 18th Oct 2013

Overview Presentation
a)Introduction b)Bugs & Patches c) My bug d)Pizza, Bugs (and Beer) and Fun e)Bugtracker Process f) Testing, Testing, 1, 2, 3 g)Questions?

>>> Sheets via: www.db8.nl <<<

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Your involvement in Joomla Community? Last year (2012) Joomladay Cape Town Presentation: “How to contribute to the Joomla community” Coding skills are not necessary to help out in the Joomla! community! There are a lot of different areas, outside the field of programming, where people are helping out at Joomla.org.

Joomladay 2013 South Africa

Technical Joomla support

Joomladay 2013 South Africa

Extensions

Joomladay 2013 South Africa

Documentation

Joomladay 2013 South Africa

Languages

Joomladay 2013 South Africa

Magazine

Joomladay 2013 South Africa

Real Life Meetings

Joomladay 2013 South Africa

Share your Websites

Joomladay 2013 South Africa

Improve Joomla

Joomladay 2013 South Africa

b) Bug & Patches

Joomladay 2013 South Africa

A Software Bug
 Error

in computer program
Incorrect or unexpected result, or unintended behaviour Mistakes made by people in source code

Joomladay 2013 South Africa

Joomla Source Code
index.php line 1-30
<?php /**  * @package    Joomla.Site  *  * @copyright  Copyright (C) 2005 ­ 2013 Open Source Matters, Inc. All rights reserved.  * @license    GNU General Public License version 2 or later; see LICENSE.txt  */ if (version_compare(PHP_VERSION, '5.3.1', '<')) { die('Your host needs to use PHP 5.3.1 or higher to run this version of Joomla!'); } /**  * Constant that is checked in included files to prevent direct access.  * define() is used in the installation folder rather than "const" to not error for PHP 5.2  and lower */ define('_JEXEC', 1); if (file_exists(__DIR__ . '/defines.php')) { include_once __DIR__ . '/defines.php'; } if (!defined('_JDEFINES')) { define('JPATH_BASE', __DIR__); require_once JPATH_BASE . '/includes/defines.php'; }

Joomladay 2013 South Africa

Source Code – Small Bug
index.php
require_once JPATH_BASE . '/includes/framework.php'; // Mark afterLoad in the profiler. JDEBUG ? $_PROFILER­>mark('afterLoad') : null; // Instantiate the application. $app = Jfactory::getApplication('site'); // Initialise the application. $app­>initialise();                         ug                        b                       g           bug                       u        bug       bugbug          b       g             bug      bugbug bu                bug  bugbugbugbugbugbug   bug   bug   bugbugbugbugbugbugbugbugb      bug   bug bugbugbugbugbugbugbugbugbu    bugbugbugbu gbugbugbugbugbugbugbugbugbu   bugbugbugbug    bugbugbugbu gbugbugbugbugbugbugbugbugbu      bug   bug bugbugbugbugbugbugbugbugbu   bug   bug  gbugbugbugbugbugbugbugbugb                bug  bugbugbugbugbugbug             bug      bugbug  bu       bugbug          b        g                       u         bug                       g            bug                        b                         ug

Joomladay 2013 South Africa

Source Code – Big Bug
index.php
// Mark afterIntialise in the profiler. JDEBUG ? $_PROFILER­>mark('afterInitialise') : null;
                       ""$o               o$""                          ""$o           o$"                      o    "$""""o                  "o         $"                 o""" $"          "$o                "$o" $o "  $                 o$"           "$o               $$$o$$$$o$$$$               $"             "oooo      o "" ""$$$$$$$$""o"" oo     oooo"              "$$$$$$oo"oo$$$o" o$$$$oo" o$$$o "o$$$$$$$                    "$ $$$$$$$$$oo   o$$$$$$$$$o"$"                    $ $$$   $$$$$$  o$$$$$$  "$$o"o                   $ $$$$o  $$$$$$  $$$$$$$  $$$$o"o                  $  $$$$$  $$$$$"   "$$$$$ $$$$$$ $                   $o""""" """"         """ """"""$"                  $  o$$$$$"""$$$$$"$$$$$""$$$$$ooo"o                  $  o"$o $$$$$$$$oo$$$$$$$$o $$""  $               oo$     "$$$$$$$$$$$$$$$$$$$$" o" o $oo            o$$$"$ $$o"o $$$$$$$"" "$$$$$$$    o$$ $$$$o      UN BUG          o$$$$" $ $$$$ o "$$$$$oo o$$$$$$  "o$$$$ $ $$$$$         o$$""    $ $$$$$o" "$$$$$$$$$$$$$ o o$$$$$o$   "" $$         $$"      $ $$$"  o"o$$$$$$$$$$$$   " "$$$ $       $$o        o$$       "o $$    "  $$$$$$$$$$$"o    "$$ $       $$$        $$$      oo$ $       o""$$""$$$o "      $"o$o      $$$o       o$$$$   o$$$"o"$oo$$$$o" o     $o $$$$$oo$ $$$$o    $$$$       $$$$   $$$$" $ $$$$$""   $$  o$$$ """$$$$"o" "$$$o  "$$$o       $$$" o """    $ $$$oo   $$$$o" $$   o$$$"o"   """"$  o$$$    o$"     $$$       $ "$"" o$"o"$$o$$$$  "$$"o"      o$$     "$oo  $ "        $$o       $ "oo$"o$$$"o$o"$$$$o" o"       $$$       ""$o $$          $$$o       "o$$o$"$$"$$o$$o$$"$$o"       $$$          ""o              $$$        ""$$$ $$$$$$ $$$$ $"        $$$$            $$              $$$$           $$$$"$$$o$ $""          $$$               $$$$             "$$$ """            $$$$               $$""                                 "$$            oo$"                                       $ooo           $                                             "$$

Joomladay 2013 South Africa

Source Code – Very Big Bug
index.php
// Route the application. $app­>route(); // Mark afterRoute in the profiler. JDEBUG ? $_PROFILER­>mark('afterRoute') : null;      .. ..oooo.....ooo...   .odSS4PYYYSSOOXXXXXXXXXOodbgooo.  /SSYod$$$$SSOIIPXXXXXXXXXYYP.oo.*b. ($$Yd$$$$SSSOII:XXXXXXXX:IIoSSS$$b.Y,  \Yd$$$$SSSOII:XXXXXXXXXX:IIOOSSS$$$b\   d$$$$SSSOOI:XP"YXXXXXXXX:IIOOSSSS$$$\   Y$$$SSSOOII:XbdXXXXXP"YX:IIOOOSS$$$$)   'Y$$$SSSOI:XXXXXXXXXbodX:IIOOSS$$$$$/    "Y$$$SSSOI(PoTXXXXXTo)XXIIOOOSS$$$*'      ""*Y$S(((PXXXXXXXY))dIIOSSS$$dP'         "*'()P;XXXXXXXXY)IIOSSS$P".oS,         (S'(P;XXXXXXXP;Y)XXYOP".oSSSSb        (S'(P;'XXXXXXX';Y).ooooSSSSSSSS)        (S'(P;'XXXXXXP';Y).oSSSSSSSSSSSP        (SS'Y);YXXXXX';(Y.oSSSSSSSSSSSSP         YSS'Y)'YXXX".(Y.oSSP.SSSSSSSSY          YSS'"" XXX""oooSSP.SSSSSSSSY          SSSSSS YXXX:SSSSP.SSSSSSSSY          SSSSSP  Yxb:SSSP.S"SSSSSSP          S(OO)S   YXb:SY    )SSSSS          SSSSO    )YXb.I    ISSSSP          YSSSY    I."YXXb   Y(SS)I          )SSS(    dSSo.""*b  YSSSY          OooSb   dSSSSP      )SSS(                  dSSSY       OooSS                  OooSP

Joomladay 2013 South Africa

A Software Patch
 Piece

of software designed to fix problems
– – –

Fixing error messages Fixing security vulnerabilities Improving the usability or performance

 .diff

patch

Differences with previous version

Joomladay 2013 South Africa

Managing Bug Reports & Patches
 Software

application to keep track of reported software bugs
– – – – –

Report Communicate Share Patches Status Statistics versioning software repository & versioning
Joomladay 2013 South Africa

 git

 github.com

Joomla & Patches
 Joomla
– –

1.5 = EOL

No Patches No new Features

 Joomla
– –

2.5 = LTS

Patches No new Features

 Joomla
– –

3.x = STS

Patches New Features

Joomladay 2013 South Africa

c) My Bug

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

My Bug
 February

7th 2013, around 10:00 o'clock  Joomla 3.0.3

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Installation procedure, step 3

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Reporting the Bug
 Not

a real bug, but confusing...

 February

7th 2013, 10:29 http://joomlacode.org/gf/project/joomla/tracker/? action=TrackerItemEdit&tracker_item_id=30077

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Reporting the Bug

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Creating a Solution
 Local

Joomla site  Tried to add functionality to the code
 February

7th 2013, 11:38 Added my solution as proof-of-concept to: http://joomlacode.org/gf/project/joomla/tracker/? action=TrackerItemEdit&tracker_item_id=30077

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Creating a Solution
 February

2013: Couple of remarks & suggestions 27th 2013: “can not download sample.php. Please zip it.”

 March

Joomlacode.org doesn't accept .php (security!)

 April

2013: Couple of remarks & suggestions ….. 2013:
Joomladay 2013 South Africa

 May

Peter Martin – joomladagen.nl – 20+21 april 2013

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Creating a Solution
 Saturday

June 1st 2013: Joomla Bug Squad Night at JandBeyond in Noordwijkerhout, Netherlands http://www.youtube.com/watch?v=v6YdZJtzJxo

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Creating a Solution
 Installed

GitHub  Tested options with installing Joomla  Made the changes I suggested  Created a diff patch (Thanks Andrea Tarr!)  Added .diff patch to Issue Tracker
 Saturday

latest Joomla (master branch) from

June 2nd 2013, 00:30 “I've created a patch 30077.patch ready to test.”

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Creating a Solution
 Saturday
– –

June 2nd 2013, regarding patch “30077”

00:54 @test (Hans Kuijpers) 00:56 @test (Olaf Offick) patch tested successfully 01:05 @test (Mike Veeckmans) tested succesfully #jab13 01:05 Multiple good tests - moving to rtc (Andrea Tarr)

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Creating a Solution
 Saturday

June 2nd 2013, regarding patch “30077”

01:31 Merged at https://github.com/joomla/joomlacms/commit/37843e88ceae995ffa73f245f7abcd45d01 5cb9a (Michael Babker)

 Got
– –

further improved by other people:

Version information got removed (Jean-Marie Simonet) Better looking tooltips

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Creating a Solution – Joomla 3.1.5

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

My Bug

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

d) Pizza, Bugs (and Beer) and Fun

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

"Pizza, Bugs and Fun"
Friday, July 12, 2013
– –

Worldwide Netherlands (Eindhoven): Josien Verreijt, Marijke Stuivenberg, Roland Dalmulder & me

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Joomladay Germany 2013
 Sunday

September 15th 2013 Bug Squashing und Accessibility Codesprint (David Jardin & David Hurley)

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Joomladay UK 2013
 Saturday

October 5th 2013 Joomla BugSquashing session (Javier Gómez)

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

e) The Bugtracker Issue Tracker

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Status: 1.Open 2.Confirmed 3.Pending 4.Ready to commit 5.Fixed in SVN/GitHub

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

BT Process: 1. Open
 New
– –

bug?

Reproduce with Joomla “Master Branch” Report: “Add new Tracker Item”
 Category  Status:

“Open”  Build: “master”  How to reproduce...  Summary & Details (PHP / Browser / Database / Webserver)

Peter Martin – joomladagen.nl – 20+21 april 2013

Tracker Team

Joomladay 2013 South Africa

BT Process: 2. Confirmed
 Confirmed

bug?

Other people reproduce the error with Joomla “Master Branch” →Develop patch

Peter Martin – joomladagen.nl – 20+21 april 2013

Coding Team

Joomladay 2013 South Africa

BT Process: 3. Pending
 Patch
– – – –

for bug  Needs to be tested:
Test bug before applying patch Apply patch Test if bug has been solved Test if no new bugs have been introduced

Peter Martin – joomladagen.nl – 20+21 april 2013

Testing Team

Joomladay 2013 South Africa

BT Process: 4. Ready to Commit
 Patch

for bug

Two successful tests:
 Comment:

@test  Comment: @test

Ready To Commit (RTC)

Peter Martin – joomladagen.nl – 20+21 april 2013

Testing Team

Joomladay 2013 South Africa

BT Process: 5. Fixed in SVN/GitHub
 RTC

→ Commit Patch

= Merged with Joomla Master Branch

Peter Martin – joomladagen.nl – 20+21 april 2013

PL Team +

Joomladay 2013 South Africa

Playing “Bugs & Patches”
After Presentation (during break): Find matching!

1. Matching = 2. 3. 1st 4. 2nd 5. RTC for that Bug for that Patch for that Patch for that Patch
Joomladay 2013 South Africa

f) Testing, Testing, 1, 2, 3

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Needed
 Local

Webserver

XAMP/MAMP/LAMP Distributed revision control and source code management (sort of “Wikipedia” for source code)

 Git

 Joomla
– –

Master Branch

Latest Joomla version with all patches & new features https://github.com/joomla/joomla-cms/ Chrome (incl Inspector) of FireFox + FireBug addon

 Browser

 (Integrated

Development Environment (IDE))
Joomladay 2013 South Africa

Peter Martin – joomladagen.nl – 20+21 april 2013

Testing Patches – Getting Joomla
in /var/www/ $ git clone https://github.com/joomla/joomla­cms  Cloning into joomla­cms... remote: Counting objects: 381082, done. remote: Compressing objects: 100% (128076/128076), done. remote: Total 381082 (delta 271874), reused 357127  (delta 249654) Receiving objects: 100% (381082/381082), 95.79 MiB |  5.79 MiB/s, done. Resolving deltas: 100% (271874/271874), done. Joomla website: /var/www/joomla­cms/

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Installing Joomla
 Browser

Navigate to http://localhost/joomla-cms/

 Normal
– –
 All

installation, but:
Joomla components / Modules accessible from menu

Sample Data: Test English (GB) Sample Data Do NOT Remove Installation Folder!!

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Installing Joomla

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Example
Bug: /administrator/components/com_banners/models/banner.php Hardcoded SQL in line 511: $db = Jfactory::getDbo(); $db->setQuery('SELECT MAX(ordering) FROM #__banners'); $max = $db->loadResult();

Joomlacode: [#32194] Banner model has hardcoded SQL

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Example

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Example
Joomlacode: [#32194] Banner model has hardcoded SQL
Github.com: patch [#2200] Replace hardcoded SQL $db->setQuery('SELECT MAX(ordering) FROM #__banners'); with $query object: $db = Jfactory::getDbo(); $query = $db->getQuery(true) ->select('MAX(ordering)') ->from('#__banners'); $db->setQuery($query); $max = $db->loadResult();

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Example
Github: https://github.com/joomla/joomla-cms/pull/2200

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Example
Travis: https://travis-ci.org/joomla/joomla-cms/builds/12365303

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Example
Joomlacode: [#32194] Banner model has hardcoded SQL
Patch: https://github.com/joomla/joomla-cms/pull/2200.diff

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Example
[#32194] Banner model has hardcoded SQL

Before:

$ curl https://github.com/joomla/joomla­cms/pull/2200.diff | git apply
% Total    % Received % Xferd  Average Speed   Time   Time     Time  Current                                  Dload  Upload   Total  Spent    Left  Speed 100   691  100   691    0     0   1448      0 ­­:­­:­­ ­­:­­:­­ ­­:­­:­­  1930

After:

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – git Commands
 Check

Patch

curl https://github.com/joomla/joomlacms/pull/2200.diff | git apply --check

 Apply

Patch Patch

curl https://github.com/joomla/joomlacms/pull/2200.diff | git apply curl https://github.com/joomla/joomlacms/pull/2200.diff | git apply -R

 Remove

 Check

if Patch is removed:

git status
# On branch master nothing to commit (working directory clean)

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – git Commands
 “Hard

reset” – remove all changes

git reset --hard HEAD

 Info
– –

about all changes, commits, etc

git log git log --pretty=oneline

 Joomla

Master Branch = dynamic, Get new changes:
git pull

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

That was easy? Or not.....

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – git too difficult?

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Component
http://docs.joomla.org/Component_Patchtester_for_Testers

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Component

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Component

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Component

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Component

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Testing Patches – Component

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

The

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Questions?
 Presentation

available at www.db8.nl

Peter Martin e-mail: info at db8.nl website: www.db8.nl twitter: @pe7er

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Credits 1/2
         

Photos First Aid Plaster 1 - Gokhan Okur http://www.sxc.hu/photo/782775 Moth - Therese Branton http://www.sxc.hu/photo/901692 ASCII Bugs: http://www.asciiworld.com/ Executivo 3 - Ivan Soares Ferrer http://www.sxc.hu/photo/215592 Joomla Sticker + Stroopwafel photo - Paul Orwig Night moth - Irina Naumets http://www.sxc.hu/photo/1047402 Bandaid Bandage - Pam Roth http://www.sxc.hu/photo/291573 JAB13 Bug Squad, Pizza, Bugs & Fun (Eindhoven, NL), JDDE13 Bug Squashing photos - Peter Martin JDUK13 Bug Squashing photos - Paul Orwig Moth 1 - Irina Naumets http://www.sxc.hu/photo/1059828

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

Credits 2/2
     

Count on us - Laura Leavell http://www.sxc.hu/photo/1206290 Checkbox - bzuko22 http://www.sxc.hu/photo/1335487 Hands: Thumbsup - J. Henning Buchholz http://www.sxc.hu/photo/238119 Multimeter - Maxime Perron Caissy http://www.sxc.hu/photo/498477 mathematic formulas - Tomasz A. Poszwa http://www.sxc.hu/photo/214561 signs signs - Jason Antony http://www.sxc.hu/photo/751034 Sources: Bug Tracking Process - Marijke Stuivenberg http://tinyurl.com/slides-PBFnl Werken met de Joomla Master Code - Roland Dalmulder http://tinyurl.com/handleiding-PBFnl

 

Peter Martin – joomladagen.nl – 20+21 april 2013

Joomladay 2013 South Africa

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->