I can see why a programmer would be frustrated with Drupal. I've been confused by it on a number of occasions. I'm not very deep into the Drupal community, and I've only tried some aspects of Drupal development. So I'm maybe not the most likely person to say the following.
If you go the route of "CMS for the basic site and then a framework for all complex functions", I'd recommend being brutally honest with yourself about what is part of the "basic site" and what isn't. When you're a programmer, every problem can be solved by a new application (or so we think).
I don't know what sort of complex functions you're thinking of (I haven't fully digested this epic thread), but my library is actually in the middle of a major website overhaul that involves (among other things) integrating into Drupal all the "custom" functionality that we have made apps for over the years. For instance, our main website is a Drupal (6) site. Our library hours, however, are handled by a custom app. That doesn't make a whole lot of sense architecturally -- it re-implements (with a framework) a bunch of CRUD functionality, a user system, templating, etc. Drupal is capable of handling all of that. And we have an app of which the sole purpose is to export our Drupal theme so that other applications can look like they're part of the site without being in Drupal. While that is valid at times, it might have signaled to us that those things should have been a part of Drupal. We're finding that, while Drupal does certainly have different way of doing things, if we work with Drupal rather than trying to circumvent it, it can be a great help.
Every problem can be solved by a new application, except the problem of too many applications or a confusing overlap between a few. I don't know what your scale is, but I'd suggest paying attention to the overall architecture and thinking 5 years down the road.
And I say all this as one who is primarily a programmer (Symfony  is my current framework choice, and Doctrine  is amazing), and who prefers to have all the resources of object-oriented design and development at my disposal. Drupal isn't working that way (though D8 is moving that direction), and it does have a learning curve, but it moves traditionally programmer-only tasks within the reach of those who aren't programmers. We can view that as competition, or we can embrace it.
But if you honestly can't bring yourself to invest in learning the Drupal Way -- no judgment there, it *is* different! -- and your organization is willing to commit to always carefully hiring programmers, building something might be an excellent choice. That might be a very healthy and freeing realization.
If you are willing to dive in deep, consider attending DrupalCon. Amazing community. :-)
University of Arizona Libraries
From: Code for Libraries [mailto:[log in to unmask]] On Behalf Of Joshua Welker
Sent: Thursday, May 15, 2014 10:42 AM
To: [log in to unmask]
Subject: Re: [CODE4LIB] Very frustrated with Drupal
Hmm using a CMS for the basic site and then a framework for all complex functions might be a good idea.
From: Code for Libraries [mailto:[log in to unmask]] On Behalf Of Wiegand, Laura K.
Sent: Thursday, May 15, 2014 10:20 AM
To: [log in to unmask]
Subject: Re: [CODE4LIB] Very frustrated with Drupal
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.
Information Technology Librarian
James C. Kirkpatrick Library
University of Central Missouri
Warrensburg, MO 64093
End of CODE4LIB Digest - 13 May 2014 to 14 May 2014 (#2014-126)