Angela Byron on Drupal 7
Angela Byron is the co-maintainer of the Drupal open source content management system and framework. She talked to us a bit about her role with the Drupal project, and Drupal 7, the recently released, latest version of Drupal. See the full interview in the April 2011 issue of Linux Journal, on newsstands and in subscriber mailboxes very soon!
KD: What got you interested in open source software in the first place? Did you jump in and become an active contributor right away?
AB: I've been interested in free software ever since I first heard the term back in 1995, back when I completed my first successful Linux installation—this was back when Debian fit on 7 floppy disks. ;) I was both intrigued and excited by the profound humanitarian implications of the free software movement. Better-than-commercial-quality software, available to be tinkered with and expanded upon by anyone with an interest and drive to learn, given away at no cost to everyone, including non-profits and educational institutions. I became a fierce advocate of open source alternatives among my family and friends, and I was totally "that person" in school who would demand that in addition to teaching us ASP and Oracle, we needed to also learn PHP and MySQL.
However, I held an equally strong belief that everyone who actually worked on open source software was really smart and that I, being only a lowly community college student, couldn't possibly participate on that level. So I would silently cheer these people on, but always from the sidelines, looking on wistfully hoping that one day, far into the future, maybe after I had 30 years of experience or something, I could someday join their ranks.
Then, a decade later in 2005, one of my instructors told me about Google Summer of Code (GSoC), a program which provides stipends to students to work on open source projects over the summer. This poked a tiny little hole in the "you must be THIS smart to contribute" wall I had built up in my head, because I figured, hey, they know I'm a student so they must know I don't know everything yet... So I figured I would apply and see how it went.
The Drupal project was one of the mentoring organizations for GSoC, and I had seen it being used on SpreadFirefox.com, a grassroots marketing site for the Firefox project, since I'm one of those people who goes and clicks "view source" on all web pages she visits to see what makes it tick. I had thought it was pretty cool that Drupal was able to power a site like that, so the name stuck in my head. So I applied to write a Quiz module for Drupal for GSoC, even though I had never downloaded, installed, or used Drupal before.
Much to my shock and amazement, I was actually selected. Now came the hard part: figuring Drupal out, and not only Drupal but also other peripheral things like version control, patches, etc. Back then, there was very scant documentation for Drupal; there were no books, there were no screencasts, none of that. And I found myself facing a pretty steep "learning cliff" and stressing out about what to do, since I only had 2 months to complete my project.
So, I taught myself Drupal in a two-pronged approach:
1. Writing the documentation that I wished was there but didn't exist, at least as best I could, then bouncing it off more knowledgeable people to help me fix it up. I wrote up instructions on using CVS, on getting a testing environment set up, and other things that were difficult for me at first.
2. Hanging out in the support channels and forum attempting to answer other peoples' questions. For the first couple weeks, this was completely impossible, but in attempting to do so I ended up learning a ton. And the first time I was able to successfully answer someone else's question, I felt like a total rockstar. ;)
I quickly earned a reputation as one of the "doers" in the Drupal community, and suddenly people were doing somersaults to help answer questions as I got more into development. I've been hooked ever since, contributing like crazy now that I'm making up for a decade of lost time. ;)
Once I got to "this side" of the contributor wall I realized how silly the mythos I had in my head about open source contributors was. While there are indeed very Einstein-level smarties out there contributing to open source, most of them are just people like me: those who are passionate, work hard, and want to help others. So my goal since coming to this epiphany has been to try and make sure that my story of delayed contribution to open source isn't anyone else's story. :)
KD: One of the greatest things about Drupal is the community behind it. Among the many interesting facets of our community is the fact that we have a higher percentage of women contributors than most open source projects. What are those numbers these days? How has that progressed over the last few years? Why do you think there are more women involved with Drupal than most other projects?
AB: Unfortunately we don't really have very reliable numbers regarding gender breakdown in our community. We do know that of the people who've opted in to telling us their gender, 11% declare themselves as female (as opposed to male or transgender). In general, it feels like this number is increasing over time, but it's difficult to say scientifically.
One thing that I'm particularly proud of though is that in Drupal core's MAINTAINERS.txt, which tracks the major subsystem maintainers, in every version of Drupal previous to this one there were 0 women listed in MAINTAINERS.txt. In Drupal 7, there are 6 of us. Though this raw number is still low, I think it goes to illustrate the increased diversity of our contribution team that's evolved during the Drupal 7 cycle. I also am not aware of many other open source projects with that many women on the core development team.
I also can't say for sure why Drupal attracts more women than other projects. I think in part it's the nature of the project—Drupal is a project for building websites and there are lots of women involved in website design and development, moreso perhaps than kernel hacking. But I think there are important cultural reasons, too. The Drupal community has a strong meritocratic bent that elevates people who work hard, regardless of their background. As a result, we have women in a number of key positions in the community, including the board of the Drupal Association, leaders of the documentation team, and even core maintainers. ;)
KD: How tough will the upgrade process be for those of us who need to upgrade from Drupal 6 to Drupal 7?
AB: There's a saying in the Drupal community, "The drop is always moving." This embodies our philosophy around allowing sweeping backwards compatibility-breaking API changes in major releases, as long as an upgrade path is provided for users' data. This allows us to stay on the cutting edge of technology, and to not carry along a bunch of excess legacy baggage, but it also means that upgrading major versions of Drupal can be a bit of a harrowing process.
At the time of this writing (about three weeks after Drupal 7.0 was released), the upgrade path from 6 to 7 is still pretty rocky. While core's stuff is taken care of, contributed modules are still being ported and the upgrade path for major modules are still heavily in progress. There are also big question marks around some projects and how they will make the transition from Drupal 6 to Drupal 7 given the new entity/field API paradigm and other new features Drupal 7 offers. The situation is improving on literally an hourly basis, but speaking honestly I'd say that most typical Drupal 6 sites won't be able to look seriously at upgrading to Drupal 7 until Q2 2011 or so.
However, the good news is there are a number of helpful utilities available that make upgrading to Drupal 7 easier than any major version release before it.
* Upgrade Status module: http://drupal.org/project/upgrade_status
This module, installed on a Drupal 6 site, will provide a list of the currently enabled modules and whether or not there are versions available for Drupal 7. You can look at this list periodically to get an idea of when you might like to time your Drupal 7 upgrade. Once you're ready, the bundled Upgrade Assist module provides an interactive checklist that can walk you step by step through the process.
* Coder Upgrade module, part of the Coder module: http://drupal.org/project/coder
This module will allow you to upload a Drupal 6 module and will run a variety of conversion routines on it to apply the new Drupal 7 code changes to it, spitting out a new module at the end that's been converted to Drupal 7 as best as it can. Among the things it can take care of are converting raw SQL queries to the new database abstraction layer, renaming functions that have changed names between versions, and pointing out when code that was required in Drupal 6 no longer is.
As long as Drupal site builders are sticking to general best practices—using well-trodden contributed modules, not "hacking core" (making modifications to Drupal core/contributed files), and minimizing the use of custom code—with the help of these tools a Drupal 6 to 7 upgrade should be fairly straight-forward once the contributed modules catch up.
KD: How would you suggest our readers get involved in the Drupal project if they are interested? Every open source project wants bug testers, but how are bug testers trained?
AB: First of all I would highly encourage them to do so! The Drupal community is filled with smart, friendly, and helpful people who are really excited about bringing new contributors on board. :)
The first place I usually recommend people go is to a real-life meetup to talk to some other Drupal contributors. There are monthly Drupal meetups almost everywhere, including code sprints, documentation sprints, and other great opportunities to help out. Check http://groups.drupal.org/ for a city near you!
We also have a dedicated section of our documentation, the Getting Involved Guide http://drupal.org/getting-involved-guide that lays out a variety of ways to get involved, including development, documentation, support, and translations. The Community Initiativeshttp://drupal.org/community-initiatives section has a variety of high-importance projects and who to talk to if you'd like to get started.
We have a section under the Getting Involved guide about the issue queue at http://drupal.org/node/317. It includes links off to screencasts and tutorials on the topics of how the issue queue works, how to submit bug report, and so on. We also provide training during code sprints at Drupal Camps, DrupalCons, and other events.
And don't forget about IRC! Most of us are in #drupal and #drupal-contribute on irc.freenode.net 24 hours a day, and would love to hear from someone who'd like to get involved and wants to know where to start! Myself or one of the other volunteers is more than happy to walk someone through their first bug report or patch review. :)
KD: What other supporting open source technologies to you rely on? Any favorites? Any favorite development tools in particular?
AB: Open source projects I use daily include Firefox, vi, Adium, Sequel Pro, and of course the LAMP stack, all of which I depend on for doing the crazy Drupal stuff I do. :)
Pick up any e-commerce web or mobile app today, and you’ll be holding a mashup of interconnected applications and services from a variety of different providers. For instance, when you connect to Amazon’s e-commerce app, cookies, tags and pixels that are monitored by solutions like Exact Target, BazaarVoice, Bing, Shopzilla, Liveramp and Google Tag Manager track every action you take. You’re presented with special offers and coupons based on your viewing and buying patterns. If you find something you want for your birthday, a third party manages your wish list, which you can share through multiple social- media outlets or email to a friend. When you select something to buy, you find yourself presented with similar items as kind suggestions. And when you finally check out, you’re offered the ability to pay with promo codes, gifts cards, PayPal or a variety of credit cards.Get the Guide
- Let's Go to Mars with Martian Lander
- Applied Expert Systems, Inc.'s CleverView for TCP/IP on Linux
- My Childhood in a Cigar Box
- Papa's Got a Brand New NAS
- Returning Values from Bash Functions
- Tech Tip: Really Simple HTTP Server with Python
- Rogue Wave Software's TotalView for HPC and CodeDynamics
- Panther MPC, Inc.'s Panther Alpha
- Debugging Democracy