I recently read an article entitled Why Codeigniter is Dead and it confirmed my fears that the PHP community – particularly the frameworks community – is moving entirely in the wrong direction. If you are a web developer and you use any of the major PHP frameworks then I’m sure you’ll appreciate what I’m talking about. Rewrite culture.
Haven’t you seen it? It’s everywhere! They’re all talking about it. They’re all doing it! They’re all loving it! ZF has been rewritten, Symfony has been rewritten, Drupal has been rewritten. Yii is being rewritten as I write. It seems like just about every major framework is being rewritten! Have a look on YouTube and you’ll see a wide assortment of conferences and launches. Every week there seems to be a new ubergeek giving us a slideshow and telling us why they had to rewrite the whole thing from scratch. Over the past year, we’ve been exposed to all sorts of new phrases and technologies – my favourite of which is “aspect oriented programming”. I’m still not entirely sure what that actually is but I”ve been assured that it’s the next big thing and to me it all sounds very impressive.
I even saw a presentation on YouTube recently (can’t find the link – aaaargggh!) in which one of the top Drupal guys was claiming that Drupal is like the iPhone. His claim was that the ongoing relaunches and culling of older versions is precisely what makes Drupal so awesome.
The only major PHP framework which doesn’t seem to have joined the party is Codeigniter. Unlike the other major PHP frameworks Codeigniter has remained as steady as a rock. Of course, for some developers this appears to have caused concern. They want rewrites and they want them now. They demand rewrites! So much so in fact that many thousands of CI developers appear to have defected to Laravel – a new PHP framework which I understand was rewritten three times in the course of a year (Source: http://heybigname.com/2012/05/06/why-codeigniter-is-dead/).
Now, I’m all in favour of technological progress and I’m also reluctant to turn this into a technical discussion about the pros and cons of building frameworks in a particular manner. What I am eager to do, however, is talk about business. Oh I’m sorry, are we not allowed to talk about business any more? I didn’t mean to rock the boat. In any event, here is the challenge that I have:
I have been building and selling commercial websites (in one form or another) since 1996. I’m not the best developer in the world by a long shot. Heck, I’m not even the best developer in my home town. However, I like to think I’m a fast worker and, most importantly, the things that I build work. They just work. That’s why – since 1996 – I have given every single person who hires me a two year guarantee. Over the years – whether I’m fixing a contact us form or building an entire online shop from scratch – my guarantee has been this: “If it breaks or there are any faults over the next two years then I’ll fix those faults immediately and free of charge”.
Folks, when you give your clients a guarantee like that two interesting things happen. The first thing is, you quickly learn how to build web applications which are bullet proof. If you know in the back of your mind that your ass is on the line if it breaks then you can’t afford the luxury of building dodgy applications. The second interesting thing that happens is that, over the years, people begin to trust you and they come back to you. They also recommend you to friends and family, from time to time.
That’s the web development business for you right there. That’s all there is to it! Build good stuff, make it work, don’t leave them with something that is broken and you’ll be cool. I have PHP sites out there today which are over eight years old and still going strong. The reason why I have been able to charge premium prices and stay in business for so many years is not because my stuff is any better or fancier than yours. It’s because my stuff works. It just works. Every single person who has hired me has that two year unconditional guarantee and it has been a win win for everyone involved.
Rewrite culture is now challenging the way that I and others with me do business. How can you or anyone possibly give any guarantees to your clients whatsoever if the next rewrite is potentially just a few months down the road? You can’t!
Last year I predicted that thousands of Zend developers are going to be left like abandoned refugees when Zend Framework 2 is released. I was right. This rewrite culture is having a devastating effect on businesses and on developers. Remember folks, we’re talking about rewrites. Not upgrades. Not major improvements. Rewrites. Complete, ruthless and unyielding. My visualisation today is that the people behind most of these rewrites are spectacularly talented web developers. I dare say that I’d probably struggle to even hold a conversation with some of those guys – they’re so far ahead of me in terms of web development knowledge. They’re incredible and they are brilliant.
However, I’m going to venture a guess that the majority of the people behind this new movement aren’t in the business of being in business. For the most part, I don’t think they’re part of the marketplace and I don’t think they are sensitive to the needs of clients on the ground. Here is a presentation from a top Drupal guy who introduces himself as being part of a company who build websites “primarily for not for profits”. Why does he build primarily not for profits? Why can’t he be an unashamed commercial web developer? What’s wrong with that? I’m not saying that there’s anything dodgy going on but surely these are valid questions to be asked. If I was one of the top Drupal guys then I’d be selling websites for six figure sums and I’d be proud to do that! There is nothing immoral or unethical about running an honest business. If more people did that then perhaps the global economy wouldn’t be in such a mess.
The key word that I was to highlight today is “rewrite”. A rewrite means starting again from scratch. A rewrite means most of the stuff that you learned in the past is no longer useful. A rewrite means no more support for your existing systems. A rewrite means change or die. A rewrite means we got it wrong. A rewrite means go back to square one and do not collect $100 when you pass ‘Go’.
Let’s not mistake a rewrite with an upgrade. Upgrades can be happy and joyous. Upgrades can be graceful. Rewrites, on the other hand, can be devastating for people in business who depend upon their web applications to put food on the table.
To the people who appear to be bashing Codeigniter because it hasn’t joined the rewrite party I’d just like to stay that the things which you guys appears to be criticising are actually the things which I like best about Codeigniter. I applaud the Codeigniter guardians for not rewriting and for not going with the rest of the herd. Unlike all of the other major framework makers, they have produced a framework which is stable, tried tested and as durable as a post nuclear war scorpion.
When you build a website application with Codeigniter then you can be pretty sure that they’re not going to turn around in two weeks time and declare another rewrite. You can depend on Codeigniter and that’s a good thing. It’s good for your clients and it’s good for you.
I’m particularly concerned for the ZF2 developers. The people behind Zend Framework have proven themselves to be ruthlessly commercial. They charge four figure sums for seminars and other wares. They know that every time they release a new version of ZF then they’ll make a tonne of cash from that. When ZF3 comes out I for one will be questioning whether that change was inspired by technology or a desire to sell more.
The flagship feature of the new generation PHP frameworks comes in the form of bundles. Bundles are basically self contained modules which contain all the code required to perform a given set of tasks. The idea is that you can easily create and access entire libraries of bundles and quickly ‘bolt’ new features onto your website as and when required. This is all very impressive. However, for those of us who have been using HMVC architecture with frameworks like Codeigniter, Kohana, Fuel, Yii and others – it’s nothing new. We’ve been working like that for years!
In my opinion, the PHP community needs to have a rethink. I’m not saying that we need to stop rewrites but I think we should make it clear that it’s seriously uncool to do lots of rewrites lots of times. Instead of demanding rewrites I think we should be encouraging graceful and elegant upgrades. If we really must do rewrites, then I would like the people behind those rewrites to do the following:
- Clarify why the old version was flawed
- Clarify where the demand for a rewrite came from
- Clarify how the new version remedies the flaws which the older version had
- Clarify what support is available for people who are depending on older versions
- Clarify how long that support will last
- Clarify when we can reasonably expect additional rewrites to occur in the future
Personally speaking, I don’t want it to be the norm for technologies that we depend on to be rewritten every twelve months or every six months. I’m slightly worried though because I think that’s the way we’re going. In my opinion this is the most important issue facing the PHP community today.