May 01 2016
May 01

Things have gotten busy after DrupalCon Asia which meant that the Drupal meetup we hold in Bangalore every month was a little difficult to organize. Srijan Technologies stepped up and offered their office space in Whitefield, Bangalore. They also took care of snacks and even lunch for all the attendees. Kudos to Srijan for organizing the meetup. Thank you!

This is actually the second meetup since DrupalCon Asia. The first one was held soon after the con and we had the honour of hosting Danese Cooper, who was one of the keynote speakers in DrupalCon Asia in Mumbai. That meetup was held at 91Springboard in Koramangala on 5th March, 2016 and saw an attendance of about 40-50 people. Danese Cooper repeated her keynote in DrupalCon Asia in essentials, which received great response. This was followed by a session on Mobile features in Drupal 8 by Ram Singh. Photos from this meetup are at the end of this post.

Drupal Meetup Attendance - March 2016

Attendance Breakup in Drupal Meetup in March, 2016

April’s meetup started at around 10:45 AM with Soumyajit Basu explaining about using Protractor JS for front-end testing. After an insightful session and an in-depth discussion on testing frameworks and methodologies, we continued with the session on Migrating from Drupal 7 to Drupal 8 by Harish Goud. After that, I explained some of the more basic Migration concepts. I followed this with a discussion on drush make and composer.

Even though the attendance was lower than our usual meetups, we had a great and fruitful discussion. We ended with pizzas and soft drinks courtesy of Srijan and left around 2 PM.

Photos from Drupal Meetup in March 2016

Open Source and Drupal Meetup - March 2016

Photos from Drupal Meetup in April 2016

Drupal Meetup Bangalore - April 2016

Apr 30 2016
Apr 30


I have contributed to Drupal 8 over the course of last couple of years. I have also written custom modules for Drupal 8, but I never really tried building a Drupal 8 site. After Drupal 8’s release last November, I thought it was time to change that.

That is how I set about upgrading one of my Drupal 7 sites to Drupal 8. As soon as I started building a list of modules, I stopped. Pathauto wasn’t ready yet. It was not even close to being ready. Sure, there is a 8.x branch but also a warning that the architecture may change significantly. Okay, it was time to roll up my sleeves and get to work. I cloned the github repo where the port was happening and started.

And then I stopped again. It needed token, and it was also just a dev release. Now, token is a module everyone needs and no one knows, especially after token is mostly in core since Drupal 7. How can that still be dev two months after Drupal 8 final?! Okay, let’s start with token. And that is the story of how I landed in token’s issue queues one fine Monday.


I started with reviewing the token module code. It seemed like it worked with Drupal 8 but it was still essentially Drupal 7 based architecture. I am not saying there is anything wrong with Drupal 7 based architecture but we were missing out on the clean code, discrete responsibilities, and easy testing that comes with code architected for modern PHP.


I found an issue that covered moving helper functions to services but the response wasn’t great. I see the point. The code worked and refactoring was not a priority against getting it to work; however, to me, getting it to work cleanly along with rest of Drupal would need a refactored code base. It was not easy getting in either, what with over 3000 combined lines of code in module and inc files. I started looking for low hanging fruits and found one – token browser not shown on help page.

Theme Hooks

After that and other simple fixes, I looked into converting theme hooks to TWIG. Theme hooks work in Drupal 8 but are deprecated. Further, there were three theme hooks in token module and they were interdependent and confusing. I started with eliminating one of them and also submitted patches or pull requests to other modules that used this behaviour.

Token tree screenshot

Essentially, there was a theme hook called token_tree_link which was never used. Instead, if a module wanted to show a link to show a token tree, they should use the token_tree hook with ‘#dialog’ option set to TRUE. This was quite counter-intuitive in my opinion and also it did not allow you to show links without dialog (we subsequently removed the dialog option entirely as there was no use case to show it without a dialog). In other words, the token_tree hook was doing too much and I submitted a patch that removed this functionality. Now, you should use token_tree_link directly if you want to show a link. Since this would break many other projects (like pathauto, metatag, etc…), I submitted patches to many of them.

Eventually, the token_tree_link theme hook was converted to a template_preprocess along with a twig file, as per current Drupal 8 standards.

As it turned out, the theme hook token_tree did little in itself and we later refactored it as a method on tree builder service. There was another hook called tree_table and that was converted to a render element. Now, to show a token tree, all you need to do is:

