"Drupal as a framework and/or CMS": My POV as a contributing business owner

As the community at large wrestles with Drupal's future as both a framework and a CMS, and its usefulness or focus on the various needs of developers, themers, designers, end-users, and others, Zivtech, as an 11-person Drupal team, deals with the same questions and debates internally. Drupal has many faces, and a successful Drupal shop requires expertise in the LAMP stack, version control, design, theming, Drupal API development, jQuery development, site building, module selection, marketing, project management, training, QA and on and on. Therefore even within a single shop there are many perspectives on what Drupal is and should be, and here's one of them.

I've always seen myself as a Drupal generalist, being experienced in development, theming, jQuery, and site building. I basically learned Drupal by freelancing in it and being forced to become an expert in everything all at once (I was scared into climbing straight up a few learning cliffs with hyenas at my heels threatening to rip me back down into the soul-crushing boredom of my previous career.). Being a generalist is a good place to be now as the leader of people who do all these different types of work and tends to make me a pragmatist rather than an extremist. While some in our office fall mainly into the "Drupal as a framework" camp and others in the "Drupal as a CMS" camp, I tend to place the split between our projects, rather than Drupal itself, seeing more complex projects as primarily "framework projects" and more standard site builds as mostly "CMS projects". There's always a good bit of bleed between the two project types, and some projects start as CMS projects ("get a quick prototype going") and morph into framework projects ("and now make it super awesome"). Personally, I like both kinds of projects, and enjoy the diversity of doing work all the way across the CMS/framework and front-end/back-end spectrums. A lot of my work tends to be where front- and back-ends meet, where I write modules that work with the theme, write sql schemas for my AJAX dazzles, use Firebug to get clues from Drupal's "markup bloat" just to grok the architecture, and write bash scripts to make subthemes. And ultimately, in a lot of ways, that's where Drupal itself is, right where two extremes meet and designers and developers come together like cats and dogs in the vet's waiting room.

