JS Core Summary: 23rd June 2020

@adamsilverstein hosted

today’s agenda: “Consider whether we should start using ESLint rules to recommend vanilla JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. functions”

@zebulan brought up that there are a lot of Lodash functions that provide little benefit over native JS equivalents, and in a lot of cases, the only difference is how nullish values are handled.
@adamsilverstein provided for reference: https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore After discussing concerns, it was concluded that most issues were about style rather than dependencies. Action Item: Zeb will open an issue on the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ repository proposing specific linting or prettier rules.

open floor:

@gziolo shared a PR, to makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). registration of component related filters to work nearly the same as you would do it now for SlotFill. https://github.com/WordPress/gutenberg/pull/22185  https://wordpress.slack.com/archives/C5UNMSU4R/p1592921896081600

Adam & Grzegorz discuss the details of the PR, which includes the differences of filters and SlotFill. Side questions bring up the Gutenberg equivalent to php WordPress HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. (actions & filters). It was, also, mentioned how we could we register blocks as components.

@zebulan brought up the topic: Thoughts on usingTypeScript in WP?
It was mentioned that there is currently support for it. The way we’re doing that now is through JSDoc comments, which the TypeScript compiler parses.
eg https://github.com/WordPress/gutenberg/pull/18942
#18942 Build: Output package type declarations
 https://github.com/WordPress/gutenberg/issues/18838
There is also recorded stream where @aduth shows how to add types to WordPress package.

Announcement:
@gziolo shared: https://github.com/WordPress/gutenberg/pull/22714 – we should see Gutenberg Mobile merged into Gutenberg repository later this week, which received a warm round of positive responses.
@gziolo continued, there are 3 new WordPress packages – private for now (no publishing to npm). The best part is that it will be possible to run the demo apps (iOSiOS The operating system used on iPhones and iPads. and Android) inside Gutenberg.

@adamsilverstein closed meeting on the hour

#core-js, #javascript, #meeting-notes

JavaScript Chat Summary: Tuesday, June 16, 2020

Below is a summary of the discussion from this week’s 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/. chat (agendaSlack transcript).

Have a topic for discussion for the next meeting? Leave a comment with a suggestion.

Administrative: Meeting Hosts

Darren Ethier @nerrad and Jonathan Bossenger @psykro have volunteered to help lead the JavaScript chat each week. Responsibilities as outlined by @adamsilverstein are: show up, announce meeting, guide conversation through agenda, end on time, create next week’s agenda. Adam will create a shared calendar and continue to coordinate the meetings.

The team is still need of volunteers to help take and publish weekly meeting notes. If you have some availability and want to get more involved in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. JavaScript, please leave a note in the comments. Your help is much appreciated.

Team Documentation

The team discussed the various pieces of documentation about our work and where they live. We have a GitHub project with links, a Google drive folder with Agendas and a document for note takers.

Everyone agreed it would be great to have a single public page somewhere (ideally on make.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//core) that described our work and linked to all the relevant places.

Since JavaScript is a focus and not a component, the current sitesite (versus network, blog) structure doesn’t have a clear home for the team. Adam offered to bring up the topic at the core dev chat to ask about the best location for a new page.

NPM Package Publishing

Greg (@gziolo) summarized the current state of WordPress npm packages:

  • We maintain over 70 packages on npm: https://www.npmjs.com/org/wordpress.
  • We develop all the packages on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can 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/ in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ repository: https://github.com/WordPress/gutenberg/tree/master/packages.
  • The same packages are used in WordPress core and that’s why we have the releaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software. timeline tied to both release schedule of Gutenberg 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 and WordPress core.
  • We try to release to npm every 2 weeks, at the time when the new Gutenberg plugin is published.

Discussion continued around who should get access to publishing npm packages and the best way to time the releases.

Currently only a small number of people have access to publishing packages. One suggestion was to expand this to include all core committers and Gutenberg core team members who are already highly trusted contributors. No final decision was made.

Andrés (@nosolosw) published the packages for the first time recently and offered this feedback:

  • It’s fairly automated, although there are parts that could see some improvement.
  • Challenging when you try to backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. to master the package’s changelogs from the release 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". wp/trunk . In this case, there may be conflicts.

One way to address this would be:

  • At time of plugin RC: we also release the RC version of packages (this could be done by using the next dist-tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) or something along those lines)
  • At time of plugin release: we release the stable version of packages.

