Auto Activating WordPress Plugins is the right choice

During the WordPress 4.2 cycle, one of the goals was to do some work aimed at improving the experience of users when updating and installing plugins.  While the decision was ultimately made to scale back to just updating for this release, the code that installed plugins also automatically activated plugins when a user installs them.  This generated a lot of controversy, but is ultimately what we should be doing for users.

The End User

Most end users of WordPress doesn’t have a staging site, doesn’t keep there site in version control, and doesn’t install plugins to activate them later on. When they install a plugin, they start using it right away. When they install a plugin, they want to either play with it to see if it works for them, or they set it up and start using it.

One of WordPress’s biggest strengths are it’s philosophies. One of them is that WordPress designs for the majority:

Many end users of WordPress are non-technically minded. They don’t know what AJAX is, nor do they care about which version of PHP they are using. The average WordPress user simply wants to be able to write without problems or interruption. These are the users that we design the software for as they are ultimately the ones who are going to spend the most time using it for what it was built for.

By following this philosophy, it is really easy for see that auto activation is the right path.

How about an option?

Some of the comments about this is that it should be a checkbox.  People think that the solution to a complicated and controversial decision is to add an option.  The WordPress philosophies once again guide us to say that an option shouldn’t be our default answer. We need to make smart decisions instead.

When making decisions these are the users we consider first. A great example of this consideration is software options. Every time you give a user an option, you are asking them to make a decision. When a user doesn’t care or understand the option this ultimately leads to frustration. As developers we sometimes feel that providing options for everything is a good thing, you can never have too many choices, right? Ultimately these choices end up being technical ones, choices that the average end user has no interest in. It’s our duty as developers to make smart design decisions and avoid putting the weight of technical choices on our end users.

Yes, there are right times to add options. Andy Adams points this out when he wrote:

Instead of making a theme either fully-customizable or configuration-free, I’ve realized that the ultimate goal is to add “just the right options” to make the user experience more pleasant

There are absolutely use cases for not auto activating.  Some developers like to use the UI to do installs locally and then check out the code before deciding to install a plugin.  There are also plugins such as ones that enable a maintenance mode or help with debugging that you want easily available, but not necessarily activated.  These are the exception though, not the rule.

Why Installs are not a part of 4.2

This leads us to now.  Despite auto activating being the right decision, the decision was made to remove auto installs in large part do to auto activation.  This is a decision I ultimately advocated for taking.  The problem wasn’t the activation, it was the experience of what happens after activating.  The UX needs to be cleaned up there.  We need to make it possible for some plugins to opt-out and we need to make it easier for users to take action right after installing a plugin.

Shiny installs will be back, and when they come back I fully intend to advocate for auto activation. This may change with more information, but right now it is the right choice.

Five Years of Contributing to WordPress Core

Five years ago today, my first patch was accepted to WordPress core. Oh how the time has flown.

This last year has been one of my most exciting years as a part of the WordPress contributor community. At the end of September, I was given commit access to WordPress Core. I was excited to join a group that includes some of the smartest people I know, while also being terrified at the responsibility being handed to me. It’s been fun so far.

One of the coolest things in WordPress core that I worked on this year is the “Log Out of Other Sessions” button on the bottom of users profile screens. This seems like a simple button, but adding this iteration (which was a part of the 4.1 release) was the result of live user testing I organized as a part WordCamp San Francisco 2014.

In celebration, I made two commits to core today. One of them was to start user testing WordPress with PHP 7. I’m excited to see how we perform vs. the nightly builds there. The other introduced a new version of grunt-patch-wordpress which is one of my favorite parts of WordPress that I’ve been able to spearhead.

I’m lucky to share my committiversary with my partner who got her first props one year ago. I’m even more lucky that WordPress helped me meet her.

Five years of contributing is a long time. I’m especially happy that five years in, I’m more excited than ever to help build the software that powers so much of the web. Here is to another five years!

User Testing WordPress at WordCamp San Francisco

 

WordPress 4.1 release lead John Blackbourn conducting a user test
WordPress 4.1 release lead John Blackbourn conducting a user test

Three days before WordCamp San Francisco, during the weekly WordPress Dev Chat, I came up with and proposed the idea that we should use the conference as an opportunity to do user testing. It was a last minute idea, but it’s one that I found valuable and that I would encourage others to do as well. In fact, I think it’s something more WordCamps should try.

The Preparation

Before the event, I setup a test site with the current version of WordPress Trunk along with the feature plugins that we wanted to test. For WCSF, this was Focus, WP Session Manager, and Improved Author Dropdown. I set these up on a public url so that users could do the test on there own machines. I think it is incredibly valuable to test people in as close to there natural environment as possible. While sitting at a conference isn’t where most people blog, if they normally use linux and you only have windows, using there windows laptop with there browser settings will help you understand there problems.

Recruiting Participants

We didn’t do a great job of recruiting participants in large part since we put this together at the last minute. I tweeted about the user tests, put up a sign and John Blackburn asked the volunteers at the happiness bar to send people over. Due to us doing this primarily during sessions, we ended up with people who self selected out of the sessions.

The Tasks

Another key preparation point is deciding what you will be testing. I like to have a simple script of what I say to each participant. I started by asking participants there names, and if I didn’t know them, a tiny bit about them. I also got there email address so that I could create an account for them. This helped to frame the test and also put there experience in context. Once they were logged in to WordPress, I asked each participant to create a new post. As the big feature I was looking for the reaction to Focus. I wanted to see how they reacted to the change when you enter into the editor. I wrote down the first reaction that users had. I then had them change the author. This part of the test was two fold. I wanted to see how they transitioned out of focus, while also seeing if found the Author drop down more usable. Most users used the select2 based drop down in the same way that they use the normal drop down.