$element = [
 '#type' => 'token_tree_table',
 '#token_tree' => $token_tree, // Generated token tree.

The token_tree theme hook, which was a convenient function to generate the token tree (and hence not really just a theme hook) was moved to the buildRenderable() method on the token.tree_builder service.


The first helper function to move to a service was token_get_info(). We didn’t just move it, but also simplified the function greatly. The function token_get_info() would return different results depending on different parameters and that is not a good idea. We split the function into three different methods – getInfo(), getTypeInfo() and getTokenInfo(). Similarly, we deprecated other functions and moved them to methods. Here is a list of functions now in Token service.

  • token_get_infogetInfo()
  • token_get_infogetTypeInfo()
  • token_get_infogetTokenInfo()
  • token_get_global_token_typesgetGlobalTokenTypes()
  • token_get_invalid_tokens_by_contextgetInvalidTokensByContext()
  • token_get_invalid_tokensgetInvalidTokens()

The cool thing here was that we replaced the core’s Token service with the one provided by the token module and it made a lot of sense. This also means that if you have the token module enabled, all you need to do is call \Drupal::token() to get the token service.

The next set of functions to be removed were related to building token trees. These functions were converted to corresponding methods on token.tree_builder service.

  • token_build_treebuildTree()
  • token_flatten_treeflattenTree()
  • _token_build_treegetTokenData() [internal use only]

Later, we also moved the token_tree theme hook functionality to a method on this service – buildRenderable(). This was done because the theme hook did a lot of processing to generate the token tree and pass it on to tree_table theme hook, which was really out of the scope of a theme hook.

Next, we moved token entity mapping functions to it’s own service.

  • token_get_entity_mappinggetEntityTypeMappings()
  • token_get_entity_mapping('token')getEntityTypeForTokenType()
  • token_get_entity_mapping('entity')getTokenTypeForEntityType()

This was another function that would give different kinds of results depending on the first parameter. For cleanliness, we just split them into different methods.

The above functions were deprecated for a while and subsequently removed.

Devel Integration

Token had stopped working with Devel as well during its development. We used devel’s ideas of a local task derivative and route subscriber to add dynamic routes to show tokens for each of the entities. There was already a controller responsible for showing the page with all tokens which was refactored to work with all entity types.


Apart from writing tests for the new services that we introduced, we also fixed a lot of old tests. Some of the tests were integration tests which were using simpletests’ KernelTestBase. We changed all such tests to use the modern Drupal\KernelTests\KernelTestBase which brought in some speed improvements as well. These can be run directly using PHPUnit.

Other Changes

There were a lot of other small changes that went a long way in improving the module, such as replacing define with class constants, removing deprecated functions, cleaning up a lot of old code, At the time of this writing, we are at alpha2 and there is still some work left, particularly around render caching token trees. Please help getting token to stable.

I hope this helps you in refactoring your module to Drupal 8, which are just modern PHP principles. Please let me know your feedback, questions, or suggestions.

Feb 25 2016
Feb 25

DrupalCon Asia Day 2 dawned bright and promising. I was excited to know who would win the visualization challenge and hoping it was me. I wanted that Royal Enfield Classic 350. Read about my day 0 and day 1 here.

@Dries checking out the @drupal bike. @DrupalConAsia #drupalconasia #devcontest

— azri (@azrisolutions) February 18, 2016

About an hour or two later, I said this

Awesome! Thanks @azrisolutions, @Dries, @azrisolutions. #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

I can finally say this. That's @Dries on MY bike. ????

— hussainweb (@hussainweb) February 20, 2016

Yes, that’s right! I won this beautiful bike

@dries handing the keys to the winner of azri devcontest @hussainweb @DrupalConAsia #devcontest

— azri (@azrisolutions) February 20, 2016

Congratulations @hussainweb on winning @azrisolutions drupalcon dev contest, truly deserving @BangaloreDrupal #proud

— Chakri (@chakri_iiith) February 20, 2016

Okay, I went in the wrong order. The day actually started with Holly Ross telling us about Drupal in India.

"Now I'm in future cause I'm in India." – @drupalhross #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

The need is increasing for Drupal talent. – @drupalhross #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

Thanks @drupalhross for encouraging @DrupalCAP Miles to go :) @DrupalConAsia

— Rakhi Mandhania (@MandhaniaRakhi) February 20, 2016

Come to the sprints tomorrow. #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

After the winner for the developer contest was announced (me), we heard Danese Cooper share her amazing insights into open source and tell us about open source in India

"Make the world better, monetize some of it." #DrupalCon

— Larry Garfield (@Crell) February 20, 2016

"open source is a level playing field." #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

"You're not cogs in a wheel anymore." #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

"Reputation is a big thing, I'm this country and in open source." #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

Diversity in Drupal #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

That's Drupal and it's a beautiful thing. #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

Be transparent. If it's not the best code you've ever written, say that and still share it. @divadanese keynote at #drupalconasia

— xjm (@xjmdrupal) February 20, 2016

.@DivaDanese on #Drupal community: #diversity #niceness #global #balance @DrupalConAsia "best open source community on the planet!"

— Ani Gupta (@anigupta) February 20, 2016

OH: "There's inherent niceness here." Via @divadanese #DrupalCon

— Larry Garfield (@Crell) February 20, 2016

Don't make people feel small when you help them. Make them feel big. Lift them up & they'll lift you. @divadanese keynote at #drupalconasia

— xjm (@xjmdrupal) February 20, 2016

Thanks for the nice words @DivaDanese. You had me shed a tear (and that doesn't happen easily). #dccooper #drupalcon

— Dries Buytaert (@Dries) February 20, 2016

It’s up to us, as practitioners, to hold government to their promise to use open source. @DivaDanese #DCAsia #dccooper #DrupalCon

— Donna Benjamin (@kattekrab) February 20, 2016

"It's not a video game." I can totally identify with this. @DivaDanese #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

@DivaDanese working for govt is a great idea #dccooper @DrupalConAsia

— Vaibhav Jain (@vaibhavjain_in) February 20, 2016

Q&A with @DivaDanese by @parth_gohil #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

Oh, and if something can increase the joy of winning the bike, it was this

You know what is awesome? @hussainweb winning a #Drupal motor cycle at @Drupalcon /cc @azrisolutions

— Dries Buytaert (@Dries) February 20, 2016

You know what makes it even more awesome? You tweeting about this. Thank you!

— hussainweb (@hussainweb) February 20, 2016

We also heard from Jacob Singh about contributions from Acquia and Acquia India

Contributions by @acquia India by @JacobSingh #DrupalCon

— hussainweb (@hussainweb) February 20, 2016

Oh, and there is a dance again

Of course the #DrupalConAsia dance number spills out into the audience. #DrupalCon

— Larry Garfield (@Crell) February 20, 2016

[embedded content]

Then there is a day filled with sessions, BOF’s, and meeting people

Nice meeting you @hussainweb congrats again

— shyam_raj (@shyam_raj) February 20, 2016

Azri team handing over the azri Drupal bike to @hussainweb @DrupalConAsia cc/ @skwashd @drupalhross @joshua_io

— azri (@azrisolutions) February 20, 2016

Team @axelerant taking a class ;) #drupalcon #dcasia

