Moving On

Posted: 2012-09-05
Category: PHP

My entire career seems to have come from being a CodeIgniter developer, and a vocal one at that. Since then I have risen up through the ranks of CodeIgniter developers to be active in maintaining it, but with my new job I just don't need to be on the team anymore. PHP 5.2 is finally dead to me, and as such I do not need to be part of a framework which focuses of PHP 5.2 compatability! It's not just CodeIgniter though, I am dropping as many of my responsibilities as I can to make way for an exciting [secret] new job.

Vaguely Relevant History

When I first started using CodeIgniter in 2007ish I wrote a whole bunch of libraries: Assets, Curl, REST, CLI, GitHub API, Unzip, Cache, Template, OAuth, OAuth 2, and probably a few more which have come and gone in that time.

I was building projects and when I realised that a feature was not in CodeIgniter and nobody else had released a library - or the library was old or buggy - I'd build my own. When it was built I'd blog about it, so other people could avoid having to write the same stuff out and could potentially help me improve my own.

Over time I realised that CodeIgniter was missing things in the core that were not something I could make into a library, and so I started blogging about how you could accomplish these various tasks. Base Controllers for Admin and Public areas, multi-site, multi-environment, REST API's, etc all ended up as a blog which people would use to answer almost any StackOverflow or IRC question you could ask.

With all this blogging I ended up with quite a reputation as somebody who knows whats what in the CodeIgniter community, but it frustrated me that some features just weren't in the core. Other people were frustrated too, and the community wanted more control. I wrote an article two years ago that got a f**kload of attention, asking "What Happens Next?" and suggested that CodeIgniter would not go much further without community input.

FuelPHP To The Rescue?

I ended up getting involved with FuelPHP - in the hope that if CodeIgniter were to "die" I would have another "favourite framework" which I could use for my PHP projects (which most of my clients request specifically). At the time working on FuelPHP was awesome fun as it meant I could play with PHP 5.3 features like namespaces, more command line utilities (like Oil) and other things that just didn't fit in with the CodeIgniter philosophy - as a slow moving, backwards compatability focused framework. It also meant that all of these hacks and tweaks I was blogging about could be rolled into the core. FuelPHP could handle multiple environments, base controllers, autoloading, etc all out of the box meaning each time I started a project I didn't need to hack it in!

Eventually EllisLab let the community have what it had been asking for. They assigned a team of "Reactor Engineers" from the community (myself included) to help develop features and peer-review pull requests. This was awesome and 2.1 had a whole bunch of great new features come in - including many of those various tweaks and tricks myself and many others had been blogging about, and 3.0-dev (as yet unreleased) has had about x40 the number of commits that any version of CodeIgniter has had in any previous version - all still without breaking the API.

CodeIgniter AND FuelPHP?

