I’m evaluating Drupal for web application development. The tool I currently use is CodeCharge Studio, so I’m actually comparing the two.

For example, with CodeCharge I can write a page that creates, edits, lists and deletes items. All this without writing a single line of code, with every possible validation, without writing single SQL query, by using WYSIWYG editor and all that within 5 minutes. And I would get a fully skinable output, because everything is rendered through one template file. And all the HTML code is in this template file.

On the other hand, today I tried to do that with Drupal. I had to write $form array by hand, write 3 functions that handle form processing (theme_*, *_validate, *_submit), write several SQL statements, and write my logic of processing the functionality of page. I ended up with 2 template files: for form and for page. And at the end I came to the conclusion that I cant make a HTML template just for my table that list the items, cause it’s rendered by using theme(‘table’), which is used for every table on the site, and contains heavy logic. Which is also problem for form elements like buttons etc. Even if I write it again it will take me at least 20 minutes of heavy coding, I will end up with 150 lines of code and I will not be able to skin everything the way I want.

I think that it is crucial that CRUD operations are trivial in order to be productive web app developer.

So, am I missing something? Or Drupal is just a great tool for web sites, opposed to web apps.

Comments

thrice’s picture

You said:

"...with CodeCharge I can write a page that creates, edits, lists and deletes items..."

No, you didn't write that page. You plugged together pre-existing code written by someone else. If your project is simple enough that the "Lego building blocks" style of, er, programming, will get the job done, then by all means use such a system. Those of us with more challenging projects need something like Drupal.

It should be possible - quite easy even - for someone to bolt a drag 'n' drop front end on to Drual to make it easier to put together those sorts of web applications that require basic function and few brain cells to create. Funny how real programmers often refuse to trivialise their skills by doing such a thing.

Use whatever works for you, no one is forcing you to use Drupal.

mi5ha’s picture

Hmmm … I touched a nerve there I guess. Don’t see why. Look, real programmer or not aside, I’m in the phase of evaluating Drupal, so I need some real input actually.

Will not comment on your opinion on code generators, I just suggest that you look a bit into Rails, Django, Symfony, QCodo (made by NASA guy) etc. I would never use code generator if I’m not able to tweak it to my need after the boring stuff is generated for me. Django has a beautiful tagline: “The web framework for perfectionist with deadlines”. It’s silly to generally label ALL generators as amateurish tools …

Anyways, I would appreciate some constructive input on the matter. I see the potential in CCK for example, but it’s in its infancy, so I wanted to hear how experienced Drupal developers are doing the boring stuff of repetitive low level programming.

You mentioned doing challenging projects with Drupal. I would really like to have a look, some links would help, thanx. I already see that it’s a great web site platform for news/blog/gallery type of sites, just need to be convinced about web app part. I would really like to see some great web apps built with it.

BTW, you didn’t comment on my observations about not being able to build sorting/paging tables that look differently and other notes. I know that I’m maybe missing something, so knowledgeable comments on those would be real help.

You can recognize truth by
its beauty and simplicity.
When you get it right, it is
obvious that it is right.

Richard Feynman, Scientist

Muslim guy’s picture

Web applications! Another entry to the acronym for Drupal (we made it appreciating the capabilities of Drupal)

*would really like to see some great web apps built with it*

Any hardcore Drupaler/Drupalist that can show web apps?

In the Drupal showcase http://drupal.org/forum/25 By Drupal enthusiasts

Popular sites http://drupalsites.net and http://top.drupalsites.net
http://drupal.org/node/15237

________________________________________________________________________________
Internet for ISLAM, get to know Islam and Muslims :) May Allah brings you to the Straight Path
http://muslimin.org/Islam
----------------------------

mi5ha’s picture

Thanx for links.

Already checked a lot of sites built with Drupal, so as I said I know it’s good for web sites building.

Web apps are something totally different. Drupal itself is web app for example. Then there is Basecamp and other ones from 37Signals. All the Drupal sites I have seen are some kind of CMS, which is logical taking into account that it’s a CMS platform.

