Theme Directory Launch Checklist

Tomorrow we’re going live with the new Directory! We’ll start going through the checklist February 25th 2015 1700 UTC.

  • Disable uploads on bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org themes. (@Otto42)
  • Disable themes.tracTrac Trac is the place where contributors create issues for bugs or feature requests much like GitHub.https://core.trac.wordpress.org/. sync process. (@Otto42)
  • Migrate themes to WP.
  • Switch over Directory to not use APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways..
  • Test themesnew API.
  • Test themesnew downloads.
  • Switch over downloads and API scripts.
  • Switch over URLs and redirect.
  • Switch over review sync script.
  • Enable theme uploads in directory pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party..
  • Notify Admins the ban has been lifted.

Disable uploads on bbpress themes.
Replace the uploader page with an “uploads temporarily offline” message.

Disable themes.trac sync process.

  • Announce launch in WPTRT meeting.
  • Commit an early return to sync-theme-review-results.php.
  • Inform Admins directly: No setting themes live between February 25th 2015 1600 UTC and the new directory is live.
  • Channel notification in #themereview.

Migrate themes to WP.
Run migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. script in /bin/themes/

Switch over Directory to not use API.

  • Commit https://cloudup.com/ckhD3Zl0Iso
  • Test on /themesnew.

Test themesnew API.

  • Switch to use themesnew.php on sandbox.
  • Test /wp-admin/theme-install.php locally.

Test themesnew downloads.

  • Switch to use themesnew.php on sandbox.
  • Test downloads locally and on /themesnew.

Up until here, no real damage is done, marks the last chance to postpone the launch.

Switch over downloads and API scripts.
mv index.php old-api.php
mv themesnew.php index.php

Switch over URLs and redirect.

  • Commit /themes removal.
  • Notify @seanosh about making the switch.
  • Commit mu-plugins commercial change.
  • Test the hell out of /themes.

Switch over review sync script.
mv sync-theme-review-results.php sync-theme-review-results-old.php
mv sync-theme-review-results-themesnew.php sync-theme-review-results.php

Enable theme uploads in directory plugin.
Remove custom message and uncomment upload handler.

#theme-directory, #themes-api

Theme Directory Update 2/23

Last week I fixed most of the fixable tickets for the Theme Directory, switched to using WP_Query instead of the APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. for server-side rendering of themes, updated the WordPress-based Themes API with changes from the bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org-based one, and finished the import script for the new directory. @otto42 committed the new reviews code today, so we should be able to get those integrated today or tomorrow.

Which means that we’re going to launch on Wednesday or Thursday!

There is still a lot more work to be done, but everything that’s remaining can be added, changed, or improved with the new directory active. Most importantly we want to make it available to language sites, so that we have an internationalized theme directory, and there will be more to be done around that.

#theme-directory

Theme Directory Update 2/12

The two major parts of my week were fixing bug reports that came in after my post on make/themes, and getting started with adopting @melchoyce‘s modal design (Modal == modal + single). With the exception of reviews and support, I tried to stick as close as possible to the mockup. While I’m obviously not done yet, a first pass however is live (including some mobile styles).

@otto42 made progress on the rating integration, working on a solution that lets us use existing ratings/review with limited migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. efforts. He projected to be done with that around Wednesday next week.

Next week I’ll be focussing on switching the server-side rendering of themes from using the APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. to using WP_Query directly. Towards the end of the week I’d also like to have ratings/reviews integrated and my work on the modal finished.

#theme-directory

Theme Directory Update 2/5

A very busy week with lots of improvements! These are some previously mentioned TODOs that I was able to scratch off the list:

  • Rewrote the Theme APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.’s update endpoint to work with WordPress.
  • Made synchronizing theme review results a cron job.
  • Made sure uploaded theme files are always deleted, no matter the outcome.
  • Added navigational links to Upload and Commercial pages (r1211).

Additionally, I removed the Admin approval workflow form the Directory pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party., since this is handled entirely on Themes TracTrac Trac is the place where contributors create issues for bugs or feature requests much like GitHub.https://core.trac.wordpress.org/..

I also opened the floor to bug reports from the community. After doing that at last week’s update here with limited success, I added another call for volunteers on make/themes which resulted in 15 tickets so far.

Next week I’ll be working though the tickets, as well as @melchoyce‘s Directory mockups, and @otto42 is still working on theme reviews/ratings.

#theme-directory, #themes-api

Theme Directory Update 1/30