— Murtaza Alvi (@AlviMurtaza) February 20, 2016

Axelerant Raspberry winner - DrupalCon Asia 2016

I was also a part of the panel discussing contributions and community in India

Contribution vs. Consumption - DrupalCon Asia 2016

Contribute without code? Know who: 1-#UX with webchick,lewisnyman,bojhan 2-help gabor with #Multilingual & translate! #DrupalCon #DCAsia

— Adelle Frank (@adellefrank) February 20, 2016

Asia/India has similar #Contribution issue with being afraid to DO until learn how #DrupalCon #DCAsia

— Adelle Frank (@adellefrank) February 20, 2016

It was time to take the bike out

Here we go. Winner of contest taking this one for a spin #DrupalCon #dcasia @hussainweb

— Isabell Schulz (@murgeys) February 20, 2016

@skwashd and @hussainweb on the azri Drupal bike @DrupalConAsia #sholay #sholaymoment #DrupalCon

— azri (@azrisolutions) February 20, 2016

don't they look cute ? @DrupalConAsia

— mortendk (@mortendk) February 20, 2016

And then sprint next day and meeting more people

Hey @drupalconasia – these folks are ready to learn to sprint. He'd on down to the lecture hall complex and join in!

— Holly Ross (@drupalhross) February 21, 2016

#DrupalCon mentored sprints. New contributors #FTW!

— Larry Garfield (@Crell) February 21, 2016

woo we did it,350+ ppls joined us, amazing exp, thnx to all @DrupalConAsia mentors. spl thnx 2 @xjmdrupal @webchick

— Ravindra Singh (@ravindrasingh01) February 21, 2016

Codesprint @DrupalConAsia @nikunjhk @mohit_rocks @Crell #DrupalCon @axelerant

— Mitesh Patel (@miteshmap) February 21, 2016

1025 people came to @DrupalConAsia :)

— mortendk (@mortendk) February 21, 2016

1025 attendees, of which 82% just experienced their first DrupalCon at @DrupalConAsia!

— The Lyf of Barthe (@BartFeenstra) February 21, 2016

Great closing session @amandagonser @RachFrieee

— Megan Sanicki (@megansanicki) February 21, 2016

To everyone involved in making @DrupalConAsia happen – THANK YOU. Best time of my life. You are the most generous community!

— Holly Ross (@drupalhross) February 21, 2016

1025 people attended #drupalconasia! That's almost triple #DrupalCon Sydney. Awesome effort team.

— Dave Hall (@skwashd) February 21, 2016

First-time contributors #DrupalCon India – Sprints

— Josef Dabernig (@dasjo) February 21, 2016

Where we come for the code and stay for the community. #drupalconasia #DividedByBoundariesUnitedByDrupal

— Manogna (@ManognaRao) February 21, 2016

I gotta say, 6 DrupalCons down, the gratitude/love from the community in India is truly touching. Thx for everything! It's been incredible.

— Rachel Friesen (@RachFrieee) February 22, 2016

Goodbye @DrupalConAsia. What an incredible time we had. Thank you for your amazing generosity #drupalcon

— Megan Sanicki (@megansanicki) February 22, 2016

.@DrupalConAsia is over, Auntie? But we will have another, na? #HappyDrupalista #DCAsia #DrupalCon

— Adelle Frank (@adellefrank) February 22, 2016

Thank you sprint mentors at @DrupalConAsia !

— xjm (@xjmdrupal) February 21, 2016

Say hi to the Indian #Drupal community #DrupalCon

— Josef Dabernig (@dasjo) February 19, 2016

Divided by boundaries but united by #drupal friends from PK @drupakpakistan @m_tanweer @DrupalConAsia @DrupalMumbai

— Rachit Gupta (@tweet_rachit) February 21, 2016

I'm checking out of #DrupalCon and feeling overwhelmed. What a con! What a community! I'm privileged to be a part.

— hussainweb (@hussainweb) February 21, 2016

Oh, and one more selfie

Here is my #DrupalCon #selfie w/ @parth_gohil, @piyushpoddar, @Crell in background, and photobomb by @drupalhross.

— hussainweb (@hussainweb) February 21, 2016

This DrupalCon was very special to me, not least because it was in India. But this tweet captures it.

This tweet captures everything that Drupal is. It is about community, about people, about love. #DrupalCon

— hussainweb (@hussainweb) February 23, 2016

Feb 20 2016
Feb 20

DrupalConASIA is here!!! I am back in the busy city of Mumbai and in the premises of IIT Bombay, which also saw DrupalCamp Mumbai last year. This time, it is a much bigger conference; in all ways. More people, more sessions, more community, more fun.