We have a bit of an identity struggle in Drupal in terms of mixing up the Drupal community with the Drupal development community, which is the most established, and simultaneously sending the message (perhaps accidentally) that developers are at the top of some food chain of intelligence and importance. Even for myself, I feel that pull, and tend to identify more as a developer than as a themer, site architect, site builder, educator, contributed module encyclopedia, QA person, project manager or business owner, because 'core developer' certainly seems to grant the most respect of any of those titles. In the Drupal community, you even notice that the people who get the most respect in the non-developer sub-communities are actually usually developers themselves (I'm thinking for example of Young Hahn in the design community and Addison Berry in the documentation community). These kinds of perceived hierarchies in the value of different roles is probably inevitable within any profession, but it's a prejudice we should acknowledge and move towards overcoming personally and as a group, to make sure we're respecting all types of excellence in Drupal professionals and volunteer heroes, not just in Drupal developers.

In our office, we have Justin Randell, the LAMP genius, at the developer extreme, arguing for Drupal as a framework and always trying to free us from the "clicky-clicky" world of Drupal web-based site building. He's the go-to guy for creating a new API or setting up database replication, but not the first person you'll ask for contributed module recommendations. Then at the next table we have Aaron and Steve cranking out the CMS sites at lightning speed but sometimes struggling with the "deployment problem" which we're handling currently by having everyone write update functions for configuration changes that are being pushed to production sites. It's a strange world in which the ease of Drupal configuration becomes a burden in the realm of enterprise software deployment strategies. We have clients asking for a general handbook on administering a Drupal site and tell them such a thing can't exist because Drupal is a framework. And we have designers with no knowledge of Drupal giving us final site architectures that go against Drupal's natural CMS flow, who want to pay like it's a CMS but force us into building it more as a custom framework. It's a confusing situation for everyone involved.

But I don't believe the tug-of-war between the CMS and the framework will split us in half, because it's exactly this multidimensional nature of Drupal that makes it so rich and attracts most of us to it in the first place. I think we will develop ways to smooth the schizophrenic nature of Drupal without breaking either side. For example we can work to make all the Drupal settings into exportables so that, as in the Views model, the clickers and the version control people live side by side in (near) harmony. Instead of expecting designers to understand every tendency of Drupal the CMS and possibility of Drupal the framework, we can create and share Drupal-specific style worksheets and example guides for designers to encourage them to give us style guides that reflect many of the elements that are themed in Drupal sites, instead of having them create complete mockups that inappropriately include all the site architecture and ignore more general styling. We can do a better job of marketing the concept that Drupal is a hybrid of a framework and a CMS, so that newcomers know what they're getting into and aren't mistakenly given the impression that setting up a powerful Drupal site will be like opening a Facebook account.

Who is Drupal for? There are a lot of perspectives on that question. As a contributing developer and a business owner, I can share mine. It's a framework or a complex CMS requiring expert knowledge, which my team uses to do our work, and which we train other technical people to use. It's also the basis of the CMS and UX we deliver to our clients. It is a framework to build software products to sell as a business. Unfortunately, the truth is the people whose interests we are least aligned with are the power-users/site-builders-- the folks who use Drupal as a CMS and need everything to work easily out of the box in ways that fit beginner workflows. They tend to post support and feature requests to issue queues without being able to contribute much, which can make them seem tiresome to those of us with too much on our plates. But these are the people who build the base of Drupal, and who sometimes go on to become Drupal professionals (I started out as a site builder with just some beginning php chops), or become Drupal evangelists in their organizations, bringing large projects into being. Attracting and pleasing these people is important in the big picture, but, it's not a top priority for a business like ours. I do a fair amount of giving support and writing code for these power-users, but purely out of a feeling of responsibility, and I often just don't have time for it. If my priorities are typical for contributors in Drupal businesses, it seems that efforts like Acquia Gardens and Buzzr may become the places where the majority of the Drupal 'end-users' flock.

Personally, I'm all for smallcore- I'd like to see modules like poll, aggregator, forum and php go into contrib and for core to only have the modules that 90% of us use 90% of the time. I totally support the API improvements that enhance my developer experience. But I'm also for all the UI improvements that help my clients' experience because ultimately, they don't tell me they love that wily data import I broke my brain on all week, they just love the drag and drop they got out of the box. It's mainly a framework at heart to me, with CMS polish on the outside, and that's the perspective that drives what I'd like to work toward.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

A Framework Is A Framework

I think Drupal works best as a CMS. When you need a framework you probably have some very specific project requirements that require custom coding, otherwise you would choose a web application that matches your needs. A framework takes care of minor functionality and then supports you in developing new features. I really object when designers use WordPress as a framework because it was designed for blogging and it was poorly designed as a web application. Extending it for other uses does not make sense.

I'm using Drupal for the redesign of our company's web site but I expect to fight with it when I need it to do something special for the Intranet. I'm also running it on a Windows server which creates problems.

It's a good prejudice.

That's an excellent and balanced view on the whole, but I'd take issue with "it's a prejudice we should acknowledge and move towards overcoming". That prejudice doesn't derive from a label, but rather from our perception of people's contributions to Drupal, we respect and elevate those who contribute most. Our perception of who's contributed most is by and large based on who actually has contributed most. It's a meritocracy.

There's been far too many people over the years who turn up, rant about how things ought to be done and disappear without ever contributing (I'm talking about developers, not the current crop of designers and UX experts that have difficulty contributing).

There's a clear need to allow people with a wider range of skill sets to get involved with Drupal core development, and work will have to be done to enable that, but the day we start treating those shouting on the sidelines with the same level of respect as those that have made huge contributions is the day Drupal starts to decline.

-- adrinux

No respect for complainers

I agree that people who make noise and complain without doing anything deserve no respect. But I do think there is a bias to acknowledge in which people who show excellence in other ways of contributing other than coding do not tend to get as much respect (probably they are just overlooked because they are not working shoulder to shoulder with the most known respected people in Drupal). A person could go and do some serious work in an area like documentation and would probably be less likely to get a lot of public kudos than elsewhere.

I do find it telling that I can wear many hats with many different skills I contribute but notice I choose the title of 'Developer'. It's a bias that I see in myself and our field as a whole.

Which 90%?

And the first problem being, who exactly are the "90% of us"? Corporate website builders? Community / non profit builders? Social media builders? The very very very tough part is saying, right out of the box, what should Drupal do? Aim it in the corporate site direction, and you miss out on community features. Aim it in the community direction, and corporate sites might miss it.

-- Boris (who would like to ship core with multiple install profiles)

Are there usage statistics for core modules?

Does update status collect usage statistics for core modules? It seems not to.

But I still think we can come to a consensus. We build a lot of sites, and we see a lot of less professional sites, and we talk to people building sites. And it does seem like most sites don't use poll module. And it does get tiresome explaining to people that php is a module they should never use but comes with core.

Spot On

Really great synopsis, I fell the same way and had the same trajectory. Thanks for the great post, I'm going to share it with my mentees and colleagues.
-KeVroN

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

More information about formatting options