How to Survive Gentrification of the Drupal Community
We're finally approaching the release of
Drupal 8.0.0 on 19th Nov. The
biggest achievement of the Drupal community to date. A complete rewrite of the core
system to use modern object-oriented PHP. An effort that is often referred to as
"getting off the island".
While the switch from Drupal 7 to Drupal 8 is a big change for developers, it is
the result of a slow process of maturation of the Drupal community. Drupal 8
brings changes that will be welcomed by many, will bring in many new users, and of
course, will push a few people out. How can we survive this "gentrification"
of the Drupal community and prosper without losing touch with why we loved
Drupal in the first place.
Gentrification
Cities all over the world are becoming more exclusive, more expensive, and a
natural result of this is gentrification. It's contentious. Some see this as
urban improvement, some as social cleansing.
I moved to London nearly 12 years ago. Dalston, to be precise. I was back in
Dalston this weekend for a party, and it's very different to how I remember it
from 2004. I compared the nice clean overground train to the unreliable
and dirty Silverlink trains that used to run to Dalston. Then, walking down Kingsland
road without being on guard. When I lived there in 2004 it was often cordoned off by police.
The hipsters, the trendy coffee shops, and other obvious signs of gentrification
proliferate.
Brixton was my home for many years, and I witnessed first hand the results of gentrification.
I had an office space in Brixton, and decided to
leave it when the landlord announced he was increasing the rent by 25%.
I lived in several flats around Brixton over the years, and eventually moved
(a bit) further south as rental prices in Brixton soared.
I say this with tongue in cheek, well aware that to many I'd be seen as one of
the gentrifiers!
It's the communities that settled here during the
1940s and 1950s
that gave the area it's eclectic multi-cultural feel. They're the ones who
have been displaced, losing their homes and community as developers and "yuppies"
take over.
Gentrification of the Drupal Community
I first used Drupal back in 2003, version 4 point something. It was fun.
Hacky, but fun. I had to quickly get a site up for an event we were organising
and Drupal offered a collaborative content model that set it apart from the
other produces we evaluated.
I came back to Drupal in 2007 for another community site build, and Drupal 5
had been released. It was really fun. Yes, still very hacky, but it came with
the power to build a CMS exactly the way I wanted it to work, and it came with
an awesome community of other hackers. A community of dedicated open-source
types, who valued openness, and working on projects for good. I was hooked and
made the leap to full time Drupal development. Through Drupal
I got involved in the first social innovation camp, and other tech-for-good
type things.
Szeged 2008 was my first Drupalcon. 500 Drupal contributors and users in a small
university town in Hungary. Everyone I met truly cared about
making Drupal an awesome project and was contributing time and effort in any
way they could. Several years later and Drupalcon have grown. 2000+ attendees in
Barcelona this year, 2300+ in Amsterdam last year. But, as the community has
grown, so has the commercial influence. With sales pitches as prevalent as
learning sessions on the schedule.
One thing I noticed this year was that several sessions concluded, or included,
a call for donations or funding to accelerate a particular module or project's
development. The precedent was set in the starting session of the conference when
the Drupal Association made an announcement about the Drupal 8 accelerate
funding programme. I'm not saying this is a bad thing. If this is what it
takes to get Drupal finished in today's conditions, then that's great. But,
look at it as an indicator of how the community has changed, when compared to
the sessions at Szeged seven years earlier. You would not have seen a call for
quarter of a million dollar funding back then. Everyone was there because they
loved it, not because they were being paid.
Hacking the hackers
While doing research for this post, I came across this brilliant essay,
The hacker hacked,
by Brett Scott about the gentrification of hacker culture. I quote his summary
of the gentrification process:
Key to any gentrification process are successive waves of pioneers who gradually reduce the perceived risk of the form in question. In property gentrification, this starts with the artists and disenchanted dropouts from mainstream society who are drawn to marginalised areas. This, in turn, creates the seeds for certain markets to take root. A WiFi coffeeshop appears next to the Somalian community centre. And that, in turn, sends signals back into the mainstream that the area is slightly less alien than it used to be.
If you repeat this cycle enough times, the perceived dangers that keep the property developers and yuppies away gradually erode. Suddenly, the tipping point arrives. Through a myriad of individual actions under no one person’s control, the exotic other suddenly appears within a safe frame: interesting, exciting and cool, but not threatening. It becomes open to a carefree voyeurism, like a tiger being transformed into a zoo animal, and then a picture, and then a tiger-print dress to wear at cocktail parties. Something feels ‘gentrified’ when this shallow aesthetic of tiger takes over from the authentic lived experience of tiger.
-- Brett Scott
How does this relate to the Drupal community? Perhaps it starts with the
NGOs and charities, our original flagship Drupal sites, that became our
"artists and disenchanted dropouts from mainstream society". Then the
big media companies move in as the "perceived dangers gradually erode".
Eventually, The White House start using Drupal, and we're at home with the large
enterprise clients and big corporate contracts.
As the Drupal project developed the requirements changed. Drupal's capabilities
improve, and the Drupal user base and community advanced too.
This is evident in the development, and
standardisation of things like configuration management. Something that was
never an issue in the early days, as the community became more professional,
solutions for configuration management were hacked together, and then
became standardised.
Configuration management is just one example of the many benefits the Drupal
community has experienced through the process of gentrification. There's also
great test coverage, performance improvements, greater tooling, and many other
advancements that came to Drupal as the community matured. Drupal became less
about hacking and more about software engineering.
Drupal 8
Development on Drupal 8 started in March 2011 and four years later, is to set to
be released on November 19, 2015. Over these years, Drupal has been rewritten,
removing most of the pre-OO era PHP legacy.
Drupal's legacy was the "not invented here" mindset that became entrenched in
the community through hacking solutions to extensibility into a language that
was not designed to support it. And, a culture of not depending on third-party
code due to early well publicised security issues with PHP extensions.
The move away from this legacy, the move to "get off the island", is a move
towards more standardised, modern, development practises, and a move to
embrace the wider PHP community.
Social cleansing
I mentioned before that gentrification is contentious. For some see it as
urban improvement, some as social cleansing. Drupal and the Drupal community
have clearly benefitted already, and it looks like prosperous times ahead for
those who come along for the ride, and the newcomers who join and adopt Drupal.
But, what about the social cleansing. Will parts of the community be pushed out?
Who gets left behind?
Drupal has suffered from an identity crisis. Because of it's flexibility, it's
been used for many things. Drupal's openness to hacking, extending and ability to
do just about anything, meant it was more than just a CMS. Over the years many
talked about "small core", many used Drupal's core tools as a Framework, building
apps and tools well beyond what a typical CMS would be used for.
Drupal 8 is a content management system.
Drupal 8 focuses on content management, on providing tools for non-technical
users to build and manage sites. That's what it always wanted to be anyway.
Drupal 8 leverages the wider PHP community, in particular the Symfony
components, as it's core. It no longer makes sense to see Drupal as a
framework.
One of the parts of the community being displaced, are those using
Drupal as a framework. If this is you then you may already be looking at a fork,
like Backdrop, or playing with other frameworks,
like the beautiful Laravel.
Another section of the community that may be displaced are those running Drupal
on low end and shared hosting. Through the
gentrification process, Drupal's requirements have increased.
The increased hosting requirements have meant that dedicated Drupal platform
hosting providers have emerged. More options for scalability and custom
software stacks have taken precedent over solutions for smaller websites.
Drupal also potentially loses the innovators.
Drupal always had a reputation for being cutting edge and innovative.
As it moves to become the enterprise choice of open-source CMS, innovation
becomes less important, and stability, security, and backwards compatibility
become more important. The biggest innovations in Drupal (flexible content
types and Views) date back to the 4.7 era. Views is now in core in Drupal 8.
As Drupal matures further from this point, we'll probably see Drupal adopting
innovations from other systems and ecosystems, rather than innovating on it's own.
It's well placed to do this now, built on Symfony components, innovations
from the wider community will be easier to integrate.
Surviving Gentrification
Do you abandon the form, leave it to the yuppies and head to the next wild frontier?
Or do you attempt to break the cycle, deface the estate-agent signs,
and picket outside the wine bar with placards reading "Yuppies Go Home"?
-- Brett Scott
Or, do come along for the ride? Enjoy the benefits of gentrification, without
losing the reason why you got involved in the first place?
If you're going to stick around then you're going to need change a few things.
Here's 5 steps that will get you started:
1. Learn the foundations that Drupal is now built on.
If (like me) you've got a background in OO then this shouldn't be too hard.
I did several years of post-graduate research into semantics and verification
of object-oriented software. You definitely don't need to go that deep, but I would
highly recommend getting to grips with classic works on
design patterns such as Gang of Four
and Martin Fowler.
With a basic understanding of the core "patterns" of object-oriented software,
you start to appreciate how Symfony works.
Drupal, Silex, Laravel, Symfony Full Stack, Symfony CMF, phpBB, Joomla,
Magento, Piwik, PHPUnit, Sonata, and many more projects are built on this same
foundation. So, it's definitely worth learning, and Drupal can be a good way
to learn it, while still working with a system you know well.
Try building a simple app with Silex.
Check out Drupalcon
(and Laracon) on
YouTube. There's some great stuff. Like this talk from Ryan Weaver about
Symfony and
this talk by Ross Tuck about Models and Service Layers.
2. Do PHP the right way.
PHP has changed. There's a lot of outdated information and a lot of legacy code.
Drupal 8 has been rewritten to remove this legacy code, but there's still a
lot of bad advice on how to write PHP out there.
Read PHP The Right Way for a full guide on
how modern PHP should be crafted.
3. Use Composer, use and create PHP packages.
Getting off the island, and embracing the wider PHP ecosystem means using
Composer, and it's ecosystem of PHP packages. There are many more packages that
are potentially compatible with Drupal, and by architecting your Drupal
extensions as more general PHP packages you have access to a much wider
pool of potential collaborators.
Creating PHP packages also forces you to write clean code, think like a
software engineer, and write more maintainable, extensible, and reusable code.
Check out The PHP League as examples of solid
PHP packages. They have a good Skeleton
starting package.
You may have made custom Drupal modules before. Try thinking about how you
can refactor these into separate packages, and using the Drupal "module"
as a small layer that integrates your logic with Drupal.
The SOLID
principles will guide you towards creating good packages.
4. Use an IDE
This was a big one for me. I was always against using an IDE, burnt by early
experiences with open-source IDEs. I settled on a customised Sublime Text
setup, and various other apps. I didn't see much benefit over using one app
for everything when I could combine a selection of my favorite apps to do
the same thing.
I'm not sure why I stuck to this. I also do a lot of C++ programming. I have
my own programming language (Cyril) for creating
audio-reactive visuals. I use XCode for C++ as the debugging tools are
essential when you're dealing with object graphs, memory management, and
debugging pointer issues. So, why not use an IDE for my web development?
I tried PHPStorm and it's great.
Far from the cumbersome experience I had in the early days with open-source
IDEs, it offers a smooth, fast, integrated experience.
I think you can get away without an IDE when you're hacking on Drupal 7, but
on an OO system like Drupal 8 you will need an IDE.
You will need the integrated tooling, testing, and you'll be much more efficient
with intelligent autocompletion, hinting, quick access to docs, and fast
navigation of the huge codebase.
5. Identify your values and serve your purpose.
As the corporates, enterprises, and big businesses take over, it's important to
remain true to your yourself.
By identifying your values
you will be well placed to notice when they are being compromised.
You probably got into open-source because you believe in
the power of collaboration. But, this value of collaboration can often be at odds
with the cut-throat corporate culture of competition.
To be aware of this is to be aware of the opportunity to spread openness and
collaboration with our work.
As the proceeds of Drupal's success flow into the community, it's important to
use this to do good. To continue to serve our communities and society as a whole.
To enable collaboration, share our work, and use openness to build the world we want.
Final thoughts
The real opportunity, is to spread Drupal's values of cooperation to the wider
population.
This is part of a bigger shift in society to adopt open-source values, principles,
and methodologies. Chris Anderson says it best:
If the past ten years have been about discovering new social and innovation models
on the Web, then the next ten years will be about applying them to the real world.
-- Chris Anderson
The Work Open Manifesto offers a useful
formulation of what it means to be open that can apply beyond open source
software: "Think Big, Start Small, Work Open".
Drupal is great case study for starting small, thinking big, and working openly.
The Drupal community has always has been
transforming, improving ourselves, improving the product, improving our practises,
and improving our tools.
Now it's time to think beyond Drupal, beyond the Drupal community, and to see
Drupal's values of collaboration, teamwork, and openness spread through the wider
community, society, and the world.