The Road to 3.6 Beta 1

our original schedule had us hitting betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 today, March 13th. We’re not quite there. Beta should mean that we’re feature complete, and we’re not. We could do what we’ve done in the past, and declare a beta, while continuing to do feature work, but that just devalues the meaning of “beta”. I want people in the WordPress ecosystem to trust that when we say “beta”, that means we’re feature complete and that they should start seriously testing their themes and plugins against trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. for issues. If we continue with feature development during the beta period, that will just shove back everyone’s testing to the RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). period, which will translate to more issues going unnoticed and tarnishing the release.

Consequently, I’m pushing the beta date back two weeks, to March 27th, and the release back one week to April 29th. If our beta period is actually a beta period (to work on bugs, not features), three weeks should be plenty of time. Ditto for the two-week RC period, for major bugs. We’ve needed longer periods in the past because we’ve been doing major feature development through the beta period and into the RC period, which, as mentioned above, I don’t want to do again.

Here is the major new-feature or new-feature-related stuff that needs to be settled and land in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. (if they are going in at all) in the next two weeks (front-loaded as much as possible). Let’s redouble our efforts and get this sorted so we can get a beta out the door.

RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.

  • #16215 – Revisions author “off by one” bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. (@markjaquith) (@markjaquith)
  • #23497 — Finalize UIUI User interface (@markjaquith)

Post Format UI

  • #20564 — Post 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. revisions for PF meta (@markjaquith)
  • #23539 — Use preview PF postmeta
  • #19570 — Main UI tracking ticketticket Created for both bug reports and feature development on the bug tracker. (@markjaquith)
  • #23282 — Add shortcodes for inline HTML5 audio / video (@markjaquith)
  • #23673 — Add functions to generate metadata for video / audio (@markjaquith)
  • #23198 — Pass post format as a class to TinyMCE init (@markjaquith)
  • #16047 — Post format display on edit.php (waiting on icons) (@helen)
  • #23725 — Parsing tracking ticket (@markjaquith)
  • #23726 — Show Audio and Video previews on Edit Attachment screen (@markjaquith)
  • #22960 — Add functions to extract images from content, attached to post, [gallery], or arbitrary string (@markjaquith)
  • #23570 — Add functions to extract a URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org from an arbitrary string, HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers., or the current $post (@markjaquith)
  • #23572 — Add functions to parse Audio / Video data out of arbitrary content or a post (@markjaquith)
  • #23625 — Add function to extract or parse chat as structured data (@markjaquith)
  • #23347 — Theme fallbacks for post format meta data (@markjaquith)

Twenty Thirteen

Post locking

  • #23665 — One autosave per user per post — has patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. needs testing and commit (@markjaquith)
  • #23697 — Needs some UI love for the lockout message and work around the avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. code (@markjaquith)

Nav Menus

  • #23770 — finalize UI for theme locations (@markjaquith)
  • #23450 — nav menu sources as accordion (@markjaquith)
  • #14045 — accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) mode for nav menu editing (@markjaquith)
  • #23608 — Help text updates (@markjaquith)

#3-6

Dropping Editorial Flow

I’ve decided to drop the Editorial Flow feature from the 3.6 roster. A few things happened. We looked into what the main feature (“forking” a published post and allowing it to be edited then reintegrated) would involve, and found that there were some really fundamental hurdles that were unlikely to be resolved in the time given. A lot of time was spent on the planning stage, and we just kept surfacing more questions. Moreover, because the hurdles were so low-level, they would have required a significant amount of time from a coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. lead like me, @nacin, or @ryan — time that we just didn’t have to give this cycle due to other responsibilities. What that left was #12706 — a somewhat related ticketticket Created for both bug reports and feature development on the bug tracker. with a long-running monster patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.. This similarly needed (and still needs) a core lead to dedicate a lot of time to planning, reviewing, and committing it. That might happen, or might not. It didn’t seem fair to keep @danielbachhuber and @kovshenin responsible for something that might or might not make it, subject to other people’s availability.

Though disappointing, this effort wasn’t wasted. We learned a lot about the challenges involved, and we’re better positioned to tackle it in the future with more advance planning and a better understanding of the core team resources that need time dedicated to it.

#3-6

A first draft of the Twenty Thirteen theme…

Screen Shot 2013-02-18 at 5.15.50 PM

A first draft of the Twenty Thirteen theme is now in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., for your inspection and iteration. See: r23452

A demo site is available for you to browse.

@matt set the goals for this theme: a focus on blogging, and great support for post formats (which are getting attention on the backend in 3.6 as well). Under Matt’s guidance, @joen explored the artistic possibilities and was joined by @obenland and @lancewillett in bringing it to fruition.

What you’ll notice first is the colors. Way more use of color than a bundled WordPress theme has had before. Each post format has its own color, so each is distinct, yet they are all complimentary. The bold colors encourage authors to try out all the different formats. This color extends the full width of the window, which breaks your blogblog (versus network, site) up into a lush, segmented timeline. This effect is even more pronounced on mobile browsers, where the screen can be dominated by one or two posts at a time, in all of their chromatic fullness.