Lol I was just about to post the same thing. Good morning @hussainweb and #DrupalConAsia!

— Novella C. (@italiatina) February 18, 2016

As DrupalCon tradition goes, we start on Thursday, 18-Feb-2016, with summits (for business, government, education, and community) and a whole lot of trainings. I was fortunate enough to speak at the community summit about some of the issues surrounding contribution.

@hussainweb speaks about DO contrib tracking at community summit @drupalcon #drupalconasia

— DEVIKA DAS (@das_devika) February 18, 2016

@hussainweb talking about DO contrib tracking at Community Summit @DrupalConAsia #DrupalCon

— Sushil (@thesushyl) February 18, 2016

I was still tired with everything around the con, including the Developer Contest by Azri Solutions in which I was participating, and went back early. The only other thing I did that day was attend Axelerant’s team dinner / party. I also met my old colleagues at Blisstering Solution there.

Finally did it! I submitted my visualizations for the @azrisolutions #devcontest at @DrupalConAsia. #fingerscrossed

— hussainweb (@hussainweb) February 18, 2016

Next day dawned early but I was still not well and was late to prenote!

Late for #DrupalCon prenote. ????

— hussainweb (@hussainweb) February 19, 2016

The prenote was great, and ended with a dance where almost all of the audience went up on the stage to dance.

"Why is #DrupalCon special?" Hear it from the community.

— hussainweb (@hussainweb) February 19, 2016

There are more people on the stage than you can see in audience. This is @DrupalConAsia. #DrupalCon

— hussainweb (@hussainweb) February 19, 2016

[embedded content]

This was followed by an introduction by Holly Ross, a guide to pronouncing D8 by Sunit Gala, and then the DriesNote.

269 contributors to #Drupal8 from Asia. #DrupalCon

— hussainweb (@hussainweb) February 19, 2016

How you can get away contributing to #Drupal8 on a Friday night. #DrupalCon

— hussainweb (@hussainweb) February 19, 2016

#DriesNote begins

— hussainweb (@hussainweb) February 19, 2016

"If #Drupal does not do well in India, it will be very sad." – @Dries #DriesNote #paraphrased

— hussainweb (@hussainweb) February 19, 2016

What hair product does @dries use? #DriesNote

— Dave Hall (@skwashd) February 19, 2016

Ah, we've reached the Davos section of the #DriesNote. #DrupalCon

— Larry Garfield (@Crell) February 19, 2016

Of course, Dries had to wear a turban.

@Dries befoe #DriesNote at #DrupalConAsia, putting on turban!

— Sushil (@thesushyl) February 19, 2016

And who’s up for an yearly DrupalCon in India?

"Totally makes sense for India to have an annual conference" – @Dries #DriesNote Q&A

— hussainweb (@hussainweb) February 19, 2016

"I can totally see this being the third largest conference." – @Dries, on #DrupalCon in India. #DriesNote Q&A

— hussainweb (@hussainweb) February 19, 2016

And then the group photo.

Thank you to everyone in the community who is here to support DrupalCon Asia! #DrupalCon

— DrupalCon Asia (@DrupalConAsia) February 19, 2016

We then went to sessions, collecting swag at booths, meeting people, and so on.

@Zaizi @ZaiziAsia #drupalteam with @hussainweb

— Niraj Meegama (@nmeegama) February 18, 2016

We are talking about migrating a top 50 website in Room 23 at @DrupalConAsia. #DrupalCon @axelerant

— hussainweb (@hussainweb) February 19, 2016

@hussainweb discussing RESTful Panels for legacy #drupalcon #dcasia

— Murtaza Alvi (@AlviMurtaza) February 19, 2016

@_agupta_ @lakshminp @hussainweb @skippednote from at #DrupalCon on Migrating @axelerant

— Sushil (@thesushyl) February 19, 2016

.@chakri_iiith and @gokulnk from @BangaloreDrupal discuss community at #DrupalCon

— hussainweb (@hussainweb) February 19, 2016

.@emma_maria88 and the joy of #Contribution !! #DrupalCon #DCAsia

— Adelle Frank (@adellefrank) February 19, 2016

@prestonso giving session in Hindi!

— Gulab Bisht (@gulabbisht) February 19, 2016

.@mohit_rocks and Ankit discuss design patterns. #DrupalCon @axelerant

— hussainweb (@hussainweb) February 19, 2016

New contributors can work on… #DrupalCon

— hussainweb (@hussainweb) February 19, 2016

It was all possible because of the Drupal Association team and sponsors:

.@DrupalConAsia is possible because of a great partnership with IIT Bombay. Thanks to @psunthar

— Megan Sanicki (@megansanicki) February 19, 2016

A great day making new friends @DrupalConAsia @axelerant

— Megan Sanicki (@megansanicki) February 18, 2016

Still smiling after organizing all the @DrupalConAsia programming for MONTHS. Great job @amandagonser #DrupalCon

— Megan Sanicki (@megansanicki) February 19, 2016

Be sure to thank @RachFrieee for bringing @DrupalConAsia to India. 1 year of hard work. @DrupalConAsia #drupalcon

— Megan Sanicki (@megansanicki) February 19, 2016

Oh yummy local snacks. Thanks @axelerant

— Megan Sanicki (@megansanicki) February 19, 2016

Such cool #drupal tattoos. Thanks @Blisstering @DrupalConAsia #drupalcon

