When a prominent developer and contributor lashes out that Drupal is in
dire
straits,
you better listen. You ought to read his critique of how Drupal core
development is stalling, or at least stuck in the mud. That can\'t be
good news for anyone looking to upgrade to Drupal 7. My thoughts after
the quote.
In addition to the half-baked, single-purpose product features
mentioned above, Drupal core still carries around very old cruft from
earlier days, which no one cares for. All of these features are not
core functionality of a flexible, modular, and extensible system
Drupal pretends to be. They are poor and inflexible product features
being based on APIs and concepts that Drupal core allowed for, five
and more years ago.
Where would Drupal be if they had worked more closely with the PHP
community early on? I have no idea, but a lot of PHP programmers have
looked down on Drupal because most of the codebase can be messy, with
poor API design decisions, overuse of globals, and leaky separation of
concerns. Along with Drupal eschewing Object Oriented Programming and
resulting best practices, its no wonder that talented developers would
choose to use a framework like Zend, Symfony, or Cake to build a
complicated website. It sounds like a lot of short cuts and
idiosyncrasies are now baked deep into Drupal core, and ripping them out
too much work for core developers.
I\'ve always thought that Drupal\'s greatest strength is certainly not
the great design of its codebase, but the Drupal community and
ecosystem. A contrib module usally exists for many common website needs,
like managing redirects, creating useful URLs for content, integrating
with analytics, and plugging in 3rd party commenting systems. On top
of that, there are super-modules like Views, Panels, and Context, which
let you prototype and build parts of a website without having to write
any code at all. The Drupal community has solved a lot of problems
through determination and individual brilliance, but that model can\'t
be sustainable in the long run.
Is there a solution?
Drupal core should cater to programmer\'s needs, via coherent APIs and
pluggable subsytems. A complete rewrite of core, or even big parts of
core, would be a waste of time. Drupal would stagnate while other
frameworks kept improving. I think Drupal 8 should seriously consider
using a framework like Symfony2 as the foundation for core. I mention
Symfony because it has an EventDispatcher component that can replace
most of Drupal\'s magical hooks system. The next release of the Zend
Framework will have a similar component. A tested framework, used not
just by content management applications would expose developers to a
wider range of best practices, particularly around configuration
management, deploytment, and unit testing.
Contrib should cater to site builders needs and focus on adding features
on top of core that they want. Modules in contrib can improve faster to
meet user needs, fix bugs, and innovate. This is an idea
proposed
in the discussion linked above. Moving as many modules as possible out
of core also makes Drupal leaner.