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 #24

Submitted by nk on Mon, 2013-11-25 08:30

Drupal 8 Alpha 6 is out and it has a migrate module in there! It even has a few complete migrations: variables to the configuration files owned by system module. Since the last report the configuration of process has changed significantly, this is now documented in the handbook. We have two patches in the core queue, one potpourri of small fixes and one to split migrate into migrate and migrate_drupal, the latter holding the Drupal 6->Drupal 8 and Drupal 7->Drupal 8 migration.

Google Code-In 2013 Started, Students Now Available, More Tasks Needed!

Submitted by slurpee on Wed, 2013-11-20 18:10

Big news! The annual Google Code-In contest kicked off Monday, November 18th. The contest's purpose for pre-university students (ages 13 - 17) is learning how to contribute to open-source software projects and offers them a chance to win a once in a life time grand prize of an all expense paid trip to Google HQ in California. The bigger news...Drupal was chosen as one of the ten participating organizations to create tasks for the students to complete during the 2013 contest! This is a huge honor for Drupal and gives us an amazing opportunity to grow our community.

How to get anything in Drupal core

Submitted by nk on Mon, 2013-11-18 22:57
  1. Find a relevant-looking project on github. If the name includes Symfony, all the better. It doesn't need to be the main Symfony project. The characters S-y-m-f-o-n-y causes everyone responsible for core to lose all sanity.
  2. Shovel your code into the project.
  3. Submit for core inclusion. Do not forget the "Proudly found elsewhere" and the "Symfony" tags.

Closures with array_walk to avoid foreach &

Submitted by nk on Sun, 2013-11-17 07:34

Especially with Drupal 8 requiring PHP 5.4, closures (my brief intro) are going to much be much more useful and widespread. I would like to point out one advantage which already exists: array_walk($a, function (&$value, $key) {// some code here}) do not have any lingering after affects because both $value and $key are only visible in the scope of the closure. But foreach ($a as $key => &$value) { // same code here } leaves $value a reference to the last item and it's guaranteed to give you some nasty, nasty surprises down the line. More, the behavior of foreach itself might change compared to the non reference using foreach ($a as $key => $value), read how foreach actually works for much more (and a bonus headache).

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

Submitted by nk on Wed, 2013-10-30 02:50

berdir unified the DatabaseStorageController and the DatabaseStorageController classes. I have been working on migrate, this reports is at

Introducing the IMP

Submitted by nk on Sat, 2013-10-05 05:55

WHAT: Import API in Drupal 8, based on the Migrate project. Drupal 6 and 7 import using this API based on the Drupal-to-Drupal data migration project. Read and comment on Mike Ryan's thoughts at
WHERE: The first big sprint is planned at BADcamp. PNWDS will likely host some informal discussions, perhaps a BoF. There is a sandbox (only some experiments right now) and a discussion group.
WHEN: PNWDS is Oct 5-6 and BADcamp is October 24-27.
WHO: Mike Ryan, chx, Melissa Anderson and YOU. Get in contact with chx if you want to help. Please add yourself to the sprint attendance spreadsheet if you are coming to the sprint at BADcamp.
WHY: So that Drupal 6 sites can move directly to Drupal 8. (And because the current upgrade path is unmaintainable.)
HOW: The battle plan is that once the interfaces are in place and agreed upon, the sources and the destinations can be written in parallel. By BADcamp, hopefully we will have a tasklist up and Melissa will coordinate the tasks and the contributors.

On Backdrop

Submitted by nk on Wed, 2013-09-25 12:40

I have been frustrated with Drupal 8 before (and I am often still is). I wanted to fork Drupal. Let me start with a few insurmountable problems, regardless of the specifics of the fork:

"80% of people use only 20% of the features" -- but they often use a different 20%. And Drupal contrib covers them all. One of the strengths of Drupal is every problem having a contrib module to answer it, big or small. It's near hopeless reaching this diversity in a fork.

Second, two words: Security team.

Dumping my notes on fixing composer #913

Submitted by nk on Fri, 2013-09-20 02:46

ag target-dir
hey look, there's a method called getTargetDir.
In PHPstorm: look up symbol getTargetDir. There's two in classes, one just proxies, so put the breakpoint inside Package::getTargetDir
Run composer, look at the backtrace when reached breakpoint, we are called from LibraryInstaller::install and there's an LibraryInstaller::update as well. Let's drop a breakpoint to the beginning of that.

I am going to help with your Drupal 8 questions

Submitted by nk on Wed, 2013-09-11 11:20

Drupal 8 is daunting. I am sure everyone trying to port a module will have a lot of questions. Put them on Drupal Answers and tag them simply 8. There are many people on this site who already helps and I have the RSS feed for this in my RSS Live Links so I will see them and I pledge to spend up to an hour daily answering them. And if I don't know an answer? Well, that's an opportunity to learn something about Drupal 8 and I like learning about Drupal and sharing it. Let's learn Drupal 8 together, shall we?

Why are we using annotations in Drupal 8? And, why YAML?

Submitted by nk on Tue, 2013-09-10 13:40

Somewhat augmenting Dries' Why the big architectural changes in Drupal 8 most excellent blog post, let me explain two architecture decisions: annotations and YAML. Both were chosen as the least bad. The decisions are obviously debatable and believe me they were (and still are) but I think it'd be helpful to give some background on the decisions. Also note there might be arguments I have forgotten.