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 make 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 make 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 make it easier to distinguish unreleased changes.
  • Can we somehow inform about the estimated date of the next npm release?
  • 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

JavaScript Chat Summary: April 7, 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.

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

(Slack conversation)

Context: https://github.com/rlankhorst/wp-consent-level-api/issues/50

Feature Proposal: https://make.wordpress.org/core/2020/04/01/feature-plugin-proposal-wp-consent-api/

Discussion: What is the ideal JavaScript interface for accessing, updating, and responding to changes in consent? In what ways could we leverage the existing data module?

Discussion Points:

  • Is data module supported on sites running Classic Editor 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 it otherwise tied to 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?
    • While it is developed in 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, it’s intended to be general-purpose to support a variety of use-cases.
    • For example, WooCommerce plugin is using the data module outside of the editor context.
  • A primary value of the data module is API consistency in retrieving and updating data.
  • There is a need to support expiration as part of the requirements of the Consent API.
    • @nerrad has done some experimentation around this and would be happy to help contribute to the discussion.
  • @youknowriad shared a code example for how a basic consent implementation could be achieved using the data module.
  • There could still be abstractions on top of the data module.
    • For example, the blocks module uses the data module internally, but still exposes its public API as wp.blocks.registerBlockType, etc.
    • Ideally these would still follow the convention of groupings under the wp global (wp.consent).
  • Another advantage of the data API is that it provides future-proofing if blocks or future UIs are built with the Consent API in mind.
  • There’s a general desire to develop new APIs as following consistent and established patterns.
  • There may need to be enhancements to the data module in order for it to be most useful:
    • Subscribing to changes in a specific store value is currently cumbersome.
    • Expiration.
    • Persistent storage using cookies.
      • The current data module or persistence implementation can support this, but it may still need further enhancements so as not to break expectations that preferences may still need to save to localStorage for the near future.

#core-js, #javascript

JavaScript Chat Summary: March 31, 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). Many 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.

TypeScript Types from Packages

(Slack conversation)

WordPress packages will now ship with their own first-party TypeScript types!

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

The types (declaration files) will be published with the packages, so folks using the packages via npm will have access without doing anything else.

The type generation is built into the existing package build/publish flow, so things should remain largely the same from the perspective of 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/ development (hopefully with better information in our IDEs!)

npm run build:package-types is the script that generates them.

Awesome job! Kudos!

Action:

JSX support for wordpress/scripts

(Slack conversation)

Link to the issue

PR proposing it for formatting command.

There is a small discussion about seeing if it is necessary to discourage or not jsx files. Noticing that changes to accept jsx are quite simple. And are even accepted in some code already. There are different opinions, so the team prefer to continue the discussion.

Action: 

Open Floor

Updating Jest Error

@gziolo had issues upgrading Jest with the last version. See pull request. Asks if is it a good reason to refactor them to use the ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. Testing Library?

@aduth comments that is Enzyme related issue. That expects a DOM to exist.

Airbnb transferred the project to the community. Seems that everyone is going to switch away from Enzyme.

Also they comment that Jest, Babel and Puppeteer should be upgraded, and would be nice to have some strategya arount all that. The project seems to have too many dependencies.

Action:

  • No action defined.

News Roundup

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

#core-js, #javascript