Continuing the Trac component re-organization with "focuses"

Based on triaging a few hundred tickets in the General and Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site components, we’ve added five components:

  • Bootstrap/Load — applies to wp-settings.php, ms-load.php, load.php, ms-settings.php, etc.
  • Login and Registration — useful for multisite, but applies to single-site too
  • Options and 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. — option.php, meta.php, etc.
  • Script Loader — WP_Scripts, WP_Styles, and script-loader.php
  • Networks and Sites — multisite only

We also removed two components that (poorly) described the problem rather than the affected area of coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. “Validation” ranged from from validation tickets to XHTML issues. HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. validation issues now belong in the affected component, like “Template” or “Administration.” “Warnings/Notices” contained tickets ranging from PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher warnings to providing feedback to users. The open tickets were moved to more appropriate components. Additionally, the remaining tickets in “AtomPub” were wontfixed and the component was removed.

A new concept: Focuses

We’ve also added seven new “focuses”ui, 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), 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/., docs, multisite, performance, and rtl. Focuses are about broad concepts and help break tickets down by specialties and skills, rather than functional areas of core. Multisite and RTL are widely general “modes” for WordPress, and each have contributors who focus strongly on those areas, but they are not well-contained “components” of core. Accessibility isn’t an area of core — it permates the entire user experience. A ticketticket Created for both bug reports and feature development on the bug tracker. about inline documentation should still receive the attention of developers for that area of core (say, comment.php), while those who focus on inline documentation should still be able to do so.

“Focuses” is a new field in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.. They’re like tags, and more than one can be assigned to a ticket. It can be queried using custom queries. And they have their own reports which we hope to properly expose and make better really soon — https://core.trac.wordpress.org/focus/accessibility.

Guidelines to help with the transition

The corresponding components for the new focuses have been removed. The “ui-focus” keyword has also been converted over. Overall, we gained five components but lost eight.

This has the potential to be confusing at first and we’ll surely need to make some adjustments. Also, the component cleanup is not done yet — this is just the beginning. Here are some guidelines for how to use the new focuses.

  • The old RTL component — use the rtl focus and assign a relevant component. If it’s RTL issues with the media library, use the “Media” component. If it’s about the RTL build tools, then use the “Build Tools” component. If it’s more general, then use the “I18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.” component.

  • The old Accessibility component — use the accessibility focus and assign a relevant component. For issues with the media library, use “Media.” For issues with activating a theme, use “Themes.”

  • The old Inline Docsinline docs (phpdoc, docblock, xref) component — use the docs focus and assign a relevant component. Hook documentation for user.php belongs in the “Users” component.

  • The old Multisite component — use the multisite focus and assign a relevant component. If it’s related to users, use “Users.” If it’s related to the loading process of multisite (choosing a site based on domain and path, etc.), use “Bootstrap/Load.” If it’s related to the installation process, use “Upgrade/Install.” network_admin_url() goes into the “Permalinks” component. get_site_option() is “Options and Meta.” The Networknetwork (versus site, blog) Adminadmin (and super admin) still has its own component. (Choosing that component or “Networks and Sites” automatically assign the “multisite” focus for you.) @jeremyfelt recategorized about 110 tickets into about 15 different components.

  • The old Performance component — use the performance focus and assign a relevant component. Improving the performance of WP_Query belongs in “Query,” improving the performance of get_option() belongs in “Options and Meta,” etc.

  • The old Graphic Design component — use the ui focus and assign a relevant component. (This is probably going to be “Administration”, at least for now.)

  • The old ui-focus keyword — This has been removed. Simply use the ui focus.

  • The old JavaScript and UIUI User interface components — these have not existed for some time. Use the corresponding focus and assign a relevant component.

We may add more focuses over time. For example, the “Text Changes” component would probably make a better focus, for our wordsmiths.

Any questions, suggestions, or comments?

This is a summary and addendum of one section of this Wednesday’s weekly developer meeting. Logs.

