In this interview,
Huw
Collingbourne asks pMachine CEO, Rick
Ellis, about PHP, web frameworks, Ruby On
Rails, Microsoft, programming and hacking – and
why would a commercial software company decide to
produce an Open Source framework anyhow…?
Code Igniter is an simple but
powerful Open Source PHP Framework for the creation
of full-featured web applications. It was developed
by Rick Ellis and Paul Burdick of pMachine
Inc., a company which sells
the commercial web publishing system, Expression
Engine. |
Huw: I've been using Code Igniter over the last few
days and, while I haven't yet explored more than a tiny
fraction of its features I must say that I'm mightily
impressed by what I've seen so far. One thing that puzzles
me, though, is why you decided to do this in the first
place. After all, you are a professional developer -
you make a living from selling a commercial CMS system.
So why are you giving this stuff away?
Rick: I see the two products more complementary then
competitive. The markets they appeal to are slightly
different, but close enough for some symbiosis. As a
small company like ours it’s very difficult to
build a sustainable business model unless you are commercial
in nature, but conceptually I like the idea of open source,
particularly with something like a framework.
Huw: You say you "conceptually like the idea of
open source". But isn't open source necessarily
taking away business from professional developers? I
mean, I guess there must be people who've considered
investing in Expression Engine but ultimately opted for
XOOPS or Drupal simply because they are free.
Rick: Certainly there are people who will choose a free
solution over a commercial one. However, while the initial
cost barrier is less with open source, its "freeness" comes
at a price. When a software developer releases a product
as open source, it also frees them of all responsibility
to the end user. They are under no obligation to help
their users since they have not been paid for the software.
Many open source vendors offer paid support options,
so the cost of the software is just shifted to being
a support cost. In contrast, as a commercial software
company we have an obligation to our users since their
happiness directly correlates to our ability to sustain
our business. If we neglect our users or don't release
updated quickly we will see it reflected in our bottom
line.
At pMachine, our goal is to answer all support requests
within 4 hours between the hours of 9am and 7pm. Usually
we answer questions faster, and often go well beyond
that, logging into our customer's server to solve a problem
or help with a custom solution. When you compare the
level of service and support you get with us, the cost
of the software is truly insignificant. For most of our
customers, particularly for our business users, this
peace of mind far outweighs the cost. I still think there
is a place for open source, but it's not an either/or
proposition. Each licensing has its pros and cons.
A Blog
In Twenty Minutes...
The Code Igniter web
site provides some tutorials to help
you get started...
...in twenty minutes
you should be able to get a simple blog system
up and running.
|
Huw: If I were thinking about developing a web site
using some kind of content management system, what should
be the factors that lead me to choose - a) a free open
source CMS such as Drupal, Joomla or WordPress, b) a
commercial CMS such as your own ExpressionEngine and
c) a 'framework' such as Rails, TurboGears or Code Igniter?
Rick: We need to draw a distinction between content
management systems and frameworks since their intended
audience is generally different. A framework is a development
tool, requiring someone with programming skills. Frameworks
are for people who want to roll their own solution. A
CMS is a web publishing tool that provides out of the
box capability and is generally usable by lay-people.
Once you establish what your needs are and narrow down
your choice to the applications that meet them, the major
choice you'll have to make is between open source and
commercial. As I mentioned earlier, each has its pros
and cons.
Huw: While on the subject of ExpressionEngine, how closely
related is that product to Code Igniter?
Rick: The libraries are very closely related. Frankly,
I would have never attempted Code Igniter had we not
had a large pool of existing ExpressionEngine libraries
to draw from. This allowed me to develop the framework
in a very short time. Had I started from scratch it would
have taken me a year.
“I don't have a
problem with people hacking our software in order
to enable it meet their needs better.” |
Huw: One of the things I constantly notice when using
open source software is that an entire generation of
programmers seems to have emerged for whom the term 'hack'
has no negative connotations. Many open source projects
seem to encourage people to mess around with the program
code and modify the core functionality. Is that something
you would be happy see happen with Code Igniter? Or do
you shudder at the thought as much as I do?
Rick: I don't have a problem with people hacking our
software in order to enable it meet their needs better.
No one application can scratch every itch, so if someone
has the skill to tweak it in some way, I'm fine with
it. Having said that, good applications will generally
be able to be extended without hacking.
ExpressionEngine has a very robust plugin and module
architecture, as well as an Extensions feature and other
tools that allows the core system to be tapped into,
so hacking is rarely needed. Code Igniter is easy to
extend as well.
To digress slightly, among computer programmers, "hacker" is
generally a positive term, referring to a skilful programmer
who solves problems for the community at large. People
who do nefarious things are known as "crackers".
If you read How
to Become a Hacker by Eric Raymond (one of the
fathers of the open source movement) you'll see that
there is a clear distinction between hackers and crackers.
The general public tends to view the term "hacker" in
the negative, but most programmers draw a distinction
between hackers and crackers.
Huw: Can you give me some idea of what kinds of applications
it would be possible to create using Code Igniter. And
what level of PHP programming expertise would somebody
need in order to make good use of it?
Rick: To use any PHP framework requires that you posses
a reasonable degree of experience with the language.
That said, during development I continually asked myself
whether a beginning programmer would be able to use it.
Not that I wrote it for beginners, but I wanted to keep
the barrier to entry as low as possible. Most frameworks
are written by very experienced programmers for members
of their own peer group, so they tend to be inaccessible
to people with less experience. I tried to keep things
more simple. By definition a framework is project agnostic
so nearly any type of web application that can be envisioned
should be possible. Obviously, the supported libraries
determine to what extent the development process is facilitated,
so the goal of any framework should be to have a broad
collection of libraries. For a product that has only
been out for a few weeks Code Igniter has a pretty nice
set, enabling the most common web development tasks.
Huw: What tools - editors, debuggers etc. - would you
recommend for professional PHP development (money no
object)? And what about tools for non-professionals -
people who may not have much (or any) cash to spare?
Rick: A text editor is all I use so I'm fairly minimalist.
Some developers use IDEs (integrated development environments),
like Zend, but I've never found one I like. I do think
it's very important to have access to a variety of PHP
versions in order to test your code for compatibility.
In particular, you should run each point release (4.3,
4.4, 5.0, 5.1, etc.) since there are changes in each
one, and if possible, you should test on different platforms
(Linux, IIS, etc.).
“We’d like
to tip our hat to Ruby on Rails for bringing frameworks
into the general web consciousness and inspiring
us to create our own framework using PHP.”
(from the Code Igniter web site) |
Huw: On your web site, you give some credit to Ruby
on Rails for inspiring Code Igniter. How similar are
the two frameworks? Are there any particular strengths
or weaknesses that Code Igniter has when compared with
Rails?
Rick: I've never used Rails, so I'm not the best person
to ask this question. I did draw some inspiration from
that framework, but it was mostly in terms of their success
in making it easier to create web applications, not in
the way they have gone about it in a technical sense.
Beyond using the model-view-controller approach, Code
Igniter approaches application design in the way it makes
most sense to me personally, based on what I've learned
from building web apps for the past six years.
Huw: I wonder if you have any views on the Ruby language?
It's generating a good deal of interest at the moment
but there are very few real world Ruby applications around.
Do you think Ruby (with or without Rails) offers a serious
challenge to PHP? Or is it all just hype?
Rick: I find it interesting that people seem to want
to frame the Ruby vs. PHP debate as a competition, where
one language must find success at the expense of the
other. I think there's plenty of room in the vast world
of the internet for several languages to happily coexist.
I have no doubt that Ruby will continue to grow in popularity
and find its place in the world of web programming, but
this doesn't necessarily have to come at the expense
of PHP.
Keep in mind that PHP enjoys massive market share. It
has nearly 100% support among hosting companies, and
the number of users is staggering. Look at the number
of PHP projects at Sourceforge or Hotscripts, the number
of PHP books on the market, the number of PHP based commercial
applications. At this stage, Ruby is miniscule in comparison.
Huw: From various comments on your web site, I get the
impression that you are not a great admirer of PHP 5.
And it's seems to be the case that most web hosts have
stuck with PHP 4. What's so bad about PHP 5 anyway.?
Rick: Actually, I like PHP 5 very much. The problem
is that PHP 5 only has a 6% user adoption rate, which
means that if you want your applications to have widespread
market availability you are foolish to use PHP 5. People
like me who develop commercial applications must unfortunately
stay backward compatible pretty far back in order to
ensure our own livelihood. The reason web hosts have
not migrated en masse to PHP 5 is because anytime you
make a major shift like that it potentially affects thousands
of your clients. I think hosts are erring on the cautious
side since the prospect of breaking their client's applications
carries major repercussions.
Huw: Are you going to continue the core development
of Code Igniter yourself or have you any plans to build
a large development team as many Open Source projects
have? What are the pros and cons of a small development
team v a larger one?
Rick: I'm not sure Code Igniter will ever require a
large development team since its intended to be a small,
lightweight framework. That said, if it were to gain
significant popularity I imagine that the pool will increase
substantially just from our users sharing ideas and code.
I also imagine that in time people will emerge with the
skill, desire, and compatible vision to contribute more
formally. Whether that turns into an official development
team I don't know. We'll have to see how things progress.
Huw: Have you any thoughts on the trends in web development
over the next few years? Is the dominance of PHP secure?
Or will other languages and technologies - notably, Microsoft's
ASP, especially now that it's started distributing free
versions of its Visual Web Developer suite - gradually
take over?
Rick: Unix is so dominant on the web that unless something
seismic happens, I don't think the challenge will come
from Microsoft. I'd be more inclined to think that a
challenge to PHP would come from something like Ruby
or Python. As far as trends, one of the biggest I see
is that web sites are becoming full-blown web applications.
The days of static content are disappearing, so innovations
that enable consumers to publish increasingly dynamic
information on the web will continue to emerge.
The first full version of Code
Igniter was released
in March 2006. You can download the current version
from the web site, http://www.codeigniter.com/,
which also provides full documentation and some animated
tutorials. |
|
|
In a varied career, Rick
Ellis has been a musician,
recording engineer and CEO of the software company
pMachine.
He says, “In
1996 I heard about this thing called the World
Wide Web so I got an account with Earthlink and
fell instantly in love. I found the nascent
internet so compelling that I engrossed myself
in it, learning HTML, Photoshop, Illustrator, and
JavaScript. I soon started making web sites
for myself, then later for my audio clients as
a small side business - one that grew quickly and
ultimately led me to start a software company called
pMachine.
In 2001 I found myself in Japan for several months
mixing several music projects for Disney. To
spend my evenings productively I started developing
a simple content management system. I had
been tinkering with PHP and was in need of a CMS
for Nancy Sinatra’s web site so I decided
to roll my own. By the time I got back to
L.A. I had written the basic framework for what
would become pMachine Pro. And in that time
I got hooked on PHP.” |
April 2006 |