Josh,
I welcome your initial rant, which was well articulated -- sometimes I can't find anything beyond 4-letter words to express my frustration.

It surprises me that there has not been much discussion of Drupal on this list, or even on Drupal4Lib recently -- yet it's so prevalent in Libraries, which seems strange to me. I've been developing with it for about 5 months, and the key thing I've learned in that time is that you HAVE to have a community of other Drupalists to bounce questions at -- perhaps that means going to Meetups, Camps, Cons, etc. Whatever your trying to do, it's likely that someone has already done it.

Books are not that helpful in my opinion. For example, in a 700 page book on Drupal 7 Development from Apress, "Views" does not even have an index entry -- so you can imagine how much information/noise is out there. I have found the BuildAModule videos to be exceptional and reasonably priced. I use that regularly. I have also had the benefit of a more experienced colleague helping me navigate, so I can't imagine going it alone.

For scenario #2 (exposing your data to other apps), you should look at Services:
http://www.lullabot.com/blog/article/content-syndication-using-services-and-feeds

I, for one, am looking forward to easy RESTful Web Services in Drupal 8 [1], which will allow me to combine some of Drupal's content modeling power, syndication features, and out-of-the-box admin/permissions features with more cutting edge UI frameworks always seem behind the curve in Drupal.

Scenario #1 (the hours page house of cards) is in some ways a feature. If there's a known bug in one of your modules, you can simply update that one little piece. That said, it can be fragile, so you should always test features/updates in a development environment first. You should also be making regular, automated backups of your production (and dev!) code and database so that you can roll back to one that works while you fix what broke.

-Shaun

[1] http://drupalize.me/blog/201401/introduction-restful-web-services-drupal-8



On 5/15/14 2:03 PM, Joshua Welker wrote:
Nina,

Thank you for your insights. I'm glad to get a response from someone with
lots of relatively positive Drupal experience.

As far as functionality problems, I can offer two examples:

1. I have a library hours page that pulls information from Google
Calendars with Feeds and redisplays it using Views. In addition to these
two modules, there are a handful more extending them: Dates (and a host of
submodules), Dates iCal, Feeds Tamper, Computed Field, Better Exposed
Filters, and Views Field View (just looking briefly at my modules page).
The hours page works, which is a testament to the Drupal community, but
the whole thing feels like a giant hack. I can barely remember how it all
works. It's like a giant Rube Goldberg device. If it suddenly stops
working, I have about 10 modules to look at to try to find the bug, and
most of those modules are very poorly documented.

2. I want to allow a non-Drupal app to harvest some of my Drupal nodes to
mashup into another app that is fairly complex. I have spent several hours
looking at Drupal documentation trying to figure out how in the world to
harvest this data via an API or basic SQL queries, but I am at a total
loss. The Entity API is beyond me. And looking directly at the underlying
MySQL tables, I have absolutely no idea what is what. Fields have their
own tables, and content types are fields. I kid you not. It is the exact
opposite of sane database design.

I agree with you that rolling a full-fledges CMS is a bad idea and would
be hard to inherit. But inheriting a framework app is apparently not so
bad, from what others here have said. I would have a standard
implementation of authentication in Rails, for instance, and my coworkers
could edit pages, database links, news, etc using WYSIWYG controls. It
would basically be CKEditor taped onto the front of standard CRUD pages
that are one of the most basic tools available in most frameworks.

I still am not sure what I will do, but I think there is a middle ground
between using an established CMS and forcing anyone editing the website to
dive into raw code.

Josh Welker


-----Original Message-----
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of
McHale, Nina
Sent: Thursday, May 15, 2014 10:37 AM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] Very frustrated with Drupal

Good morning, Josh and everyone, and thanks for the shoutout, Andromeda!

Josh, I didn't take your OP as abrasive at all. We've ALL been up on that
ledge, man!

If you know me at all, you know I'm pretty pro-Drupal. Pretty sure I still
have KoolAid stains on my face. This is mainly because I'm a developer,
not a programmer. Ten years ago, I was a reference librarian who stumbled
into web site development and management because my colleague who had
taken care of our website left the organization. This is still a pretty
common scenario for many of us working full-time on library web sites now.
I have absolutely felt all of the pain that is described here--the theme
of my career in recent years is "inherited hacked Drupal 6 sites"--and I
take the point that the Drupal learning curve can be as serious an
investment as learning some of the other languages/frameworks/options
mentioned.