After that, we asked users “If you wanted to get an idea of all the places you were logged into WordPress, where would you look?”.   This was to test the new session manager UI.

The Outcome

Now that 4.1 has been released, we can look at the results and see how they guided us.  One thing that we learned was that we needed to focus on discoverability of the new distraction-free writing.  This helped lead to us adding a feature pointer.   Users not immediately seeing a benefit in the list of user sessions helped us recognize that we might want to scale the feature back.  In the end, we decided a simple log out of all other sessions button would be the best option.

 

WordPress Hanukkah Releases

"Colorful dreidels2" by Adiel lo - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons.
Colorful dreidels2” by Adiel loOwn work. Licensed under CC BY-SA 3.0 via Wikimedia Commons.

WordPress 4.1 is the fourth major version of WordPress and the sixth overall version of WordPress released during the festival of Hanukkah.  The first release during latke time was WordPress 1.2.2 which came out on December 15, 2004. It was a patch release and the notes highlight it as:

This release fixes a few bugs and security issues and is recommended for all 1.2 users.

The following year, the first major release during Hanukkah took place when WordPress 2.0 “Duke Ellington” was released.  This release featured WYSIWYG editing, and many other great features.  My favorite part of the release notes is this gem:

Faster Administration — Call it AJAX, call it DHTML, call it Larry, but we’ve paid close attention to streamlining some of the most common tasks in managing your blog

It would be four years before the next WordPress release during Hanukkah when WordPress 2.9 “Carmen McRae” was released on December 19, 2009.  Carmen featured trashing posts, a built in image editor and a feature that has continued to be updated (including in 4.1)

Easier video embeds that allow you to just paste a URL on its own line and have it magically turn it into the proper embed code, with Oembed support for YouTube, Daily Motion, Blip.tv, Flickr, Hulu, Viddler, Qik, Revision3, Scribd, Google Video, Photobucket, PollDaddy, and WordPress.tv (and more in the next release).

The following year, WordPress 3.0.3 was released on December 8, 2010. This release was a security release that fixed some XMLRPC security bugs.

After taking 2011 off, WordPress 3.5 “Elvin” was released on December 11, 2012. It featured a long desired update to media.  It also brought in a new default theme (just in time)

3.5 includes a new default theme, Twenty Twelve, which has a very clean mobile-first responsive design and works fantastic as a base for a CMS site.

Last Hanukkah was an early one (and featured a rare Thanksgivukkah ).  While there was no major release, RC1 of WordPress 3.8 came out on December 4, 2013.

A few more releases and we’ll be able to create a WordPress menorah.

PHP UK – Here I come!

In just about two months, I’ll be making my international speaking debut when I present “Modernizing the WordPress Toolbox” at the 10th Annual PHP UK conference in London.

I’ll be talking about how updated we have updated the WordPress toolbox and build process from what would be considered antique at best.  I’ll also talk a bit about where it’s going to go and how our philosophies align with our tools.

This will be my first time speaking at a PHP specific conference and my first time speaking outside the USA.  I’m excited.

One Year Ago Today I got on a train

I ran around in a blur most of December 5, 2014 finishing packing, shipping boxes and cleaning my home for three years.  It took longer then I expected (though I remember to this day having great customer from USPS) to finish all my tasks and as I sat in my Uber on my way to Union Station, I knew there was no way that I would make my train. The next train would mean sitting for two hours in Union Station.  I texted two friends who jumped at the chance to have one last beer.   At 7:50 I boarded the train and said good bye to Washington, DC.

One year later and I’m loving NYC.  Nine days after moving here I went on my first date with an amazing lady who is now the love of my life. One month later I found an apartment where I can step outside and see the freedom narwhal. I’ve been to Yankee Stadium, Grand Central Station and seen Amateur Night at the Apollo.  I ate Corn beef at Carnegie Deli and Disco Fries in Jersey.  Between museums and theatre, I’m never at a loss for culture.

I’m loving this concrete jungle where dreams are made up.  One year in and I can’t wait for the next year to start.

Color Is Based on Surrounding Color

“The redness isn’t a property of the apple. It’s a property of the apple in combination with a particular lighting that’s on it and a particular observer looking at it.”

via These X’s Are The Same Shade, So What Does That Say About Color? : Shots – Health News : NPR.

Next to typography, color is the most important part of the visual design of your website. Yet, color is also very misunderstood. Color more than any other part of web design, does not live in a bubble. Color is about how things relate to each other. Saying that #990000 is an easy color to read can change if your background is black, white, or pink

Ensuring that colors contrast correctly means both ensuring that there is enough luminance contrast, but also so that there is enough simultaneous contrast. And if that isn’t enough, we also need to remember to take into account the psychological effect of different colors and the cultural meanings that our color can have.

These four factors combine to make color selection a non-trivial problem.  What makes color an even harder problem is that we are only at the type of the iceberg for color perception.  What else effects color display? Our screens calibration. The tools we use to change how color display based on the time of day. The cones in our eyes. The lighting in the room.

Color is far from a simple problem. All these factors combine to show why we can’t rush color decisions. They need to be thought out and considered from many angles. As Josef Albers wrote in the seminal Interaction of Color, “In order to use color effectively it is necessary to recognize that color deceives continually.”