It’s been two weeks since my last update on the theme directory. I had a chance to get my downloader and Themes APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. code reviewed by @dd32, but between attending an Automattic meetupMeetup All local/regional gatherings that are officially a part of the WordPress world but are not WordCamps are organized through https://www.meetup.com/. A meetup is typically a chance for local WordPress users to get together and share new ideas and seek help from one another. Searching for ‘WordPress’ on meetup.com will help you find options in your area., a WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more., and taking a couple of days off, it was hard to continue the pace of the weeks prior.

  • @otto42 started working on migrating theme reviews from bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org to WordPress.
  • Chatted with @samuelsidler and @otto42 about how we want to make the switch from old to new.
  • I tracked down a bug with jumping modal contents on small screens.
  • Added smooth scrolling for iOSiOS The operating system used on iPhones and iPads. devices in the theme modal.
  • Spent a day trying to figure out a way how I can prevent background scrolling on iOS when the theme modal is open.

If anyone has a fix for the last mentioned bug, please let me know. My CSSCSS CSS is an acronym for cascading style sheets. This is what controls the design or look and feel of a site. and JS foo is failing me on this one, I have not idea how to fix it.

I think the directory (with the exception of the theme uploader) is to a point where it makes sense to open it up to bug reports. If you find anything wonky and out of the ordinary, please feel free to file a ticket over at meta.trac, and assign it to the Theme Directory component. Thanks so much for your help!

#theme-directory

Theme Directory Mockups

This week I’ve been working with @obenland to mock up improvements to the new theme directory, focusing primarily on the single theme view.

(Note: you’ll want to zoom out to 50%)

Layout-wise, the mockups are pretty similar to this modal — sans-tabs (currently) — but use the overall style of the existing theme browser modal.

I have to admit that while it’s really slick and nice to quickly browse through, I do have some concerns about displaying the single theme view inside of a modal.

First of all, I’m worried that linking directly to a modal can be disorienting for users. Often when you load a new page and a modal pops up, your first impulse is to close it because it’s likely some sort of annoying notification or newsletter signup form.

Secondly, since themes have additional views (most importantly reviews and the support forums), having that kind of forwards/backwards navigation breaks the modal paradigm — modals are generally (though we do break this in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.) one-screen views. Additionally, unless we *do* add tabs, it makes quickly navigating to reviews and support more difficult, since now instead of being able to quickly flip over to a new tab, you need to scroll down and locate the button that brings you into the appropriate view. As a theme designer, I check these two tabs pretty frequently to check in on my themes. As a theme user, I often use those tabs when I’m browsing around for good themes to use or play with.

Lastly, I’m not sure if there’s a good way to open a whole bunch of themes at once to compare, since trying to open up the single theme view in a new tab opens it up in the current tab instead. This might be a technical issue we can overcome, I’m just not knowledgeable enough to know for sure. 🙂

If we decided against putting the single theme view in the modal, I think we could still make some good functionality and style improvements to the existing theme pages. The ability to flip back and forth between themes in the repo is particularly helpful. (Though maybe doesn’t work as well as a concept when you’re not coming in from a filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. such as popular or new, but instead are being linked directly to the theme itself — something for us to think about.) I think this is worth discussing either way and would be interested to hear what others think.

I also took some time to check out the theme list and have some thoughts there. Here’s a quick pass at an updated theme card design:

theme-directory-list-2

Instead of having “download” appear when you hover over the theme, I’ve replaced it with a persistent star rating. This is more consistent with comparable services, in which the act of downloading or purchasing is usually obscured behind one click. Since the theme repo is pretty fast, I don’t think this additional click causes much harm, especially since users will often want to preview the theme before downloading.

Additionally, I’d personally recommend against infinite scroll. In the case of theme searching, I think infinite scroll has the potential to hinder someone’s ability to find and compare themes. My thoughts on the topic are summed up pretty well by this NNG article:

Endless scrolling is not recommended for goal-oriented finding tasks, such as those requiring people to locate specific content or compare options. …Finding products by feature might be difficult to accomplish quickly if all of the products are presented linearly on a never-ending page, without sorting or other filtering or navigation techniques to help isolate the intended item. …In addition, locating a previously found item on an extremely long page is inefficient, especially if that item is placed many scrolling segments down. It’s much easier for people to remember that the item is on page 3 than it is to gauge where the item is positioned on an extremely long page. [Source]

I have some additional thoughts on making tweaks to the available filters in the theme directory, but I’ll save those for another time. 🙂

Meta Team in 2014

We’re a few weeks into 2015, but I wanted to take a moment to look back at the metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. team in 2014.

