To make the Promote MDN WordPress plugin these last couple weeks, I've worked with WordPress more than I have in the previous decade. I've run dozens of sites with WordPress, but have never been active as a developer or contributor. Observations:
Keep code tidy - Okay, so there's globals and no MVC. But I copied messy code from SEO Smart Links, ran it thru PHP_CodeSniffer and it was actually easy to follow and work with it, due to the ...
Good docs - The codex has lots of good info. I Googled for stuff like "wordpress http get", "wordpress cache", and "wordpress i18n" and the codex docs always had what I needed.
Can leverage Verbatim for l10n - After I made a .pot file for the plugin, I added it to our existing MDN project on verbatim. Within hours it was translated into Dutch, Polish, and German. Then a couple days later Brazilian Portuguese and Spanish too. I love our localization teams so much.
Releasing is painful - It's exactly this painful. It makes me really love and appreciate our new chief deployment system on MDN, and heroku for my other sites.
Releasing is cool - It's cool that the plugin is now just a couple clicks away from millions of users. The appeal of "app stores" I guess.
Promote MDN Plugin - adds links to MDN to your WordPress site content
Mozilla and WordPress
WordPress runs about 55 million websites in the world. 332 million people view over 2.5 billion pages on WordPress.com's hosted sites alone, where there are also 500k new posts and 400k new commentsevery day.
Which makes me wonder - does Mozilla have any official or intentional relationship with WordPress? Should we?
WordPress empowers people to make and control their own content on the web. (As opposed to, say, Facebook Pages) It seems like we could combine efforts in some cool ways. At the very least, many of our projects and websites could probably put together a cool and useful WordPress plugin of some kind. It's really not bad at all.
Obviously, "brogrammers" aren't the only ones in our community who enjoy alcohol. Ryan correctly points out that drinking is widespread, yet "brogrammers" are, thankfully, a small though obnoxious minority. So we can ask bigger questions - What is it about alcohol that we like? What does it do to us? Then finally, how should we incorporate it into community events?
What is it about CH3CH2OH that we like?
Alcohol directly affects the prefrontal cortex responsible for judgement and inhibition by prolonging the opening of chloride ion channels which floods post-synaptic cells with chloride ions so the cells cannot as readily respond to stimuli. Alcohol also inhibits dopamine breakdown which extends our dopamine system's pleasure sensations. Alcohol acts as a sedative on our entire central nervous system.
Our brains need some R&R - All of this can be especially relaxing for people (like developers?) who are constantly exercising their central nervous system; the prefrontal cortex is particularly believed to work on complex cognitive behavior like solving abstract problems. No wonder we like to give it a rest!
Alcohol is an identity microscope
As we relax our prefrontal cortex, we also lose inhibitions and judgement.
A couple years ago I discussed this from a Christian perspective with my theology professors (over a couple pints of beer, of course!). Drinking alcohol ranges from religiously required (as in my Catholic tradition!) to socially taboo (in some mainline Evangelical traditions) to religiously forbidden (in Mormon and some fundamentalist traditions) among Christian worldviews. So, we covered lots of angles. I left with an opinion that as alcohol lowers our inhibitions, we can somewhat discover how much of our faith is just inhibitory religious codes, and how much we are actually allowing our "true selves" (as Thomas Merton calls it) to be transformed to the life of Jesus.
It's not just a religious thing. We all know "sloppy drunks", "mean drunks", "emotional drunks", "tired drunks", etc. But alcohol doesn't make us mean or angry or sexist or emotional - alcohol removes other inhibitions we pile on top of those parts of ourselves. So here's the point - if I make a sexist comment while intoxicated, I'm sexist. (For whatever definition of 'sexist' we use.) If I'm sexist, that's something I need to change, regardless of alcohol consumption.
We need to improve as a community in lots of ways, with or without alcohol.
Can we put alcohol on the same level as caffeine?
Since I'm only making my rough observations and opinions, I don't have any specific suggestions for how we should handle alcohol at tech community events. Ryan makes some good ones in his post, there's a decent little discussion going on in Mozilla's engagement-developers list, and Rob gives some good general advice.
I very much agree with Ryan and Rob. I'd like to see alcohol as one entertainment among many at technology events. It can be an aspect of any event, but shouldn't ever bethe main aspect of any event. I personally will always go check out the craft and local beers available at any event. (I make a habit to try to visit a brewery and a cathedral anytime I travel.)
But what I really want at these events, and what happens the vast majority of the time, even the "party" events, is to mingle with others who are passionate about technology - no matter what drink they're holding.
It was a great experience. Mozilla sponsored our after-party (thanks Stormy!) where I emphasized Mozilla's mission to open and improve the web for everyone - from 450 million Firefox users all over the world to 40 developers in Tulsa, Oklahoma. Here's a quick summary of the projects that more-or-less finished (more details at the website):
At Mozilla we have lots of remote employees who live in towns outside of the "hugeness bubbles" like Silicon Valley. I want to encourage any and all remote employees to get involved with their local technology and developer communities. To promote the Hackathon, I went on a whirlwind tour of our local groups - I spoke about Solr @ Tulsa Java, mobile web development @ Mobile Tulsa, attended a Tulsa .Net developers meeting, arranged an HTML5 track at Tulsa Tech Fest (where Dave gave us the big auditorium stage!), and attended our community leadership town hall. It was tiring, humbling, and inspiring. I'm still processing it all.
Programs like Mozilla Reps help amazing and effective volunteers to promote the Mozilla mission in local communities. In fact, out of all this activity, one of our Tulsa Web Dev's is applying to the program. But that shouldn't offset employees evangelizing for a free, open, and better web right in our own back yards!
Instructions for humans are nowhere near as good as instructions for computers. Humans make mistakes, misunderstand, and are generally not as fast as computers when doing this kind of thing.
Amen to that. If you read some choice excerpts from our #mdn chat log, you'll see how slow I am (and how patient lmorchard is) re: vagrant. Even though I'm slow, I presumably have more "sysadmin" experience than the oft-cited hypothetical design contributor just trying to make a CSS fix, and yet vagrant and puppet make me cringe. So far, vagrant and puppet have only introduced MORE setup pain - and not the regular MySQL setup pain that I (and yes, even designers) have done dozens of times already.
Making boxes put boxes into clouds for your boxes
I've also started playing with Puppet by itself, to build plain-vanilla VM appliances and to spin up cloud servers on Amazon EC2 and Rackspace Cloud Servers. It's going pretty well, and it's conceivable we could do without Vagrant to script the build of downloadable VM appliances and to spin up disposable cloud servers.
lmorchard is spot on - maybe because he's tired of dragging my slow brain thru vagrant and puppet. Our CI machine should generate vm images with 1-button deploy to Rackspace or Amazon. I think this idea of using VM's to encourage community contribution to website projects is an all-or-nothing deal. If it doesn't work 100%, it's worse than failure. If a community contributor runs into problems with vagrant or puppet, it's much worse than if they run into problems with MySQL or pip. At least there's a bunch of established resources to debug MySQL - I couldn't find much debugging resources for vagrant, besides lmorchard.
At SourceForge we had this kind of "ideal" setup for years. The Service Operations Group at SourceForge maintains sandbox servers with an admin dashboard for creating, managing, and destroying per-developer sandbox vm's that run instances of SourceForge.net. (Though sadly it's behind corporate LDAP - only given to employees) I don't know if/how that model could scale from a single site to dozens of sites all with different moving parts. And there are big latency issues developing on a remote vm. Still, it's exactly what we would want for that elusive CSS designer who wants to fix Mozilla sites without setting one up. She clicks "Create MDN Sandbox" and gets an email containing the domain and access credentials to start editing code on her sandbox. Beautiful.
The virtual machine is us
The web is no longer just linking information ... the web is linking people. People sharing, trading, and collaborating.
In all this technology, we sometimes lose track of the people. I don't want to abandon the idea of using virtual machines to encourage community contribution; the SourceForge sandbox model is, for me, the ideal system for enabling easy contributions from casual community developers. I'll join work for something similar at Mozilla.
I do want to highlight an additional on-ramp for getting community developers involved with Mozilla websites - Mozilla webdev's should get involved with our developer communities!
A couple weeks ago at our Tulsa Web Devs coworking day, Buddy and I were talking about Mozilla and he asked how he can get a job at Mozilla. I said Mozilla really likes looking at your open-source code, and also likes hiring community contributors. He asked how he should become a contributor. The easy answer is go to the Get Involved with Mozilla page, but since I was working on MDN that moment, I showed him the kuma repository I was working on. He forked it and went thru the "menial and often fragile setup" in our installation.rst; I fielded his questions as he went.
Of course, we can't spend all our time recruiting and mentoring community developers to do our work for us. [Or can we? ] And Buddy is an exception in his level of commitment to contribute. So, yes we should reach out to those developers looking to make a casual CSS fix without wanting to set up a whole website environment (though we've received those 1-line CSS commits into MDN even without vm's). That's a good reason to pursue turn-key VM's.
But if you're at a conference or an event and someone asks you how to get involved with or fix a bug on Mozilla websites, don't just send them to a page or a virtual machine - pull up a chair and work with the real human sitting next to you.
At my last work week in Mountain View, I sat in on a few #devengage meetings. I heard someone (maybe Christian), say we do a good job talking to the top 20% of web developers but not necessarily the bottom 80% - the long tail of web developers. At Mozilla, I know I'm not in the "top" 20% of Webdev - there are just too many awesome webdevs around me. And though it's intimidating, it's also exhilarating to work alongside so many top-notch developers who can teach me the "top" 20% of web development skills. (Les, I'm looking at YOU!)
Still, something many of us remote Mozilla employees appreciate is the "rock star" status that working for Mozilla grants us in our local places outside of "Hugeness bubbles" like Silicon Valley. The Mozilla reputation is relatively higher and commands more attention outside these bubbles.
I'm smart enough to know that I'm NOT smart enough to attract that many developers on my own merit. The simple fact is putting "Mozilla" next to a speaker's name in Tulsa, Oklahoma attracts relatively more developers than it does at High-Profile-Town Tech Conference 2.0. In Portland, at Open Source Bridge with 480 attendees, where more knowledgeable and more adept Mozilla Webdevs spoke; they attracted roughly the same 40-50 number of attendees at each of their talks - including those of us in Webdev!
What if Mozilla leveraged our remote employees' clout to reach out specifically to their local web developer communities - the "bottom" 80% of web developers like me? What would that do? I would hope a few very cool and important things:
Push & pull more web developers towards the "top" 20% which ...
Flattens the head of web developer knowledge and skill, which ...
Raises the overall level of web developers
I've read the Long Tail. I agree power laws are natural and healthy distributions. We need the top 1% and the top 0.1% who are pushing development limits at the razor's edge. At the same time, Mozilla is about flattening power for the benefit of the individual and the betterment of the web. We could do really well if we purposely reach further outside the "top" 20% of web developers.
But what would it look like? Does Mozilla send staff to smaller local events where we already have remote employees? Do we sponsor these events? Do we bring some developers from small communities to Mozilla HQ for a work-week? I don't know - I'm asking.