I’m excited to announce that Pantheon will be sponsoring my work co-maintaining Panopoly, a Drupal “distribution” (and base distribution for building your own Drupal distributions) that was originally created by Pantheon co-founder, Matt Cheney.
A Drupal distribution is a combination of Drupal core, some contrib modules and themes, plus default configuration that can be installed as a whole. Most distributions target a specific use case, like building restaurant websites. So, immediately after installing the Restaurant distribution, you have a site with a menu, online reservations, and a map out-of-the-box—without having to start from vanilla Drupal 7 and build all those things from scratch. There are Drupal distributions for many use cases: company intranets, university department sites, church websites, sales demos, and much more! Panopoly’s goal is to pull in the best of Drupal contrib and combine it with best practices to give site builders a solid base to start from. There's a strong focus on WYSIWYG, editing content in place, and improving the user experience. It’s also a base that others can use to build their own distributions, while taking advantage of our work and focusing only on the unique value proposition of their new distribution.
My Work on Panopoly So Far
In December 2013, I was officially added as a Panopoly co-maintainer. Since then I’ve managed to accomplish a lot (over 300 commits), working primarily as a volunteer in my spare time! Although, as a freelance Drupal developer, I’ve also contributed to Panopoly while helping clients build Panopoly sites or develop Panopoly-based Drupal distributions of their own. Read on for some of my main contributions to date.
Automated Behat Test Suite and Continuous Integration on Travis-CI
Panopoly is a complex project, and making even small, seemingly harmless changes (like updating a contrib module to the newest version) can have unexpected consequences—sometimes breaking core functionality that users depend on. In order for us to continue maintaining Panopoly at a rapid pace and quickly and confidently make changes (for example, updating modules for security releases), we need to be able to easily test all parts of Panopoly with every change. One of the first things I did after becoming a co-maintainer is lead the creation of a large automated Behat test suite that's run every time we commit a change (via Travis-CI). The test suite not only installs Panopoly and automatically runs through the most important use cases using a real web browser, it also installs older versions, performs the upgrade to the current -dev version, and runs the same tests on that! Of course, I didn’t do all this work on my own. Many Panopoly contributors from the community helped by creating and improving tests and the test framework. Two of the most prolific were cboyden and lsolesen (who was responsible for the majority of the initial tests and the initial Travis-CI script).
Since a Drupal distribution is a collection of Drupal modules, they are particularly affected by the security releases that take place every Wednesday—a security vulnerability in a module included in the distribution is a security vulnerability in the distribution! However, it’s not necessarily safe for users of the distribution to update the individual modules. The distribution may include necessary patches to the module, or other parts of the distribution may need to be updated too, in order for all functionality to continue working. So, users need to wait for the new version of the distribution to come out and update to that.
This problem is especially acute for Panopoly as a “base distribution”, because the distributions that depend on Panopoly can’t make their updates until Panopoly is updated. This means it’s super important that Panopoly updates come out as soon as possible after security releases. However, in the past, security releases were as much a surprise to us (the maintainers of Panopoly) as to everyone else in the community. And we simply can’t do the amount of testing necessary to safely update a contrib module very quickly, so it used to take us many days or weeks to make a release after a security advisory that affected us. The Behat test suite helped immensely with this, but if problems were discovered or other updates needed, we still needed time to make those additional changes. This was a constant source of pain for the community of people who depend on Panopoly, and it was clear that this was super important to our users.
That’s why I applied to join the Drupal security team in April of 2014 (and became a full member in May). Now, we are aware of security issues that affect Panopoly as soon as they are reported, so we have time to test and prepare for them before the fixes are released. Since then, we’ve been able to make new releases of Panopoly within 1-2 days of security releases and frequently on the same day. :-)
Supporting the Panopoly Community
Panopoly is not just the work of myself and the other co-maintainers (Matt Cheney and Tom Kirkpatrick) wielding dark magic in a hidden cave somewhere. :-) It’s the product of a very active community of people and organizations, who use it to both build sites and be the base of their Drupal distributions (used by >8,000 sites according to Drupal.org), many of whom also contribute back! Everyday we receive patches, bug reports and support requests from the amazing Panopoly community. The maintainers' job is to review contributions, make sure the spirit of our community is maintained, and try to channel energy to the right places (ex: a support request came up three times? maybe it’s time to update docs or implement a new feature to prevent confusion). Even with three co-maintainers, it’s difficult to stay on top of all the awesome community contributions. For my part:
- I read and respond to as many issues in the issue queue on Drupal.org as I can (although, I can’t ever get to them all)
- Post about releases and respond to discussions (when I can) on the Panopoly group on groups.drupal.org
- Lurk in the #panopoly IRC channel on irc.freenode.net
- Last year, I gave presentations about Panopoly at 9 different Drupal events, including at Drupalcon Austin
- I also organized 4 community sprints last year, both in person and virtually
Plans for 2015
When I told Matt Cheney that I’d probably have dramatically less time to contribute to Panopoly because my first child was due to be born in December of last year (she’s now a happy and healthy 9-week old ;-)), he told me that Pantheon has been looking for ways to give back to the community, and offered to sponsor me to continue doing my work. While the sponsorship from Pantheon isn’t enough to cover all of the massive amount of time I spend on Panopoly, it’s enough to allow me to continue to contribute at the same level I have in the past, along with volunteer time and contributions connected to my other client work. So, here’s what I plan to focus on in 2015:
- Getting all the pending big changes into Panopoly that we’ve been meaning to make for a long time, for example: making landing pages into nodes, improving live previews and including the Radix theme.
- Fixing long-standing and super complex bugs, like installation problems with ‘drush si’ and other installation issues.
- Fixing any issues that make it difficult to extend or change Panopoly in a child distribution
- Fixing accessibility issues that make Panopoly difficult to use from the keyboard or with a screenreader
- But otherwise putting the Panopoly 1.x branch for Drupal 7 into maintenance mode: we won’t be making any big feature changes except for those already planned for some time
- Continuing to update included modules, make security releases, add additional Behat tests and fix bugs
- After all the big Panopoly 1.x things are done, focus efforts on creating Panopoly 2.x for Drupal 8, which primarily means supporting the effort to port Panels to Drupal 8
- Improving user, developer and site builder documentation
- Organizing more sprints and giving more presentations!
I’m looking forward to the future of Panopoly! If you’d like to get involved, give Panopoly a try (it’s super easy on Pantheon) and come let us know what you think in the issue queue, Panopoly group on groups.drupal.org or the #panopoly IRC channel on irc.freenode.net.Topics: Drupal