@nosolosw offered to look at what other projects do to come up with the best approach.

#core-js, #javascript, #meeting-notes

JavaScript Chat Summary: Tuesday, June 2, 2020

Below is a summary of the discussion from this week’s 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/. chat (agendaSlack transcript).

Have a topic for discussion for the next meeting? Leave a comment with a suggestion.

Administrative: Meeting Hosts

@aduth announced he would not be able to host the next chats. @gziolo stepped in and volunteered to host some of the next chats.

Participants in the chat gave thanks to @aduth for hosting many meetings during the last years. Thank you @aduth!!

@gziolo mentions he is going to take three months leave starting in July. That makes us in need of volunteers to run the chats and take notes.

If you have some availability and want to help the next coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-js chats happen, please leave a note in the comments. Your help is much appreciated.

Prettier 2.0 upgrade

Prettier 2.0 major version upgrade has now been merged https://github.com/WordPress/gutenberg/pull/22610.

The upgrade brings some code changes:

// Before
var doFoo = function() {}
// After
var doFoo = function () {}

There are not many of these cases in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ because we mostly use arrow functions. But @aduth referred we need at a minimum that the few code samples in the coding standards be updated to the new syntax.

@adamsilverstein volunteered to work on this task. Thank you!

ESLint 7 upgrade

@ocean90 has opened a pull request seeking to do a similar major version upgrade for ESLint, to v7.1.0. https://github.com/WordPress/gutenberg/pull/22771.

@gziolo said the just needs testing, code-wise it looks great.

@ocean90 said we just need a final decision on how to proceed with the new warnings/errors and volunteered to fix as many errors as possible after the merge.

End-to-end test lifecycle utilities

We are facing a problem because the paired test lifecycle “set up” and “tear down” can be error-prone if managed manually as described in the issue https://github.com/WordPress/gutenberg/issues/22804. The issue contains a proposal to create abstraction utilities that manage the full lifecycle.

Participants in the chat talked a little bit about the proposal. It was generally received well, and the conversations will continue on the issue. If you have some thoughts on the subject, feel free to check the issue and leave a comment or help implement the concept.

#core-js, #javascript, #meeting-notes

JavaScript Chat Summary: May 26, 2020

Below is a summary of the discussion from this week’s 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/. chat (agenda, Slack Transcript).

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

(Note: There were no suggested agenda items for this week’s meeting, so an open floor was held instead)

Open Floor

Several updates were shared:

@adamsilverstein notes that WordCamp Europe Contributor Day is fast approaching, and shared a link to a post which describes “What To Know” for experienced contributors and team facilitators. Adam will volunteer to help lead a JavaScript team, and would appreciate any others to express interest in helping to lead or participate.

#core-js, #javascript

JavaScript Chat Summary: May 19, 2020

Below is a summary of the discussion from this week’s 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/. chat (agenda, Slack Transcript).

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

Dependency Group Comment Blocks

(Slack conversation)

Pull request: https://github.com/WordPress/gutenberg/pull/21730

Proposal:

Let’s use /* multi-line comment instead of /** JSDoc.

Rationale:

/** risks being interpreted as the JSDoc documentation of the first import in a grouping, especially in the case of variable assignment. Some examples: TypeScript (editor integrations, etc), @wordpress/docgen automatic documentation.

Action items:

  • @aduth will double check to see if the ESLint rule at least allows for this convention. If not, update to allow.
  • Documented examples could be updated to promote this pattern.
  • At some point, do a mass conversion of comments.
  • Finally, maybe consider to forbid the /** convention.

CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. project on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can 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/

(Slack conversation)

There is now a project board for Core JS tasks. It should include primarily framework tasks, the sorts of items we might want to discuss in the weekly meetings.

We also briefly discussed a few distinct tasks which could use some attention. New issues to work on:

Final check needed for:

  • Review CSSCSS Cascading Style Sheets. support for build – PR #21730.

News Roundup

This roundup contains a few links for GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ and JavaScript related news curated (and commented on) by @nerrad.

  • Justin Tadlock offers some thoughts on where Gutenberg went wrong: Theme developer edition.
  • I somehow missed a gem of a post written by Matías back in April. He does a good job of providing some context to answering some of the questions out there regarding the direction of WordPress theming in the future. Read his post, Thoughts on Themes.
  • Gutenberg 8.1 has shipped. Highlights are: a new pattern search to makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). it easier to insert the desired pattern, a new testimonials pattern, and a new 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. action for copying single or multiple blocks. You can read the WPTavern’s take on this release here.
  • The recent Gutenberg Phase 2 Friday Design Update #53 shares some interesting updates on the Query block, the Block Navigator, Welcome guide, the “What’s new Modal”, and Template parts.
  • Speaking of templates, Envato launches a template kits marketplace for Elementor.
  • NPM 7 is getting some interesting new features including workspaces.
  • Next.js 9.4 is shipped. Notably, the inclusion of the new ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. Fast Refresh feature.
  • ESLint v7.0.0 was released.
  • Tom MacWright’s article Second-guessing the modern web has been making the rounds. There’s a counterpoint article by Rich Harris, “In defense of the modern web” (h/t @mkaz). I’m still processing both articles, there’s much I agree with in both, but much I’m shaking my head with too. As with everything in the development world, it’s hard to present a compelling argument while avoiding painting too broad a brush. As with all things coding, a good argument often includes some variation of “it depends”. My oversimplified hot take/response from/to all this? Frameworks are still evolving. By the way, is it just me, or does it seem like posts/controversies like this seem to surface every two years or so?
  • React recoil is public. Facebook’s take on a state management library for React. It’s intriguing to me, the tight integration with React itself suggests some really nice performance improvements over most other state management packages. In particular, how it handles asynchronous behavior seems really straightforward (and nicely integrates <Suspense> for handling pending state – which isn’t required).

#core-js, #javascript

JavaScript Chat Summary: May 12, 2020

Below is a summary of the discussion from this week’s 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/. chat (agenda, Slack Transcript).

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

@wordpress/scripts CSSCSS Cascading Style Sheets. support

(Slack conversation)

Pull request: https://github.com/WordPress/gutenberg/pull/21730

Discussion topics:

  • There was surprise that this wasn’t already supported.
  • The pull request will add a new package @wordpress/postcss-plugins-preset, which would provide a default set of WordPress’ preferred PostCSS plugins configuration.
    • Similar to @wordpress/babel-preset-default@wordpress/jest-preset-default@wordpress/prettier-config
  • Question: Was there any consideration for CSS-in-JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.? (styled-components)
    • Needs clarity on desired end-goal
    • Still valuable for 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 authors regardless, if it’s easy enough feature to simply not use if they’d prefer to use an alternative approach.
  • Advantages: Dead code elimination and bundle splitting for CSS
  • It was suggested to request feedback from the CSS group

Action items:

@wordpress/create-block third-party templates

(Slack conversation)

Pull request: https://github.com/WordPress/gutenberg/pull/22175

Discussion topics:

  • It could help to support flexibility of third-party templates, in order to alleviate pressure for first-party templates to support all features.
  • Concern: Is it the purpose of the tool to support third-party templates? If so, why not use something like Yeoman?
    • Counter-point: It’s not unlike Yeoman, but utilizes NPM’s own npm init <initializer> functionality. They’re comparable, but it’s not necessarily a criticism.
    • Suggestion: Focus less on third-party template flexibility, more on first-party “knowledge of blocks”, including additional commands and customizations.
    • Point of contention: Should customizability come from third-party templates, or first-party support?

Action items:

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. Identifier

(Slack conversation)

Topic: Should the block editor provide a stable way to connect server and client data? For example, associate posts to blocks using 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..

Additional context can be found in the agenda document.

Discussion topics:

  • Question: Is this suggesting some value saved in post meta which corresponds to individual blocks of a post?
    • Answer: Yes
  • Question: What’s the use-case? Is there an example?
    • Answer: It’s needed for the image block.
  • It might be something which is fine to have an ad hoc implementation specific to one or a few blocks, if it’s not a common requirement.
  • Concern: Duplicating data can risk desync (see related post)

Action items:

  • Create an issue which describes the use-case and requirements (Owned by: @sageshilling)

Open Floor

Miscellaneous Updates

@aduth shared a number of updates from the past week:

The coding guidelines documentations we discussed last week are most all merged:
https://github.com/WordPress/gutenberg/pull/22090
https://github.com/WordPress/gutenberg/pull/22030
https://github.com/WordPress/gutenberg/pull/22029

That last one prompted the idea for a new ESLint rule, currently in progress, but potentially blocked on the fact that there appears to be legitimate cases for wanting the “gotcha” behavior.
https://github.com/WordPress/gutenberg/pull/22041

Now pinning .nvmrc to specify Node version in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/, to avoid issues when running on older branches:
https://github.com/WordPress/gutenberg/pull/22236
(As far as I know, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. does the same)

ESLint 7.0 was released the other day, which notably includes an interesting feature to allow comments within the inline configuration tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)
https://eslint.org/blog/2020/02/whats-coming-in-eslint-7.0.0
Example:
/* eslint-disable no-new -- this class has a side-effect in the constructor. */
Very relevant for this previously-suggested rule proposal: https://github.com/WordPress/gutenberg/pull/16795

