My freelance business has grown, and reached a critical decision point for my future development. I've been puzzling over this for a while - why not puzzle it out in public!?
I need to pick a PHP framework. Or maybe not pick one. But my dilemma is a kind of unusual. I'd love the opinions of other experienced PHP devs! But hear me out, my situation is a bit unique.
Extensive research has given me endless comparisons of Laravel vs Symfony & others, using completely useless (to me) metrics like:
- Number of GitHub stars.
- Google search popularity.
- Job postings.
- Number of StackOverflow questions.
- Millisecond differences in speed.
These comparisons aren't helpful. Let me explain why.
I build websites & web applications for small to medium sized businesses. Most start as a basic website with a contact form, Google Map, and that's it. Many never grow past this. Some eventually add custom dynamic elements. Say a work-order status page. A searchable directory, etc. A few have grown bigger.
But, and this is key... I also provide hosting, so ongoing maintenance is on me. I don't deliver a project & wash my hands of it. I make future text changes, fix bugs, add things & keep it running - for sometimes many, many years. My oldest PHP project in production is over 10 years old!
Over time I will end up with DOZENS of these projects to take care of.
I don't have the luxury of one, beautiful application to keep front-of-mind.
And so, stability over time is a key. Easy upgrades are key. This is why WordPress replaced my internal CMS for clients who fit that use-case: one-click upgrades baby! That's gold.
Until recently I was using a simple, custom MVC framework that I built. Most of my existing projects are on that. But it's over 8 years old, pre-Composer, and time for a new direction. To give that old workhorse some credit though- it has needed almost zero updates over that time (likely due to stagnating on PHP v 5.6).
I have a few months of experience & learning with Laravel, it's nice. But ongoing updates are a concern. Backward compatibility isn't a priority for Laravel. And it's overkill for 90% of what I do.
I've built a few things with SlimPHP.
I'm intrigued by Symfony because it starts as a micro-framework & grows with you. Awesome!
I'm also considering sticking a few stable Composer packages together for a light version of a 'framework' that will cover all but my few large projects. Maybe Slim is exactly that?
Maybe 90% of what I do doesn't need a framework at all.
It all boils down to not wanting to regret my choice 10 years from now. My youngest child starts school next year & when that happens I'll be throwing my efforts into my business full time. Between now & then I want my ducks in a row & to do the necessary learning.
- PHP based.
- Stability over time.
- Well documented & clear upgrade process.
- Grows with my needs over time.
- Doesn't break backward compatibility on a whim.
- Ok to have one option for small stuff and one for big projects.
Do you have experience maintaining several framework-based projects over time? What do you use? Is it painful?
Am I crazy for thinking everything even needs a framework?
How does your company handle the time spent maintaining & upgrading a client's project? Do you bill them for the time? Offer a Support Licence with a monthly fee that covers this type of work? Bundle it in the hosting fee?