Dev Chat Summary: May 24th (4.8 week 4)

This post summarizes the dev chat meeting from May 24th (agendaSlack archive).

4.8 Timing

  • Beta 1 went out on Friday, May 12th; Beta 2 went out on Monday, May 22nd
  • RC1 is scheduled for Thursday, May 25th
  • With RC1 we’re aiming for a soft string freeze so that translators can work through all the new strings in 4.8
  • Should things continue to go to plan, RC2 would be next Thursday, June 1st

4.8 Bug Scrubs

4.8 Dev Notes / Field Guide

  • Goal is to have Dev Notes all done ASAP so we can assemble the Field Guide by RC1
  • Remaining Dev Notes to get published:
  • Listing of all tickets tagged with needs-dev-note

About Page

  • #40721: dev help needed writing copy for the Under the Hood section, please ping @melchoyce if you can help

#4-8, #dev-chat, #summary

JavaScript Chat Summary for May 23rd

Below is a summary of the discussion from yesterday’s JavaScript chat (agenda):

Introducing a JS module pattern to WordPress

@omarreiss helped lead the discussion and kick-started the conversation by opening a detailed and thoughtful ticket in trac (#40834) which introduces modules, their goals and how we could go about using them in core. The discussion was around considerations specific to WordPress and a need for modularity was mentioned – @westonruter called out this need for the Customizer,  see #30277. Ideas for code that could be extracted into modules included quickedit, core date utilities and wp.media.view.FocusManager.

The decision was made to move in the direction of using Webpack (and ES6 imports) as our bundler of choice, and to work first on switching out browserfy in our current build chain.

Choosing a future JavaScript framework

Discussion started on choosing a new framework for use in core. The main frameworks discussed so far were React and Vue. Attendees shared their hope, goals and criteria for choosing a new framework and mentioned: stability, longevity, mature, well-adopted, proven in a WordPress context, accommodating to accessibility requirements, interoperability with existing code, architected to support predictable data flows and composability, alignment with efforts like Calypso,  composable, extensible, testable and ease of developer adoption.

@kopepasah promoted Vue.js, saying he found it “much more approachable and highly extensible” and also “Vue single file component is amazingly organized and easy bundle and build.” See https://vuejs.org/v2/guide/single-file-components.html.

@rmccue pointed out that the React core development philosophies match up to ours quite well: https://facebook.github.io/react/contributing/design-principles.html

@afercia raised accessibility and wanted to know which framework was best suited to offer support, specifically in handling cases where direct DOM access and manipulation is needed.

@aduth shared the reasoning behind the choice of React for the Gutenberg project: https://github.com/WordPress/gutenberg/tree/master/element#why-react

As anticipated, the decision was not settled in the meeting and discussion will resume in next week’s meeting. Currently, React appears to be the favored candidate. Please add to the conversation in the comments below, and join us for further discussion at our next meeting, scheduled for May 30, 2017 at 13:00 UTC

For the full meeting notes, see the Slack logs.

#javascript, #summary

Dev Chat Summary: May 17th (4.8 week 3)

This post summarizes the dev chat meeting from May 17th (agendaSlack archive).

4.7.5 Release

  • 4.7.5 was released; six security issues and three maintenance fixes, thanks to everyone who pitched in to get that out!

4.8 Timing

  • Beta 1 went out on Friday, May 12th
  • Beta 2 is due out this Friday, May 19th; potentially shepherded by @matias between 16:00 and 18:00 UTC
  • Please plan anything important before Beta 2 in by Thursday evening, May 18th

4.8 Bug Scrubs

4.8 Dev Notes / Field Guide

Location identification in Events widget

General announcements

  • Anything outside Customize, Editor, REST API, and CLI has lower priority focus in 2017
  • Major work on other components will likely not be merged or considered

#4-7, #4-7-5, #4-8, #dev-chat, #summary

JavaScript Chat Summary for May 16th

Below is a summary of the conversation from today’s JavaScript Chat (agenda, Slack archive):

Build Tools for Code Standards

  • There’s a desire to replace the current JSHint configuration with an ESLint solution (#31823)
  • @netweb shared a number of ESLint-related projects targeting parity with existing JSHint and JSCS configuration
  • JSHint was mainly designed to identify potentially erroneous code. ESLint builds upon this with support for style and custom rule enforcement
  • What steps do we then take to extend the ruleset to meet the remainder of the JavaScript Coding Standards? Parity with .jshintrc has the benefit of serving as a drop-in replacement, but legacy code and existing patches may be impacted by broader rule enforcement.
  • Options for incremental adoption of rules: first configure rules as warnings, or attempt to lint only lines modified in proposed change (as in PHPCS, or Calypso’s git-based eslines)
  • Alternatively, forgo incremental adoption and instead make a single pass to fix offending code, using ESLint’s fixer or prettier (discussion ticket to be created), at the cost of potential disruption to existing patches by conflicts introduced. This appears to be the favored path.
  • How do we reconcile a desire to retroactively fix coding offenses with our guidelines explicitly forbidding this sort of refactoring? The guideline was revised with an ending note about internal consistency. @jorbin later remarked that exceptions have been made in the past for allowing JSHint-based refactoring.

General Remarks on JavaScript Standards

  • @aduth raised a concern of the difficulty in following spacing exceptions on function arguments, arguing that the mental overhead in understanding how context varies application of the rule could explain why it’s followed inconsistently.

Tickets

  • @adamsilverstein requested feedback on a ticket proposing to make two utility functions specific to Press This more widely available (#40635)

Open Discussion

  • A meeting topic was proposed: Module patterns to extend or replace Browserify and make internal utilities more broadly available. Special attention will need to be made for interoperability with existing patterns for declaring script dependencies.
  • A meeting topic was proposed: Making a decision on a framework to use in place of Backbone, based on consensus from last week that a replacement is needed.

#javascript, #summary

Dev Chat Summary: May 10th (4.8 week 2)

This post summarizes the dev chat meeting from May 10th (agendaSlack archive).

4.8 Timing

  • Reminder of Beta 1 on Friday, the complete 4.8 schedule is on Make/Core
  • At this point we’re not trying to get anything in 4.8 besides the core media widgets, dashboard news upgrade, and the next version of TinyMCE (4.6.0)
  • Merge deadline goal to have the target features today (Wednesday, May 10th), and things generally closing on Friday, May 12th
  • Friday 8 PM UTC as pencils down and the beta packaging process / release to happen
  • We’ll schedule a post hoc debrief on our workflows to be more like Chrome, with frequent, major, auto-updates

4.8 Bug Scrubs

4.8 Dev Notes / Field Guide

  • Target to post Dev Notes shortly so they can be combined, published in, and communicated with the Field Guide when the Release Candidate ships around May 25th
  • Updated listing of Dev Notes needed and those responsible:
  • Per the Releasing Major Versions page, we should aim for Dev Notes around Beta 1 so let’s call that sometime next week as current focus is on actually getting to commit for Beta 1 this week

Customize, Editor, and REST API Updates

  • Customize: A general heads up to theme authors to please test the core medias widgets for compatibility issues. The sooner issues are identified the better to get them resolved before 4.8 ships.
  • Editor: They hope to tag a first pre-alpha release of the plugin this week, so keep your radars scanning for that notification to jump in to test and provide feedback there. If you’re curious how they’re building out the foundation of Gutenberg, then read “Editor: How Little Blocks Work“.
  • REST API: They would greatly appreciate any and all feedback on #38323, especially those of you familiar with meta. This isn’t crucial for 4.8, is crucial for many use cases and any help getting this into an upcoming release would be great.

#4-8, #core-customize, #core-editor, #core-restapi, #dev-chat, #media-widgets, #summary, #tinymce

Dev Chat Summary: May 3rd (4.8 week 1)

This post summarizes the dev chat meeting from May 3rd (agendaSlack archive).

4.8 Timing

  • 4.8 schedule page has been published
  • Beta 1 is next Friday, May 12th; Release Candidate is Thursday, May 25th; target launch is Thursday, June 8th; and WCEU quickly follows June 15-17
  • WordPress 4.8 will be the first “major” release of 2017 and ideally includes the TinyMCE inline element / link boundaries, new media widgets, WYSIWYG in text widget, and the WordCamp / meetup dashboard upgrade to the “news” section
  • Assuming all goes as currently planned, we have just over a week to commit any new enhancements or feature requests
  • Concerns were raised to the compressed timeline for 4.8 and the stresses of getting a major release out in ~5 weeks
  • Recommendations were made to the effect of allowing 4.8 to progress more gradually and target a July/August timeframe for launch
  • Update since devchat: Confirmed existing 4.8 timeline with @matt, plan is to proceed with the enhancements that are ready now, anything that’s not ready will wait for an upcoming release

4.8 Bug Scrubs

  • Will publish times for upcoming scrubs to review items in the 4.7.5 and 4.8 milestones in a separate Make/Core post
  • @jbpaul17 & @desrosj will run general scrubs, @flixos90 will deal with multisite tickets in the multisite-specific bug-scrub next Monday
  • Please reach out to @jbpaul17 if you have availability to run a general or focused scrub on tickets in the 4.7.5/4.8 milestones over the next wee

4.8 Dev Notes / Field Guide

  • Regardless of final decision on 4.8 timeline, we need to get started on creating Dev Notes and assembling the Field Guide
  • Several comments were made about potential improvements to the Dev Notes / Field Guide during the 4.7 Retrospective
  • In summary: have more than one person own the Field Guide coordination and Dev Notes creation; more Dev Notes are better than less; create component-specific Dev Notes where feasible
  • Updated listing of Dev Notes needed and those responsible:
    • 1) Editor: TinyMCE inline element / link boundaries – @iseulde & @azaozz
    • 2) Editor: TinyMCE version 4.6 – @iseulde & @azaozz
    • 3) Editor: Edge fixes – @iseulde & @azaozz
    • 4) Customize: Media widgets (#32417)
    • 5) Customize: Visual text widget (#35243)
    • 6) Customize: Dynamically-resized controls pane (#32296)
    • 7) WordCamp / meetup dashboard upgrade to the “news” section
  • If you can help write one of the unassigned Dev Notes above or have others that you feel should be written, please comment on this post or let @jbpaul17 know
  • Per the Releasing Major Versions page, we should aim for Dev Notes around Beta 1 and the Field Guide by the Release Candidate; so please get started writing those Dev Notes, thanks!

