What would a Drupal Framework look like?
Over the last year or so Drupal has gone through some growing pains. As more new users have poked their heads into the Drupal-tent to check things out, the long-simmering conflict between 'Drupal as a very customizable CMS' and 'Drupal as a framework for web-CMS developers' has become more apparent.
Developers are frustrated by the addition of features to Drupal Core that only appeal to end-users, and 'bloat' the underlying engine. Site admins looking for a tool to run, say, a forum, are frustrated by the emphasis on APIs and hooks rather than actual solutions in Core.
Ber Kessels is one of the 'inner circle' of Drupal developers by virtue of his contributions to the system and the level of activity and involvement in the system's ongoing development. He's recently started blogging about his experiences tinkering with Ruby On Rails, and what Drupal could look like if it transformed into a similar developer-oriented framework. Obviously, the 'core' Drupal build would stop being useful for Joe Schmoe looking to set up a web site. Instead, he'd use task-specific Drupal distribution that rolls together Core, appropriate contrib modules, themes, and whatever glue is necessary to make them work nicely together.
If that approach were taken, what should be part of the Drupal Core? Here's my stab at a list.
block.module
filter.module
node.module
page.module
path.module
search.module
statistics.module
system.module
taxonomy.module
user.module
These modules are a rough approxomation of what Drupal Core has enabled when freshly installed. Modules that cater only to multi-user community sites (blog.module, tracker.module, forum.module, and so on), and modules that cater to bloggy conventions (comment.module ping.module, and archive.module) have also gone poof. Throttle.module? Better to put it in a collection of modules and tools for high-traffic sites. Aggregator module? It's cool, but core doesn't need it. Same with Blogapi, Book.module, and so on. Page.module stays because (I suppose) it would be nice to have SOME default node-type, and the standard 'page' concept is pretty universal. It might be tossed, though.
Themes? Bluemarine, with its CSS file stripped down to remove the reams and reams of cruft necessary to support all the older core modules. Other modules would be responsible for including their own CSS, rather than depending on core. For developers, it might make sense to bundle dba.module and devel.module with the core distribution. Those are already must-haves for anyone working on the development side of a Drupal site, though most application-specific distributions wouldn't include them.
What's the end result? A relatively vanilla-looking web site engine with a lot of APIs and not a lot of UI. In my next post, I'll toss around ideas on how the rest of the modules currently in core would find a home, and what third-party contrib modules would complement them in various application-specific Drupal Distributions.




We agree more than you might think
I've been part of the Drupal community for three and a half years now. I'm not a programmer.
I really think you're on to something important.
Actually - I believe that it would be a very good thing if the Drupal community could be split into more than one part.
There should be one site for developers/consultants and one for admins/consultants.
Newbies make a lot of noice - taking focus away for the developers.
Admins want loads of stuff - and don't always understand that their specific use case is not immediately addressed by development.
Often this means trouble and harsh words in the community.
Lot'sof end users don't understand that a complex system cannot always be as simple to use as a blogging system for instance.
I've been trying to guard the Taxonomy system at times. It is constantly under attack, simply because most people do not understand what the purpose of it is, what the powers of it is, and that it takes a little education to understand. Some people even seriously suggest crippling it, and want to call it "categories" - which is ridiculously naiive.
Just my .02$
Good points
True that. I think Taxonomy would be MUCH better if it were a pure API, and other modules -- 'Categories.module' and 'Tags.module' and so on -- provided the end user experience for it. That's where I pressed with voting when I worked on VotingAPI, and I think the additional flexibility (in addition to the potential for UI streamlining in 'simple' cases) makes it more than worth it.
Adds and drops
Hmmm.
Well, I would probably add profile module back in...except it really needs revamping, potentially to be more like a node/flexinode/CCK.
Statistics? Not quite sure why that needs to stay...it pretty much sucks right now.
Watchdog is required right now, and probably makes more sense than statistics.
True
You're right -- including statistics but not watchdog was a 'woops' on my part. Part of the reason I removed profile is because it only applies to multi-user community sites. That's definitely a strength of Drupal's, but for sites populated/edited by a single person, or sites that don't need complex customized user accounts, it's cruft.
I'm still not convinced this 'ultra-bare-bones' approach is the best one. I started using Drupal in 2004 because I had an idea for a project, and Drupal was 80% to the finish line already. In this model, we'd be pulling Drupal back to the 70% mark or so, but giving individual Distros the ability to tailor their functionality in a cleaner way.
Regardless of how core splits up, I do think that the Developer-focused Core/Administrator-focused Distros concept is where the (healthy) future of Drupal lies. It also provides a clean line that the community can be segregated on. Drupal.org could focus on the framework while other sub-sites (like CivicSpace.org) could focus on the details of a given distro and its needs.
Post new comment