I’d like to hold an impromptu scrub of remaining 4.0 tickets in about an hour at 20:00 UTC. @nacin and I triaged most tickets earlier today and feel confident that we can finish everything out and get to RC.
Updates from June, 2014 Toggle Comment Threads | Keyboard Shortcuts
WordPress 4.0 comes with a redesigned plugin installer. Just now we’ve added one of the finishing touches to this project — plugin icons.
Plugin authors, If your plugin is compatible with WordPress 4.0, it only takes a few moments to change a readme “Tested up to:” value to 4.0. Compatibility information is prominently shown in the new plugin installer, so you’ll definitely want to update this value. For your plugin to stand out, you’ll also want to give your plugin an icon. Read on…
Beautiful, auto-generated icons
Default icons are generated using the GeoPattern library by Jason Long of GitHub. If you have a banner image, it is automatically sampled to determine the primary color for the pattern, using Tonesque from @matveb. (Cool, huh?)
Making your own icon
Plugin icons are 128 pixels square. HiDPI (retina) icons are supported at 256 pixels square. Like banners, these go into your
/assetsdirectory and can be either a PNG or JPG. So just create
assets/icon-256x256.(png|jpg)and you have an icon.
You also have another option: SVG. Vectors are perfect for icons like this, as they can be scaled to any size and the file itself is small. For an SVG file, you simply need an
We may implement SVG-to-images fallbacks in core for browsers that don’t support them, so if you go the SVG route, I’d suggest also turning your SVG into a PNG. (SVG takes precedence.)
Jetpack uses an SVG icon:
Some tips when designing an icon
- Keep it simple! The Android and iOS Human Interface Guidelines both have some fantastic design tips.
- Avoid text, especially since these may be seen at smaller sizes in other contexts (and in languages other than English). And because this is an icon, not an ad.
- Use the right image format for what you’re doing. Don’t use JPGs for simple designs; don’t use PNGs for photos.
- Optimize your images! Use something like ImageOptim or your favorite web app, CLI tool, etc.
- Please no WordPress logos. Come up with your own brand. (If you already have a banner image, you likely already have a head start here.)
- If you haven’t worked with SVGs before, they’re pretty cool. Here’s a tutorial from Chris Coyier.
- Keep in mind this is an icon for your plugin, not a display ad.
Thanks to the hard work of Alex Shiels (@tellyworth) for implementing this!
We haven’t posted weekly summaries in a bit, so here’s a summary of the last three dev chats.
- Beta 1: Shipped last Thursday, July 10. Feedback has been good so far.
- Beta 2: Planned for tonight, July 17. @azaozz updated TinyMCE prior to release. Pending a couple of changes (or not) that @nacin is looking at: #22023 + #5809 and cookies tied to sessions (#20276).
- Testing: Especially want feedback on the following things: plugin modals on many screens + accessibility devices, wpviews, customizer panels, media grid, install language flow.
- Tickets: Generally under control, but still need more area-specific triage.
In general, 4.0 is shaping up with two distinct groups of focuses: editing + platform & writing + global.
Area specific updates:
- Media Grid: Progress update from June 27. Reviews have been good but some help was needed on architectural reviews/revisions, CSS, keyboard accessibility. Attachment details will be tightened up (#28844).
- Plugins: Progress update posted from June 28. Some API changes will take place so we can improve the Install Plugins page with groups of featured plugins. Need i18n attention on the plugin install page, but generally in good shape.
- Customizer: we have panels now, some decisions need to be made about close vs. cancel language and possibly moving to a close icon + AYS
- i18n: Progress update from July 2. Need help to complete things.
- oEmbed: placeholders were added for when embeds are needed but not available—when the admin is SSL and a user pastes non-SSL embed URL, we try to get the SSL, if that fails, we try the non-SSL, if successful, we show the placeholder—the url in the post_content stays as pasted.
- Other updates: Feedback will be posted about URL encoding with media_sideload_image(). Still looking at sessions; possible a schema change or two in there.
As always, daily bug scrubs happen at 15:00 UTC.
Here’s where we are on the five goals for internationalization outlined previously:
1. The first step installing WordPress should be to choose a language. The rest of the install process would then be in that language.
- Improved error handling when the API or filesystem isn’t accessible. Working on this.
- Bring this to setup-config.php. Working on this.
- Place browser-based language suggestions at the top. Working on this.
- Use better markup rather than simple select/option HTML, currently being worked on by @jorbin.
2. You should be able to choose/switch a language from the general settings screen, after which the language pack should be downloaded.
This simply requires replacing mu_dropdown_languages() with a new method that handles uninstalled languages gracefully. This is easy to implement and relies on much of the same code as the install process, so it’s simply on hold until that’s done. I’ve also worked out a UX flow with @sonjanyc.
3. You should be able to search from the dashboard for plugins and themes that are available in your language.
This is handled on the WordPress.org side. The updated plugins screen will need to pass a new argument to filter by language, and then remove that argument if the user requests showing plugins in any language. We’ll need to hack in readme/description translation support but that’s a small API change and otherwise WordPress.org work, not core work.
4. All localized packages should be able to be automatically generated and made available immediately as part of the core release process.
A script for this is written. While it needs more work, it was used as a test to build 3.9.1 packages, which are doubling as 4.0-alpha testing packages. This does not require changes in core.
5. Localized packages should only be used for initial downloads from WordPress.org. Instead, language packs should be transparently used for updates.
This is ready. A flag needs to simply be flipped in the API.
Ongoing problems to solve:
- I have a proposal to type up for how to handle readmes, license files, etc., in both core and plugins. Requires no core changes.
- No one has picked up the plan to limit the code modifications still done in some locales. This may end up being a July project for me.
- The relevant APIs we need in core were deployed to WordPress.org. Also, the plugin and theme directories are fully internationalized; we need to get those strings to translators and shoehorn them onto existing international sites.
Summary of 6/25 dev chat (IRC log):
- Beta 1 is being pushed back to July 9 from July 2, with each successive beta and RC 1 also pushing back a week. The schedule has been updated.
- oEmbed (@azaozz), i18n / language packs (@nacin), media grid (@ericlewis), and plugin installer (@tellyworth) should each have an update post published here before the weekend, outlining what has been done thus far, next steps, points needing discussion, and relevant tickets.
- Each of the above should have a new patch ready by Monday. Across the board, it would be nice to see more work-in-progress patches — props @ericandrewlewis for recent patches on the media grid ticket
- Daily scrubs in #wordpress-dev happening at 15:00 UTC.
- @johnbillion would like to help coordinate people who are given time by their employers to work on WP; Make/Core post forthcoming.
- Recent updates to oEmbed: previews in the editor, media modal, added a bunch of providers
- Todos: SSL, script sandboxing, caching improvements, UI/UX tweaks
- Two thirds of our supported providers don’t support SSL: #28507
- @sams suggested SSL should be a requirement for oEmbed providers going forward (have since revised to an important consideration for the time being).
- Insecure iframes and/or insecure contained content will be blocked by newer Chrome and Firefox.
- Two options: placeholder or a nonced, authed, proxied iframe.
- For Monday: Placeholder fallback for SSL admin and non-SSL oEmbeds.
- Haven’t seen any movement since last week, a lot is listed out on ticket: https://core.trac.wordpress.org/ticket/28577#comment:8
- For Monday: Patch showing where we are now.
- A quick phase 2 of the media grid is going forward
- Media Grid needs a fair amount of work, not user testable yet.
- Reminder: watch out for strings like “Edit Media” (#) won’t work well for long translations, i.e. ru_RU.
- For Monday: A user-testable patch.
- Screenshots for possibly comparable things.
- @tellyworth is working on plugin-install.php and @stephdau is working on the details modal / page.
- Next: Need to discuss what kind of data is most helpful to display for users when they are trying to figure out which plugin it is they want.
- For Monday: @tellyworth and @stephdau will post patches in progress.
- Taxonomy: #22023 will likely be punted; @ericmann & @rachelbaker volunteered to help with unit tests.
- Texturize/formatting is coming along, major props @wonderboymusic and @miqrogroove.
With thanks (again) to @designsimply for note collation.
Summary of 6/18 dev chat (IRC log):
- i18n: First run for installation is in, including .org API; @nacin has posted next steps. Related: #28571
- Customizer: Appearance component renamed to Customize in Trac. Office hours scheduled for Fridays at 19:00 UTC (listed in the sidebar here). Particularly active contributors include @westonruter, @celloexpressions, and @ocean90.
- Editor Experience: Focus on the scrolling piece first and work to get that in this week. Discovered that the Gmail inline reply experience very closely matches the desired effect.
- Plugin Install Experience: @melchoyce posted a quick wireframe and a prompt for UI/UX thoughts, particularly on workflow. Also called for screenshots of web store experiences to look at comparable art and make more informed decisions about info/metrics displayed, such as ratings, download counts, descriptions, etc. @stephdau and @tellyworth are working on initial patches to align the install screen with the theme browser. Tickets: #27440, #22599, #19784.
- Schema Changes: @nacin is planning on going over indexes with @pento, @batmoo, and @bazza
- Taxonomy/Schema: #22023: we need to evaluate how terms are inserted and whether a race is possible (@nacin).
Thanks to @designsimply for her help with notes and summaries this release!
Hi Everyone! It’s time for another update. This edition covers through Sunday, June 15th, and has taken a while due to travel, but @swissspidy & @designsimply have joined the team, helping to gather the information to bring us up to date. Hopefully this will help these updates be a bit more sustainable over time. If you’re interested in pitching in with these updates as well, please let me know in the comments below!
Especially of note are the first pass of the grid view for the media library, several SSL and oEmbed updates, and a new ‘Beta Testing’ tab on the Plugins screen.
- Plugins Screen: Add a new ‘Beta Testing’ tab on the plugin installation screen, for features as plugins such as Press This.  #28513
- Media Library: Grid view for the media library, first pass. This is alpha; expect imperfection to start.  #24716
- Forcing SSL logins now forces SSL for the entire admin.  #10267
- Force SSL on the frontend when the home URL uses HTTPS.  #27954
- Force SSL admin when
siteurlis explicitly configured with HTTPS.  #27954
- Use a secure
logged_in_cookiewhen the home URL is forced HTTPS.  #15330
url_is_accessable_via_ssl().  #19555
srcattribute for the
[embed]shortcode if the shortcode body is empty.  #24456
- Add “edit” mode for
[embed]and URL media previews.  #28532
wp_embed_register_handlerto catch bad YouTube URLs and try correct them.  #24660
- Add oEmbed support for:
- Update SlideShare oEmbed regex.  #28380
- Remove Viddler oEmbed support.  #28379
- Make it simpler for plugins to register MCE views.  #28458
shortcodeequal to the passed
typefrom default args when calling
wp.mce.views.register().  #28458
- Improve handling of embed errors/error messages.  #28195
Themes and Templates
- Add a filter to
human_time_diff()to allow more detailed depictions of time differences.  #27271
- Allow simple modification of sections of the title by adding a
wp_title().  #17877
- Add CSS rules to ensure that videos will be responsive, regardless of theme.  #28414
get_stylesheet_directory(). These constants are now deprecated  #18298
- Update Twenty Thirteen and Twenty Fourteen to Genericons 3.0.3.  
- Improve keyboard accessibility for the media modal.  #23560
- Add screen reader labels to the date inputs on the post editing screen.  #25461
- When parsing the main query, if
sis set to empty:
$this->is_main_query() && array_key_exists( 's', $this->query )– kill the query instead of loading the homepage. This will load the search page with no results.  #11330
- Kill queries that explicitly pass empty arrays to
WP_Query.  #28099
- Fix SQL generation when
'relation' => 'OR'for its queries and wants to
'orderby' => 'meta_value'.  #25538
- Allow users to sort posts by type in
WP_Query.  #28214
- Add access modifiers to
WP_User_QueryAdd magic methods for BC:
call().  #27881, #22234
- Wide-reaching changes to do away with many instances of variable-variables. See #27881 for full list of changes.
- Eliminate use of
extract()within WordPress. #22400
- Fix curly quotes around numbers when applicable.  #8775
- Only include relevant post authors in WXR exports.  #20206
- Append the date to
$wp_versionin the build output, for nightly packages.  #26751.
wp_new_comment()with a check for successful database insert.  #28254
get_pages()instead of a raw SQL query in
get_body_class().  #28159
- Pre-populate the selected URL or
mailto:<email-address>when “Insert/edit link” is clicked.  #19992
- Live update the menu item title when the user is editing the “Navigation Label” field.  #23076
get_terms()as a replacement.  #21200
like_escape()and replace with
$wpdb->esc_like().  #10041
upload.phpto avoid an empty list table.  #27951
- Add new function
wp_spaces_regexp()to filter for common whitespace characters.  #27588
like whitespace by using
wp_spaces_regexp()instead of raw regex.  #27588,  #27587,  #23185
wptexturize(), ensure that texturization does not corrupt contents of HTML elements, HTML comments, and smartcode attributes. Adds a variety of unit tests/assertions.  #27602, #12690, #8912
- Various updates to
wptexturize()in  #19308,  #22823,  #20342
- Allow user to disable texturization.  #19550
- Update TinyMCE to 4.0.28.  #28391, #27941
- In iOS, fix placing the caret at the bottom of longer posts when the keyboard is open and disable resizing on switching editors and on show/hide of the kitchen sink row.  #28242
- Fix problems with undo/redo after resizing an image several times.  #28389
- Fix saving the editor content on switching from Visual to Text.  #28353
Thanks to @aaroncampbell, @adamsilverstein, @alexander.rohmann, @aliso, @atimmer, @avryl, @azaozz, @boonebgorges, @bramd, @celloexpressions, @clifgriffin, @coffee2code, @danielhuesken, @DavidTheMachine, @DeBAAT, @donncha, @DrewAPicture, @eddiemoya, @edwin-at-studiojoyo.com, @ericlewis, @filosofo, @frank-klein, @Funkatronic, @garhdez, @gauravmittal1995, @gcorne, @georgestephanis, @ghost1227, @grahamarmfield, @harrym, @helen, @iamtakashi, @iljoja, @issuu, @ixkaito, @jackreichert, @JanHenkG, @Jayjdk, @jdgrimes, @jeffstieler, @jeremyfelt, @jesin, @jgadbois, @jjeaton, @jkudish, @joedolson, @johnbillion, @johnjamesjacoby, @johnzanussi, @jtsternberg, @kitchin, @knutsp, @kovshenin, @kpdesign, @kraftbj, @kurtpayne, @kwight, @lancewillett, @lessbloat, @markoheijnen, @mdbitz, @MikeHansenMe, @mikemanger, @miqrogroove, @mrmist, @MuViMoTV, @nabil_kadimi, @nacin, @nd987, @Nessworthy, @netweb, @niallkennedy, @ocean90, @obenland, @pdclark, @pento, @purzlbaum, @rclations, @redsweater, @ruudjoyo, @schoenwaldnils, @scribu, @senlin, @SergeyBiryukov, @sharonaustin, @shaunandrews, @simonwheatley, @sixhours, @slimndap, @solarissmoke, @tar.gz, @tillkruess, @topher1kenobe, @torresga, @UmeshSingla, @winterDev, @wonderboymusic, @wpsmith, @zamfeer, and @duck_ for their core contributions!
Interested in joining in? Write or test a patch for 4.0.
In yesterday’s Weekly Developer Chat, various minor schema change tickets were discussed. We would want to address any changes in as efficient a fashion as possible, and have discussed using the
pre_schema_upgrade()function rather than
dbDelta(), so we can control the queries more precisely.
Below is a list of the tickets discussed yesterday, along with which tables they affect. Please add any questions, concerns, additional tickets, or +1’s for this work in the comments.
comment_author_email– #21435 – “wp-includes/comment.php line85 causes slow query due to the non-indexed column” raised by @matsubobo (proposes adding an index to
multiple-column indexes– #15499 – “Add an index for get_lastpostmodified query” raised by @simonwheatley (proposes adding an index on
post_date_gmtand another on
post_name– #10483 – Increase field length from 200 to 400. #21212 – Reduce index length to 191 for InnoDB.
guid– #18315 – “Add an index to the GUID column in the posts table” raised by @alexkingorg
post_password– #881 – “Lengthen password field for protected posts” raised by @ScytheBlade1
slug– #22023 – “Remove UNIQUE for slug in wp_terms” raised by @nacin (related). #16230 – Increase field length from 200 to 400. #21212 – Reduce index length to 191 for InnoDB
Proposed agenda items for today’s meeting:
- State of .org APIs for plugins and i18n (@tellyworth and @nacin), where people can help with tickets, storyboarding, or otherwise.
- Taxonomy roadmap: #17689 needs active discussion, please.
- Media grid: #24716
- oEmbed sandboxing: #28249
Add anything in comments below.
Summary of 5/28 dev chat (IRC log):
- @nacin and @tellyworth have been working on the .org API side for i18n and plugins page improvements respectively and should be ready for work on the core side soon. Be on the lookout for tickets and discussions.
- @ericlewis has been working through the Media component in Trac and will be holding weekly scrub in #wordpress-dev alongside media grid chats, Fridays at 17:00 UTC.
- @wonderboymusic has been evaluating various oEmbed endpoints as we add and remove them. Some services need some more evaluation: #28379.
- Embed representations in wpview need an iframe sandboxing solution investigated to avoid script conflicts inside TinyMCE and the admin: #28249
- The JSON REST API came a long way in the past week, especially on the documentation front, and is being placed onto the roadmap for the 4.1 release. From @nacin:
1.0 is a great step in the right direction; let’s push it hard; let’s put it squarely, loudly, and officially on the 4.1 roadmap (I’m comfortable doing that); let’s get a lot of core contributors focusing on it for the final mile, especially when it comes to internals
let’s get a lot of people to build things on it, including inside automattic, mobile apps, even wordpress.org stuff; let’s branch off 1.0 so we can decide paint and carpet colors on the master branch
- And finally, several people were added to various Trac components as component maintainers. You can be added at any time, or get on the road to becoming one by signing up for granular notifications on the components page.