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.
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 products 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 8 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.
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.
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.
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.
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.