I was just wondering can it be a platform for EASY web app development also … that’s all

Muslim guy’s picture

Hmmmm maybe for example YAHOO? With emails and groups and SMS etc, plus obnoxious advertising graphics which a lot of time is inappropriate for children and teenagers :( *Yahoo should respect more people for example, did you know that during Ramadhan (Muslims fasting month, Nov 2005) Yahoo displayed CARLSBERG alcohol ads - what a good time eh?

Without going further on picking Yahoo, is it a good example of web apps portal?

CivicCRM is a good example, yes we chekced it out.

Sorry for interrupting you guys are really advanced Drupal users - this is educational for a web builder who sit somehwere between newbie and intermediate.

thrice’s picture

"Hmmm … I touched a nerve there I guess."

Um, no, not really. I was was just trying to say what Anton said somewhat more succintly:

"Drupal is a pluggable website feature building framework. The others are more like a HTTP/HTML/SQL based page building framework. They both do their jobs well, but they are doing different jobs."

Use whatever works best for the application you have in mind.

marton’s picture

Since you mentioned Qcodo.
There is an early stage of Qcodo integration module for Drupal called QDrupal.
You can find it here: http://qforge.qcodo.com/project/qdrupal

I'm developing a larger webapp in Qcodo, but I do not want to code all the access control, user handling and other content handling on the site. So I'm hoping to use QDrupal for that.

/MartOn

mi5ha’s picture

Thanx for the hint, I appreciate that.

Currently I don’t have a desire to learn yet another framework … after Mambo, Xaraya, Codecharge and Drupal I decided to stick with the last two (for better or worst).

Just wondering … Why do you use QCodo at all? Why didn’t you go just with Drupal? Is the CRUD part you miss the most? Or maybe ORM? (I don’t know if QCodo has it but I miss it in Drupal for sure)

Cheers
Misha

marton’s picture

Qcodo is for application development. Drupal is (at least to me) a portal builder utility.

With Qcodo, you start your project by designing a relation database. Qcodo then generates code to access your database. Each table you design generates a new object-class with sufficient methods for accessing data and related data in other tables.
Example:
If you have a table user which relates to a user_logged_on table where you log all logons (One to many relation is defined). If you then want to show that users logins, you do something like this:

   phpArray = user_logged_on->LoadByUserId(1);

This will return an array of all logon instances.
Also if you later extend your database with new features, you can just regenerate the code and the new features are automatically added to your objects.

When designing a webapplication you need alot of "basic" features like user management, access control, content management and so on. I do not want to invent the wheel again, so I use Drupal for that.

Check out the "Beta 2 Demo Videos" on Qcodo at http://www.qcodo.com/demos/
Once you have seen what you can do in Qcodo in less than a few hours you will probably know what I mean.

But ofcourse QDrupal has a way to go before it is fully integrated. Qcodo generates code based on templates, so integrating qcodo with Drupal is done by creating templates. I'm not sure how far this has come.

/MartOn

Robert Castelo’s picture

I think the closest we have to what you're talking about is the Module Builder module being developed by Webchick.

There is also Flexinode and CCK as well for building content types.

It's all about levels of abstraction really - with binary machine code at one end and point and click 'programming' at the other end. Each level has it's advantages and disadvantages in terms of flexibility and development time.

Cortext Communications
Drupal Themes & Modules

------------------------------------------
Drupal Specialists: Consulting, Development & Training

Robert Castelo, CTO
Code Positive
London, United Kingdom
----

mi5ha’s picture

Cool, thanx for the link, I somehow missed it when I was checking modules … no wonder … there are so many of them!

It looks more of a hook code builder then module builder. I would expect module builder to have some database to code mapping.

Yeah I agree with you totally regarding levels of programming. As I said in my first post I have built basic Drupal module that is doing CRUD within an hour. I have great experience in web apps, and I could do it low level like that with no problem at all.

But after using CodeCharge and Visual Studio for years and seeing what Rails guys are doing I simply don’t want to waste my time on something that can be done by machine. I want to do client requirements, not spoon feed the framework as Rails guys are saying …

But the real art are neither of the extremes you mentioned, the real art is finding the balance of both. One ring to rule them all :-)!