Multisite Update

  • Discussed yesterday the idea of introducing ms-site.php and ms-network.php files for the real site/network APIs we’ve been introducing over the past couple releases (and will continue to introduce further functions)
  • All functions currently reside in ms-blogs.php which is getting rather cluttered
  • We propose introducing those two files and moving some functions in there and are looking for concerns from the team
  • Another question was whether they would need to be included from ms-blogs.php (for backwards compatibility) or whether we’re fine including them in wp-settings.php
  • Relates to: #40647 (Introduce ms-site.php and ms-network.php files)
  • Feedback would ideally be left on the ticket above

#4-8, #core-customize, #core-editor, #dev-chat, #summary

JavaScript Chat Summary: May 2nd

The first-ever JavaScript Chat took place today (agenda, Slack archive). Below is a summary of the conversation:

Meeting Goals

  • Identify common requirements and ensure consistency between individuals and projects making heavy use of JavaScript in core
  • Discuss what must be provided as the “base” APIs to provide similar functionality in the browser as what’s available in PHP
  • Decide patterns and tools / frameworks to accommodate modern and future requirements
  • Understand how plugins and themes plan to use the browser context to avoid conflicts and incompatibilities

Tickets

The following tickets were discussed, chosen as having most immediate impact:

Actions and Filters

  • An effort to mirror PHP extensibility in the browser by providing hooks to transform data and take action in response to specific events
  • Consistency with PHP equivalents can improve developer experience by providing familiar tools, but we should be sure that the paradigms apply well across the languages
  • Worries
    • Are there special considerations for asynchronous coding patterns prevalent in JavaScript?
    • Do we first need to better outline how we expect data to be structured and managed in the client before deciding on transformation APIs?
  • Alternatives
    • Hyper.is extensions apply themselves as decorations, or intervene as middlewares in the application’s data flow
    • Reactive programming styles with observables (spec proposal, RxJS)
  • A side-exploration of data modeling requirements was raised, with a general desire to encapsulate state (perhaps in a single store) and provide options to inspect data and apply modifications at specific entry points. This should be able to be adopted incrementally, rather than as a full rewrite.