— Megan Sanicki (@megansanicki) February 19, 2016

I am most thankful for our @DrupalConAsia volunteers.

— Megan Sanicki (@megansanicki) February 18, 2016

Be sure to thank #drupal volunteers @DrupalConAsia. This team donated a full day to help at registration

— Megan Sanicki (@megansanicki) February 18, 2016

It was a great day and I’m looking forward to Day 2!

Group photo by Michael Cannon under Share-alike license.

Feb 01 2016
Feb 01

This year’s Drupal Global Sprint Weekend 2016 was held on January 30th and 31st throughout the world. We conduct a Drupal meetup every last Saturday in a month in Bangalore and this time, we just organized the sprint instead. Wipro offered to host the sprint at their Sarjapur campus and we gratefully accepted.

Sprint Participants breakdown

The sprint started at 10:30 AM at the Wipro Learning Centre in Sarjapur campus with 22 participants. There were a few participants from other cities as well some of whom had started at 4:30 AM to reach the sprint on time. Most of the audience was new to Drupal contribution or even Drupal 8 and Chakrapani and myself mentored participants on an ad-hoc basis. We worked on 16 issues with members adding issues to a tracker as they picked up any issue. It was a beginner level sprint and we were happy to see so many people excited at the idea of contributing back to the community. Hopefully, we will soon see more productive and focused sprints in the future.

We took breaks for coffee and lunch courtesy of Wipro. We started to wrap up around 2:45 PM and each participant described their experience at the sprint and contributing to the Drupal community in general. We also received some great feedback from everyone present there. Those who had traveled from other cities had already left by this time to catch their trains or flights. It was overwhelming to see their dedication and hear stories of their involvement with the Drupal community. We all left at 3:15 PM hopefully having learned a bit more. Photos are at the end of this post.

The next sprint we are looking forward to is at DrupalCon Asia. The sprints are free to attend and you can learn from some of the best mentors in the world. Are you going to be there?

Drupal Global Sprint Weekend 2016

Jan 19 2016
Jan 19

It is Drupal’s 15th birthday! This is the first one since Drupal 8 was released; yes, there is a release of Drupal 8 today! If you’ve been following Drupal for some time now, you can imagine the happiness all us Drupalers have when I say this. I think this is a great moment to share something I wanted to since quite some time now. This is my story of how I got into Drupal all those years ago and how I built my career around it.

I first came across Drupal in around 2007 (don’t remember the year exactly) when a group of us sat down to plan for a website for our community. I had already built a site using my own CMS on native PHP as I was wary of any CMS or frameworks at the time. My attitude was that when I can do it myself with complete customization, why should I use something else! Anyway, I looked up on Drupal and what it could do, but didn’t really explore. Some time later, another friend asked for help to build another community website. I looked up Drupal again as I was very busy with work and couldn’t work on a custom CMS. When I couldn’t figure out how to allow uploading images to a content type, I gave it up. Around 2010, that friend checked if I had time and this time, I decided to check Drupal properly. I was already using WordPress and other frameworks like CodeIgniter, Kohana, etc… by this time and I thought it is time I start exploring Drupal.

This was my first and only Drupal 6 website. I built the site with some difficulty and wrote custom functionality for various tasks. I then migrated content from the custom CMS to Drupal 6 using a custom script (migrate framework wasn’t ready yet, as far as I can remember). This was a huge success and improved efficiency and productivity. The website grew massively as well.

After that, I continued working with Drupal, WordPress, Magento, and other frameworks and couldn’t specialize in any. I was still running a small business then and couldn’t afford a very narrow focus. Things changed in 2012 but I was still busy focusing on multiple technologies. I was part of a bigger company (still small) and was leading the complete web development (and design) effort. What happened next is a long story suitable for another post but I moved out and decided to work exclusively with Drupal.

Drupal story

I found a post on g.d.o one day about a company called Blisstering Solutions opening an office in Bangalore. I joined them and started working exclusively on Drupal. After a couple of projects there, I found myself with a little free time and I started looking into Drupal 8 issues. It was around April of 2013 and Drupal 8 development was still going rapidly with tons of issues in the queue. Due to this, there were a lot of patches that required rerolls and I jumped in there. Soon, I started looking at some of the more complex issues that needed a much deeper understanding of the system, and then, Drupal 8 was still very complicated and not that well documented. Around the same time, I also joined another company called Axelerant Technologies.

I started off as a developer at Axelerant but soon took up the position of full time contributor for a few months. Since then, I have been working as a technical architect and helping with the overall engineering direction but contribution has remained one of my most important areas. Since then, I have contributed to various projects, some on Github, many on, but mostly to Drupal core. I helped fix Drupal 8 criticals and odd tasks here and there. I am thrilled to have reached 200 commit mentions recently.

Drupal Community

I also took a larger interest in the local community. Up until then, I was a mere participant of the monthly meetups held in Bangalore. I started speaking at various meetups and helping Chakrapani and Gokul, who organized these meetups, wherever I could. Soon, I started attending and speaking at camps in India. My first talk at a camp was at DrupalCamp Pune in April 2014 where I spoke about migrating to Drupal 7 using the migrate module. I then started speaking at almost every camp and meetup. The only camp I haven’t spoken at is the camp we organized in Bangalore in July 2015, and only because I was busy with organizing the event.