#components, #trac

Brainstorming ticket reports

One thing I’d like to work on is improve our reports on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. with the hope we can better manage the ticketticket Created for both bug reports and feature development on the bug tracker. queues. We currently have about 50 reports on Trac. Many of them were created in a push 5-6 years ago to build reports around keywords. A number of others are one-offs created in the last few years for specific use cases. In reality, few of these are ever used on a day-to-day basis.

I checked the access logs to get an idea of the most popular reports. Besides the first six reports (my favorite “home base” is report 6), they are report 16 (“Needs 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.”), report 18 (“Blockers for Releases”), and report 21 (“Latest Tickets”).

What I’d like to do is brainstorm all sorts of new reports we should have. How can we make what we have better? I’ll then go to work about implementing them. Dream big — if the data’s there, I’ll figure out the gnarly SQL required. We can also think about how we can improve columns, grouping, ordering, etc. If you have a concept for a report but aren’t sure how we’d query for those tickets, toss the idea out there and maybe someone will add to it.

I’l probably design a new /report screen so it’s not just a list ordered by something random like when the report was created, and so we can highlight important reports, group similar reports together, and put less emphasis on some of the more specialized ones.

Here are some half-baked ideas, to start us off:

  • Open tickets without a response. Find all tickets where no one has commented, or where only the reporter has commented. This would create a punchlist of tickets to review. (Ideally, the report should always be empty.) The ability to group or 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. this by component would be helpful, for contributors who specialize in and want to take responsibility for different areas.
  • Report of “dead” tickets. Tickets that haven’t been modified in four years are ripe for action and/or closure. We should empty a report of this nature, then reduce it to 3.5 years, then 3 years, etc.
  • Good first bugs. A report of all tickets marked as a good first 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.. (None yet, as the keyword is new.) Next steps: How can we best identify these kinds of tickets?
  • Report of “untriaged” tickets. Our milestones have gotten out of hand, which is something we should discuss. Tickets should immediately leave “Awaiting Review” once they’ve been initially reviewed, but then not forgotten about if they are shifted to “Future Release”. Let’s figure out metrics for what makes a ticket “untriaged”. We could create a simple UIUI User interface to filter by component for a report like this. We currently have Tickets Awaiting Review which groups tickets by the “Version” they were reported against — maybe this is a good start.

What’s your idea?

#trac

New Trac notifications feature

Monday’s long list of improvements to Trac was just the first course. Introducing per-ticketticket Created for both bug reports and feature development on the bug tracker. notifications.

Just above the comment box, you’ll see a new notifications pane. Here, you can watch/unwatch tickets.

This means TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.’s terrible email address CC feature is gone. (Last night, I migrated over about 15,000 CCs going back nine years.) Old comments that are just CCs are now hidden via JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors., which makes a few of the busier or popular tickets easier to skim.

You can also click the star next to the ticket number at the top:

Screen Shot 2014-01-09 at 4.38.22 PM

Watching a ticket adds it to some new reports: open tickets I’m watching and all tickets I’m watching. Now your list of starred tickets are all in one place.

Coming soon: You’ll be able to watch/unwatch a ticket directly from a report, like starring conversations in a Gmail inbox (edit: added). You’ll also be able to subscribe to entire components and milestones (here’s a sneak peek). And, @-mentions will let you add someone to a ticket.

A note on how this is implemented: isn’t just subscribe/unsubscribe. “Watch” can also be thought of as “Vote” or “Star” or “Favorite”. We’ll soon add a star count to reports (next to the new Comments column — edit: added). If you’re watching a ticket, you’ll always get notifications. If you’re not, you might still get notifications if you reported the ticket, or are subscribed to that ticket’s component or milestone, or if you’ve been mentioned (and the notifications box will tell you that). From there, you have the option to actively “Watch” the ticket, passively continue to receive notifications, or specifically mute/blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. notifications coming from that ticket.