On closer inspection, you’ll notice details, like the font-based icons (“Genericons”, by @joen) that scale up to any resolution or zoom level and can be easily recolored using CSSCSS Cascading Style Sheets..

You may notice some playful details, like the size-offset pagination arrows:

Screen Shot 2013-02-18 at 4.52.23 PM

Or the 404 page (which I’ll leave to you to find).

One of the goals of having a new theme every year was to give ourself room to experiment. That hasn’t really happened. We’ve been far too conservative, trying to make themes that work reasonably well for everyone, but don’t push boundaries too much. That changes with Twenty Thirteen. It’s hard not to have a strong feeling about the theme, one way or another. It defies you to give it a shrug or a kurt nod. Some of you will hate it. And that’s okay. We’ll still be shipping Twenty Twelve, which is an excellent base theme and a canvas on which you can build anything from a blog to a static content site. But with Twenty Thirteen we’re taking a bold stance: this theme was meant for blogging, and it’s not a blank canvas. It comes pre-marinated with playfulness and warmth and opinions.

Twenty Thirteen really prefers a single column layout. Widgets live best in the footer, where jQuery Masonry bricks them together (but it supports a sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme., if you really insist). HeaderHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. images have a fixed width and height, and will be cropped at smaller resolutions, so the best choice is an artistic header where not 100% needs to be shown all the time (it ships with three).

Now that we have a first draft of Twenty Thirteen in core, it’s time to start iterating and sanding off some of the rough edges. AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) is still important, even when making bold artistic statements, and I’d be surprised if we didn’t have work to do there. We’ll need testing on lots of different browsers and platforms, and with lots of different plugins. @helen‘s Post Format UIUI User interface team will need to give feedback on upgrading Twenty Thirteen to use the new post format 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. functions that are available.

@lancewillett and @obenland will be holding Twenty Thirteen office hours on Tuesdays and Thursdays at 1700 UTC. Interested parties should make an effort to attend and help us get this beauty ready for betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process.!

#3-6, #bundled-theme, #theme, #twentythirteen

Feature Team Updates and Office Hours

The WordPress 3.6 feature teams should be updating here on make/coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. twice a week, on the following schedule. List any major developments, summarize any notable IRCIRC Internet Relay Chat, a network where users can have conversations online. IRC channels are used widely by open source projects, and by WordPress. The primary WordPress channels are #wordpress and #wordpress-dev, on irc.freenode.net. conversations that happened, call for help where coding, testing, discussion is needed, etc. They don’t need to be long, unless a lot of stuff happened. The idea is that people who aren’t in IRC and TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. every day can still stay up to date on features and jump in when they can. And it will keep the teams aware of their progress (or lack thereof) on a more regular basis.

Monday and Thursday

  • Autosave/Post Locking
  • Nav Menus
  • Post Format UIUI User interface

Tuesday and Friday

  • Editorial Flow
  • Core Maintenance and Architecture
  • RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.

Next, while many features are still being actively planned, the feature teams should hold IRC office hours where more realtime discussion can take place to get the features scoped and planned a little better. Feature teams should announce these hours here on make/core (can be part of their twice-weekly updates).

#3-6

Agenda for the weekly dev chat 1 Feature…

Agenda for the weekly dev chat:

1. Feature team updates
2. Set up schedule for more frequent feature team updates
3. Unstick anyone who is stuck
4. Rallying call for Ryan’s code maint ticketticket Created for both bug reports and feature development on the bug tracker. list

#dev-chat

WordPress 3.6: Code Maintenance and Architecture

Like with any release, much more is going on during the 3.6 cycle than just the user-facing items on our agenda. We’d like to hit the following code maintenance and architecture items as well. If your interested or have thoughts, speak up or jump on the tickets! Some of these really should happen early, and they’re pretty much all going to need unit tests.

Use PDO for MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/. queries

#21663 — The mysql_* functions in PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher are deprecated, so to get ready for future versions of PHP, we need to start routing queries alternatively for installs that support it.

Caching and Misc DB Tasks

No ticketticket Created for both bug reports and feature development on the bug tracker. for this? — Use magic methods to cleanup blogid and siteid in wpdb. These should fetch the canonical versions elsewhere. Also, support blog_id and site_id for consistency.

#23167 and #23173 — Make our object caching more intelligent. One query per cache key. Stored IDs instead of objects where possible.

#22174 and #20875 — Introduce and use wp_cache_get_multi(). Maybe. A bonus, if there’s time.

#21760 — get_term_by() calls are not cached.

#21401 — Load packaged object cache when advanced-cache.php and object-cache.php don’t implement wp_cache_init().

#22661 — Allow object caches to degrade gracefully.

Slashing Sanity

#21767 — Remove stripslashes from 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. functions.

#18322 — The Road to Magic Quotes Sanity.