Still trying to find it … currently I find Drupal better than Rails actually for my needs … but you guys should watch your back :-)

Misha Peric

You can recognize truth by
its beauty and simplicity.
When you get it right, it is
obvious that it is right.

Richard Feynman, Scientist

samc’s picture

Misha,

I think the question you're asking is a pretty interesting one, and I've wondered similar things.

While Drupal seems to be founded around the ideas of content management and "community plumbing," it's pretty easy to see it's broader potential. You've obviously done so, which is why you're even asking about the web app stuff.

To answer your question about can it be done, take a look at CiviCRM if you haven't already. I don't know the history of this project but it seems like it was originally built on Drupal and later a Mambo port was added. If there's anyone who has worked on it lurking around, I'd be interested in learning more about how much of Drupal it uses, and how the dev team feels they benefited from the Drupal framework.

I think you'd also be interested in learning about Drake, which is a project to integrate Drupal and CakePHP. CakePHP is a Rails-like framework for PHP. I'm not very familiar with Drake but it's been on my list of cool things to look into when I get the time.

Likewise, you should also check out Drupal as an MVC Framework (which is on the same list).

Drupal has a lot to offer app developers that you don't get out of the box in a framework like Rails -- stuff like user management, access control, menus -- just look at the admin screen and module list. But the target audience and design objectives are a bit different from those of a dev framework.

styro’s picture

I don't know about CodeCharge, but I do know enough about RoR, Django, Turbogears etc to say that you might be comparing two different things (note: I am a big fan of Turbogears). I'm comparing to these because you mentioned Django and Rails in another post.

Drupal is on a different axis than the ones I mentioned above and it works with a different set of abstractions.

The above platforms might be much easier to create simple MVC style CRUD apps in, but you'd still have to do a whole lot of planning, design and some extra coding get the theming, searching, user registration, access control etc functionality that Drupal has. I am vaguely aware of some cool upcoming WSGI Python stuff that makes compatible web apps much more pluggable than before though.

With Drupal, someone can come along and write a module that will pretty much integrate with someone elses site no matter what customised themes etc they are using or what other access control schemes they are using etc. Or someone can write a theme that will work with most combinations of unknown modules or content types etc. It's more about creating plugins than creating pages.

These new web dev platforms make it really easy to create a brand new piece of functionality, but they don't do a lot (by themselves) to integrate and intertwine multiple different bits of functionality or themes that you don't even know about yet. With these platforms you'll still need to come up with your own way of achieving that higher level integration.

Drupal is a pluggable website feature building framework. The others are more like a HTTP/HTML/SQL based page building framework. They both do their jobs well, but they are doing different jobs.

Does that make sense?

--
Anton
New to Drupal? | Forum posting tips | Troubleshooting FAQ
Example Knowledge Base built using Drupal

mi5ha’s picture

Actually “Drupal as an MVC Framework” article is one of the things that made me start thinking about Drupal as possible web app starter kit.

Anyway thanx, I think I got my answer … (even if it didn’t look as I will after the first response from the real programmer guy :-)

Misha Peric

m4manas’s picture

mi5sha,
I landed on this valuable discussion, during my search for a web application. And i felt what i was searching is being discussed there. I am looking for a web frame work which offers a low level of development compared to CMS we have got. Plus i do not want to focus on the user management, themes, menus, etc.

I liked drupal and spent some time learning it. And i was pretty impressed with the Admin interface and the functionality. But i am unable to find a solution.

What i need is webform where details can be submitted. The details can be verified by some users which will appear for each case in que. After verification, ready made query can be perfomred and the result can be displayed as page.

Any suggestions please.