Hype-driven Development or How I Finally Got Into Laravel

Code Igniter is probably one of the most well known PHP frameworks. I used it the first time around 2008 and it's really easy to follow conventions and its documentation made it easy to learn and to understand concepts like OOP, MVC and CRUD.

It was pronounced dead several times and several forks were created and even if new programming paradigms got established and CI was deemed old, it just came out in version 4 earlier 2020 and I believe it's still easy to learn, but using more modern concepts.

Around 2013 I used Code Igniter again to build an back office app and I got a bit unsure if CI was the right tool, because Laravel was hyped as a much better and modern alternative.

I tried it and failed, going back to Code Igniter and succeeded.

Then I came along the micro framework Fatfreeframework that taught me so many new things and I was happy.

Laravel crossed my ways often in podcasts and on twitter, I saw the progress, I love to use their standalone Collections and Array Helper, but I was thrown off by critiques of their fast development speed and breaking changes. Also some of the most vocal advocates of Laravel looked like annoying Brogrammers to me (I might be wrong here) and it was a lot of hype-driven development.

Fuel CMS

Now I'm in a position to find the right tool to create a complex admin interface and a website consuming some of the data, but also acting like a CMS.

I worked with Fuel CMS in the past and even if the learning curve was steep, it was based on Code Igniter, so a lot of documentary exists and it was around for 10 years and still maintained. So I thought the choice was easy.

Using Fuel CMS would allow me to create admin panels for existing database tables quite easily and to use their CMS functionality which is pretty good.

But while setting it up and evaluating it for the job, doubts creep in. It looked dated, the tech stack was dated. I don't think it's a problem if they keep using CI 3, but the JavaScript backend, even if highly functioning, was stuck with jQuery 1.6 and jQuery UI and pjax.

Just to be clear using jQuery is great. I prefer that and have an easy way to extend functionality than being forced to use a build tool, just to add one line of JS.

I got at a point where setting up certain fields in Fuel CMS was just too convoluted, that I looked for alternatives.

Even the Fuel CMS devs admitted, that they use different tools than Fuel CMS now and just maintain Fuel CMS, but not going to actively develop it anymore. That was a bummer. It would be silly to build a new project on a dinosaur, even knowing, the system works and is battle tested and learning something new would add a new layer of stress.

I started to evaluate several options like Kirby CMS, Craft CMS and here and there Laravel CMS like Oktober CMS popped up.

Laravel, Laravel, Laravel

I gave into the hype and thought screw it, I'm going to try out Backpack for Laravel, an admin panel that had the right field types for me and it ws a chance to learn Laravel a bit.

What can I say?

I got my prototype done over a few days and thanks to my work with CodeIgniter and Fuel CMS I was able to understand Laravel's paradigms quite easy. There is so much magic going on under the hood, it's insane! I would argue, that's the steep learning curve that comes with Laravel.

Even if you know PHP, the fact, that so many methods just work, because they are written in a certain way like getProfileImageAttributes() that refers to a database field named profile_image - it's just insane. But... I was impressed how clean and focused you can write code, once you know all the helpers and the Laravel concept of Fascades and Services and what not.

What bummed me out is that with Laravels reliance on third party packages, we get into node_modules folder territory with a vendor folder filled with 20000 tiny files. This is a nightmare, compared to Fuel CMS that just comes with it's own CURL Service class, instead off Guzzle, or Fatfreeframe work, which is so lean and so powerful.

That's definitely a big downside, but so far, I'm enjoying my Laravel experience.