Finding a home in the Drupal 8 community OR "What Issue Should I Work On?"
by Brant Wynn
The following is my Drupal 8 contribution story. If you have ever found yourself wondering "What do I do now?" when you were at a code sprint, then you should find this blog useful.
Lesson 1: Jump into the deep end - there's no time for toe-dipping!
The first code sprint I signed up for was at DrupalCon Denver. I saw there were a number of initiatives going on and I decided that Multilingual looked cool. When I showed up for the sprints on the last day of DrupalCon, I had already attended a core conversation about Multilingual and met the initiative lead, Gábor Hojsty.
The sprint took place in a large room where one full half was filled with mentors that were helping people get their laptops set up for local Drupal development and helping them start on novice issues. I was not new to Drupal and already knew how to do this - I just wanted to get started working on something! Eventually I found the Multilingual table tucked into the very back of the room. There was an open seat so I sat down and asked Gábor if there was anything I could do.
Gábor was a super helpful mentor for getting started. It’s no wonder so many Multilingual devs turn into top contributors under his leadership. He introduced me to the other multilingual sprint members and got me into the right IRC channel where we then proceeded to work together. It was funny that this quiet table of Europeans was actually quite chatty - not out loud, but so much was going on in IRC! I was able to get help working on the issues while leaning on Gábor for help whenever I had questions.
Takeaway: Drupal is a great community and we welcome our noobs with open arms.
The next day we sprinted at the MapQuest offices in Denver. I met even more people, shared pizza with well known Drupal contributors and even wrote my first automated tests. It was a thrilling experience to go from non-core-contributor to having these top contributors standing over my shoulder and helping me with my patches. Leaving Denver, I was excited to be working on Drupal core.
I quickly learned that motivating myself and finding issues without a mentor was difficult. There were a lot of Multilingual issues and even more people working on the project than I could imagine. Back at work I was on Drupal 7 and had lots of things to do personally (y'know, getting married, planning a honeymoon, moving, etc.) The next thing I knew, 2012 was nearly over and I had lost touch with the Multilingual initiative.
Lesson 2: Life is what happens between core patches.
Near the end of the year, I left my job to take a position as a Solutions Architect at Acquia. I was excited to be starting a new project, the Demo Framework, where I'd be doing lots of development while working with people at a great company. I was able to take some of the work I had done over the past few years on the Bean module and plug that into DF. I also was able to learn a lot about many other systems in Drupal and found an affinity for Panels based architecture.
When it came time for DrupalCon Portland, we had a working prototype of the Demo Framework to show off, and I was excited to be in town for the adjacent weekends sprints. I was determined to get back into core development and figured spending time at these sprints would be valuable.
I was a little bit pensive when I showed up for the sprints in Portland. I felt very bad that I had not followed through after Denver and worked more on Multilingual on my own. When I caught up with Gábor in Portland, I found the i18n team already at work with a room full of devs.
Gábor said I was welcome to pick up a Multilingual issue, but also mentioned other initiatives might need help too. No mention of my disappearance from the Multilingual issues were made and I realized that everyone is busy, we all accept this and no one will ever fault you for not dedicating all your time to Drupal.
Takeaway: Don't be afraid to start over again if you fall out of core development.
I told Gábor that I was excited about the work I'd done with Bean and Panels in the past year. I knew that Blocks were now entities in Drupal 8 (negating the need for Bean) and the space around Panels was a big question mark. Gábor pointed me the way of Jess, aka xjm, a core contributor I had met before and another awesome mentor.
Jess had some core block issues for me to look at. We white boarded out problems that needed to be fixed, and she told me about tags I could use in the Drupal issue queue to find block-related issues. She also introduced me to Tim Plunkett, and they both proved to be sage guides in navigating the plugins and blocks system. By the time I left PDX, I had fixed a few bugs with the block system, wrote some more tests and felt pretty accomplished overall.
Lesson 3: The more you give, the more you get!
Over the next year, I have tried to find time to work on Drupal 8. It helps that I'm now better versed with using the issue queue and tracking tags. I was still doing a lot of work on Demo Framework and this had lead to working fair amount of hours with the Media and File Entity modules. I even attended a D7 Media sprint in Chicago with the Media Initiative lead, Dave Reid, and Acquia's Devin Carlson and Willy Karam.
One pattern that I instated during my time working on DF was to try to make everything we did reusable. We could have easily gone "off the ranch" and developed our own proprietary Drupal demo. We didn't have to provide patches or help fix stuff in the issue queues, but we took the extra time to do this because it was the right thing for Drupal overall. This has paid off as it’s led to a lot of commits on our part for a number of modules. Everyone in Drupal has benefitted from the Demo Framework project as a result, and I am proud of that.
Early in 2014 I was approached to work with a cohort at Acquia where I was given 8 hours a week to focus on Drupal 8. I knew this is because I was seen in the company as a strong Drupal contributor - even though all I'd been doing was my job plus giving back everything I worked on!
Takeaway: Turn your everyday work into Drupal contrib work. Yes, it is possible!
I jumped at the opportunity to work on D8 and spent the first few weeks brushing up on my OOP. I finally took the jump into using PHPStorm and mostly just familiarized myself with all the major changes that have gone on in D8. This ultimately resulted in a session at MidCamp, these slides and some example modules for Drupal 8.
After re-onboarding to D8, I jumped back into the issue queues, this time looking to pick up on some core Block module issues as its where I'd most recently left off. I started to help with code cleanup for block module and other issues but noticed that blocks were in a pretty stable place. The base system had some serious beta blockers, but it was starting to feel like I might need to touch another initiative.
Around that time, Willy Karam invited me to attend NYC Camp to present our Demo Framework beta and participate in the Media Initiative. Unlike last summer, when we sprinted on media, the focus wasn't just fixing it for D7. The summit focused on resolving some longstanding discussions around what Media would look like for Drupal 8. In New York, I met with maintainers of Media, File Entity, Scald and Media Entity and helped make some decisions about their architecture for drupal 8. I was honored to be a part of this group and I've been working on some more issues since returning from the summit. It's been a lot of fun!
What are the final takeaways from this experience?
Starting out, you need a good mentor to guide you.
This was super important to me. I am grateful to all the initiative leads and mentors that have helped me along the way. Without their help, I would have been completely lost. It was exciting to mentor in Austin for that reason. Its great that open source gives us such a ready channel to "pay it forward" by helping others.
Once you're ready, branch out and become independent.
Learn how to work independently by searching the issue queues. If you have a specific problem, chances are someone else has had it too, so work on your Google Fu. Sometimes its the third or fourth blog post that I read that puts all the pieces of the puzzle together. This was especially true when working on my Drupal 8 slides.
Choose an initiative to work on thats relevant to your Drupal work life.
If you can find a way to contribute to Drupal as part of your day job, seize the opportunity! A lot of times I find people saying they don't have time to contribute back because they're so busy working. However, you can work and contribute at the same time. If you fix a bug in a module for your project, take the extra 15 minutes to document it and provide a patch. If you file a support request and then a month later you solve your own problem, write up a short report in the issue how you solved your problem - don't just say "I figured it out" and close the issue!
Don't be afraid to jump around and try things out.
Over the past two years I've worked on a number of Drupal 8 issues. These include the Multilingual system, Plugins (blocks mostly) and the File system, just to name a few. You'll find that in Drupal, you'll often have intertwining issues that touch multiple systems. This is just a normal thing in software development. Becoming adept at using a set of tools means trying them all out, right?
In the end it will be your decision what you work on.
You'll eventually have to pick something to work on, so just do it. The cost of not trying is never learning to fail. You can't be afraid to pull up your bootstraps and learn new skills as you go. You'll be glad you took the initiative, and you'll forge awesome friendships along your journey. Together, we all succeed in building Drupal because everyone just does what they can.
So where am I now?
It's been two years since I started working on Drupal 8. I now feel I have a pretty solid understanding of the system. I've found a good group of people to work with on File Entity and Media in Drupal 8. This stuff relates closely to the work I do daily at Acquia, so its a natural fit. I'm happy to have finally found my "home" in the Drupal 8 ecosystem and look forward to working on more issues in the future.