Follow-up question from @sabreuse, about watching/voting/starring/favoriting: If you subscribe to the “firehose” (wp-trac mailing list) and receive all notifications anyway, should you star tickets anyway as an indication of interest? Yes, I’d say so! (If you receive the mailing list to the same email address as your WP.org profile, you’ll only receive one email. It’s possible your mail client could ascertain you received it as a BCC versus just via a mailing list, though I’m not sure.)

Feedback, ideas, suggestions are very much appreciated. Also, all of this code is open source (a lot of it is a 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).

Edit, bonus: @ocean90 converted most icons on Trac into Dashicons.

#notifications, #trac

Lots of improvements to Core Trac

Over the holidays, I was sick for two weeks (boo). While resting and recovering, I took to working on our tools (yay). Specifically, TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.. Here’s an overview of the added features, enhancements, and 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. fixes. There’s a lot (and more on the way), so I’ll try to keep each point brief. If you have any questions I’d be happy to elaborate in the comments.
Continue reading

#trac

The email used for notifications on Trac is…

The email used for notifications on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. is currently specified in Trac preferences. I’m changing this to pull automatically from your 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/ profile. After this change, there will not be a way to have a separate email address for Trac and any manually specified email address will be overridden.

We need to make this change because, very simply, it’s a better user experience. By killing this extra user preference, it’s one less step users need to set up in order to receive notifications. (And a tighter feedback loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop. could possibly boost engagement.)

That will affect about a thousand users we have in the system, probably incidentally for most. But, about 50-100 users might have been deliberately declaring a separate email address; for example 50 users had “trac” appear specifically in their email. Even without a dedicated email, it is trivial to 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. Trac emails; you just might need to make some adjustments.

As you may have noticed, this is part of a series of changes I’ve been making to Trac. I’ll be doing a summary post in a few days outlining everything that has changed.

NOTE: This does not affect wp-trac@lists.automattic.com. If you subscribe to the “firehose” this is not affected.

Edit, 20:23 UTC. This is now enabled. For the moment, the email address will sync when you next visit Trac. Please find me if you have any questions.

#housekeeping, #trac

Trac email issues are fixed

Unfortunately, the TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. mailing lists for WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. and BuddyPress were missing many tickets and comments over the last few days. (From about October 15, 12pm ET to about October 17, 2am ET, an hour ago.)

I OK’d a change to the Trac configs, but forgot about the restrictive mailman rules designed to blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. spam on these read-only lists. My bad.

Many of us of course rely on these mailing lists, to the point where if it fails, we miss comments or entire tickets. To explain why you may have gotten some emails, but not all: You would have gotten it directly from Trac (rather than the mailing list) if you were already participating on a ticketticket Created for both bug reports and feature development on the bug tracker..

I’ve added support for ticket comments directly in the Trac timeline across all Trac instances on 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/. Here are links to days with missing time periods:

Note that the “From” email for these mailing lists is now noreply@wordpress.org. Rather than something@lists.automattic.com. You may need to adjust Gmail filters as appropriate (there hasn’t been a spam issue on these lists for some time; consider targeting list headers).

Let me know if you have any lingering issues or questions.

#trac

Marking duplicate tickets on Trac

Marking duplicate tickets on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. just got a bit smarter and easier. Now, when you mark a ticketticket Created for both bug reports and feature development on the bug tracker. a duplicate, you specify the other ticket. A comment will be cross-posted there that references the duplicate, so you don’t have to.

You can optionally include a comment and any other ticket property changes, as before. If your comment doesn’t include a reference to the ticket, it’ll automatically add it.

A side effect of how the 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 is written (it’s a modified version of this one) is that no email notification is sent for the “#___ was marked as a duplicate.” This is great because it avoids a double-email (that until now would happen manually). On the other hand, if you consume Trac via your inbox like me, you might expect that the next email is the other ticket, floated to the surface again. I’ll leave it as is for now.

