Weekly i18n Chat Notes – September 22, 2015

Earlier today a handful of us gathered to talk about life, the universe, and things that may or may not relate to the meta team and i18n. Here’s a bit of what we talked about:

  • Plugins: Last week imported our first set of plugins into translate.wordpress.org! Hurrah! Huzzah! 🎤⬇️ And because we were feeling good about it, we also sent out emails to the second batch of plugin authors (~200 plugins). That import will start today or tomorrow and we’ll send out emails for the next import soon.
  • Translate: The stats page got some love with the addition of the Waiting column (see #1202) and some improvements to the design (see #1238).
  • Theme Directory: @obenland started work on the Translations section by adding a link to translate any theme to the page. Check out the Twenty Sixteen theme page for an example.
  • WordCamp: Set things up so the WordCamp theme can be translated (see #1076), pending deployment by the WordCamp team.
  • Forums: There was a mention that the Italian forums are not working. @ocean90 will investigate. Additionally, we’ve had a couple of requests for new forums. We think it’s okay to add new ones for testing purposes. For example, an RTL forum would be appropriate.

For the next week, we’re planning to work on the following:

  • Import and language pack status of plugins sent to a Slack channel.
  • Sorting / Filter UI finished up (or whatever we call it).
  • Streamline the process of adding per-project translation editors (see #1237 which requires #1240).
  • Work on updated design for project pages in Translate.
  • Possibly: More Theme Directory translation section additions.
  • Possibly: Rosetta headers fixed up (see #1201).
  • Possibly: Job system started.

See y’all next Tuesday at 11:00 UTC!

#forums, #i18n, #l10n, #meeting-notes, #plugins, #stats, #theme-directory, #translations, #wordcamp-org

Theme Directory Stats

Since my last post

After I wrote my post mortem for the Theme Directory launch, the last three weeks were spent fixing bugs and adding in enhancements that were not deemed launch blockers.

On the admin side a custom post status for suspended themes was added, as well as a custom view for themes that have new version pending. Also, there is now a simpler way to approve new versions and set them live from wp-admin. On the front-end the JS and CSS files that power most of the Directory were merged, removing the direct THX dependency that we had (it broke parts of the directory during beta). Development on the Directory will not stop of course, but it will be part of ongoing maintenance and feature development.

Analytics Stats

At the beginning of the project there were no formulated stat goals. Personally, my goal was not to drop in stats too badly, in a way that would suggest a major flaw in the Directory’s new structure. I’m happy to say that with the exception of the Commercial Themes page, that is the case—we even saw a lot of nice improvements!

Let’s start with the negative. The Commercial Themes page saw a drop of ~40% in visitors between the old Directory and the new. That number was at 60% right after launch, but it recovered and continues to recover with some adjustments we made to the link placement on the site. We concluded that the image-heavy (instead of text-heavy) design is likely causing people to use the directory and not click on sub-links as frequently as they did with the previous design, and we’re satisfied with the preliminary result of our mitigation.

Since we were about to complete change the markup and technical makeup of the Directory, my biggest concern going into this project was to lose page-rank and experience a drop in overall visitors. Thankfully this is not the case, visitor numbers remain constant, as are the search engine referral numbers. Another KPI that remained constant were theme downloads, which also indicates that there were no bugs on the Themes API and download handler side on WordPress.org. Given the level of optimization of the old Directory, I consider those numbers a success! It’s hard to improve a #1 page rank, but with added semantic markup and more structured data around themes it should definitely be solidified.

The most overwhelming result has been the huge jump in user engagement though. Users stay longer on the site, look at a lot more pages, and are way less likely to leave without any interaction. Comparing the week before the relaunch with this past week, session duration is up 9%. The amount of pages a user looks at is up 34%. And the overall bounce rate went down from ~30% to under 10%. Even on the homepage, where the bounce rate was at around 45%, we can see that drop by 2/3.

Overall this is a nice step in the right direction. I’m looking forward to further improved numbers down the road, and easier to achieve improvements after the move to WordPress.


New Theme Directory

The update to the WordPress Theme Directory from ten days ago marks the first time since its inception in 2008 that it has seen a major overhaul. The work on it is not done, but I want to take a few minutes and outline the objectives, what we gained from the update, and what still needs some work in the future.

The Goals

The WordPress.org infrastructure is almost as old as WordPress itself, with lots of interdependencies, running a mix of GlotPress, an old version of bbPress, BuddyPress, and WordPress. Since the Theme Directory was still based on bbPress, one the main goal was obviously to have it use WordPress. It was also in dire need of a design refresh and improvements to its search-ability.

The Gains

The Directory is now finally running on WordPress! It’s part of the WordPress.org multisite network and reaping all the benefits that come with that. With the move to WordPress and the resulting data format change, the theme downloader was also rewritten, along with the info and update check endpoints of the Themes API, and the script that syncs theme review results. User profiles and theme ratings also saw a small update.

For the first time, the Directory is now open source and the theme and plugin that do the heavy listing can be viewed, checked out, and contributed to on meta trac and svn!


The front-end is largely based on @matveb‘s work on THX and the theme installer, which results in a now consistent user experience between WordPress’ admin interface and the Directory. It also lets us take advantage of those super fast searches and front-end query caches that we have come accustomed to. The move also came with free improvements to the tag filter (tag permalinks!) and introduced author “archives”. THX was built for the backend, so there were some adjustments needed to make all pages search engine accessible and to make URLs then also consistently work between the server and JavaScript side.

The pages from the left hand navigation were drastically simplified and merged, leaving us only with preamble page to the uploader, the uploader itself, and the page of commercial theme shops.

Commercial Theme Shops

Theme shops used to be a multidimensional array where each change meant a code change that had to be committed. They finally became a Custom Post Type of their own, vastly simplifying their administration. If you look at their page, you’ll also notice that it reuses the regular theme UI, nicely making them blend in with the rest of the Directory.

Needs more work

We wanted to get the new Directory into the hands of users as fast as responsibly possible, but that doesn’t mean that it’s finished or doesn’t need any more work. On the admin side a custom post status for suspended themes will be added, as well as a custom view for themes that have new version pending. Eventually there will probably also be a simpler way to approve new versions and set them live from wp-admin. On the front-end the JS and CSS files that power most of the Directory will be merged, removing the direct THX dependency that we currently have (it already broke parts of the directory during beta), and also removing two file requests on a page load.

The #1 feature request for the Theme Directory is probably multi-author support. With the move, this is going to be infinitely easier to achieve and will also be available shortly. This should also make it possible to change authors on a theme without too much overhead.

Finally, the Directory is meant to also be made available to rosetta sites. The theme and plugin are fully localized and already translated in a good amount of languages, it’s down to figuring out how we can integrate that site of the WordPress.org network with localized subdomains.


After a bit of a longer two day…

After a bit of a longer two-day rollout than planned, the new theme directory is now live and functional.

If you find bugs (and we’ve already found a few), then please report them on the meta.trac using the Theme Directory component to flag them up. But please, do make sure somebody else hasn’t beaten you to the ticket. Here’s the list of current tickets for the theme directory: Meta Trac


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 bbpress themes. (@Otto42)
  • Disable themes.trac sync process. (@Otto42)
  • Migrate themes to WP.
  • Switch over Directory to not use API.
  • 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 plugin.
  • 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 migration 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 API for server-side rendering of themes, updated the WordPress-based Themes API with changes from the bbpress-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 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 migration 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 API 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 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 API’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 plugin, since this is handled entirely on Themes Trac.

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 API code reviewed by @dd32, but between attending an Automattic meetup, a WordCamp, 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 bbpress 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 iOS 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 CSS 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 Update 1/16

This week I finished converting the theme download script and the info endpoint of the Themes API. 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 URL 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 bbpress.
  • Make the theme and plugin available for translations.
  • Test localized versions.
  • Possibly add navigational links to Upload and Commercial pages.
  • Actually make the switch.

#theme-directory, #themes-api