Date Handling

  • Ticket patch provides basic date formatting and localization on a wp.date global, matching those available in PHP (format, date, gmdate, date_i18n)
  • Non-controversial and ideally merged soon
  • Current proposed patch uses Moment.js, but interface does not bind us to it
  • We may want to consider future compatibility with overlapping browser APIs, such as DateTimeFormat. However, these implementations are browser-specific and compatibility with the date format site setting can’t always be guaranteed.

Internationalization

  • We need gettext support in the browser
  • How do we make strings available in the browser
    • By passing strings in HTML via wp_localize_script?
    • Asynchronously through REST API endpoints?
    • Probably best to stick with simpler approach to start (passed in HTML)
  • Need to consider build tools to extract strings from JavaScript
    • PHP solutions may not be future compatible with the frequently changing JavaScript language specification. This is a solved problem with JavaScript parsers tending to follow closely to the bleeding edge.

General

Please join us when we meet again next week at the same time. In the meantime, there are many tickets in the Trac JavaScript focus that can use help! https://core.trac.wordpress.org/focus/javascript

#javascript, #summary

Dev Chat Summary: April 26th (4.7.4 week 8)

This post summarizes the dev chat meeting from April 26th (Slack archive).

News & Updates

Target Browser Coverage

  • WordPress is officially ending support for Internet Explorer versions 8, 9, and 10, starting with WordPress 4.8
  • @voldemortensen: When patches are backported to versions pre-4.8 should they be tested against older IE versions? Are we maintaining that sort of back compat for this or once 4.8 ships we drop support for it everywhere?
    • Unlikely that anyone will test that support on backported branches
    • The “Everything else: Bugs fixed as reported.” rule from the handbook could be stretched and applied to those IE versions
    • Will continue down that path until an alternate approach for backports to versions pre-4.8 is confirmed more officially

