A few months ago I posted on HackerNews a question about Laravel vs. Drupal. Although an unofficial poll, One can the overwhelming response in favor of Laravel. However, gather feedback from the Internets wasn’t enough.

A little background, I’m working on a contract for a large organization and the administrator of the contract who has a background in system administration decided to use Drupal 8 as project to prevent people from uploading directly to the production server from Dreamweaver, SCP, FTP. terminal or some archaic method. (There is absolutely no deployment methodology) Prior to the sys admin leaving in July, I asked the sysadmin why he chose Drupal? His response was “Well I programmed in it briefly, like 10 years ago so I think it will help us.” So that was the rational. I started to learn to program in Drupal, I quickly learned that essential it is a pain in the @ss to program in Drupal. In fact it is downright excruciating.

Spending a few weeks trying to implement a simple group permission module that would allow certain writers access to certain articles and deny writers access to different articles, etc. What I would consider very basic content moderation / group access, there only two modules out there, Groups and Organic Groups and neither of them seem to work very well. Most importantly, most developers haven’t moved over to Drupal 8, so there doesn’t seem to be a rush to support these modules.  In addition, I had coded out content moderation / group access features in php / Codeignitior / MVC with no problems in the past.

With the  Sys Admin, who did a little coding 10 years ago, now gone, I saw opportunity to change direction, as I didn’t want to get stuck coding in Drupal. I address the issue with the new administrator and instead of telling him that I was going to switch to a new framework, I thought it was only fair to a present my case. I believe that it is important for administrators or senior leadership to make informed decisions. All to often I have seen developers just tell non technical people what they are going to and then start programming in their flavor of the week coding language. With that said I would put together a presentation on Drupal vs. Laravel and make non technical person to understand. I was excited about this because writing code is fun, but sometimes I like add a little more challenge and this would provide an opportunity.

The key issue really is 40% of the project really setting up a simple CMS system to publish articles. The other 60% of the project is completely unknown. It could be something like converting oracle data and displaying in a custom CMS view.

The one thing I did get to Sys Admin was to get a simple mission statement as to lock him down on the specifics of the project. So here is the presentation:

Mission Statement / Directive: To build a comprehensive Content Management System (CMS) using the Drupal framework to allow different stakeholders and pre approved groups the ability to create appropriate content (news, embeded video, images) and static pages for publication on the website. The public facing will only have read access and all content management (CRUD) will occur behind a protective firewall.

With that here is my presentation:

Laravel vs. Drupal

Problem: Develop a CMS for an unknown project description and make sure the CMS system is adaptable enough that it can implemented across a variety of project / websites that have not been defined.

Current situation: Currently we are attempting to implement Drupal 8, which was was released on Nov 2015. Drupal 8 is significantly different than Drupal 7 and does not have an end of life date. This is important to note that current web developers are not converting sites to Drupal 8 at an accelerated pace because they can continue to use Drupal 7. Hence the development on Drupal 8 and drupal modules has been slower and spotty. Implementing Drupal 7 would be an issue as we would be confronted with an upgrade to Drupal 8 in the future. Using Drupal 7 would only be an effort to kick the can down the road.

Proposed solution: After working with Drupal over the course of a few months, it appears the community is stuck in Drupal 7 and possibly abandoning the platform. Solutions to Drupal 8 issues appear to be sparse. In addition some key modules are in beta. Modules for group permissions, there are only two modules that support this feature. Which really makes this project dependent on the two modules. Permission to manage content is standard with WordPress.

After careful consideration and research. It is recommended we move over to the Laraval / PHP framework without altering our November or new October 1st deadline, maybe even decreasing it. Laraval is a robust framework that allows us to implement the most basic requirements of the “Drupal – RISE – Project” of creating a simple blog/article ability with basic Admin capabilities. The beauty of laravel allow to adapt and build features that we don’t know exist, for example connecting the water levels with mussel data should be able to develop without being bound to constraints that Drupal might place on creating new features. Although all constraints of a Drupal or Laravel can be overcome through programming, Laravel is just built in a way, that you can get up and running faster to implement new features.

PRO Laravel:
-Up and coming community
-Laracast (well documented support and video learning)
-Well received / received in the community
-Eloquent ORM (immediate protection against Mysql attacks)
-Lumen (micro service / API)
-Far greater admin user interface than Drupal
-Follows traditional MVC framework
-LDAP integration
-Super easy documentation:
https://laravel.com/docs/5.4/
https://laravel.com/api/5.4/
-Super easy and fast
-Implements a simple Model-View-Controller architecture

CON Laravel:
-New system
-Start from the beginning
-Started in 2012
-Calls it’s programmers, “Web Artisans”

PRO Drupal:
-Work already exists, LDAP, admin
-The traditional and established “work horse”, built in 2001
-Empirical evidence appears that drupal is used for newspapers format.

CON Drupal:
-Open source community seems to be stuck between Drupal 7 and Drupal 8, minimal development
– https://www.drupal.org/project/dbfm (Module Derick needs is stuck on Drupal 7)
– https://www.drupal.org/project/group
-Fading use as illustrated in charts below.
-Not traditional MVC environment (although moving towards it)

Google:
https://trends.google.com/trends/explore?date=today%205-y&geo=US&q=drupal%208,drupal%207,drupal,laravel

Stack Overflow:
http://data.stackexchange.com/stackoverflow/query/697097#graph

Reditt:
Drupal Users Group: https://www.reddit.com/r/drupal/ = 7,066 readers
Laravel Users Group: https://www.reddit.com/r/laravel/ = 11,028 readers

Epilogue: In the end, I wasn’t able to persuade the new Sys Admin to move over to Laravel, we are stuck with Drupal.  Not sure if I really lost as much as I might not have hit the right selling points with the audience. That can be difficult, when the mission statement is very open and the end goals are not defined.  I did have some competition as another developer presented the case for Drupal.  Any frame work is going to be flawed, but the lack of support in the Drupal 8 community is a serious issue. On the bright side, I was able to gain exposure to Laravel as I got to play around with it for a week or so. Although my background is Codeigniter, Laravel is super fast to pick up super quick to learn.

Leave back here or on hackernews, be interesting to see the communities thoughts.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tagged with:
 

One Response to Drupal Vs. Laravel

  1. John Huang says:

    Berfore starting to build and develop Drupal sites for over 1 year, I use Laravel framework. I think in some website types, eg. media and content, Drupal is more suitable. Because, in Drupal 7/8, the ImageStyle is powerful, it can process different image size for different device screen. Especially, in Drupal 8, the cache system allows to control the cache of page easily and flexible.

    In the beginning of developing Drupal 7, I cannot accept and realize the configurations are in database. Although, the features module can help export the configs into code. Sometimes, when deploying into production or stage site, the exported features may break or encounter the different tid. In Laravel, all configs are in code. When deploying, developers only pull the branch and set the config values into environment variables.

    Sometimes, I hate to take much time to work on the customized displays or modifing forms in Drupal, since in Laravel or others development, I only need to change HTML or blade. In Drupal, I should implmemt hook functions to alter rener array or Form API.

    BTW, I prefer Drupal 8, due to OO design, new config management, service container, plugins system, event listener, routing and so on. They provides more structual ways to maintain and develop.

Leave a Reply

Your email address will not be published. Required fields are marked *