#trac

Trac updates and a design refresh

Every few months we make a few improvements to TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.. Given how many hours so many of us spend on there, even the smallest changes can make a big difference. Today, a few new changes were deployedDeploy Launching code from a local development environment to the production web server, so that it's available to visitors..

The first thing you’ll notice is a design refresh, from @helenyhou and @ocean90. It cools down the colors a bit and places more of our own mark on it (more WP-like, less Trac-y). They also added responsiveness for mobile devices, and made some adjustments to improve readability. See #18211. If you notice any bugs or quirks, please leave a comment there.

From @iammattthomas, the WordPress logo is now HiDPI.

If you’re a 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. gardener (i.e. you can change milestones, etc.), you can now change the resolution of a closed ticketticket Created for both bug reports and feature development on the bug tracker.. This should make @sergeybiryukov happy — no more re-open to re-close.

Over the last few weeks I’ve given more than a dozen people bug gardener status. We’d like to empower the people we know and trust to make decisions, while making Trac simpler for others.

For those who aren’t bug gardeners, we’re trying to make it as easy and streamlined as possible for you to create and contribute to tickets. @bpetty has been studying our workflow and recommending changes. One of those is we’ve hidden the ability to change ownership of a ticket (accept/assign/reviewing). A big issue with ownership is it sometimes discourages others from contributing. I hope this change can free us up to using that field for tracking responsibility and accountability.

Non-gardeners can also no longer label tickets a “task”. Also, once the Version field is set, a user can’t update the field to a newer version, only an older one. (As @sergeybiryukov says, “version number indicates when the bug was initially introduced/reported.” It’s the earliest known affected version for a bug, or the earliest applicable version for an enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature..)

And finally, if you add the “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.” keyword to a ticket, “needs-patch” will automatically be removed, and vice versa. (It’s the little things.)

I hope you enjoy this round of changes. If you have any further suggestions, please share in the comments.

Bonus. A few weeks ago, we added a ticket graph, inspired by jQuery and using their plugin as a base. I hope to add some more functionality to this in the future. For now, a few of us are using it to study trends and come up with some new ideas for how we can best maintain the ticket queues.

#trac

I cleared out all tickets in Awaiting Review…

I cleared out all tickets in Awaiting Review with a reported version of 3.3. They would normally show up at the top of report 40.

If anyone wants to help triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. the next group — “Defects Awaiting Review, reported against no version” (59 tickets) — here’s some ways to triage a ticketticket Created for both bug reports and feature development on the bug tracker.:
— If it’s an enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. or feature requestfeature request A feature request should generally begin the process in the ideas forum, on a mailing list, as a plugin, or brought to the attention of the core team, such as through scope meetings held for each major release. Unsolicited tickets of this variety are typically, therefore, discouraged., change the ticket type.
— If it’s a 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. that effects a previously released version of WordPress, then change the version field.
— If there isn’t enough information in the ticket, ask the reporter for more information and add the “reporter-feedback” keyword.

The main goal here is to identify regressions from 3.2 to 3.3, i.e., things that broke during this development cycle. We typically do a sweep each release not long before RC1, to make sure we didn’t miss a bad bug that was already reported.

#trac

I’ve ported over all of the core Trac…

I’ve ported over all of the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. modifications to the BuddyPress and bbPressbbPress Free, open source software built on top of WordPress for easily creating forums on sites. https://bbpress.org. Tracs. In the process, core Trac has been given a fresh coat of paint, and the old Trac logo has been retired.

Also in the process, I’ve fixed a few bugs:

  • Bad link to the Security FAQ, #17479
  • Ticketticket Created for both bug reports and feature development on the bug tracker. fields are too wide in Firefox, #16582
  • Keywords cannot be removed on some browsers (well, Android) thanks to missing href attribute

Thanks JJJ, MT, and Barry for their assistance.

#trac