Boone Gorges Interview
Boone Gorges (@boone) is an independent software developer and consultant, specializing in WordPress plugins. He is a Lead Developer for BuddyPress, and oversees development on such projects as Commons In A Box, Anthologize, and Participad. Boone is a former academic, and most of his clients are universities and other non-profit institutions. In his spare time, he is a competitive crossword solver, a jazz pianist, and an afficianado of pizza and barbecue. He lives in Queens, NY with his wife and son, and blogs at Teleogistic.
Do you remember when you first encountered WordPress, and the point that you realized it was something you’d work with professionally?
I first remember hearing about WordPress in the mid-2000s, when a few friends at CUNY were doing some pioneering work with WPMu. I used WordPress a little around that time while teaching Ethics to undergraduates: I had them keep philosophy journals on public wordpress.com blogs, which allowed for better peer review. In 2009, I was asked by my friend Matt Gold to help out for a few hours a week on his CUNY Academic Commons project. CAC was built on WordPress and BuddyPress (then in beta), and needed someone with some real technical chops. Despite this fact, he asked me to help. I knew nothing about WordPress or PHP when I started (just a bit of HTML/CSS). Within a few months, I’d written and released my first plugin. Within a year and a half, I’d quit my job to do WordPress consulting and development full-time.
You’re a Lead Developer for BuddyPress. How did you get involved with it, and what itch was it scratching (or not quite scratching) for you at the time?
I started using and developing for BuddyPress through my work on the CUNY Academic Commons. The team behind the Commons wanted to remain true to the for-the-public-by-the-public history of CUNY itself by using free software. At the time, BuddyPress was really the only social networking tool that was free (in all senses) and that integrated well with the other tools we wanted to use. When I started building features and fixes for BuddyPress, it was only fitting that the Commons leadership would encourage me to contribute them outward, either as distributed plugins or as upstream patches.
What are you proudest of having contributed to BuddyPress?
Much of BuddyPress’s recent development has been focused on transforming BP from a somewhat quirky, largely standalone system, to a robust, modular, scalable plugin that feels — both to users and developers — like a natural extension of WordPress. I’m quite proud of the work that I’ve accomplished toward this goal over the last couple release cycles.
In BP 1.6, for example, I made some modifications to the way that directory pages are built that reduced database overhead by up to 75%. In BP 1.7, I’ve replaced our aging, labyrinthine member query methods with a
BP_User_Query class that is modeled on
WP_User_Query, and improves query performance by a factor of three or more. These sorts of big changes -- along with countless smaller improvements -- make each version of BuddyPress more pleasant for the end user, more scalable for big-time implementations, and more approachable and fun for WordPress developers.
How important has getting involved with the WordPress community been for you, and how would you convince someone up against deadlines to give something back to that community?
My involvement with the WordPress community has been transformative in more ways than I can count. Working alongside numerous other developers has dramatically improved the breadth and depth of my technical skills. I've created a reputation and a niche that's allowed me to be extremely selective about which clients I work with. I've met a lot of great people, some of whom I've come to consider close friends. And I've been able to contribute (however modestly) to a larger policital and philosophical cause that is extremely important to me: the development of software tools that allow individuals and organizations to reclaim pieces of their online lives from commercial entities and proprietary tools.
Nearly anyone who has done this kind of work in the open and has given things away -- plugins, themes, tutorials, blog posts, forum support, whatever -- will have anecdote upon anecdote about how this kind of openness tends to lead to unexpected and wonderful results. That said, I can understand why some are reticent about giving things away. We all have bills to pay. And, sadly, there is no cosmic karma guaranteeing that each act of generosity be repaid in kind -- every developer of freely-available WordPress tools can tell stories about hours lost, and gray hairs gained, while interacting with unreasonable and ungrateful users. So, if someone were unconvinced that community work is the smart thing to do, I'd try to impress upon them that it's the right thing to do: if every person who's benefited from free software gave, say, 5% of their time back into free software, the world would be a far, far better place.
What was the thinking behind Commons in a Box, and what problems did it first set out to solve that weren't being solved effectively elsewhere?
The CUNY Academic Commons has been a model for many colleges and universities, both conceputally and technically. But reproducing and customizing something like the Commons -- built on thousands of hours of development, testing, trial, and error -- is no small feat. The extensibility and modularity of platforms like WordPress and BuddyPress are what make them so powerful. But these same qualities also make it daunting to set up a complex system of interacting plugins, themes, and other modifications.
The goal of Commons In A Box is to ease these difficulties. Commons In A Box does a couple of things, on your behalf, that help you get from a blank WordPress installation to a full-featured community site. First, we provide a curated list of plugins that are powerful, and we whitelist versions of those plugins that are known to work well together. We then fetch and install those plugins for you. We provide a theme that's tailored for academic and non-profit communities, and which provides a robust set of tools for customizing layout and appearance without knowing CSS. And we handle upgrades for those plugins and themes, so that you don't have to worry about whether, say, a new version of BuddyPress will break your site.
In short, we provide users with a head-start: instead of taking hours (or days, or weeks) to research, install, and configure WordPress plugins and themes, one can quickly get to work fostering community engagement.
What have you learned through iterating on Commons in a Box, and what might you consider doing differently if you could start again knowing everything you do now?
Technically, I think that Commons In A Box is pretty solid. Ray was the primary developer of its core functionality, and did a fantastic job building something that can easily be maintained and extended. And our theme developers, PressCrew, built a theme that strikes the perfect balance between ease-of-use and flexibility, without making any sacrifices on elegant design.
My biggest challenges during the development of a relatively large project like Commons In A Box were related to management. Most of the time I devoted to the project was not spent writing code, but doing code reviews, managing deadlines, leading testing, handling communication, and so on. I discovered that, while I like (and think I'm good at) playing a leadership role in a public volunteer project like BuddyPress, leading a grant-driven project like Commons In A Box takes a whole different skillset. I don't really have the chops, or the desire, to do project management for my day job.
With Commons in a Box, Anthologize, Participad, and in a lot more of your work besides, there is (or seems to be) a real emphasis on community publishing. Which comes first for you -- community or publishing -- or are the two inextricably bound together?
The core idea that motivates my work with free software is that users should have control over what they do and produce online. It just so happens that I came to software development through BuddyPress and WordPress, so that my professional emphasis has been on tools for web publishing and community. In another universe, I'd be working on a different kind of free software :)
That said, community and publishing software are particularly important insofar as they both enable kinds of activity that are central to the way we conceive ourselves: the things we write, and the connections we make with others. Those who develop these kinds of software, then, have a special privilege and resposibility to respect user freedoms.
What roles do you see WordPress and BuddyPress playing in the ongoing transformation of education, and does it make a big difference that they're Open Source?
Education (especially the liberal arts college experience) is often described as the process of turning youth into citizens. When a student takes a course in philosophy or physics or history, she's gaining a set of tools for participation in society, for representing herself and her needs in a respectful relationship with the world around her. The rise of free software parallels this conception of education in a nice way: things like WordPress and BuddyPress are tools that enable students to become fully realized agents, individuals with control over who they are and what they create.
From a philosophical point of view, it's far more important that these tools are free (as in speech) rather than that they're open source. Most students are not technically inclined, and the idea that their favorite piece of software was developed using a given methodology is probably not very interesting to them. What does matter is that free licenses like the GPL protect their rights to use the software as they see fit.
More concretely, the ideas behind free software are very much in keeping with the public-engagement goals of universities, especially public ones. That means that schools are, more and more, embracing free over proprietary software. This has a cascading effect: students are creating content using software they'll continue to use after leaving the university; the university is free to modify the software however they'd like for their own purposes; development funds go toward hiring free software developers who are generally local to the university and sympathetic to its purpose, rather than toward huge licensing fees paid to faceless software companies. It's an amazing trend, and I'm proud to be playing a role in it.
Do you see a point at which educational and other organizations will be able to ditch proprietary networking, teaching and knowledge sharing solutions for Open Source alternatives? What, if anything, stands in the way of that happening?
I think it's already happening, little by little. About five years ago, the CIO of one of the CUNY campuses told me they couldn't support WordPress because "they didn't have a Linux person on staff, and they never would". In the fall of 2012, I helped this same campus move its externally hosted, guerilla WordPress installation to a Linux server supported internally by the IT department.
Leadership in campus IT is extremely conservative. For university CIOs, "free and open source software" has traditionally meant software that's insecure, feature-weak, unreliably, and -- most importantly for them -- unsupported. In the last few years, the zeitgeist has shifted, at the same time that free software itself has gotten better. The marketplace that provides services and support related to free software, from big companies like Red Hat and Automattic to individual consultants like me, has played a big role in making free software seem less like a gamble to
these very risk-averse individuals. People on the academic side of the university -- faculty, deans, provosts -- generally don't need much convincing to be sold on the practical and moral benefits of tools like WordPress, so as CIOs gradually find the idea of free software more palatable, there's a potential for the floodgates to really open on its use in universities.
Has working at CUNY afforded you development opportunities that you might not have been able to give time to if you working in, say, corporate or startup space?
Definitely. CUNY has historically been a very particular kind of social justice institution, catering to a huge underserved subsection of New York City. So it's been a fantastic place for what I'd call "activist software development": the building of tools that are conceived to suit our specific needs, but are also designed from the start to be given away.
As I've done more and more work outside of CUNY as a freelancer, I've found that this same spirit -- the desire to serve through building -- exists within educational institutions all over the world (though sometimes not as openly as at CUNY). I'm really pleased that I've been able to do contract work for a wide variety of schools, playing my part in spreading the good news of free software.
On a personal level, I don't think I'd deal well with corporate or startup culture. I get bored easily, and thrive on learning new things and dealing with new people. My preferred lifestyle is to spend 30 or 40 hours a week doing interesting and highly varied work, and to spend the rest of the time with my family. Pumping out 60-80 hours weeks working on a single app as part of a startup? That's a young man's game :)
What are you most excited about working on next, and what would you like to see happen longer term for WordPress and BuddyPress in your context?
By design, more and more of my work has been about tool-building, rather than website-building. This kind of setup has worked really well for me, satisfying my dual desires to keep my work varied and to have maximum impact. I'm currently in the process of working with a couple of different colleges on new tools to make WordPress and BuddyPress work better in the academic context: from beautiful BuddyPress portfolios, to full-featured BP file management, to group RSS curation in WP. Beyond the next six months or so, I don't know what I'll be doing -- but that too is part of what's exciting!
One of the long-term goals I have for BuddyPress is for it to play a meaningful role in rethinking a truly distributed social web. Today, so much of our social content is locked up in centralized silos like Facebook and Twitter. BuddyPress eases this centralization at a small scale, by enabling niche communities, like schools, to set up their own internal networks. But I can imagine taking this idea even further. BuddyPress (much like WordPress already is) could be a tool for individuals to take control of the social content they produce around the web. BP could aggregate content you leave elsewhere -- a comment on someone else's blog, say -- while federating with the BP installations of your friends and colleagues. The open standards that will make this kind of personalized, decentralized social hub possible are starting to mature, and I'm anxious for BP to play a role in putting this kind of control within the reach of the masses.