Over the course of 2014, we worked on a number of projects:

  • TracTrac Trac is the place where contributors create issues for bugs or feature requests much like GitHub.https://core.trac.wordpress.org/. improvements: A number of improvements to both trac and make/coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. landed, which make following tickets much easier.
  • Devhub: Working with the docs team, we launched developer.wordpress.org.
  • WordPress Meta Environment: Making it easy to contribute to the meta team was a priority and the WordPress Meta Environment shipped with just that in mind.
  • Open SourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL.: A number of sites were open sourced over the year, including the Rosetta theme, WordPress.tv plugins and theme, and more. (You can find all of our open sourced code here.) Additionally, developer.wordpress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ and apps.wordpress.org launched open source from the start.
  • WordCamp.org: Lots of iteration on current features, many improvements around automation, and the WordCamp Payments plugin launched.
  • SSLSSL Secure Socket Layer - Encryption from the server to the browser and back. Prevents prying eyes from seeing what you are sending between your browser and the server.: WordPress.org now forces SSL across all of our sites.
  • WordPress.org Profiles: Profiles got a design refresh, including badges for contributing to Make teams, and we’re now automatically pulling in more activity from Trac, WordPress.org posts and comments,WordCamp.org speakers and organizers, and theme and pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. repositories.
  • SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/: Setup Slack and wrote many custom plugins and integrations with WordPress.org.

Lots of other tickets were fixed over the course of the year and work on a new theme directory began (open source from the start!).

As always, if you’re interested in getting involved with the meta team, find us on Slack in #meta or dive right into the meta trac, filing or fixing issues.

Theme Directory Update 1/16

This week I finished converting the theme download script and the info endpoint of the Themes APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. While working on the Themes API, I added some documentation to the Codex page and published a post about the changes to the API that were needed for the new directory.

Additionally I improved the directories front-end, mostly around single theme views and server-side rendering of themes. Now tag “archives” and author pages are working and testable. I also changed the URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org structure for searches from /search.php?q=:query to /search/:query/ (more context) to align it with other parts of the directory.

Still to do:

  • Rewrite the Theme API’s update endpoint to work with WordPress.
  • Make synchronizing theme review results a cron job.
  • Make sure uploaded theme files are always deleted, no matter the outcome.
  • Import existing themes and ratings from bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org.
  • Make the theme and pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. available for translations.
  • Test localized versions.
  • Possibly add navigational links to Upload and Commercial pages.
  • Actually make the switch.

#theme-directory, #themes-api

Helphub Spec

At the WCSF community summit in October, one of the things we discussed was a support “hub” –  affectionately called “helphub” by @ipstenu – to replace support-related Codex pages and to act as the front page of WordPress support, likely living in front of the wordpress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org//support forums. In many ways, helphub is meant to mirror similar efforts by other organizations, like Apple, Disqus, GoogleMailChimp, Media TempleMozilla, and countless others. Below is a general overview of what we talked about to get things started.

Goals

Helphub has a few goals:

  • Replace support content (mostly on the Codex) with high quality, easy-to-understand articles.
  • Create a searchable repository that makes it easy for users to find content.
  • Reduce the amount of support forumSupport Forum WordPress Support Forums is a place to go for help and conversations around using WordPress. Also the place to go to report issues that are caused by errors with the WordPress code and implementations. posts by making it easier to find answers in helphub.
  • Provide a reference that support forum volunteers can link to for common questions

Stakeholders

The major stakeholders in the project are:

  • the support team – it will be tightly integrated with the support forum
  • the docs team – who will write and maintain the content
  • the metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. team – who will build and maintain the site

Solutions

To meet the goals listed above, we discussed two solutions:

  • A “knowledge-base”-style support section with high quality articles.
  • A powerful search feature for the knowledge base.

At the same time, it will be important to improve the support forums in ways that complement helphub.

Components

Helphub consists of three components:

  1. Content
  2. A knowledge base on WordPress.org
  3. Search

Content (Articles)

The success of helphub rests on great content. In order to generate this content we will:

  • Review analytics from the Codex to determine the most viewed pages.
  • Review analytics from the support forums to see what questions are most asked.
  • Ask support volunteers to generate a list of the articles they would find most useful
  • Ask WordPress businesses that provide support to their customers what the most common questions are.
  • From the above analytics, create a list of the top n articles that need to get written.
  • Put together a standard template for knowledge base articles.
  • Put together a KB style guide.
  • Start writing articles with end users in mind.