This meant for a while I used both CodeIgniter and FuelPHP, which confused a lot of people. Simply put I would mainly use CodeIgniter when I was stuck using PHP 5.2 and FuelPHP when I was able to use PHP 5.3. Things like PyroCMS (a distributed application) and crummy old client servers (dear God why won't they let me upgrade them) meant that using PHP 5.2 (and therefore CodeIgniter) was a must for me, and so being in a position to fix bugs and add features was a massive oppertunity for me - and meant I wouldn't need to maintain my own "fork" of CodeIgniter.

With this reputation in the CodeIgniter community, and with this position on the team, I started getting a lot of CodeIgniter jobs off the back of it. It was pretty cool being flown out to places like Chicago to work on projects for people using CodeIgniter, but I also ended up getting typecast. The number of CodeIgniter + Bootstrap dashboards I have made is only topped by the number of f**king CodeIgniter RESTful API's I've built. It's a lot.

As of a few weeks ago I have a new job and my whole situation has changed. I am in a position where suddently I only have one main focus: building and maintaing the backend for an iPhone app, to handle as much load as possible. No more PHP 5.2 for me then, and not as much PHP in general. PHP 5.4 for the API (specifically requested) and JavaScript frontends with EmberJS to help reduce the amount of work the servers are forced to do. If the PHP starts to get slow, we can play with HipHop or even swap out the next version of the API for NodeJS.

Sacking Off Work

So with that big-ass changearound it seemed like a decent time to quit the CodeIgniter team. After-all I won't be using it, so why spend my own time working on it more than I have in the past? Just peer-reviewing incoming requests takes up about an hour a day and I just can't spare that time anymore. After-all, investing that time used to directly reflect in the freelance offers I would get, but I don't need to anymore. It might be selfish, but thats how it works.

While I am at it I decided to quit the FuelPHP team too; I'm cutting right back.

Now I can go back to just being a user, and not have to spend hours going through emails from GitHub about bugs and feature requests.

In yet another move to shirk responsibilities I have open-sourced my two ExpressionEngine add-ons which I used to sell:

I know people have been paying for that code, but the best I can do here is to open it up. I've been in touch with several customers who are over-the-moon to see it open-sourced, so I don't feel bad about this at all. If anybody wants to take them over they're welcome, otherwise send in pull requests and I'll get them merged as and when I have the time.

What next?

The only team I won't be dumping is PyroCMS - which is just getting started. There are some massive plans coming, and we'll be switching to PHP 5.3 soon meaning great new things.

I've also been bashing together a basic admin panel for the new job using Laravel 4 (still pre-BETA) and this new framework fits in exactly with how I imagined FuelPHP 2 ending up. The difference is that Laravel has a company behind it, and Taylor has been ridiculously active. This whole last week or two he has been on Skype with me fixing bugs as I find them, and they already have a lot more done than the FuelPHP team could in the same amount of time. Laravel 3 was ok, but Laravel 4 is going to be epic.

Basically, anything using Composer packages is a huge winner for me, even Symfony is starting to look much more attractive now that I've taken the time to learn about the benefits of dependency injection, instead of just discounting it based on it looking "too complicated".

Anyway: "The Times They Are a-Changin'", so if you're a PHP Framework user: keep your eyes out for change and be receptive to it.

If you're releasing code make it PSR-2 and distribute it using Composer, write unit tests and shove it on Travis-CI. Try to make it work on as many frameworks as you can. Be smart. It takes a little extra work to implement initially, but you can double or quadruple your user-base, which can reduce ongoing work for you while increasing adoption.

If you're looking for code packages make sure they do all of that. Packagist is a good place to start looking. You want tested, well documented, re-usable code, not just some random library somebody dumped together for your specific framework that might not be maintained as soon as they switch frameworks.

Update: A lot of people are reading a lot into the mention of Laravel. I am not interested at all in Laravel 3 (the current version). I am interested in PSR-2 and Composer, which Laravel 4 (the version still in development) is entriely. I want a basic framework, with no frills whatsoever. No ORM bundled in the core, and some really simple routing and config management. That is it.

Laravel 4 keeps Blade, Eloquent, even the Validation code in their own packages which you can chose to include if you wish. I could just as easily use Silex, Slim or any micro-framework for that, then bundle a few packages. For API work I probably will be using Silex or Slim with a few PSR components bundled in, but for this dashboard application I am using a lot of Laravel components so decided to use the whole lot.

The next generation of frameworks are not what you're used to. Don't use one framework for everything, use whatever is right for the job, and use components to stop this whole "I build everything with X" mentality. It's childish and damaging to you and your projects.

Comments

Gravatar
Chad Hutchins

2012-09-05

Just wanted to say thanks for all the time and effort you've put into these projects! I have definitely benefited from many of them.

Gravatar
Don Allen

2012-09-05

A sad day for CodeIgniter, but I'm glad to hear you're cutting the nonsense out of your life and moving on to something more stable. You have been a huge influence in my path to becoming a better coder.

I'm really excited to hear what's coming in PyroCMS.

Gravatar
James Mills

2012-09-05

Hi Phil,

Great post! I would just like to take this opportunity to wish you the best of luck for the future and to thank you for all your time and hard work over the years.

James

Gravatar
Dennis Rasmussen

2012-09-05

Not surprised.
I was actually hoping you would "quit" CI (and Fuel) and jump on the road to Laravel and other fast moving and tech-friendly resources. Already few years ago it seemed like you were stuck with something that wasn't really ideal for you (or some of us) and I'm glad you're moving on :)

Keep in touch though.
Resources changes, but the network is the same!

Gravatar
Adrian Walls

2012-09-05

Another one bites the dust. A huge thanks for the time, effort and commitment you have put into CI over the years and for all the libraries you built and maintained. They have def made my life easier as I am sure they have for others. You'll be sadly missed in the CI world (by most of us anyway :P).

Best of luck with everything in the future.

Gravatar
Eddyf

2012-09-05

CI community loses another great member. many thanks for all hard work and effort. Good luck with your new job. Gotta say tho you dropped enough clues not to make it a [secret] anymore. Haha Heard their new office in London is awesome. Good luck all the best!

Gravatar
Dan Diemer

2012-09-05

Thanks for your stuffs, have fun at the new gig!

Gravatar
Benjamin

2012-09-05

Wait a minute, PSR-2 requires space indentions rather than tabs? People always got pissy when I used spaces so I broke myself of that habit a long time ago. I can't go back.

Gravatar
Dilantha

2012-09-05

Just switching myself to Laravel after years of CI. Just wanted to thank you for all the code and articles about CI.

Gravatar
Steven Wade

2012-09-05

Best of luck Phil! Lord knows the PHP community will miss you and I wouldn't be where I am without your knowledge.

Thanks!

Gravatar
Ned Fenstermacher

2012-09-05

Thanks Phil! Keep learning, innovating, teaching and inspiring those in the community. Best of luck.

Gravatar
Nic Rosental

2012-09-05

I can't thank you enough for all the contributions you've made. They saved me uncountable hours and taught me a good bit as well.

We may not be getting any more code contributions from you in the near future, but I'm sure you will continue to be a great influence within the PHP community.

If you're ever in Atlanta, please let me know. I owe you at least a beer (or a whole keg.)

Gravatar
Jason Shultz

2012-09-05

Good luck, Phil! I, for one, am happy for you. You are a superb developer and I have the greatest respect for what you have done. I look forward to seeing what you do next.

Gravatar
Adam Jackett

2012-09-06

Congratulations Phil, and good luck with everything in the future. I think you're absolutely right, the frameworks of tomorrow are going to require us to be much more open-minded, but in the end it will just make everyone's lives easier, and make our apps that much better.

The only thing about PSR-2 I don't like is spaces instead of tabs. I get why spaces are "better" but I prefer tabs. Gonna be hard to break that...

Gravatar
Spicer Matthews

2012-09-06

I never understood how you did it all!!

Best of luck in your new ventures Focus is good!

Thanks for all that you did!

Gravatar
Gaurav Chandra

2012-09-06

Codeigniter made my life and life of my team easier. It is still a very robust framework in my opinion. Since, you have worked on it you know better. But does this mean we dump CI for other framework like Laravel? I sure hope not.

Best of luck.

Gravatar

2012-09-06

Thanks for all the kind words everyone!

Gaurav: No, I am absolutely not suggesting everyone dumps anything to go and use something else. That is the exact opposite of what I have been talking about!

If CodeIgniter fits your needs then that is the framework you should be primarily using. My needs changed, and therefore my toolkit has changed. I am playing around with Laravel 4 because it is Composer based. I don't give a damn about Laravel 3 as it is NOT Composer based.

Other frameworks you should try include Silex and Slim, which are both very good for super-quick API building. FuelPHP 2.0 will be good when it's finished, and very similar to how Laravel 4 will turn out - perhaps with more configuration options and better HMVC nesting that L4 will offer.

Use DIFFERENT tools, and not one for everything. Definitely don't just blindly follow me for the sake of it!

Gravatar
Chris Duell

2012-09-06

I'm impressed you did do much for so long... looking forward to hearing about the next phase(s)

Gravatar
Kevin Wood-friend

2012-09-06

Good luck Phil! Thanks for everything you've done and provided for the CodeIgniter community.

I've been thinking about taking a look at Laravel as well.

Gravatar
Gaurav Chandra

2012-09-07

Thanks for the reply, Phil. It sure made my day.

Gravatar
Maarten Boot

2012-09-07

Phil, It is fun following your posts, curious to hear whats next.

Gravatar
Oli

2012-09-07

It is terrific to see that more great developers adopt PHP 5.4

Gravatar
Derrick

2012-09-09

Good luck Phil, I have huge respect for your logical approach to PHP and problem solving in general. I'm sure you will have new and exciting things to share with us in the future.

Gravatar
Dan Storm

2012-09-09

A sad day indeed.

Thank you for all the time and energy you have put in the community - I have great respect for all the work you have done and shared with us.

Congrats on the new job.

Gravatar
Matthew Schenker

2012-09-14

Hey Phil,
Congratulations on moving upward! I've thoroughly enjoyed your blogging, advice, libraries, and the work you have done with PyroCMS.

I must admit that your post adds some confusion to my own development planning. I've come to love CodeIgniter over the past couple of years, but I've also had this coonstant feeling that I should be looking more at Laravel and perhaps other frameworks. This way you describe your decision -- especially your comments about Laravel 4 -- makes me feel excited about trying those other frameworks. At the same time, it also makes me feel rather unsure about where to focus my attention. I'm not saying I just follow you blindly, but your opinion matters to me.

I understand what you mean when you say, "Don't use one framework for everything." But it takes a lot of time and dedication to become really good with one framework or another. At least for me, it's a bit difficult to become good at CodeIgniter AND Laravel. And it feels really difficult to become good at Symfony on top of all that. Probably, most developers will continue to dedicate themselves to just one framework, maybe two. But with the big changes you're talking about, maybe it will soon be easier to move among different framework?

I'm not looking for simple answers here -- just tossing out some responses and hoping to contribute to a discussion.

I continue to be a fan of yours and eagerly await further news from you!

Gravatar
Jordan Arseno

2012-09-17

Thanks as always Phil, best of luck in your new role!

Gravatar
John

2012-10-05

Your "update" sound like something that Kohana is doing for a year or two now. Anyway, nice post and great blog you have there ;) Keep it up!

Gravatar

2012-10-10

John: I have been keeping an eye on (and occasionally using) Kohana for years now, and it has nothing to do with what I have been talking about - im not sure why you think it does. Kohana are against the FIG, PSR-0 and don't use any Symfony components...

Posting comments after three months has been disabled.