Getting off the island in 2013
Posted:
And so 2012 draws to a close. The world didn't end, to the disappointment of many. In some ways it was an eventful year, in others rather ho-hum follow-ups to the excitement of 2011.
In the Drupal world, though, 2012 will go down as the year Drupal finally began replacing NIH with PIE. Compare Drupal's 8.x branch a year ago with it today. A year ago, we had one class of 3rd party PHP code, in an uninteresting corner of the update system. Today, it contains 3rd party code from no less than five different projects: Symfony, Doctrine, Guzzle, Assetic, and Twig. Those libraries are included via Composer, the new and ground-breaking PHP-library-management-system-that-actually-finally-works. Code from at least one more should be landing soon.
Drupal developers, working on Drupal, have contributed to a number of other projects, including Symfony and Symfony CMF, and because of the degree of code sharing happening in the PHP world now have indirectly contributed to a half-dozen other major projects, too. Drupal 8, aside from the technological advances it will offer over Drupal 7, also represents perhaps the largest cultural shift in Drupal or PHP history.
Are you ready for 2013, Drupal? Really?
Like many PHP projects, Drupal has been its own island for years. A large, active, vibrant island, but an island. But in 2012, the PHP archipelago began to form into continents. With the bridges built by Composer and by the "open islands" made possible by the PHP Framework Interoperability Group and PSR-0, collaboration and sharing between PHP projects has never been higher.
That represents both a threat to Drupal's traditional island-based culture, but also an incredible opportunity. We have an incredible opportunity to, as Greg Dunlap has put it before, "get off the island" and learn from others outside of our community. No matter how big the Drupal community, the PHP community is larger.
So, I put this challenge to the Drupal community: Make your New Year's Resolution to get off the island in 2013. By that I mean get involved in the wider PHP community, both to learn from it and to share with it. Let's be honest, Drupal has done some pretty amazing things, both technically and as a community, that we can and should share with the rest of the web development world. At the same time, we need enough humility to accept that there are way better ideas floating around out there than exist in Drupal, and we should be open minded enough to learn from them or adopt them wholesale.
In 2013, make it your goal to attend at least two non-Drupal web development conferences. Large, small, doesn't matter. If you can, present at least one of them; maybe about Drupal, maybe not. Connect with people outside of Drupal. Meet fresh faces; expose yourself to new ideas; share your awesome ideas with a wider world than just the followers of Druplicon.
Then come back to Drupal Island wiser, more worldly, and more able to continue to drive Drupal to be the leading CMS on the market.
For my part, I will be attending at least Sunshine PHP in February; I'm still looking for other conferences to speak at this year as well. (Suggestions and invites welcome, of course.) And all Drupalers have a unique and awesome opportunity this May to attend Symfony Live Portland, directly next door to DrupalCon Portland. Kick off your island hopping in Portland with the trifecta of conferences: DrupalCon, Symfony Live, and WebVisions. Attend at least 2 of them, or just do the combo pass. Help build bridges between PHP communities.
Perhaps the world did end in 2012: The world that consisted of only Drupal. That world is indeed gone. The new world of 2013 involves collaboration and sharing across dozens of projects. Let's make Drupal a leader in this brave new world.
</article>
</article>
</article>
<article class="comment">
<header>
<span class="comment-author">kvanderw</span> - <time datetime="2013-01-05T02:06:16+00:00">5 January 2013 at 2:06 am</time>
</header>
<div class="comment-body">
I guess I would be a bit careful about pushing Drupal into GitHub. One of the 'post' attractions to me about Drupal has a lot to do with the fact that all the contrib modules are standardized around GPL. I don't want to get into deep legal reasoning at this point, but maintaining that GPL requirement and controlling it through the d.o hosting of the Drupal codebase, is, in my opinion, an extreme strength of Drupal. I believe it is important to preserve that strength.
This is NOT to diminish the technical strengths, community strengths, or any other strengths of Drupal and it's community.
Thanks Kurt
Comments
We will, by embracing other libraries, grow the number of developers who improve Drupal, whether they know they are doing it or not and collectively improve the quality and functionality of open source software, including Drupal.
However the ensuing success and growth of the project and the community meant that as core developers moved on or burnt out nobody ultimately 'knew' the whole code...this meant that managing ongoing development and encouraging new developers was becoming difficult.
So I reckon that actually getting off an island, using 3rd party products and attracting other developers is healthy for Drupal and so makes the project manageable in the long term. :)
Did its homegrown approach to XSS prevent the steady stream of security issues that continue to appear?
Did its mixing of router logic and menu navigation do anything but put both CMS UI and site structure in an unnecessary straightjacket?
Was its 'unique' approach to rewriting SQL queries on the fly ever anything but an enormous headache?
Was its 'universal' node system ever a good base to build on, when so many core features avoided it like the plague?
Was "get X into core" ever anything but an enormous undertaking, showing contrib's deficiency as a proving ground?
And above all: was there ever room and flexibility to swap out components to find the optimal solution for each problem, or was everyone unnecessarily forced behind a single solution when multiple were required?
How can you really evolve a lean and fast architecture, when you're limited to extending a monolithic core through a flat namespace of hooks, which requires a political process simply to extend, but a miracle to restructure and reorganize?
It is ironic that a community that so loudly extolled the virtues of open source in reducing maintenance costs, did everything it could to increase its own.
Well said.
Jesus man, that was over 4 years ago, is that the only thing you are clinging to? You don't work within core, so ultimately, why is it a huge deal to you? If Drupal makes a change to adopt or leverage something that will bring more developers to the table, what is the harm? That is a force multiplier of programmers who are, or could, or are willing, to work back at core and contrib which seems to be sorely lacking right now after the D7 burnout. I am not trying to make you feel bad because you contribute a lot of good stuff, but at the same time, Drupal needs to be adding coders within its ranks instead of continuously see old guard move on without new people interested in helping it grow.
The more the code is internalized, the more Drupal isolates itself from others being able to contribute in because its not a widely agreed upon pattern, library or API, its just a few peoples thoughts on a nightmare-ish router system or pain in the ass theming system, or half implemented model system (Entity), or a core that makes thousands of PHP calls and hundreds of mysql calls per page load that just don't need to happen. From its contrib, Drupal has received a pass on these major flaws, but eventually (now), all of that needs to be addressed. This is the first step.
It's not about 'making patches' or whatever to 'make it better'. It requires a paradigm shift in thought and architecture. You can leverage open source solutions and still be on top of 0day exploits. Sure it may mean more releases, but is that such a terrible thing? Its Drupal's job to be the best option it can be- its someone elses job to keep their site up to date as required.
I would be interested in seeing Drupal becoming a GitHub project, because it feels too 'close to the chest' on d.org, and it feels much much easier to hop in and contribute/add patch pull request reviews etc there than an issue queue 200+ posts deep per issue.
The second one isn't ok to have as anonymous, you're addressing chx directly in an opinionated way while using "I" to refer to yourself. It is only fair to have everyone know who's involved in a discussion. I respect (and mostly agree with) your opinions but I disagree with how you did it this time around.
</article> </article> <article class="comment"> <header> <span class="comment-author">Anonymous</span> - <time datetime="2013-01-01T17:58:03+00:00">1 January 2013 at 5:58 pm</time> </header> <div class="comment-body"> The argument should stand on its merits. Who says it is irrelevant. </div> </article> </article> <article class="comment"> <header> <span class="comment-author">patcon</span> - <time datetime="2013-01-02T21:09:39+00:00">2 January 2013 at 9:09 pm</time> </header> <div class="comment-body"> Totally off-topic, but ++∞ for github. http://bit.ly/W2ZUSp :) </div> <article class="comment"> <header> <span class="comment-author">Anonymous</span> - <time datetime="2013-01-03T14:19:53+00:00">3 January 2013 at 2:19 pm</time> </header> <div class="comment-body"> Totally on topic. I feel it would make collaboration MUCH easier as well as the on-boarding process. Things on GH are much more transparent than gigantic issue queues and backdoor IRC chats. </div> <article class="comment"> <header> <span class="comment-author">patcon</span> - <time datetime="2013-01-03T15:09:31+00:00">3 January 2013 at 3:09 pm</time> </header> <div class="comment-body"> And using OAuth Connector module could allow us to authenticate each d.o account with Github so that creating a new project simply created a github repo and linked it on our end. In fact, the project pages could look pretty much the same as they do now, except that data on open issues and links to project browsing would pulls from and redirect to GitHub :)I spent some time trying to put together a proof of concept, but there's still an issue with OAuth Connector that keeps it from working with GitHub... didn't have time to work through it https://github.com/patcon/drupalgithub/