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
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.
Information Technology Librarian
James C. Kirkpatrick Library
University of Central Missouri
Warrensburg, MO 64093