@sageshilling shared features announced in Next.js 9.4.

News Roundup

This roundup contains a few links for Gutenberg and JavaScript related news curated (and commented on) by @nerrad.

#core-js, #javascript

JavaScript Chat Summary: May 5, 2020

Below is a summary of the discussion from this week’s 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/. chat (agenda, Slack Transcript). Thanks to @cbravobernal for compiling these notes!

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

Visual Testing Revisited

(Slack conversation)

@aduth talks about taking a look to the tool Chromatic. It is integrated with Storybook and seems to be capable of making visual regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. tests of isolated components.

Team talks about how important it is to focus and give a little more love to Storybook.

Q comments that will be more important as they focus on 

Chromatic turns your stories into visual test baselines. Each story is rendered in Chrome, Firefox, and Internet Explorer 11 simultaneously then compared to a screenshot of the “last known good state”. Whenever there are UIUI User interface differences you get notified.

We have to notice that there is already a pull request for end-to-end testing with browserstack for old browsers.

There is a “sponsorship” for Chromatic with Open SourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. projects. See link

Action:

  • Follow-up on this, or to start experimenting. (needs champion)

Coding Guidelines Documentation

(Slack conversation)

@aduth asks for opinion about these pull requests:

@aduth observed some relation to “language support” and “ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. components”, since there’s been a handful of requests recently that “X” JavaScript feature be supported in order to makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). writing class components easier. He is going to merge them in a near future (some are already merged).

Also, the team has committed that GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ will only support TC39 Stage 4 (“Finished”) ECMAScript (JavaScript) language features. 

Action: 

Open Floor

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. IDs

(Slack conversation)

@sageshilling has an issue: when looking at blocks in the post ,they don’t have an id associated with them. Images and reusable blocks have the post_id, but the post_id updates with the page edits. Also, the block attributes has no identifier- that’s unique and constant throughout. With tables we have the unique key, so it’s something that we’re used to having to use as a reference.

Action: 

  • Continue the discussion in a pull request or issue.

Auth Check Interval

(Slack conversation)

@dsix asks for review at #49573 . The issue is that the server-side code was updated to ignore auth_check_interval parameter in the heartbeat request, so that value has no effect.

His assumption, based on the fact that the server-side code was changed to return the auth_check data on every heartbeat, was that the interval was no longer needed.

Action:

  •  Invest more time for testing / feedback. PingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” the people involved in the original change.

#core-js, #javascript

JavaScript Chat Summary – April 28th, 2020

Below is a summary of the discussion from this week’s 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/. chat (agenda, Slack Transcript)

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

Agenda: Changelogs for npm packages (@gziolo)

Slack

Discussion was around:

  • How to makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). it easier to distinguish unreleased changes.
  • Can we somehow inform about the estimated date of the next npm releaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software.?
  • Possibility of adding linting rules.
  • Possibility of using a standard format (such as keepachangelog or atlassian changesets).

Action:

Some proposed next steps are:

  • Revisit some of the changelog verification work (@aduth)
  • Create a proposal for very standardized formatting of changelogs.

Agenda: ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. Fast Refresh (@gziolo)

Slack |Github comment