#22325 — Abstract GPCS away from the superglobals (maybe not, depending on #21767).

#22023 — Remove UNIQUE for slug in wp_terms. Prep for future 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. architecture changes.

Misc Performance

#22301 — Performance problem with Recent Comments widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user..

Earlier Discussion

IRC Logs from discussion of some of these items.

#3-6, #maintenance

Git Mirror History Breakage

A few years ago, I started publishing a mirror of WordPress on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/. It was subsequently promoted to WordPress/WordPress. What I neglected to do, however, was provide an appropriate authors.txt file, until recently. That means that earlier commits are attributed to dummy e-mail addresses and as such cannot be associated with user accounts on GitHub. Considering the recent introduction of contributions on GitHub, this seems a shame. Also, if we were to move to GitGit Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. Most modern plugin and theme development is being done with this version control system. https://git-scm.com/. in the future, we would probably want our official mirror to have the best possible data.

Proposed

That we re-run the git-svn import with a proper authors.txt file.

Upsides

We’ll have a proper Git mirror with good and consistent author data, that we can, if desired, use for a future migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. to Git. Commits will be properly attributed in GitHub.

Downsides

This will break Git history. If you have a Git checkout of WordPress, either standalone or in a submodule, that’ll mean that you’ll have to rebase your master branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". off of origin (or even better, blow the whole thing away and re-clone).

So: thoughts? Would this ruin your day?

#git, #github

WordPress 3.6: Distraction-Free Writing improvements

Distraction-Free Writing (DFW) made its debut in WordPress 3.2. It’s good, but it has some problems:

  • It’s hard to discover. A tiny button that doesn’t stand out from other buttons.
  • The transition is a bit jarring. Your content goes away, you land on another screen, and your content reappears. It feels like there is a cost to switching.
  • It isn’t as fully-featured as it should be. If it isn’t capable of easily (and by that I, I mean without keyboard shortcuts) doing the majority of the formatting people need to do while writing, people are going to be disinclined to use it.
  • It could use some polish. Some of the interactions are janky, and it’s not very responsive to large screens. There are strange issues that happen when you get to the end of a line or do a line break near the bottom of the editor. The Esc key doesn’t work when in TinyMCE. Lots of little stuff like that.

What I need is someone with CSSCSS Cascading Style Sheets. skills and JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. competency to take on a bunch of little improvement projects for DFW. If you have those skills and care about making a beautiful and functional distraction-free writing experience for WordPress, speak up!

#3-6

WordPress 3.6: Autosave and Post Locking

I want, as a major 3.6 bullet point, that we should never lose posts due to expired cookies, loss of connection, inadvertent navigation (even if AYS’d), 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 or coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. errors on save, browser crashes, OS crashes, cats walking on keyboards, children drooling in keyboards, etc. I want people to trust WordPress with their posts. They should never fear that something they’ve spent time creating or editing should go away due to their mistake or ours or that of a third party. Mistakes and errors should be recoverable. I can’t stress enough how important it is that people believe this and have good reason to believe it. If a post gets lost, there is a catastrophic loss of trust, that could take years to be regained (if indeed it ever is). This is people’s time and their creative output we’re talking about. If we’re not valuing those things above all else, then our priorities are seriously out of order. This is an all-hands-on-deck item for 3.6. Even if you’re not actively working on the code or the copy or the UIUI User interface or the UXUX User experience I want you to be thinking about ways in which WordPress could better treat your creative output as the valuable artifact it is.

Things this will likely involve:

  • Local storage of post data while editing, in-between autosaves and manual saves.
  • More frequent “heartbeat” pings to the server (allowing data to hitch a ride at certain intervals, and also allowing us to quickly deliver messages back from the server about events).
  • Real and more granular post locking. Right now we just have a wimpy notice that isn’t a good deterrent against people simultaneously editing a post and overwriting each other’s changes.
  • Probably some interaction with the team working on improving Post RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision..
  • UX work for making recovery from failure scenarios smooth, clear, and worry-free.

@aaroncampbell and I have chosen @azaozz to lead this, as it will probably be very JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/.-heavy. There are a lot of moving parts here, so please leave a comment if you’re interested in this important, heroic, virtuous endeavor. 🙂

#3-6, #autosave-and-post-locking

WordPress 3.6 Planning Session

I hope everyone enjoyed the holidays! We’re back to our regularly scheduled IRCIRC Internet Relay Chat, a network where users can have conversations online. IRC channels are used widely by open source projects, and by WordPress. The primary WordPress channels are #wordpress and #wordpress-dev, on irc.freenode.net. meetings tomorrow, and are going to start by scoping and planning out the 3.6 cycle. Wednesday, Jan 2, 21:00 UTC. Please make every effort to attend! The theme I’m proposing for 3.6 is “Content Editing”, so especially start thinking about editing, editorial workflows, revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision., autosave, DFW, etc. Also be thinking about what you’d like to work on and how much time you can commit this cycle.

#3-6, #irc, #planning