I was also involved in early stages of planning for DrupalCon Asia (then DrupalCon India). It was my first chance to actually meet some of the people I had only heard about until then. I actually thought that they might be customarily nice in letter, but I had no idea how nice and warm they were in person. This was repeated with almost every person I met over my trips to camps and cons outside India. And Indian community is no different. There are some brilliant minds here who are not just talented but also super nice. I can’t think of the number of times I have been intimidated by a d.o username and then actually meeting the person and see how down-to-earth person they are. It is plain awesome.

I was also fortunate enough to speak at DrupalCon Los Angeles 2015 and DrupalCon Barcelona 2015, which were my first DrupalCons. I will also be speaking at DrupalCon Asia 2016, to be held in Feb 2016 in Mumbai.

I don’t have much to compare against but the Drupal community is one of the kindest and helpful communities I have known. I cannot describe how it has made a difference in my career and even my life. I have also witnessed how the community at large has come together to help individuals like me. I know the community doesn’t only care for your code, but also respects you as an individual and cares about you as a human being. I am incredibly grateful to be a part of this awesome community.

As taglines go, I know this is heavily cliched but it happens to be true to every letter. I can’t think of any better way to describe the overall Drupal ecosystem as “Come for the code, stay for the community.”

Nov 23 2015
Nov 23

Drupal 8 is released and the world rejoiced! We at the Drupal Bangalore community, organized a release party on Saturday, two days after the release due to various reasons. One of the main reasons was that we wanted to make sure most could travel to the meetup which would have been very difficult on a weekday.

The party was an overall success with the support of 91SpringBoard, our coworking partners, and Axelerant, our sponsors for the event. The venue was easy to find given its prime location just next to the Forum mall in Koramangala. We had a lovely cake, delicious snacks, and lots of pizzas for everyone.

The event started at 9:50 AM with Gokul from Azri Solutions covering what’s new in Drupal 8 from the perspective of site builders. This was followed by Chakrapani from Azri Solutions covering multi-lingual improvements and other improvements for developers. Finally, I spoke about Drupal and it’s community in Bangalore, in India, and the world. I used the videos from website and it was very well received. Kudos to the entire team of for producing such a brilliant website.

This was followed by the cake cutting, snacks, and pizzas. The party ended shortly after 2 PM with clean-up and photos. All the photos are below just after the videos.

We later joined another Drupal 8 party later at Global Training Day organized by Valuebound. The audience was mostly from PHP background and it was a lot of fun interacting with them and explaining about PHP community’s recent initiative on getting off the island and Drupal’s commitment towards that initiative.

It was a long day but a lot of fun. Thanks to everyone – all the organizers, participants, and sponsors to make this event a grand success. Join the Drupal Bangalore meetup page to find out about our next meetup. You can also follow us on Twitter and Facebook.

Announcing Drupal

[embedded content]

Celebrate Drupal 8

[embedded content]

Spread the word

[embedded content]

Photos from the event

Photos by P. Vishnu Vijayan.

Nov 19 2015
Nov 19

Drupal 8 is (going to be|already) out today. Drupal communities all round the world are throwing parties to celebrate the release of Drupal 8. As of this writing, we have 200+ locations across 6 continents hosting a party and I hear Antarctica will join us in celebrating Drupal 8 too.

So what’s the big deal? It is just a new version after all. Just in PHP community, we will probably see the release of PHP 7, Magento 2, and Symfony 3 within this two months. Why so much noise over Drupal 8?! Here are some of my reasons why I am over the moon about Drupal 8 release, and why you should be too.

1. Drupal runs 1 in 35 websites worldwide

Okay, Drupal doesn’t have the largest market-share in content management systems out there but it has a lot. With 1 in 35 websites running on Drupal, chances are that you have used a Drupal website more than once before now.

2. Drupal is highly scalable

Drupal runs some of the biggest and prominent websites in the world like,,,, and more. Drupal scales to any traffic while providing powerful features to administrators, editors, and end-users.

3. Drupal is the first product of PHP-FIG era

Drupal is written with clean and quality object oriented code. It was a great codebase years ago but it’s even better now with it’s adoption of various PSR’s by PHP-FIG. This means that it is easy for any developer to get started with Drupal 8 development in the shortest time; not just any PHP developer, but any developer.

4. Drupal has an awesome community

Drupal’s community is awesome! Period. I never cease to be amazed at the creativity of the entire Drupal community, their generosity, their kindness, their open mindedness, and their ability to resolve differences. It’s not easy to have 3000+ people contribute by code on a single version, yet we see that happen with remarkable ease. They are welcoming to everyone, all inclusive, and very supportive. I could write a whole post on this but let me end by saying that Drupal never fails on it’s motto – “Come for the code, stay for the community.”

5. Drupal is Open Source

Drupal is an Open Source software. It doesn’t just mean it is free; it also means that you are free to extend Drupal in any way you like and contribute back however you want. Drupal’s large community is a testament to this fact.

Drupal 8 Release Celebration

Drupal 8 Release celebrations worldwide

Drupal 8 Release celebrations worldwide

With 200+ parties worldwide, chances are that there is a party somewhere near you. Go, attend, and be a part of this awesome Drupal community. Use Drupical to find your nearest party and go mingle. If you find a contributor – someone who contributed code, tutorials, blog posts, podcasts, hosted events, spread awareness, anything… Thank them! We have Drupal 8 thanks to them, thanks to you! Thank you!

Jul 21 2015
Jul 21