React Fast Refresh is coming to React ad Greg was wondering if we should start testing it with wp-scripts start as well.

Actions:

  • Potentially experiment with things like React Fresh Refresh by putting it behind an env flag to start.

Agenda: Restoring TypeScript Types (@aduth)

Slack |Github

Of note is that with the work in the linked pull, it was decided that the project would be using React types directly rather than trying to abstract them through @wordpress/element.

For most consumers I hope it’s a detail most folks won’t even notice. It’s particularly important when doing more complex type operations. React exposes a lot of mapped types (think of functions on types) that will be necessary in some cases, but for the most part folks will continue to do import { Component } from '@wordpress/element'; and get all the right types.

Jon Surrell

Open Floor:

News Roundup

This roundup contains a few links for GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ and JavaScript related news curated (and commented on) by @nerrad

Other Random Stuff

#javascript, #meeting-notes

JavaScript Chat Summary: Tuesday, April 21, 2020

Below is a summary of the discussion from this week’s 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/. chat (agendaSlack transcript).

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

Package updates and type checking support

@aduth shared the following announcement:

There was a round of WordPress NPM packages updates published last week. These were the first to include first-party TypeScript types :tada: Unfortunately, there were some unforeseen conflicts with a few of them, and some had to be quickly backed out temporarily and will be republished later.

More about the issues can be found here: https://github.com/WordPress/gutenberg/pull/21613.

Including follow-up tasks: https://github.com/WordPress/gutenberg/pull/21613#issuecomment-615314861

@jonsurrell added that we conflicted with 3rd party types from DefinitelyTyped. In isolation, there was nothing strictly wrong with the new types. In the future, the DefinitelyTyped types would be replaced by packaged (1st party GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/) types, but in the short term, it’s in everyone’s best interest to remain compatible.

The solution to remain compatible with DefinitelyTyped is not yet clear. @jonsurrell created the following issue to discuss it https://github.com/WordPress/gutenberg/issues/21767. Feel free to leave your thoughts there.

Ongoing WordPress packages tasks

@aduth collected and shared the following list of tasks happening around WordPress packages:

@adamsilverstein said that for the underscore to lodash work, the biggest win would be to remove the underscore dependency from the media library. @adamsilverstein volunteered to work on the task.

Regarding the on-demand installation of Puppeteer, @aduth demonstrated great excitement with the change. Saying it will reduce the installation time for new development environments pretty significantly, especially because it’s also part of the general-purpose wp-scripts. @aduth concluded this improvement in new setup time would be useful in contributor days.

#core-js, #javascript, #meeting-notes

JavaScript Chat Summary: April 14, 2020

Below is a summary of the discussion from this week’s 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/. chat (agenda, Slack Transcript).

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

Internet Explorer End-to-End Testing

(Slack conversation)

Context: https://github.com/WordPress/gutenberg/pull/21528

Feature Proposal: https://github.com/WordPress/gutenberg/issues/16509

Discussion: The above pull request seeks to introduce a new package incorporating a Selenium-based web driver to run Internet Explorer tests through BrowserStack’s automation 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..

Discussion Points:

  • It’s been something of a pain point in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/’s history of browser-specific bugs that can’t be captured with the current set of testing tools.
  • It ought to be done with careful consideration since having multiple test setups for end-to-end tests is prone to introduce some confusing developer experience.
  • @adamsilverstein could imagine there might be other ways to leverage Browserstack as well, e.g., if we want to cover additional browsers.
  • Running on merge to master seems fine, although that means you’ll be fixing things after they are broken.
  • @aduth raised that typically Browserstack is a paid service (“$12.50/mo for Freelancers” plan is the cheapest). They offer free open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. testing, which he applied for and was accepted. But that doesn’t help for local testing since we’d not want to be sharing our credentials.

News Roundup

This roundup contains a few links for Gutenberg and JavaScript related news curated (and commented on) by @nerrad.

  • Dave Ryan posted a reflection on the recent WPBlockTalk conference. One standout observation he made that I took note of:
    • “The 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. Editor is great, but perhaps some of the biggest potential for the Gutenberg project exists in the relationship Blocks can have with the external, web ecosystem — both how edits in the Block Editor can be pushed to other services and how external systems can automate content creation and edits on the WordPress side.”

#core-js, #javascript