Until the knowledge base is built, we will need to host this content somewhere. There should be at least 15 articles created before the design phase starts, to provide the designer with content to work with.

Knowledge Base

The knowledge base should have the following features:

  • Good integration with the forums:
    • For example, a link that says “Still have questions? Click here to ask your question to a volunteer in the support forums.”
    • When a user starts typing a question in the support forum, a list of possible KB articles should be suggested.
    • A solid taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. system. Content should be flagged according to experience level (e.g., beginner, advanced, etc) and it should also be tagged with specific areas (e.g. wp-config, media, multisiteMultisite Multisite is a WordPress feature which allows users to create a network of sites on a single WordPress installation. Available since WordPress version 3.0, Multisite is a continuation of WPMU or WordPress Multiuser project. WordPress MultiUser project was discontinued and its features were included into WordPress core. Advanced Administration Handbook -> Create A Network.).
    • A quick way for forum volunteers to link to articles in the KB.
  • A “Did this article help you?” yes/no button to gauge the helpfulness of knowledge base articles.
  • Perhaps, the ability to leave feedback (comment) on an article. Comments would be private and allow an article editor to fix any issues.
  • A “related topics” feature.

To get to this point, we’ll need to:

  • Review other knowledge bases to determine which features work well.
  • Contact the leads of other knowledge bases (especially those in the open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. community) to see what works for them.
  • Create a detailed list of features needed for our knowledge base.
  • Develop wireframes from articles (see the content section above) along with our feature list.
  • Create mockups from the wireframes.
  • Determine the appropriate WordPress pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party./theme structure.
  • Develop a WordPress plugin to run our knowledge base.
  • Develop the mockups into a WordPress theme.

After this, we’ll need to fill the knowledge base with the content above.

Search

Good search is crucial to a good knowledge base. We will need something more powerful than the current search on WordPress.org. Rather, we should use elastic search to provide the best answers for users. To ship an effective search engine:

  • Determine the best search engine to use.
  • Develop the search engine.
  • Test and tweak the search engine.

We’ll probably rely a variety of other elastic search users to make this possible.

#helphub, #spec

WordPress.org Theme API Updates

In my last post I mentioned how changes to the Theme APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. that are necessary for the new Theme Directory, are done. It turned out that it’s only half true. Since the API is just as much based on bbpressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org as the current Theme Directory is, the underlying data source for it has to be changed as well, to use the new WordPress site that is being built. All of these changes will not affect the output of the API however, so let me go over the few things that we added recently, and that might be interesting for developers using the API.

The first step was a whitespace clean up, a chance to bring the code up to date with current WordPress coding standardsWordPress Coding Standards The Accessibility, PHP, JavaScript, CSS, HTML, etc. coding standards as published in the WordPress Coding Standards Handbook. May also refer to The collection of PHP_CodeSniffer rules (sniffs) used to format and validate PHP code developed for WordPress according to the PHP coding standards., to make it easier to grok future changes to the file. After that, two fields were added for theme responses, ratings and parent. Those fields are not included by default, so they have to be explicitly added to any request.

If ratings are requested, it adds an array with the number of reviews for each rating level. For Twenty Ten, it looks like this:

  public 'ratings' => 
    array (size=5)
      1 => int 7
      2 => int 0
      3 => int 9
      4 => int 31
      5 => int 88

The Theme Directory uses that information to generate the broken down rating statistics.

To be able to display decently rich information about a theme’s parent theme, the parent parameter was added. It will add an array with some information about the parent theme. Currently it has three rows, but if the need ever arises to add more information there, it’s possible to extend it to a full theme object without sacrificing backwards compatibility. For 2013 Green it looks like this:

  public 'parent' => 
    array (size=3)
      'slug' => string 'twentythirteen'
      'name' => string 'Twenty Thirteen'
      'homepage' => string 'https://wordpress.org/themes/twentythirteen'

For an example of all fields for a theme, you can use this poetic piece of code:

include ABSPATH . 'wp-admin/includes/theme.php';
$theme = themes_api( 'theme_information', array(
   'slug'   => 'twentyten',
   'fields' => array(
      'description'    => true,
      'sections'       => true,
      'rating'         => true,
      'ratings'        => true,
      'downloaded'     => true,
      'downloadlink'   => true,
      'last_updated'   => true,
      'tags'           => true,
      'template'       => true,
      'parent'         => true,
      'versions'       => true,
      'screenshot_url' => true,
   ),
) );

var_dump( $theme );exit;

#theme-directory, #themes-api