Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ericandrewlewis/4ef4963be7b21b3b520c to your computer and use it in GitHub Desktop.
Save ericandrewlewis/4ef4963be7b21b3b520c to your computer and use it in GitHub Desktop.
How should we decide what features to bring into WordPress core?

How should we decide what features to bring into WordPress core?

I worked on the Media Grid feature for WordPress 4.0. I thought it was more or less a no-brainer that the feature made sense for core. So, I would be taken aback when a few committers and contributors asked questions like "What problem does this feature solve?" or "Which out of the 230 bugs in the Media Component does this fix?" Essentially, why. I found these conversations tricky to navigate. Even though I'd been contributing to the project for a few years, I was (and still am) getting my bearings on how to think about features for WordPress core.

Is there a way we can think and talk about what features to put into WordPress core that we all agree on? Why not. Let's try an exercise.

WordPress has core philosophical tenets, which should inform everything about the project, including what features we add to WordPress. Here's the verbose treatment of these philosophical tenets, which I'll summarize:

Out-of-the-box - You can install WordPress in five minutes, and little extra configuration is required for a great experience.

Design for the majority - The userbase is mainly non-technical folks. Design the software for them.

Decisions, not options - The average user has no interest in tons of customizability, so don't offer it to them.

Clean, Lean, and Mean - WordPress provides a basic featureset, and integrating any new functionality into core should be used by 80% of the users.

Striving for Simplicity - Simplicity is good.

Deadlines are not arbitrary - One time a WP version took a year, that sucked.

The Vocal Minority - Engage users for feedabck proactively. Users that voice their opinions voluntarily are a minority of our real userbase.

Our Bill of Rights - see the four freedoms of free software.

There's a few other project principles I put in a separate WordPress philosophy cheatsheet, but won't include here.

Let's make success criteria based on the project's core philosophy

Some of the tenets of the core philosophy don't speak directly to whether a feature should be included: The Vocal Minority, Deadlines are not arbitrary, and Our Bill of Rights, so we'll leave those out. For the rest,let's make success criteria in the form of a yes or no question.

Out-of-the-box - does the feature improve the ease of installing/configuring WordPress?

Design for the Majority - is the feature easy to use or improve user experience for non-technical folks?

Decisions, not options - does the feature require much configuration for the user?

Clean, Lean, and Mean - is this feature going to be used by 80% of users?

Striving for Simplicity - is this feature simple?

Now, let's apply these questions to features of the latest and greated WordPress 4.0, giving a very rough, cursory score to how each feature performs against each.

0 for not at all, 0.5 for sorta, 1 for a resounding yes.

Media Grid

Score: 3.5 / 5

Does the feature improve the ease of installing/configuring WordPress? (Out of the Box)

No. +0 points.

Is the feature easy to use or improve user experience for non-technical folks? (Design for the Majority)

Yes, this is much easier to use than the attachment list view. +1 points.

Does the feature require much configuration for the user? (Decisions, not options)

No. +1 points.

Is this feature going to be used by 80% of users? (Clean, Lean, and Mean)

Probably not - many users we spoke to don't use the Media Library outside of the insert media modal context. But, this screen now presents itself like the insert media dialog, which will make it easier for a user to adjust to it if they ever need it. +0.5 points.

Is this feature simple? (Striving for Simplicity)

Yes. +1 points.

Embeds magically display as the embed in the editor instead of displaying the URL.

Score: 2 / 5

Does the feature improve the ease of installing/configuring WordPress? (Out of the Box)

No. +0 points.

Is the feature easy to use or improve user experience for non-technical folks? (Design for the Majority)

Sorta. It lacks discoverability, but provides better visual feedback in the editor. +.5 points.

Does the feature require much configuration for the user? (Decisions, not options)

No. +1 point.

Is this feature going to be used by 80% of users? (Clean, Lean, and Mean)

Unclear. +0 points.

Is this feature simple? (Striving for Simplicity)

Sorta. It is easy to drop a link in, but it lacks discoverability. +.5 points.

Focus 1.0: Sticky toolbar and sidebar widgets when scrolling TinyMCE

Score: 4 / 5

Does the feature improve the ease of installing/configuring WordPress? (Out of the Box)

No.

Is the feature easy to use or improve user experience for non-technical folks? (Design for the Majority)

Yes.

Does the feature require much configuration for the user? (Decisions, not options)

No.

Is this feature going to be used by 80% of users? (Clean, Lean, and Mean)

Yes.

Is this feature simple? (Striving for Simplicity)

Yes.

Finding the right plugin

Score: 5 / 5

Does the feature improve the ease of installing/configuring WordPress? (Out of the Box)

Yes, if you consider installing plugins part of configuring WordPress. +1 points.

Is the feature easy to use or improve user experience for non-technical folks? (Design for the Majority)

Yes. +1 points.

Does the feature require much configuration for the user? (Decisions, not options)

No. +1 points.

Is this feature going to be used by 80% of users? (Clean, Lean, and Mean)

Yes. +1 points.

Is this feature simple? (Striving for Simplicity)

Yes. +1 poitns.

Choose language at installation, install the selected language pack automatically.

Score: 5 / 5

Does the feature improve the ease of installing/configuring WordPress? (Out of the Box)

Yes.

Is the feature easy to use or improve user experience for non-technical folks? (Design for the Majority)

Yes.

Does the feature require much configuration for the user? (Decisions, not options)

No.

Is this feature going to be used by 80% of users? (Clean, Lean, and Mean)

Yes.

Is this feature simple? (Striving for Simplicity)

Yes.

Conclusion

I'm not taking these as a letter grades. If I am, I'm getting a C (Media Grid). They're rules-of-thumb, showing us how much coverage we have on our core principles in the work we are doing.

If a feature (like Media Grid) has spotty coverage of our project's main tenets, of course folks are going to argue the virtue of including a feature like Media Grid in core. I'm not saying Media Grid isn't fit for core, I'm saying it's not a resounding "hell yes" from a high-level, project perspective.

On the flip side, would anyone argue that internationalizing the installation process doesn't belong in core? Probably not, and not surprisingly. It is fully in line with our philosophy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment