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

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.

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.

Lesser known PHP 5.3 gem: preg_filter

Submitted by nk on Sat, 2013-08-31 00:30

preg_filter() is identical to preg_replace() except it only returns the (possibly transformed) subjects where there was a match. This is most useful with an array as the subject: previously you'd need to use preg_grep and preg_replace with the same regular expression to achieve this. It's obviously much faster to do a single command. Very handy!

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

Submitted by nk on Tue, 2013-08-27 06:38

The biggest news (literally) is the entity storage patch finally nearing completion -- after yched and me have worked on this a lot, now is carrying the half megabyte monster home. The reason for this size is fields no longer will be shareable between entity types (but they still be shareable between bundles). Meanwhile, berdir is finishing the Entity NG conversion (go berdir!) and moves baseFieldDefinitions from storage to entity classes. The smaller the storage classes the better for us, quite obviously.