Editor Team

  • aiming for prototype parity by the end of month
  • will gladly take any assistance on resolving issues and testing via their GitHub repo

Customize Team

#4-7, #4-7-4, #core-customize, #core-editor, #dev-chat, #summary

Dev Chat Summary: April 19th (4.7.4 week 7)

This post summarizes the dev chat meeting from April 19th (agendaSlack archive).

4.7.4 Release Timing

  • We pushed out that RC for 4.7.4 yesterday, please test it diligently
  • So far there’s been one bug report on Trac which is assigned to @azaozz: #40480: Cursor position bug when updating WPView shortcode in 4.7.4 RC
  • Otherwise no apparent activity in the forums
  • If everything goes well the plan is to release 4.7.4 by tomorrow, Thursday, April 20th starting at 16.00 UTC

REST API Team

  • A few common themes coming up while we’ve been working on with using the REST API in the dashboard
  • In particular, a common need for date handling, hooks, and i18n across various different components
  • The other two foci will either hit into this or already have, so we propose to coordinate on a common goal here (see: #39222, #20491, and #21170)
  • Propose that we nominate someone to coordinate efforts across these, including use in the Gutenberg prototype
  • Potentially someone who can look at wider, longer term plans with JS as well
  • Assumption that there’s a broad problem here, which is that we’re lacking coordination and direction for our JS stuff
  • It may help to start having core-js meetings to coordinate this, and/or for someone to take charge of the discussion
  • @aduth & @adamsilverstein will team up to lead this effort

General Announcements

  • #40462: Add placeholders to wp_login_form()
    • users in the Israeli WordPress community requesting feature
    • Previously #24324: Placeholder support to login form
    • Will add use cases to the ticket to explain why it would make sense
    • Otherwise mark it as a duplicate and keep discussion in one place

#4-7, #4-7-4, #core-customize, #core-editor, #core-restapi, #dev-chat, #summary

Dev Chat Summary: April 12th (4.7.4 week 6)

This post summarizes the dev chat meeting from April 12th (agendaSlack archive).

4.7.4 Planning

  • There are currently 23 open tickets in the milestone
  • We had been aiming for an early May release, but an annoying bug (#40305, noted by @azaozz) related to TinyMCE and the upcoming Chrome release has forced us to reevaluate this strategy
  • After talking to Andrew and the security team, we decided on a new release date for WordPress 4.7.4: Tuesday, April 18, with April 20 as a fallback.
  • There will likely be an additional 4.7.5 release soon after this one

Customize Team

Editor Team

  • We’re in the long stretch of building and building, so we’re also holding “office hours” instead of weekly meetings.

REST API Team

General Announcements

  • @helen is going on leave after Friday, April 14th until August (probably 2017) (hopefully she meant 2017) (is it August yet?)

#4-7, #4-7-4, #core-customize, #core-editor, #core-restapi, #dev-chat, #summary