Drupal has a very aggressive caching system. While site admins can disable the page cache or CSS compressor very easily, many other caches are not so easy to disable. Think of the menu system, or the theme system, or filter content, or any number of other things that get cached.
In a production site, that's exactly what you want. No Drupal site would be able to handle even moderate traffic if every single registry cache had to be rebuild on every page load. For development, however, it can frequently be a huge pain to have to clear the cache every time you're trying to track down a bug in a menu definition or a CCK field definition.
There's an admin button to clear the cache on the Performance page, but it's not all that useful for intensive debugging. The Devel module (which you are using, right?) offers a handy "clear cache" button, but that doesn't always work if you're, say, debugging a form submission. Fortunately, Drupal makes it easy for us to disable those caches, too, although not through the admin.
Back when Drupal 7 development opened, our database layer was in a sorry state. Based on PHP 3-era concepts it offered few features, but more importantly no one actually cared about it. On rare occasions we had a PostgreSQL maintainer for the PostgreSQL driver, but they had a tendency to disappear into the Interweb, never to be heard from again.
Boy what a difference a few months make! Not only is the new database layer moving along with a good head of steam, with an order of magnitude more features and now three database drivers in core, but as of earlier tonight we officially have no less than five people on the database maintenance team. From MAINTAINERS.txt:
Via Planet PHP comes this interesting tidbit from Markus Wolff, the original author of PEAR LiveUser. After briefly lamenting over-engineered ACL (access control list) systems in PHP, he talks about a much simpler concept that holds some interesting nuggets of joy. Might Drupal benefit from some of them?
Oy, what a year it's been! Aside from the excitement of the election and the economy, it's been an exciting year for me in the professional realm. (Personal realm, if you don't already know then you shouldn't know. :-)) And of course, it's been a crazy crazy year for Palantir, too, but in a mostly good way.
Let's see, one new job, two new Drupal jobs, two conferences, one sprint, three camps, six new colleagues, two foreign countries, eight other US states, one book... and a partridge in a pear tree, probably. Oof!
Via Planet PHP I stumbled across this article decrying Singletons. It's not a new argument, really, but one of the comments pointed me toward a Google Tech Talk video entitled "Global State and Singletons". To be honest I don't agree with everything said in either the article or the video, but both are spot on about the problems of global state, something I've lamented before in relation to testing.
That is especially relevant now, as we consider the question of Handlers in Drupal. Why? Because the most controvercial part so far, the environment variable, is designed to address exactly this problem, a problem that is currently prevalent throughout all of Drupal.
Permit me to explain.
Unless you've been living under a rock for the last six month, you should have already heard about Drupal 7's new-and-shiny database layer, DBTNG. That was only the beginning, though! Much has happened since then to the database, and there's much yet to do. That's where you come in...
Some time ago, I posted an RFC for pluggable "system handlers". It generated a fair bit of feedback, nearly all of it positive. That was followed up with a presentation in Szeged, which generated even more positive feedback.
So what's happened since then? Well, a fair bit. There's working code, but there are still some key gotchas to sort out. That gives us a couple of options for how to proceed, for which I would like feedback, particularly from core developers and maintainers. (Dries, webchick, this means you! :-) )
This site has been running Drupal 5 for over a year now, even though Drupal 6 has been available since February. I kept meaning to update it, but never got around to it. Of course, then along came Acquia and a pressing need to try out the new kid on the block (for purely professional reasons, of course). So, armed with proper backup tools and a fast Internet connection, I set about to sacrifice my blog on the alter of experimentation. Onwards!
I need to not have spare time. When I have spare time, I do crazy things. Not crazy things like your mother told you not to do, but things like write modules on a lark.
Like I said, dangerous. But, useful. In this case, it was a conversation over on Ryan Szrama's blog that kinda got out of hand and gave me another idea for a module, which I am happy to announce is now available for download.
Weird things happen when I travel. Like, I spend several hours sitting around in airports with nothing to do but write documentation. I am therefore pleased to announce the immediate availability of both upgrade docs and usage docs for the DBTNG system.