Meetups are a great way to meet like minded people and explore your passion together. No matter your skill or expertise, you always learn something new. At the Bangalore Drupal group, we are aware of this too well and hence lately, we are actively holding meetups in different areas to meet new people. Meetups in March and April were very successful in this regard and we carried off that success to Electronic City, Bangalore, in the campus of Wipro Technologies. Photos below.

Meetup at Wipro

The meetup was different to our regular meetups in a few ways. For one, this was held on a Friday afternoon rather than the usual time of Saturday mornings. For another, the attendees actually came in from other cities just for the meetup. We had a great line up of sessions and interaction over snacks, courtesy of Wipro. We had a lot of support from the team at Wipro, led by Binupreeth Venugopal, to handle logistics and making sure everyone got in to the meetup.

We started off the afternoon with a round of introductions by all the participants, anchored by Vishal Chandra. Smitha M V introduced Wipro’s community efforts to everyone present and we started off with a session on “Drupal Implementation @ Wipro” by Satwik Nag. This was followed by a session on “Building a Live Radio App using Drupal” presented by Mantesh Jahilal. This was followed by interaction over refreshments courtesy of Wipro. We ended the evening with a session on “My experience at DrupalCon LA” presented by myself.

Preparing for DrupalCamp Bangalore 2015

Drupal Bangalore Logo

The Bangalore community is working on a DrupalCamp since a long time now and we are finally seeing it come to reality this Saturday, July 25, 2015. With over 550 registrations at the time of writing, this is one of the biggest DrupalCamps in the country. If you haven’t registered yet, it’s not too late. Go to the DrupalCamp website to register for free now. The camp runs two days and includes lunch and refreshments. You will be able to take benefit of the great sessions, awesome networking opportunities, and directly interacting with companies using Drupal at their respective booths. Comment here if you have any questions.


Apr 30 2015
Apr 30

Drupal meetups are fun. You meet new people, learn something new, and other people learn from you. The Drupal community in Bangalore has regularly organized a monthly Drupal meetup, which is only growing with the support of large organizations coming forward to host. This month, the meetup was held at the TCS office in Whitefield in ITPL on Saturday, 25th April, 2015. Photos from the meetup are below and a more detailed account follows.

The April meetup was held at an auditorium in TCS Whitefield office. We saw an attendance of around 40 people, which was lesser than we expected, owing to disruption caused by recent rains. Inspite of the relatively lesser number, this was still one of the more successful meetups. Since the TCS office is in ITPL, with massive security hassles, we reached there by 9:45 AM and we reached the building by about 10:15 AM. There were a few people already there and we waited until 10:30 AM to start.

Attendees at Drupal Bangalore Meetup, April 2015.

Attendees at Drupal Bangalore Meetup, April 2015.

We started off with Jaya talking about how being a part of the Drupal community has helped her career and life. After her inspiring talk, several people came forward and shared their Drupal story, and how it has helped in their career. Being a part of all this discussion was an amazing and insightful experience. Photos of the speakers are uploaded in a Flickr album (also shown above in the slideshow).

This was followed by a session on SEO by Sudheesh Sudhakaran where he explained what helps and hurts sites in SEO. This was also followed by a productive discussion on various techniques, questions, and latest practices. We ended the meetup at around 1:15 PM with the customary group photo. Some of the participants later met for lunch at the ITPL cafeteria.

I would like to take this opportunity to thank TCS for hosting us for this meetup. Sudheesh and his team helped in arranging the venue and the refreshments and helped all the participants through the security checkpoints in ITPL. They even took care of the photos and for once, I was not seen swinging around with my camera.

The next meetup is tentatively scheduled at the end of May. Follow @BangaloreDrupal on twitter (or myself) to keep up with the news. You can also join the meetup group to get an email as soon as the new meetup is announced.

Group Photo - Drupal Meetup - April 2015

Group Photo – Drupal Meetup – April 2015

Apr 14 2015
Apr 14

Drupal Meetup is now in Whitefield, Bangalore! After February’s meetup, we decided to try and discover more Drupalers in Bangalore. We always knew that there are a lot more people using Drupal than we meet in the meetups and we have also known that location is a big factor in determining attendance at a meetup on a weekend. We found some leads in Whitefield and decided to hold the meetup there. Mindtree kindly agreed to host us for the meetup on 28th March, 2015. Photos from the event are below.

We carpooled and reached there by about 9:30 AM, having miscalculated for the traffic. After a quick bite at the canteen, we went down to the board room to find it almost full. Around 10:30 AM, we started with a round of introductions. I did a quick introduction to the meetup group and we first started with Gokul’s session on performance improvements in Drupal 8. This was followed by a quick break with tea, coffee, and biscuits courtesy of Mindtree. After the short break, I discussed on how everyone can start contributing to the Drupal core and other contributed modules using larowlan’s excellent slides from DrupalSouth. This turned into an interactive session with questions answered by experienced Drupalers such as Chakrapani, Gokul, Pavithra, myself and many others in the room.

We ended the day at about 1:30 PM feeling great about a successful meetup. We took names and other details of all the attendees and got a great representation from various companies in Bangalore. I will let the pie chart below do the talking.

Drupalers representing different companies at meetup at @BangaloreDrupal. Great going guys! Expecting more next time.

— hussainweb (@hussainweb) March 29, 2015

The next meetup is scheduled a little early this month – the third Saturday instead of the usual last Saturday of the month. We are again in Whitefield this month and hosted by TCS. Location, date, time, and other details are available on the meetup page. I hope to see you all there this Saturday.

