1. Running an Open-Source CodeIgniter project
The tale of PyroCMS - an open-source Content Management
System built with CodeIgniter. What, why and how!
Phil Sturgeon
email@philsturgeon.co.uk http://twitter.com/philsturgeon
http://philsturgeon.co.uk http://github.com/philsturgeon
6. Introduction
What do I do these days?
Work for Mizu Design Ltd
Creating internal CodeIgniter applications
7. Introduction
What do I do these days?
Work for Mizu Design Ltd
Creating internal CodeIgniter applications
MojoMotor Plugins
8. Introduction
What do I do these days?
Work for Mizu Design Ltd
Creating internal CodeIgniter applications
MojoMotor plugins
ExpressionEngine modules
9. Introduction
What do I do these days?
Work for Mizu Design Ltd
Creating internal CodeIgniter applications
MojoMotor plugins
ExpressionEngine modules
PyroCMS development
10. Brief history of PyroCMS
StyleDNA produces StyleCMS
We realise we need a CMS
Back in 2007 PyroCMS was first born as
StyleCMS, a basic CMS for small sites
StyleDNA fails and burns horribly
PyroCMS rises from the ashes
17. Basic Principles
Clients are stupid
"We refuse to use this font 'Century
GOTHIC Bold'. This is a family-friendly site!"
18. Basic Principles
Clients are stupid
Hide confusing things
Make it hard for them to break the site
Control, sanitise and correct their input
WYSIWYG
MS Word!!!!
XSS Clean
CSRF protection
32. Basic Principles
EllisLab are always “right”
Library autoload
Call more than singletons:
$foo = new Something(‘bar’);
$bar = new Something(‘baz’);
Use some kick-ass PHP 5 syntax:
$foo = Settings::item(‘bar’);
33. Basic Principles
EllisLab are always “right”
Never modify the core of CodeIgniter
Not enough PHP 5?
Extend for the win
41. Managing the Code
Master, Branches, Tags
Master
Same as Subversion trunk
Default “branch” of the repository
$ git clone git://github.com/pyrocms/pyrocms.git
Should always be ready to tag or download, keep it stable!
42. Managing the Code
Master, Branches, Tags
Branches
Keep code out of the way
v1.0-dev is relatively stable
v2.0-dev seriously fucked
Work on X feature independent of version Y
$ git checkout v1.0-dev
43. Managing the Code
Master, Branches, Tags
Tags
Tag each version
Marks a specific commit as a version
Automatic “Downloads” entry on GitHub
http://github.com/pyrocms/pyrocms/zipball/v0.9.9.7
http://github.com/pyrocms/pyrocms/zipball/{$variable.cms_version}
44. Managing the Code
Master, Branches, Tags
Forks
User owned copy of your repository
People do your work for you
Use it to trial new contributors