For me the main benefit of Drupal has been that, as a wanna-be coder, I can do some very powerful things simply through logic - I may have to carefully think about structure, relationships, experiment with views, evaluate modules carefully, problem-solve during updates, document my work, etc, but I don’t *have* to code a single thing (although I do). (yes, I know this is the code4lib listserv not the drupal4lib listserv where this statement might be more well received :) This was really important to me when we started using Drupal 5-6 years ago and we did not (at the time) have a programmer on staff. Yes, Drupal has a steep learning curve but once you get past that and figure things out for the first time, it's easier to apply them as you add new features. And it's just so powerful.
Regarding the module dependencies, I think the key is to carefully choose your modules. Over the last 6 years I've only run into trouble a couple times. Sometimes you can't update to the latest version of a module because it isn't (yet) compatible with another dependent or related module. So I just leave it until the other modules catch up. Security updates rarely cause the conflict you describe, so those can almost always be applied. In my experience, once you get your site established the turmoil you describe dies down.
In terms of business continuity, the fact that there is such a strong Drupal community, both in the library world and beyond, means that there are plenty of people who could figure out what you had put together.
I use Wordpress for other, more simple, web development and I see the advantages to Wordpress - it's a lot less clunky on the admin side. It feels more lightweight and streamlined. But I feel that Drupal is more powerful. While we use Drupal for our website development, our developer uses other php frameworks for other more internal web applications for the reasons you state. I think it might just come down to preference (both personal and shop) and skills.
____________________________________________________________________
Laura K. Wiegand
Coordinator of Discovery Services
William M. Randall Library
University of North Carolina Wilmington
601 South College Road
Wilmington, NC 28403-5616
[log in to unmask]
Phone: (910) 962-3680
------------------------------
Date: Wed, 14 May 2014 20:35:05 -0500
From: Joshua Welker <[log in to unmask]>
Subject: Very frustrated with Drupal
Warning: incoming wall of text.
I've been working for the past several months on building a library website with Drupal. This is my second try building a website with Drupal. I chose Drupal for two main reasons: CCK/content types, and its ubiquity in the library community.
Theme development was going relatively well, if a little overly complicated. But once I started trying to do anything beyond developing static pages, I have become more and more frustrated with Drupal.
Drupal supports custom content types out-of-the-box, which is great, but if you want to actually do anything with that custom content other than have it function as a plain page, you have to use the Views module. Views is great, but views can easily become very complicated, with custom rewrites, grouping, relations, contextual filters, etc. Plus, a lot of functionality in Views requires more modules (for instance, basic data manipulation).
This is to build rather run-of-the-mill list features like a database list or a list of events. And a lot of the advanced features in Views require a solid understanding of SQL (groups, distinct, joins, etc), which kind of defeats the notion that it is easy for non-developers to administer.
Now, at this point, I have modules extending my modules. And those modules have multiple dependencies on other modules. I am getting worried now. It feels like my website is a house of cards. I've run into several instances already where one of these plugins is updated and breaks compatibility with the whole stack, and there is nothing to do in this case but open an issue on the project tracker and pray for the best. I have looked into building my own modules, but the umpteen APIs and hooks required to do something simple as perform some regex on field data completely overwhelmed me (and I am fairly experience with web app development).
It's not just Views, either. Anything more complicated than static pages and navigation menus requires relying on the module ecosystem.
Not only is the whole thing quite precarious, but it defeats one of the two main purposes of a CMS: ease of administration. I want to know that if I get hit by a bus tomorrow, someone will be able to come in and take over without too much difficulty. But when I go back and look at my views, I can sometimes barely understand the work I did a week ago. It is very difficult to keep straight which functions are coming from which modules, and all those modules have separate (often poor) documentation.
At this point, I am seriously contemplating dumping Drupal and moving to a full-fledged framework like Django, Flask, or Laravel and adding some WYSIWYG CRUD controls for pseudo-CMS functionality. ActiveRecord-like systems are much easier to use IMO than fiddling for hours with Views, and I have full control of what is happening. I honestly think it would be just as easy for someone to inherit a custom-built framework app as it would be to inherit my already-convoluted Drupal site. At least the framework is well-documented and should allow my app to be understandable to anyone with some programming experience.
Does anyone want to talk me off the ledge here? I know a lot of you are using Drupal for your websites. What are the killer features that keep you using Drupal? If any of you have experience building websites using frameworks, what are your experiences? I really want to like Drupal, but it seems to be more trouble than it's worth.
--
Josh Welker
Information Technology Librarian
James C. Kirkpatrick Library
University of Central Missouri
Warrensburg, MO 64093
JCKL 2260
660.543.8022
------------------------------
End of CODE4LIB Digest - 13 May 2014 to 14 May 2014 (#2014-126)
***************************************************************
|