PS: Please help us out with a survey we are conducting to understand who is using Drupal in and around Bangalore. If you have ever used Drupal or considering it, please fill out this form. It will take 10 minutes and will help us plan and organize Drupal events better. The shortlink to the form is:

Dec 29 2014
Dec 29

Before we start, I should say that this is a heavily delayed post, sitting in my queue for a few months now. The overall process to install the server on virtual machine and configure it for Drupal development is still valid and you only need to change the OS version from Ubuntu Server 14.04 to the latest one now (Ubuntu Server 14.10 at this time). Also, I have moved on to using vagrant for my setups and will hopefully write a post on that soon. I think this post will still serve some value if you are looking at setting up a virtual machine (or even a physical machine) from scratch.

A bit of history first. I bought a new laptop in November 2013 and decided not to run Linux on that. I was using Ubuntu on my previous machine for all my development work but I had a lot of problems with Chrome eating up all the memory, even for a few tabs. Comparatively, Chrome on Windows ran fine with a lot more tabs. I tried a few things but never solved the problem. The only workaround that worked for a while was using an extension called The Great Suspender. When I got my new machine, I just decided to stick to Windows and run Ubuntu Server in a VM inside VirtualBox. Here is a complete list of steps to set up a machine.

Tools on Windows

Console2 running cygwin on Windows

Console2 running cygwin on Windows

Download VirtualBox, Console2 and cygwin and set them up. VirtualBox and Console2 are simple and you would install them just like any other Windows program. Cygwin is a little bit more complicated. Follow the instructions in cygwin installation section to get started. Note: Console2 and cygwin are not strictly required but highly recommended. Console2 gives you a nice terminal interface with tabs and cygwin lets you directly use ssh and other Unix commands right from Windows. It is very convenient.

Ubuntu Server

Create a new Virtual Machine and install Ubuntu Server 14.04 on it. I have written a separate post which shows the steps to configure the virtual machine and install Ubuntu Server in detail. Once installed and configured, you can proceed with the next steps here.


First, we need a way to share our files. The model we will use is to store all the files in the virtual machine and access them in Windows via shares. This, of course, means that we can’t access the files if the virtual machine is not running. This is inconvenient but it is the faster option. NOTE: With the vagrant setup, we avoid this but run into the performance problem. More about this in my post on a vagrant setup.

To make the files in the virtual machine accessible to Windows, we need to install samba server. The guide helps you along but basically you just run this command.

sudo apt-get install samba

Next, configure samba by editing /etc/samba/smb.conf. There are more examples in the guide and in another community post. These are the settings in my smb.conf.

From above, the option ‘force user’ and ‘force group’ are particularly important. This makes sure that the files you create from Windows get the right user/group and permissions as well.


If you are using public-private key authentication, as you should, and you have encrypted your keys, you would be asked for password everytime you connect to the machine. You just need to install ssh-agent to fix this. Follow the steps in this Stackoverflow answer and this blog post to enable ssh-agent in cygwin.

Adding more partitions

As a best practice, I mounted my document root (/var/www) on a different virtual drive. This way, you can reuse the same virtual disk on another system if you wanted to try something out. There is a detailed guide on how to set this up by creating a new virtual disk in VirtualBox and then configuring it in Ubuntu.

Other configuration on the Windows host

In some cases, the virtual machine cannot access Internet. Run the command below in your Windows host to modify VirtualBox settings. Replace “VM Name” with the actual virtual machine name.
VBoxManage modifyvm "VM name" --natdnshostresolver1 on

For nicer colors in the console, see this post. This has to be done only once, not for both cygwin’s bash and after ssh. It basically changes the palette for 16 color codes used in the terminal.

Other configuration in the virtual machine

Set UseDNS to no in sshd_config in the virtual machine for quicker ssh when logging in to your virtual machine. The setting basically disables reverse lookup of the client. There is more information in this StackExchange answer and this article.

Setup drush, php, etc… in the Ubuntu Server (virtual machine). Install packages like php5-gd, php5-apcu, php5-mysqlnd, php5-memcache, php5-gd, php5-curl, php5-xdebug. For drush, follow the instructions at the drush documentation pages.
sudo apt-get install php5-gd, php5-apcu, php5-mysqlnd, php5-memcache, php5-gd, php5-curl, php5-xdebug

Enable rewrite module for Apache. Without this, the .htaccess rewrites might work but might cause weird errors, such as File not found 404 error for virtual paths.
sudo a2enmod rewrite

If you want to access the MySQL server in the virtual machine from tools like MySQL Workbench or similar tools, give access to root (or other user) with GRANT PRIVILEGES and comment out bind-address setting in /etc/mysql/my.cnf. Replace ‘password’ with the actual password you would like. More details in this answer. The SQL for GRANT PRIVILEGES statement looks like this:
GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY 'password';

Set up a ~/.my.cnf file to store your mysql users and passwords for various commands. This is great to access commands like mysqldump and mysqladmin from the command line without worrying about the username and password all the time. This is what the file should look like:


You should have a decent machine for Drupal development, or regular PHP development by now. There are more steps, of course, like installing composer but I think that could be subject of a different post. Like I mentioned earlier, I have moved on to using vagrant and this post is mainly for reference. I will be writing a post on that soon. Follow me on twitter for updates and subscribe to RSS for staying updated.

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web