Is Drupal A Web Application Framework or just a Content Management System?
When it comes to building sites and using tools there are loads of title and acronyms being thrown around. There's Rapid Application Development Tool, Web Application Framework, CMS, Content Management Platform, and more than a few others I'm missing. One of the names that stands out is framework or web application framework. Until recently drupal and Joomla! were listed as web application frameworks on wikipedia. On February 1st they were removed from the list.
Taking this further, there is a note about Content Management Systems on the Web Applications Framework wikipedia page that specifically addresses systems like drupal. It basically says, they are not frameworks.
Drupal.org calls drupal a content management platform while users call drupal a CMS and framework all the time.
Drupal is not a Ruby on Rails style framework like so many others. But I'm left wondering, is drupal a framework?
In my opinion it is. It may not be like Ruby on Rails, django, CakePHP, Zend, or so many others but it is a framework. Looking at the features of frameworks drupal meets these as well as some of the others do. I think the issue is a matter of style. drupal doesn't operate as a framework in the same or similar way as most of the others do.
Or, I could just be off my rocker.
This is such a color of the bike shed topic I don't know if there will ever be an answer that satisfies everyone.
Comments
#1 I would call it both. :) I
I would call it both. :)
I would certainly include it in the "Web Application Framework" category. I regard the ones you mentioned (CakePHP, Zend, etc.) as Programming frameworks. (You must be a programmer to use those) I would consider Drupal to me more of a point-and-click Web Site Framework. Not really sure where all that boils down in terms of what to actually call it. But I think the big difference is that Drupal is so very point-and-clickable. You can do a TON of advanced features (think CCK/Views/Panels) before you see your first
.#2 Both
I concur that it is both - I've been calling it a platform (as I see d.o does above), which to me ends up closer to framework than just a CMS. Depending on what I'm looking to do, it can be an out of the box solution, or just a starting point for my codebase...
#3 Maybe its good we're not just another framework
This is a hilarious satire on "frameworks":
http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12
Its with an innocent man who wanted to build a spicerack, needed a hammer, but found out things like:
"When we stepped back and looked at the global tool infrastructure, we determined that people were frustrated with having to manage and operate a hammer factory factory, as well as the hammer factory that it produced. That kind of overhead can get pretty cumbersome when you deal with the likely scenario of also operating a tape measure factory factory, a saw factory factory, and a level factory factory, not to mention a lumber manufacturing conglomerate holding company. When we really looked at the situation, we determined that that's just too complex for someone who really just wants to build a spice rack."
#4 Most certainly both. I used
Most certainly both. I used to consider it just a CMS, but I have found myself using it more and more as a framework.
#5 I think we need a new buzzword.
It seems to me that the Drupal community uses the word Framework more as a disclaimer than a definition. It's used to demonstrate the difference between a Drupal out-of-the-box installation versus its potential. A website built with Drupal might be a Content Management System, but (arguably) Drupal itself is not. This is an important, yet potentially confusing distinction.
So, Framework people are now offended because we've encroached upon their vernacular. By the same token, I don't think we could really use the word Toolkit, which probably applies better to the Drupal API than to Drupal itself.
Content Management Starting Point won't work, since it sounds stupid and implies that Drupal doesn't do enough.
I briefly considered Foundation, but since so many open source projects have non-profit foundations backing them, that would probably be confusing as well.
So what we need is a new word. Lacking one, the best I can offer is perhaps a new slogan: Content Management Done Right.
Micah
#6 Drupal is a CMS, a CMS framework, and a web app framework
I agree that Drupal is both a CMS framework, and a layered code web application framework.
It has apparently been removed from the Wikipedia page that you cited, but it still appears on the framework comparison page, and indeed Drupal has most of the compared framework features:
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Some good prior discussions:
http://archivemati.ca/2006/01/21/drupal-as-a-mvc-framework/
http://www.garfieldtech.com/blog/mvc-vs-pac
http://drupal.org/node/116677
#7 I like to refer to Drupal as
I like to refer to Drupal as a Content Management Framework. Though you can build any type of Web app I can think of right now with Drupal, it is particularly useful for applications that need to have content management functionality.
In a recent Lullabot podcast Jeff Eaton's talk on building Twitter with Drupal during the DIWD seminar was briefly discussed. As I understood most of this talk was about why not to use Drupal for building Twitter, though you can.
Twitter is not about content management and much of Drupal's core functionality would not be used, but would add unnecessary processing overhead.
I would not call Drupal a general purpose Web application framework, in contrast to systems like Django or Rails.
#8 ...
I agree that there may never be a universal consensus on this, but I do think that Drupal_as_framework ultimately helps support Drupal_as_CMS more than the other way around.
Which is to say that Drupal_as_framework is what keeps the hardercore developers around who pump out all those nice CMS features and contributed modules. :-)
#9 About a year ago I built a
About a year ago I built a CRM application using CodeIgniter and now when I think back, I could have done pretty much everything in Drupal itself. Back then, I hadn't experimented with Drupal Modules yet.
I think once someone writes a module for Drupal, it just opens up another world for them. Until someone has written a module, they don't really understand the Drupal is as much a Framework as Symfony, CakePHP or CodeIgniter.
Drupal Framework portion already includes common things like User Registration, Access Control Based on Roles and Permissions, Error Logging System, Pagination, Database Abstraction and Templates to name just few.
I would call it CMS + Framework. I don't like the "CMS Framework" terminology as it seems to confuse the things rather than explain it.
#10 Frameworks are included, applications are installed
Drupal isn't a framework. A framework is a code library that aids the creation of web applications, while Drupal is itself a web application.
You install Drupal. You navigate to it in your browser and you log into it. You configure your site, manage your content, and control plug-ins via a pre-built administrative interface. The same can be said of Wordpress, but not of Cake or Rails.
The difference between building a site with a framework and building it with Drupal is the difference between baking bread with raisins and baking breading with an oven.
#11 Or:
baking bread (not breading)
#12 I'm new to Drupal
I'm new to Drupal development but have been using the Drupal CMS for about a year and a half. I could be mistaken, but I would lean towards "framework/CMS", meaning that you can use the Drupal framework to develop whatever you want without having to have the Drupal CMS sitting on top of it. For example, you can write a php app that includes any or all of the .inc files in the includes folder to leverage and extend things like the Form API, drupal security, menu system, etc.
I'm probably way off base here...can anyone verify my wacky claim??? :)
#13 I've got a nice response to this...
I've got a nice response to this to show you how drupal is a framework. But, I'm holding off on it until I have time to give the response it's proper due.
#14 Question on this definition of a framework
To me, the term "framework" must somehow contrast with the term "library" ... and libraries are also included. And libraries do not have their own web application front-end.
To me, a "framework" is installed as a foundation to the web application, and then you flesh out the framework to create the application you need. You also leverage existing components like login, user management, database abstraction, theme layer, etc. I question if frameworks by definition can not have a web application front end for configuration purposes....
In contrast, I think of a "library" as something that is merely included.
I do think that Drupal as a web application framework is not as universal as some other frameworks. It is not the right tool for every job. For instance if you need robust Oracle support then you should probably use something else (for right now at least). However, for many custom web applications, Drupal can I think reduce development time over other frameworks with its full-featured list of add-on modules ... especially if you have already climbed the Drupal learning curve for CMS purposes.
How would you contrast "framework" with "library" ... and is it possible for a framework to also be more than a framework (in Drupal's case ... it is also a CMS).
#15 No tool is right for every job
No tool is right for every job and no framework is right for every job. As Jeff Eaton has recently pointed out, you don't want to build twitter with drupal. It's overkill.
Is there any framework right for every job? Nope. Should a framework be used for everything? Nope.
I don't know of a framework I'd call universal and I've used drupal, django, symfony, Zend, and several others.
At the same time if we try to build one framework or tool that works for all situations we will never be able to build a tool that's strong at common type of situation or user.
#16 To me Drupal is a web
To me Drupal is a web application framework with content management features.
#17 anything that can drive your
anything that can drive your web infrastructure the way Drupal does is an application framework. I would say out of the box it's a CMS but w/ all the modules you can DL (as well as create as a result of the app. framework component) it's more then just a CMS.
#18 I only use it for CMS
I only use it for CMS assistance, i'm too noob for others utilities... i try with tutorials and with the help of the community but it's not so easy... :-) thanks for sharing opinions and feelings, it's very interesting !
#19 Drupal is what you need it to be
Drupal can be your content management system, blog management system, your development framework, your back-end or whatever you need it to be. I created my personal blog with it, I used it as the front-end for a java-based media transcoder and Drupal is the back-end of mnm.be which runs on a completely custom AJAX-driven front-end. There's the installation profiles, the contributed modules, the smaller helper modules such as ahah_helper, drupalmu_helper and translation_helpers and of course there's the powerful api itself.
Yes, Drupal is what you need it to be.
#20 Framework? I think not.
Drupal is most definitely not a framework.
First, when Rasmus gave his talk in Szeged, he foundered when trying to analyze Drupal as a framework. Anecdotal evidence, to be sure... but certainly from an authority.
Second (and this is the better argument), of the frameworks you listed, none provide out-of-the-box systems. You can't just install Rails, create a login and password, and start running a website. Ditto Cake, Wicket, django, and so on.
Third, you need no coding (not even in a DSL) to work with Drupal. All frameworks require at least a moderate amount of business logic before they can provide any level of service. (Because a DSL may not be a real programming language, this is actually distinct from my previous point).
Fourth, and here we go in the opposite direction, there's actually not enough abstraction in Drupal to make it a framework. It is inescapably oriented toward article-style text content. (Exercise for the disgruntled reader: try to implement a simple time tracking system in Drupal -- JUST a time tracking system. It will take you 20x the amount of time it would take in Rails because you have to wedge very basic content types into an article-oriented framework). This is simply not general enough for a framework.
Drupal fits all of the standard definitions for a Web Content Management System (WCMS)* or (if that term for some reason offends you) a web content management platform. But what major feature does it have to offer that Joomla, OpenCms, PHPNuke, etc don't? And how does this somehow kick it out of the CMS category.
And a quick note about the "Features of a Framework" section of the Wikipedia article: If that is the normative definition, the following also qualify as frameworks:
- e107
- Joomla
- PHPNuke
- OpenACS
- OpenCMS
- CMS Made Simple
- eZ Publish
- ...
I'm sure you can see where this is going. All (or at least most) CMS systems must have these features. They are requisite features for a CMS. The features alone do not qualify an application as a framework, though they can disqualify a library from the category of framework. (Or, stated formally, the features are necessary, but not sufficient, conditions for a framework.)
* It could be argued that Drupal is not actually even a full CMS, yet, since it is 100% web focused. Compare to enterprise CMSes, which can deal with non-web content and have deep integration with non-web processes.
#21 Drupal is more than a framework
Some arguments towards the other side:
- Drupal being more than a framework doesn't make it not also a framework
- I think Joomla could also be considered a framework ... but Drupal excels over many CMS options in its ability to be extended in a modular way
- While Drupal is not as universally applicable as some other frameworks, Drupal being text and content focused doesn't mean that it still isn't a framework. I'm not sure if any framework would qualify as a framework if it had to be the best tool for every job
- How would you contrast "framework" with "library"?
#22 Assumptions and Presumptions
In your comment you make a lot of assumptions and presumptions. For example, you state that a framework can't provide anything out of the box and requires coding to use. I would challenge you on these.
For example, symfony provides an admin generator. Install drupal with no optional modules (this is an option at install time in drupal 7) and you have drupal with just an admin interface just like symfony with it's admin area.
You, also, point out that to use a framework you have to code. Why is that? It may provide the options to code but why do you have to? Install CCK and Views and create your content types (objects) and present them the way you want to. Would this make drupal a next order framework like natural language programming is seen as a next order of programming languages? Something to think about.
Drupal is definitely not a typical framework. It's not the right tool for every job. It doesn't hold to the typical or RoR paradigm for frameworks. No argument. But, when we look at frameworks we need to look past our own noses, preconceived notions, and expectations at times and this is one of them.
#23 hello
very cool realy thanks....evden eve nakliyat
#24 Drupal is a real framework
Please see this link http://en.wikipedia.org/wiki/Framework