The drop is always movingYou know that saying about standing on the shoulders of giants? Drupal is standing on a huge pile of midgetsAll content management systems suck, Drupal just happens to suck less.Popular open source software is more secure than unpopular open source software, because insecure software becomes unpopular fast. [That doesn't happen for proprietary software.]Drupal makes sandwiches happen.There is a module for that

Drupal 8 progress from my / MongoDB perspective: update #21

Submitted by nk on Fri, 2013-06-21 09:45

My entity logic mover patch got in, slimming down the storage controller classes significantly. This will make it much easier to support them in MongoDB. Two things remained (load and baseFieldDefinitions), load being postponed until the NG conversion is done and the baseFieldDefinitions move architecture foundation just got in. This is progressing remarkably well. At the forthcoming weeklong Dublin code sprint I will move the field_sql_storage module inside DatabaseStorageController ending this weird notion of fields existing somehow separately from entities.

Drupal 8 progress from my / MongoDB perspective: update #20

Submitted by nk on Sun, 2013-06-09 00:17

There are a lot of great things happening! Let's first see those that are already in: the config system got back to a saner track by removing the partial import capability and only allowing import of full config trees. This removed manifests which, honestly, I never truly grokked. Also, config import and sync were converted to pluggable services earlier so if someone can figure out how to do partials better then they can do.


Submitted by nk on Wed, 2013-06-05 23:03

There are a number of Drupal 8 issues that simply make me sad. I still didn't stop contributing to Drupal nor I plan to, I just need to accept that we have some disagreements which are not getting resolved. It's frustrating and I am mostly just venting so comments are disabled. (It's frustrating enough that I went over them to tag them.)

Ps. There's a little silver lining: the config import code has been rewritten finally. Still, I will not touch CMI.

Is Drupal a cult?

Submitted by nk on Wed, 2013-05-29 13:47

Recently a post appeared which stated Drupal became the Scientology of open source and because it appeared in a reply of a few tweets involving me and it contains my name, I need to answer it.

Drupal 8 progress from my / MongoDB perspective: update #19

Submitted by nk on Fri, 2013-05-10 01:03

The biggest changes (at least from my end, as usual) since the last update are allowing plugins to have their services injected. It's perhaps not the most beautiful solution ever but it works. Again for plugins, one directory depth have been removed, it's still ridiculous but less so and the PHP-FIG (nudged by our quicksketch, thanks much) is finally moving ahead with creating a new autoloader standard which will make the directory structure a bit saner.

Advanced debugging with PHPstorm

Submitted by nk on Fri, 2013-04-26 03:57

It seems relatively easy (ie. zero configuration) to get PHPstorm and Xdebug up and running together, so I will presume you have that going. It often happens that you want a breakpoint in a frequently called function. Just putting one will make the system stop there every time. After a right click, Edit you can add conditions to it which help. Even better, you can add a breakpoint to somewhere else, remove the suspend checkbox from it and make the first breakpoint disabled until the second is hit. This allowed me for example to break in drupal_flush_all_caches only when fired from WebTestBase::resetAll.

Another useful tip from dawehner (I had no idea!): PHP CLI works with xdebug just fine, you just need to run export XDEBUG_CONFIG="idekey=PHPSTORM" first.

Debugging Drupal 8 plugins

Submitted by nk on Wed, 2013-04-24 19:36

When developing (with) Drupal 8, you will occasionally see the superb helpful exception from DefaultFactory: the plugin did not specify an instance class. A what did not a-do a what?? Glad you asked. For example, here's BlockManager:
public function __construct(array $namespaces) {
$this->discovery = new AnnotatedClassDiscovery('block', 'block', $namespaces);
$this->discovery = new DerivativeDiscoveryDecorator($this->discovery);
$this->discovery = new AlterDecorator($this->discovery, 'block');

Drupal 8 progress from my / MongoDB perspective: update #18

Submitted by nk on Wed, 2013-04-17 01:09

Done: thanks to the 18 months long work of swentel and yched (assisted by xjm, larowlan, alexpott and tim.plunkett) field_config and field_config_instance tables are dead and we are using CMI! Not a lot of tables left.

Drupal 8 progress from my / MongoDB perspective: update #17

Submitted by nk on Thu, 2013-04-04 05:08

First, a briefing of already committed patches: Image toolkits, aggregator processors and parsers are now plugins. The form storage is now in key-value instead of abusing the cache system. Twig is now available during install, unlocking much of the conversion -- this needs your help. Alex Pott has been named branch maintainer which will make the whole commit process much, much faster.

A sane(r) workflow to submit work to github

Submitted by nk on Fri, 2013-03-29 21:24

It really frustrates me that while github nicely automated forking, there's no "update fork" button. For me, it's tedious and difficult to juggle two remotes. Instead, I added a single line to .git/config:

[remote "origin"]
        url =
        pushUrl =

User login