But. That said, as far as the "bus scenario" (Josh! Nooooooooo!) goes, a
web site developed in The Drupal Way will be much easier for someone else
who is Not A Programmer to take over or assist managing. I assume you're a
solo developer at your organization? If yes, others could continue to
manage things even if, say, you wanted to do something crazy like take a
long vacation. Or help you out with stuff through the UI. I have also
inherited several homegrown CMSs over the years, and I would always take
(weeeelll, with ONE particularly nasty exception) a Drupal site over that
because I have some frame of reference versus something completely hand
written by one person. Also, how future-proof is something you'd write
yourself? Are you willing to take on the security implications and commit
the time (and will your management support your time used that way--don't
burn yourself out!) and effort keeping your code up-to-date, or would it
be better to know that you can lean on the !
  Community for that update to core at the end of each month? All things to
consider, and as pro-Drupal as I am, I freely admit that it's not always
the right choice.

Josh, can you describe some of the functionality that you're concerned
about? One of my biggest concerns right now (that I think related directly
to what you're experiencing in your house of cards scenario) about Drupal
use in libraries is that library-specific module development isn't
happening in the "official" Drupal way, by modules getting vetted and
contributed back to drupal.org. (And I know that this is complicated; a
colleague and I did some research on the barriers to contributing code
back.) Anyone with basic knowledge of the Drupal UI can build a pretty
complex site, including adding modules, but if the modules don't exist,
non-programmers aren't left with much. I'm especially concerned about this
as D6 drifts toward EOL, since, the last time I really tallied things up,
anyway, a lot of the really cool stuff that had been developed for
libraries as modules in D6 hasn't made it to D7, with D8 now looming for
late 2014/early 2015. (Previous practice has been to reti!
  re the second version behind the new release, i.e., 5 was laid to rest as
7 came out, although there has been some discussion about extending the
live of 6 because there's such a critical mass of sites still using it.)

Some of my evidence for this is anecdotal, too; at Drupalcons in Denver
and Portland, and other birds-of-a-feather Drupal events, I've asked,
"Hey, what if we all coordinated and developed a module for X?" (X=any
number of common web functionality that libraries of any type would find
useful.) And then several people in the room raise their hands and say,
"Yeah, I've done that/I'm working on that!" I ask them if it's on d.o, and
they say "No, but I'll share it..." and then their voices kinda drift off
and they stop making eye contact. The thing is, if the code is "just" put
on GitHub (I've got no beef with GitHub, but it's an audience/user
problem) or shared in any way other The Drupal Way, you've lost a whole
set of potential non-programmer users. (Sidenote: this is on my mind
because I'm writing a proposal for the journal about library-specific
Drupal module development. I think I've just written a good chunk of it.
Thanks, Josh!)

Finally, I can also add, FWIW, that all of these pains are felt by
developers outside of our library sphere as well. I worked briefly for a
Drupal dev firm, and the amount of time we spent discussing whether or not
we should still be a dedicated Drupal shop, or build/look into other
frameworks, surprised me. The split, as you might imagine, was typically
between the backend developers and sysadmins who were tired of all the
things discussed here, and the developers and graphic design/developer/UX
folks who relied on their existing knowledge of the Drupal UI and theme
layer to get their work done efficiently.

Nina

Nina McHale
Digital Experience Consultant
Colorado State Library


________________________________________
From: Code for Libraries [CODE4LIB@LISTSERV.ND.EDU] on behalf of Joshua
Welker [wel...@ucmo.edu]
Sent: Thursday, May 15, 2014 8:47 AM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] Very frustrated with Drupal

Thank you all for the responses. I hope my original email did not come off
as too abrasive.

The issue for me is that I am having a hard time figuring out what exactly
is the use case for Drupal. Do you want a dead-simple website? Use
Wordpress. Do you want to add some complex custom apps? Use a framework.
Do you want the worst of both worlds? Use Drupal. Getting a non-trivial
Drupal site up and running requires as much work as learning a
full-fledged framework like Rails, Laravel, or Django. And the experience
you gain using Drupal is not going to carry over at all into any future
non-Drupal endeavors because the Drupal platform is completely unique and
doesn't seem to follow any basic paradigms like MVC. When doing something
like basic data manipulation requires overriding core functions using
custom PHP functions in my theme, the entire point of using a CMS in the
first place has just been defeated. If I get hit by a bus, not only will
someone have to relearn Drupal and all its modules, but they will also
have to wade through my spaghetti-code efforts at patching functionality
into Drupal.

What I would love is a CMS based on plain SQL tables, ActiveRecord, and
simple CRUD controls instead of abstract "entities" and "fields" that try
to be everything to everyone (and fail to be anything for anyone). But I
don't think such a thing exists, so I am interested in rolling my own with
a framework.

Right now, my framework choices are narrowed down to Ruby on Rails,
Laravel (PHP), Django (Python), and Flask (Python). For anyone who has
used these, do you have any insight into how maintainable your projects
are and how easily they are managed/inherited by others?

Josh


On Thu, May 15, 2014 at 9:02 AM, Jason Bengtson
<j.bengtson...@gmail.com>wrote:

When I came into this position I inherited some work the former tech
manager had done in installing and experimenting with Drupal as a tool
to replace our current CMS-less ColdFusion environment. I also quickly
grew unhappy with it. I've been experimenting with MODX, which I like
so far. If you're a PHP developer, MODX will be of particular interest
(and PHP is a pretty common server-side technology if you worry about
the bus factor). I haven't had as much time to mess with it as I'd
like, but I've built some wireframes with it and so far I like it.

I second the low quality of most of the commercial, enterprise stuff.
We used Cascade Server at UNM and it was absolutely wretched. It's
been a long time, but when I last built a WordPress site I remember
that as being easy to use and I think it's gotten more
flexible/powerful. I've got a fiend who's really sold on it and HAM/TMC
uses it for their website.

Best regards,



*Jason Bengtson, MLIS, MA*

Head of Library Computing and Information Systems

Assistant Professor, Graduate College

Department of Health Sciences Library and Information Management

University of Oklahoma Health Sciences Center

405-271-2285, opt. 5

405-271-3297 (fax)

*jason-bengt...@ouhsc.edu <jason-bengt...@ouhsc.edu>*

*http://library.ouhsc.edu <http://library.ouhsc.edu/>*

*www.jasonbengtson.com <http://www.jasonbengtson.com/>*



NOTICE:
This e-mail is intended solely for the use of the individual to whom
it is addressed and may contain information that is privileged,
confidential or otherwise exempt from disclosure. If the reader of
this e-mail is not the intended recipient or the employee or agent
responsible for delivering the message to the intended recipient, you
are hereby notified that any dissemination, distribution, or copying
of this communication is strictly prohibited. If you have received
this communication in error, please immediately notify us by replying
to the original message at the listed email address. Thank You.
<j.bengtson...@gmail.com>


On Thu, May 15, 2014 at 8:47 AM, Jason Sherman <jsher...@usao.edu>
wrote:

Joshua,

 From my perspective, the module ecosystem is the greatest strength
that Drupal has.  Modularity is one of the central design goals of
the system, so if you if you want to avoid all third-party modules,
you aren't going
to
get any real advantage over something like wordpress.  Having said
that, I've experienced module dependency hell with Drupal, and it
can be frustrating.

I tend to take a hybrid approach.  I try to limit myself to just a
few modules with any site.  Things like Views, cck, chaos tools, and
entity reference are modules I use for almost any site.  For
functionality that
is
specific to the site, I usually create a local module to store code
and configuration. I find that this kind of setup gives me the most
of the advantages of the modules, while limiting the potential for
update problems.

Another option that a lot of people use is drupal distributions.
These
come
with quite a bit of customization for specific use cases ready out
of the box.  I haven't used a distribution, so I can't speak to
their
usefulness.
  I'm sure that their quality can vary just as much as modules and
themes.

Now for something completely different. Depending on what your
requirements
are, you may have better luck using a narrower-purpose tool for the
job.
Have you considered something like SubjectPlus?
http://www.subjectsplus.com/



On Wed, May 14, 2014 at 8:35 PM, Joshua Welker <wel...@ucmo.edu>
wrote:

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




--
Jason Sherman
Systems Librarian
University of Science and Arts of Oklahoma
405.574.1340





--
Josh Welker
Information Technology Librarian
James C. Kirkpatrick Library
University of Central Missouri
Warrensburg, MO 64093
JCKL 2260
660.543.8022


--
Shaun Ellis
User Interface Developer, Digital Initiatives
Princeton University Library
609.258.1698

Reply via email to