BÃ¥rd Farstad is the lead developer at eZ systems, the company behind eZ publish. As a PHP developer from a C++ background, he’s pretty much done all there is to do with PHP. For this 25 year old programmer from Skien, Norway, coordinating an international development team and turning an Open Source software project into an enterprise-level commercial success was just a matter of adjusting his stride. Aside from the computer keyboard he’s also a master of the guitar fret board. Ask him nicely and he might send you his band’s latest single on mp3…
Following SitePoint’s eZ publish series, I got in touch with BÃ¥rd to find out more about life at eZ systems, his plans for eZ publish, and his insights on developing online with PHP.
BÃ¥rd and eZ systems
SP: Can you tell us a little about yourself? What first got you into software development and what is your programming background? What got you into developing Web-based applications?
I first got into programming when I was about 15 years old. At that time there was an active demo scene, which I was an active member of. The demo scene is about programming graphical demonstrations with music, much like MTV videos. The programming language we used was Pascal with inline Assembler. After a while, when the compilers got better at optimizing code, I started to use C++, and became part of a group called Sorrox. At the same time I was studying electronics, which later progressed to computer engineering, from which I graduated in May 2000.
While studying I got interested in Linux. At the time there weren’t many Linux companies here in Norway, so my brother, two friends and I decided to start a company: eZ systems. We started out as a consultancy with Linux and Open Source solutions as the focus. We later expanded to developing graphical applications using C++ and Qt. In 1999 we had a customer who wanted us to develop an ecommerce solution, so I started writing a Webshop during a vacation from my studies. This was the starting point for eZ publish, and we eventually released the first version of eZ publish in November 2000 under the GPL.
SP: When did you first come across PHP and what made you select it, over other technologies such as ASP and JSP or even Perl/CGI, for the development of eZ publish?
I first came across PHP when I created the Website for the Linux user group back in 1998, while I was studying. It was really quick to develop applications in PHP and the performance was also good. At the time, of the languages you mention, the only alternative that had been made specifically for the purpose of powering dynamic Websites was ASP. The fact that this was a closed source Microsoft product made my choice pretty simple.
SP: Did you have any idea back then what eZ publish was to become, and how successful it would be?
We had no idea that eZ publish would become so popular. The feedback from users has been overwhelming. I would never have guessed that it would become so popular, especially in such a short time.
SP: What made you decide to found eZ systems? What was life like at eZ systems the early days?
The basic idea when we started eZ systems was that we wanted to have a fun place to work. Our mission was simple, have fun and try to make a living. So when we started out it was mostly for fun.
SP: With eZ publish, eZ systems seem to have hit upon the perfect recipe for both Open Source and commercial success. Do you find this hard balancing act to maintain? Is there any general advice you can offer to developers and small companies considering a similar strategy for publishing their software?
It’s very hard to balance. On the one hand, you want to make the best software you can, and on the other, you need to make money. I really don’t have any advice except stay away from venture capitalists; they will try to push you into making too much money, too fast — at which point the Open Source spirit will die.
SP: How do your customers respond to eZ publish being Open Source?
Very positively! Many customers demand that their solutions be open source, and of course the price tag is very attractive. The drawback is that some customers expect everything to be free, since eZ publish itself is free (GPL).
SP: Looking at the eZ systems partner list, there’s an impressive collection of names, including Siemens and IBM. To what do you attribute this success?
There are a lot of companies working in Web development and eZ publish is a good toolkit with which they can create most dynamic Websites. They therefore want to partner with us to be able to deliver solutions based on eZ publish. After the dotcom crash, customers didn’t want to pay too much for these kinds of solutions, so the companies delivering them have had to look for alternatives. As a result, more and more companies are choosing eZ publish.
SP: Do you find it is more difficult to gain support from Open Source developers given eZ systems commercial "alter ego"? What form of contribution do you like to receive for eZ publish? Is there anything you have planned or would like to see, to encourage further involvement in the product from the Open Source community?
eZ publish is perhaps not a traditional Open Source program, as it was written solely by eZ systems. We still get a lot of feedback from users; everyone from hobbyists to big companies like Siemens and IBM. We do have some external developers who send us their contributions — typically eZ publish users who’ve patched a bug they’ve found. One of the best things about the Open Source feedback is it helps us track down bugs quickly.
We’re finishing up the code for eZ publish 3 right now, which will be much more modularized and plugin-based. When we release it, I hope it’ll encourage developers to write plugins that we can make available from our Website — which will offer a third party download area where users can upload their plugins for eZ publish. We’re now working on our new Website, which will be launched some time before the final eZ publish 3 release, to further stimulate involvement from the community.
SP: Who works at eZ Systems and what do they do? How would you describe ezSystems as a workplace?
There’s now a total of 20 people working at eZ systems. The team consists mostly of developers from all over the world. We have people from Norway, the Ukraine, China and Germany.
eZ systems is, of course, a fun place to work, but at the same time it’s challenging. Our staff works with people from all over the world, on a range of different projects.
SP: As a Norwegian company developing Web applications with PHP, do you have any involvement with other Norwegian parties in the same line of work — such as the guys at fast.no or Stig SÃ¦ther Bakken, member of the PHP group?
We’ve had no contact with Stig, but Fast is a customer of eZ systems. They created their intranet using eZ publish, and are working on some other eZ publish projects as well. We have a lot of contact with different companies in Norway and other countries — many companies use eZ publish to build their intranets. We often have the initial contact with companies because they’ve set up their intranet using eZ publish.
SP: Despite the dotcom crash, eZ systems seems to have gone from strength to strength. What do you see as the future for eZ systems as a business, and how do you regard the Internet these days, in terms of how it presents opportunities to companies like eZ systems?
The future is full of opportunities and we have many plans. Our first and nearest goal is to release eZ publish 3, which will be a huge improvement on the current application. With this release, enterprise sites that require features like versioning and workflow functionality with find eZ publish has what they need.
SP: How do you prefer to work when developing? Long hours broken up by long breaks, steady daily progress, or otherwise? Can you offer any tips to PHP developers with that feeling "24 hours a day just isn’t enough"?
I prefer working intensely, and when the work is interesting I don’t think of it as work. At the same time it’s important to have breaks and get physical exercise. For the past three years I think I’ve had about two weeks’ vacation, so obviously I have the same problem as other developers with time. The best thing to do to help yourself is build a team of developers; you can’t do everything single-handed.
SP: What are your favorite development tools (e.g. text editors, project management, source code maintenance)? What operating system do you use most and why?
My editor is emacs, which, of course, is also used for project management. For the code we now use svn, subversion. We mostly use Linux because it has everything we need and that’s what we started out with.
SP: When you’re not at work, how do you like to spend your time?
I like to spend time with my friends. I also play the guitar in a band — we made a cd once (so people who want some mp3′s can send me an email). Most of the time I actually spend with my girlfriend, Rikke. But on the weekends I don’t say no to a party.
SP: Although eZ publish is described as a content management system in the product literature, how do you prefer to think of it; as a CMS or an Application Development Framework?
I like to think of it as a toolkit. Aside from design changes, you normally need to do some work with it before you can launch a site, such as building custom modules. With eZ publish 3 we’ve made this much more clear; we have a code library of general PHP classes such as an XML parser, template engine and SOAP library. We also have a kernel that provides the basic functionality for your site, including publishing, versioning, image handling, and workflows. But the basic idea with eZ publish is to separate content from design, so in that respect it’s also a content management system.
SP:Given that Web application development is still a fairly young discipline, what factors influenced you when you designed ezPublish? Were there any existing applications or design methodologies that inspired you?
All our development starts with writing a requirements specification, where we decide what the application should do. We have of course had a look at many other programs for inspiration, but don’t try to copy any functionality. With eZ publish 3 we’ve spent most of the development time refining the design to create the most flexible system, within the timeframe we had available. We use design patterns when we design the applications.
SP: One of the biggest problems eZ publish seems to have had is that it’s difficult to install. Is this something you think can be improved in future, or is it a problem inherent in large, complicated applications like this?
It will definitely be improved upon in eZ publish 3. The problems have mostly occurred when people want to run it on shared hosting servers, as this was not the target hosting environment for the current version of eZ publish — it has caused a lot of trouble for some users. In eZ publish 3 we’ve made this much smoother. Also, image conversion is now achieved through a plugin system, like most of the other functionality, so the user will be able to choose the settings that fit their specific purpose.
SP: In SitePoint’s eZ publish article series, eZ publish’s use of templates comes under some fire. What was your reason for using templates to deliver the eZ publish user interface? Why not utilize some kind of visual component library like Java’s AWT (Abstract Window Toolkit), or an XML alternative using XSLT? Is this something we are likely to see change in future?
We based eZ publish on a third party template engine, which seemed like a good idea at the time. Now we’ve developed our own powerful object oriented template engine, which is very much integrated into eZ publish. This template engine is one of the huge improvements you’ll see in the next version of the product. XSLT will probably be used as an export plugin, but it won’t be used as the main template engine.
SP: With eZ publish you’ve put together a solid library of PHP classes for everything from database abstraction to a DOM XML parser. What made you choose to write your own, as opposed to using native PHP extensions or the PEAR library? You also wrote your own class documentation tool, eZ PHP DOC. Why did you do that, rather than use PHP DOC, for example?
Well, we like to write our own code. That’s just the way we work. However, we’ve now started to use doxygen to generate class documentation, as this wasn’t our focus. The reason we didn’t use the tools you mention above is that basically, we wanted to use the same syntax we’d used in our C++ projects.
SP: With PHP 4.2 the PHP Group made the decision to switch "register globals" off? Do you agree with this move and will eZ publish be following suit (re-written for register_globals=off) in the near future?
I totally agree. Yes, you will definitely see that. eZ publish 3 has no problems with the new PHP configuration.
SP: Given that modules like eZ forum "compete" with applications like vBulletin and phpBB2, would you rather continue development of the module, or work to integrate these kinds of external applications into eZ publish?
What we’ve done with eZ publish 3 is to create a more low-level toolkit. You can now define your own content classes, for example, you can define your own articles, products, messages etc. All these objects can then be combined into a tree-based structure and controlled by a role-based permission system. So, eZ publish 3 can be used to create a huge variety of applications. A simple example might be that for a real estate site, you could create a class that defines a house. Then you could start to publish objects of the class "house" on your site instantly, with no programming required!
SP: Currently eZ publish is geared for use on a single Web server, perhaps with a remote database. You’ve begun to use XML-RPC within the eZ publish desktop edition. Are there plans to take further advantage of the XML Web service protocols in the extension of eZ publish? Are we likely to see an "N-Tier" version of ezPublish distributed across multiple servers, perhaps taking advantage of a projects like Mohawk’s Msession, or following the example of XML-RPC class server?
We’ve already written a library called eZ soap, which will be used in eZ publish 3 for communication and integration. At the same time we’re working on making eZ publish run smoothly on clusters. You will see a lot of new features in this direction in the near future.
SP: The recent distributions of eZ publish and your Zez article on PHP/Java integration make us wonder whether there are any plans to take advantage of this in ezPublish? Could ezPublish act as a Web "front end" in a J2EE environment?
There are no current plans, but we’ve used eZ publish in this way before. We usually deal with customers who request it on a per-case basis. You’ll basically need to write your own module to integrate with your Java application, and you can do that already.
SP: Can eZ publish compete with some of the "big" CMSs like Vignette and Atomz Publish? What differentiates eZ publish right now from some of the "high end" CMSs? What hurdles does ezPublish need to surmount to get there?
That’s the plan with eZ publish 3. It can definitely match the functionality. The main features that the current eZ publish lacks when compared to those systems are versioning, workflows and collaboration, all of which are present in eZ publish 3.
SP: Are there any plans to release elements of eZ publish as native PHP extensions (for example, the class library), as a means to improve performance?
There are no concrete plans at this point. This would make eZ publish harder to install, and with eZ publish 3 we’ve found other ways to improve performance for now.
SP: Work has begun on an eZ publish SDK. What do you have in mind here?
That’s a sneak peek of the eZ publish 3 libraries — they’ll be the default documentation and libraries that are bundled with eZ publish 3. However, there will be a lot more documentation by the time it’s finished. The eZ publish kernel documentation and many tutorials will also be part of the sdk.
SP: In general, what do you regard as the main strengths of eZ publish, and what areas do you want to improve upon?
The strengths of eZ publish are that it’s simple to use and that it offers a lot of functionality. You can create everything from intranets to big ecommerce sites with this software. The main things we want to improve on, and have in eZ publish 3, are its flexibility and performance.
SP: eZ publish version 3.0 is in the wings. What do you have in store for the new version? Any surprises?
I’ve mentioned a few things already — there will be many surprises for eZ publish users, mostly positive I hope! You will basically have much more flexibility, and find that this version is quicker to customize. You can also reuse templates and code, and host as many sites as you like on the same codebase.
PHP and the Internet
SP: In general, what do you like — and dislike — most about PHP?
I like PHP because it’s very quick to develop software using it. You also have libraries for mostly anything you need when working with dynamic Websites. The thing I dislike about PHP is the object orientation, but this will be improved with version 5.
SP: To what do you attribute PHP’s success? Does PHP have anything to offer which can’t be found elsewhere?
PHP is simple to get started with. You don’t need to know much about PHP programming to make some PHP scripts. PHP still offers more advanced functionality, so it applies to a much wider audience than, for example, Java.
SP: As a developer with experience in other "serious" object oriented languages, what’s your opinion of PHP’s support for object orientation? What’s your feeling about the coming changes with the Zend 2.0 engine? What do you say to those Java types (or any others) that like to criticise PHP in this area?
The object orientation is the poorest part of PHP, but if you use it with caution it’s OK. I really look forward to the Zend 2.0 engine — people who criticise PHP for this are absolutely right. However, I think that PHP is the best-suited language for the development of dynamic Websites. It’s also important to remember that the language is just a tool; the important thing is what the users of your software think — and they normally don’t care what kind of language it’s written in.
SP: PHP is a language that has appealed to developers with backgrounds in Web design rather than software development. Do you feel that the preference of many of these PHP developers for writing procedural rather than object oriented code is holding back the language’s progress? What tips do you have to offer PHP developers who hope to put together successful PHP projects?
I think that more and more people are starting to write object oriented PHP, but if you now look at open source projects written in PHP, most of them are still not done that way. If more people would write object-oriented code it would definitely have boosted the development of PHP in this direction. So the tip to other developers must be; write object oriented libraries and reusable code.
SP: Despite being the most popular server side language for the Internet, what do you see as the root causes for PHP being largely ignored in mainstream IT circles? Do you think PHP can gain widespread acceptance within the enterprise as a viable solution for Web development?
I think the main reason for this is marketing. But PHP continues to grow and is being used by more and more companies. I think PHP will be used a lot more in mainstream IT circles in the future. It’s already being used by many big companies.
SP: Given the problems you’ve had finding a solid XML parser for PHP (to the point where you wrote your own), what’s you’re opinion of PHP’s XML support? Have you looked at the latest incarnation of PHP’s DOM extension? Do you feel it’s now able to provide a stable library for parsing and generating XML using the DOM API? And how do you regard PHP’s support for technologies like XML-RPC and SOAP (given that, again, you’ve written your own implementations for these)?
PHP’s XML support is fairly good, however, it didn’t suit our needs at the time, which was why we wrote our own implementation. Also, there were some problems with memory leaks, where the DOM parser chewed up all the memory. I think the most important thing for PHP is to have good low level features; you don’t need every protocol implemented native in the programming language. Currently I think PHP needs a bit more work on these extensions, but these shouldn’t remove the focus from other developments that are more important in PHP.
SP: Aside from XML support, what do you see as the main technological challenges for PHP in future?
SP: How you compare PHP with current commercial offerings from Sun (J2EE) and Microsoft (.NET)? Given the experimental Java and http://www.php.net/manual/en/ref.dotnet.php/#nlt#/.NET extensions/#enl#/, what do you see as PHP’s future role in relationship to these two big frameworks?
My general experience is that it’s much simpler to get an answer to a question you might have about an Open Source solution than it is with a commercial solution. So in my opinion, PHP is much more powerful, because of the Open Source community.
SP: And finally, as far as Web design and development are concerned, how do you think things will look 5 years from now?
I think you will see more applications and integrated systems. You will hopefully see more standards, and it would great if people would also follow the standards.
SP: BÃ¥rd, thanks very much for taking time from your busy schedule to talk to SitePoint. Having seen what eZ publish 2.0 can do, it sounds like an already great project is just about to get better. All the best with eZ publish 3.0!