Hacker News new | ask | show | jobs
by TylerE 4463 days ago
Honestly, your characterization of Drupal is just plain BS, and I say that as someone who worked on Drupal sites for about 5 years, and am glad to no longer be.

To say it's less powerful than "plain PHP" is just wrong, since via custom modules, which you'll be writing at least a half dozen of for a real non-trivial (e.g. the kind of thing you wouldn't just do in WP, just you can essentially just sprinkle in 100% custom "plain PHP" whereever you need it, while still being able to leverage things Drupal does right, like form handling and batch operations.

2 comments

i wrote drupal's form handling layer (and theme system, and big parts of drush and much more)

I ultimately found that I was happier writing stuff closer to the way wordpress does it.

It really comes down to two things

1. depending on what tools you have available, what you are familiar with or what you are capable of understanding .. drupal or wordpress might be easier for you than the other. That's relative.

2. is the fact that the wordpress model is objectively simpler than the drupal model (at least last time I looked, around 4 years ago).

So I'm not saying one is better than the other at all, just that this is how they are different.

If you know, or are willing to learn, a bit of code, wordpress is most likely subjectively easier than drupal would be.

I'm probably a bit biased because I spent most of that 5 years pouring my heart and soul into a site that was, basically, right up Drupal's alley, a regional news portal that was very content heavy. We did use lots of various modules, some core, and some community - such as polls, forums, captcha stuff, comments, we had almost a terabyte of stuff served via ImageCache...

We actually didn't use Drupal forms for much on the front end (The occasional webform for user submissions, etc, but very few actual drupal api forms), but on the admin backend we had lots of little things I threw together that worked well but were not used all the frequently (and then only by power users).

Our frontend was primarily done through a system I called the Page module (Because it was the module that made...the pages - for instance http://www.reflector.com/news). That was actually a really cool hack. It worked a lot like views - but could actually run on a high traffic site without bringing the whole thing to it's knees. The trick was that the really nasty join across about 8 tables (node, the content type data, related image data, story body (for teasers), and a couple others) was done only on node save and that was stored in an index table (not everything on the node, but just what I needed to build a page). So to generate each news block was a really super simple query of basically:

    select * from page_index where page_blockid = 12345 
    order by updated desc limit 5

    instead of something like, and this is the super simplfied version

    select * from node left join content_type_story cts 
    on cts.nid = node.nid left join taxonomy_data td on
    td.nid = node.nid left join uploads on uploads.nid = node.nid 
    left join upload_files uf on uf.uid = uploads.uid 
    left join node_content nc on nc.vid = node.vid 
    where (td.termid = 1231 or td.termid = 1256) and 
    node.published = 1 order by updated desc limit 5
(Field names ommitted because that query is way too long as it is).

Of course, we were running multidomain so a lot of those tables where domain alises etc, again, all precomputed in my module.

No, I don't miss it. But it was powerful, and I did develop, deploy, and serve 3 daily newspapers with 20k+ circ each with a dev and sysadmin staff of 1. There is no way I could have done that if I'd had to write everything from scratch.

That is a total mischaracterization of what it means for a language or DSL to be "powerful." When you are writing not-X to assist X in doing Foo, that doesn't mean X is powerful-enough to let you do Foo; that means that X isn't powerful-enough to let you do Foo without breaking out of X.

To put it another way: the fact that you can greenspun Lisp in C doesn't mean C has all the power of Lisp. It means that Lisp has all the power of Lisp. Every even-mildly-useful language is Turing-complete; so, in order to be able to give a ranking to languages at all, we have to restrict our discussion of a language's merits to its merits if you aren't just using it as a glorified Turing machine for implementing a different language.

Without writing custom PHP, Drupal is less powerful than PHP. That's perfectly okay.

It's called the inner-platform effect.

http://en.wikipedia.org/wiki/Inner-platform_effect

DSL's are generally not turing complete. When they are, they tend to look more like lisp.

I don't think so, since Drupal does many things that vanilla PHP is actually quite poor at - like getting away from the whole "each URL is a seperate file" thing.

Also, Drupal is NOT a DSL, even in the way, say, Rails is.

that has nothing to do with drupal or php.

drupal uses an apache config hack to rewrite the urls.

i'm going to respond to the sibling in here because I don't want it to get more nested. I also suspect it might be downvoted. (as some of your others have been)

I'm _intimately_ familiar with the feature. That feature came in with Drupal 4.2.0 back in december of 2001, which was the second Drupal release I deployed a site on. It was also the first Drupal release to include any of my own code.

https://drupal.org/drupal-4.2.0

Back in the day the only way to get anything committed was to roll a patch and commit it to a special cvs repository, manually numbering it. then you had to mail the dev list with the name of the patch so you could discuss it, and then if it still applied dries committed it.

I tried finding the mails on gmane, but the repo itself and the emails seem to cut out before.

So while q?= was considered an acceptable fallback, and it was still cleaner than what we had before ... this feature has always explicitly been about supporting url rewrites.

This is me : https://drupal.org/user/1337

When I built bryght.com, my first startup in 2004, trying to be the wordpress.com of drupal, before wordpress.com was a thing : I had to make sure this worked with it.

When I wrote Aegir, a distributed turn-key automated hosting platform for Drupal sites, I had to write the logic that made sure this stuff worked. I did that for apache, and with some help from omega8.cc, nginx.

Please don't try to act like you're an expert on what 'design patterns' we were implementing when we did that, because I'm telling your straight out now, that wasn't why we did it.

I spent 9+ years of my life building major components of the system, and I'm still really proud of all of it. Millions of people all over the world run the software I helped build.

No it doesn't.

For one, Apache isn't even what I'd recommend to use for serving Drupal - at my last job we were serving 50M reqs/monthly via nginx and it worked very well.

Drupal implements the front controller pattern...it has nothing to do with URL rewriting.

It is true that if you want "pretty" URLs on Apache you need to use rewrites, but I think it is a cheap shot to characterize using a core feature as it was intended as a "hack".

I don't think so.

The original assertion was that Z was more powerful than X, and I merely stated that that is false because X is really the superset X+Z, whereas if you are using JUST Z you don't get X.

We're not talking about 2 different languages here.