Drupal, why it makes me happy and why it doesn't
I've been working with Drupal for nearly two years now, still fairly new in the grand scheme of things. But in that time I've been able work on a variety of projects from small to big, simple to complex, minor additions to full builds and for various sectors and clients. Over that time I've grown to become rather fond of Drupal however there are also some bits I'm not so fond of. This will be a quick overview of a few main points that shine through in my love/hate relationship with Drupal during my experiences and the reasons why.
The things I like
I've been in a few online communities, gaming, coding etc and Drupal is one of the few that is so welcoming it’s rather surprising. Wherever you look, be it the drupal.org forums, groups, stack exchange, irc etc you'll see new and old people asking questions with a host of replies containing answers, advice and general know-how. There's no elitism, no "I'm better than you", and no “you should just give up now for asking such a simple question”. The responses are almost always constructive, detailing a solution (a code snippet or link elsewhere) or advice and people sharing their personal experience.
Anyone is able to submit issues and patches to be reviewed by the community as a whole. Alongside this you can jump in as a maintainer of a contrib. module or even Drupal core itself. The community initiatives details areas people can help in so you can target yourself to find something you have an interest in and want to work on.
Before you get to the hardcore coding there’s a wealth of training available, the documentation is well kept and up to date on the core concepts providing a solid base. On top of this the amount of training videos is staggering, from module creators to other Drupal devs to professional companies such as lullabot.
Going further the community has a great presence offline as well as on. Arranging Drupal meets across the world, where people can gather to talk about a shared interest, have the chance to hear guest speakers as well as each other in presentations. The opportunity to get together and work on code sprints is popular enabling people to make Drupal stronger, together.
The community provides everything you need to be a Drupal developer and more. You can find out a little more about the massive community here.
The back end core
A slightly obvious point to make maybe, but the amount of changes you can apply to a site without touching a line of code is amazing. The ability to create/edit content types without additional modules/plugins, users, listing pages with views, social integration, blocks, panels etc makes Drupal a powerful CMS for non-techy as well as techy people alike. What's even better is that you have this ability to also do this via code as well, making transporting of features between environments easier or adding it through contrib. modules.
I kinda covered this slightly already, but it's fantastic so it gets its own point. The documentation on drupal.org and api.drupal.org is truly awesome; all functions are well detailed and explained and can be commented on to provide further examples of use. The Drupal api has become my new bible (not that I had one before) and is one of the first things I show people when I’m teaching them Drupal.
The scalability and file structure
Provided you’ve put in place good foundations a Drupal site can grow and grow rather easily and not cause massive problems. The ability to write custom modules and store them within the server easily, switching functionality on and off is great while keeping it completely separate to the theme file. Comparing to other CMS’ I’ve worked with where everything is in one file or multiple unrelated files in one folder along with the theme files it’s a great deal easier to manage and maintain. It also allows that true Drupal spirit of enabling you to more effortlessly seperate code you’ve written and submit it to the community if you feel it would be useful to others.
The things I'm not so fond of
The learning curve
I think this graphic sums up my view best:
Learning Drupal has become a life experience in itself, slightly akin to studying mathematics at uni: Starting off immensely confused, slowly getting to grips with it, feeling so happy when I finally understand something then confusing other people when I talk about what I’ve learnt. When I started there are times it got me down, stressed and generally feeling a bit crappy but after the initial hill it got a whole lot better. It still confuses me, I’m still learning and I’m still loving it (for the most part anyway).
At the agency I work at we have back end devs (me) and ux/front end devs. The front end dev will create the site in html markup/css/js and the back end devs take that and use it to dress Drupal. It's not so bad now as we use a drupal front end boilerplate, it mimics the markup drupal spits out so front enders can use that to create their templates meaning that integrating them into build is far easier than it used to be. Before the boilerplate however theming made me feel sad inside, classes, markup js would usually all need to be tweaked to fit them into Drupal, or spend copious amounts of time stripping default drupal markup or injecting classes/markup of our own (anyone theming views or forms may know the pain of placing someone else’s html/css into it). As I said it’s better now, and 95% of the time it’s rather easier but why the need for the array of divs and spans, surely it’s just a bit of overkill?
Training some clients to use Drupal has been...interesting. There are many separate components and if you need to use several of them for a page layout (i.e. blocks or panels) it can be confusing. Though this may just come with the territory of “Drupal can do a great deal more so there’s a great deal more to learn”, from a content management point of view. Out of the box it’s not as much a fool proof system as other CMS’ are and while you can spend a great deal of time adding the fool proofing to it you have to find the right balance between depending on a client to read the documentation you gave them or remembering what you said about how a certain part of the system works and the fail safes you can code in.
Overall my love of Drupal greatly outweighs the points I dislike (makes sense considering my career path really) and there's not much I can find to complain about. Feel free to share you love/hate relationship with Drupal and until next time!
Title image source: http://felix.delattre.de