Shared a coffee and interesting chat with Christian Stocker this weekend; my first one-on-one with one of PHPs core developers.
Christian works on the DOM extension as well being co-boss of Bitflux Gmbh (Inc/Ltd) and in the lucky position of making his living with PHP.
Time was short thanks to my daughter (now almost 7 months) who can already hold her own in a PHP debate but has a short attention span. She’s pleased with being blogged for the first time of course.
Good news on the DOM extension for PHP5 (and all the other hot new XML stuff built on libxml2) is it will be part of the core PHP distribution, which means unless your host is malicious and deliberately disables it, you can rely on DOM being available. Christian will be doing a talk to the PHP User Group Switzerland in January, on PHP5. Don’t miss it if you happen to be around.
Was also interesting to hear Christian’s thoughts on PHP/Open Source as technologies to build your business on. It’s definately an uphill climb, thanks partly to customers who see Open Source as free (as in beer) and are surprised when you’re not willing to develop something for nothing, as well as lack of awareness of PHP in general.
Things are set to get better with PHP5 and what’s happening between Sun and Zend but it our chat really got me thinking whether it’s possible to define what makes a PHP product / service customers will be willing to pay serious money for? How do you distinguish yourself as an enterprise application developer as opposed to someone who creates web pages?
There’s alot of free PHP code out there - practically any web application you care to name has been “done” in some manner with PHP. At the same time, I feel the vast majority does not make the basis of something you could customize and sell to a customer, because it was never designed to fit into a “bigger picture”. That’s a problem which affects “off the shelf” software in general - you either use it the way it was designed or leave it.
My guess is the money is integration. Developing PHP solutions that are well integrated with customers existing environments, data models etc. An obvious question is “How to I publish my Word doc as a web page, using your CMS solution?”.
Working on WACT (good news there coming within 7 days...) has raised the exciting possibility of a PHP component model.
Imagine you have some form of “threaded discussion component”, which was built to render the user interface for bulletin board, given an underlying data access object which provides the interface it expects.
Your template might look something like;
<div class="userComments"> <bb:forum id="CustomerSupport" class="blueTheme" runat="server"> <bb:post class="CustomerMessage"> <bb:postTitle class="MessageHeader" /> <bb:postBody class="MessageBody" /> </bb:post> </bb:forum> </div>
That might be all it takes to render the complete user interface for the threaded discussion (forms, tables and all, the class attributes above referring to CSS).
You then have a page controller (using WACT as the example) that uses this template, something like;
<?php
require 'wact/common.inc.php';
require WACT_ROOT . '/template/template.inc.php';
$Page =& new Template('/customersupport.html');
$Discussion = & $Page->getChild('CustomerSupport');
$Discussion->registerDataModel(new TheadDiscussionModel());
$Discussion->registerAuthContainer(new CustomerAuthContainer());
$Page->display();
?>
The TheadDiscussionModel and CustomerAuthContainer classes suggested above might be something you’ve built on PEAR::DB_NestedSet and PEAR::LiveUser respectively, and is what you’re getting paid for - integrating with the customers existing environment.
The “threaded discussion component” (assuming you developed it yourself) might also be a potential source of income - something so good that other PHP developers would be willing to buy it from you.
Course the Java crowd will say this is how they’ve been making their money for years (beans et al.) but it’s interesting to consider the possibilities in PHP. Presumably this is where Sebastian Bergmann is headed with PCom.