Giter VIP home page Giter VIP logo

project's Introduction

Open Web Docs project

About

Open Web Docs supports web platform documentation for the benefit of web developers & designers worldwide. We are a community of web developers, standards makers, and technology companies that rely on this documentation as critical digital infrastructure, and we work cooperatively to ensure its long-term success and maintenance. See our charter.

Governance

We are comprised of:

  • A Governing Committee which administers the financial sponsorships made via opencollective.com, and explores strategic partnerships and needs for web documentation projects. Governing Committee members are representatives of organizations that have made substantial financial contributions to OWD, and include one representative from staff.
  • A Steering Committee which develops and implements shared public roadmaps for key documentation priorities, and facilitates community involvement and execution of those priorities. Steering Committee members are invited on the basis of their expertise and perspective, and represent a mix of individual developers, standards developing organizations, non-sponsoring organizations, and other key stakeholders.
  • Full-time technical writing staff who oversee and execute on day-to-day documentation tasks, lead steering committee conversations, and develop and measure success. Staff are legally-compliant employees of the project.
  • Community contributors, including technical writers from other organizations, web designers and developers, standards authors, and other individuals interested in contributing high-quality content for documentation, feedback, proposals or other input. Anyone can be a community contributor.

All participants are expected to abide by the code of conduct and follow our membership expectations guidelines.

FAQ

What is the relationship between Open Web Docs and Mozilla?

  • Open Web Docs is a non-profit, strongly community-focused open collective that uses its donations to employ a group of technical writers who are dedicated to writing and improving human-authored documentation for the web platform.
  • Open Web Docs was founded in January 2021 and its mission and core values are described in the OWD charter. It is governed by a Governing Committee and a Steering Committee.
  • Open Web Docs believes that open and accurate web platform documentation is critical digital infrastructure that ultimately benefits all users of the web.
  • MDN Web Docs is one of the most prominent websites that publishes web platform documentation and compatibility data that we contribute to. Mozilla covers the cost of running MDN Web Docs and has its own engineering team, which works on the infrastructure, development, and maintenance of the developer.mozilla.org website. Mozilla also has its own technical writing team.
  • Open Web Docs is not involved with MDN Plus, a premium subscription service by Mozilla that allows users to customize their MDN experience.
  • Open Web Docs is not funded by Mozilla.
  • Open Web Docs only works on free and accessible content; OWD will never contribute to content that is locked behind a paywall, subscription service or similar.
  • Open Web Docs does not do work for the commercial interests of Mozilla or of any other company that we partner with.
  • Mozilla is part of the Open Web Docs Steering Committee.
  • Open Web Docs is not part of the MDN Product Advisory Board and has not given Mozilla advice on MDN product features (disclaimer: representatives from various companies on the MDN PAB are also representatives in the OWD Governing & Steering Committees; they wear several hats).

project's People

Contributors

bkardell avatar captainbrosset avatar chrisdavidmills avatar ddbeck avatar dominiccooney avatar dontcallmedom avatar elchi3 avatar estelle avatar foolip avatar jdatapple avatar joelmarcey avatar jorydotcom avatar kypflug avatar lauramorinigo avatar lolaodelola avatar meyerweb avatar piotrtomiak avatar queengooborg avatar robnyman avatar rumyra avatar sideshowbarker avatar teoli2003 avatar torgo avatar upsuper avatar wbamberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

project's Issues

OWD Q3 projects

We met last Wednesday (June 9th, 2021) to go through current OWD project proposals and ideas.
This issue summarizes them so we can discuss which projects to take on in Q3 2021 (the months July, August, September).

Continued projects

These project have been started and it makes sense to continue them in Q3.

Proposed projects

Proposed projects are defined ideas that are clear in scope. They are ready to be worked on.

Ideas

These ideas aren't proposals yet as more details are needed.

Submit ideas

You can still submit ideas until the end of June and we will take a look!

OWD project: Task-oriented content combining multiple APIs

Looking at 2022 Q2 Projects (Issue #95) I was speculating that MDN could write some intermediate/advanced tutorial or "architecture guide" content which cuts across multiple APIs.

To use Q2 projects as an example, something about implementing themes could combine CSS colors and cascade layers, plus some other APIs (prefers-color-scheme, CSS variables, maybe shadow parts.)

@estelle asked me to file this issue during last week's steering committee meeting. I'm not advocating a massive change of direction here: I really like MDN's comprehensive, individual-method-and-property level API documentation. But advanced material using different APIs together could have compelling value.

Complete ARIA roles

Project: Complete the ARIA Roles section

Create Page

Simple page needed (with link to HTML element)

  • ARIA: associationlist role
  • ARIA: associationlistitemkey role
  • ARIA: associationlistitemvalue role
  • ARIA: blockquote role
  • ARIA: caption role
  • ARIA: code role
  • ARIA: deletion role
  • ARIA: emphasis role
  • ARIA: insertion role
  • ARIA: paragraph role
  • ARIA: strong role
  • ARIA: subscript role
  • ARIA: superscript role
  • ARIA: time role
    mdn/content#12208

Content needs to be written

Needs updates to links

Additional Tasks

"Better" Browser Compatibility Decision Support

Browser compatibility data in MDN is usually pretty good but could be better. It is necessary to consult caniuse.com which has links to other sites that describe bugs, edge cases and work-arounds.

Here are some observations of some good points of caniuse. These observations aren't intended as "make MDN like this" or "make BCD like this" but as a starting point to investigate what decisions people use MDN compatibility tables for and how MDN could inform those decisions better:

While there are notes in BCD, examining the content highlights the nature is a bit different. MDN may even have similar content but it is not in context.

The presentation is different, on MDN you have to expand notes per property, per browser; on caniuse the information is in hovercards and you can see a list of "known issues" in one place. There is more consistency between browsers (for example, look at caniuse.com/flexbox notes and see that note 1 applies to 5 browsers from 3 vendors.) The caniuse presentation shows browsers aligned by date, share, current version, etc.; this might be easier to parse for people who have a certain support policy like "two latest versions" or "anything in the past two years" or "x% share" etc.

The granularity of the data are also different; for example, caniuse.com has one entry per browser for "Pointer Events" but on MDN you have to parse a table of 17 rows per browser.

caniuse.com has less friction for reporting data problems than BCD.

The MDN compatibility table may suffer from the simple problem of being at the bottom of the page. caniuse has big #s to encourage deep linking, etc.

OWD project: Update HTTP docs (HTTP/2, HTTP/3, CSP, etc)

This proposes that we work update HTTP documentation on MDN docs to take into account the HTTP/2 & HTTP/3 protocols, a move to Markdown, fix the outstanding issues, and revisions of the unclear areas (CSP, Cacheโ€ฆ)

Problem statement

MDN docs articles about HTTP are now several years old. This area overall structure and content are still mostly in good shape and new features that appeared over the years (like Client-Hints for example) were added mostly smoothfully in that structure.

But HTTP has evolved over the years: HTTP/2 is now the most common version in use and HTTP/3 is in the progress of being released. We don't speak about these versions at all and that 1) leave our readers in the vague about these versions 2) makes MDN docs look outdated. We don't need to speak in all details about these protocols โ€“ a web dev doesn't need them โ€“ but we need at least:

  1. An introduction for each of these two protocols;
  2. Up-to-date glossaries entries for them, but also related technologies like QUIC;
  3. Guide about advanced features and how to use them (Push functionalities?)

Also MDN docs get quite regularly issues about HTTP; there is currently a back-log of 23 issues, about 5% of the overall total, some of them pretty complex to solve.

HTTP docs, like the others area of MDN docs, have to move to Markdown as the devs won't want to keep it in HTML for long. There is a need edit consequently this area of the docs.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Medium. We will write about 5-10 new articles overall, most of them (once HTTP/3 ships) low maintenance. There may be some untangling of complex articles and some revisions of the other articles (are the types of headers correctly set?). The whole area is 292 pages that will need to be reviewed and edited (but not completely rewritten)
Dependencies No dependencies on the devs. A little bit of support for the migration to Markdown
Community enablement Low, though updating templates may help our community to update it regularly.
Momentum HTTP/3 has been released by default in several browsers, but not yet all. Having up-to-date docs when people look for novelty is always good.
Enabling learners Only basic understanding of HTTP/3 will be provided
Enabling professionals N/A
Underrepresented topics / ethical web N/A
Operational necessities The move to Markdown will have to happen anyway.
Addressing needs of the Web industry N/A

Task list

  1. Assess in details the HTTP area and make a proposal of new pages to be written, structural to be made.
  2. Process with the minor restructuration
  3. Add the 5-10 new articles
  4. Update the area by resolving the HTTP-related issues on github.
  5. Prepare for the Markdown migration (can be done in parallel with the other activities)
  6. Migrate to Markdown
  7. Review and fix details.

More information

Open Web Docs (OWD) is a non-profit collective funded by corporate and individual donations.

In order for this project to happen, please consider donating to OWD on https://opencollective.com/open-web-docs.
For more information on sponsorship and membership tiers, see https://openwebdocs.org/membership/

More information is available at https://openwebdocs.org.
For questions, please reach out to [email protected].

OWD project: 100% complete BCD API data (no true/null values)

This is a project corresponding to mdn/browser-compat-data#6369 which I and @queengooborg have been working for over a year now. We hope to get to 98% complete by the end of September, and make the push for 100% by the end of the year.

That final push will involve many tricky cases and some compromises, and I think we would really benefit from a shared goal to get it done.

The work can be simplified as ensuring that there are no true or null values in https://github.com/mdn/browser-compat-data/tree/main/api, but the actual strategy is to divide it into categories that can be tackled effectively together, such as event data.

OWD project: update existing events

The way that events are documented on MDN and represented in BCD is not great, with different facets of events being treated as separate, and no clear entry point to learn about an event. Previous discussion on this is in mdn/browser-compat-data#7545 and mdn/browser-compat-data#12290.

To summarize the three main facets in terms of BCD entries / MDN pages that often co-exist:

  • Event interfaces, such as ClipboardEvent
  • *_event entries/pages such as cut_event (in this case there are three more pages)
  • on* event handler attributes, such as oncut (these are often on many interfaces, often via the GlobalEventHandlers mixins)

Suggested work:

  • Avoiding the duplication between *_event and on* entries and pages, and have a clear main page for each event such as "cut". While element.addEventListener('cut', handler) and element.oncut = handler aren't exactly the same and can have different browser support, I think we should think of this as one feature, which could have partial support.
  • Get rid of the last mixins: GlobalEventHandlers and WindowEventHandlers (mdn/browser-compat-data#12290)
  • Ensure the correct linkage between events and their interface, so that one can always find the right interface for an event ("cut" โ†’ ClipboardEvent and ClipboardEvent โ†’ "cut" + "copy" + "paste")

OWD Project Proposal: MDN Dark Theme

A dark theme for MDN is something thatโ€™s been discussed many times, and I think it would be a great feature to add. Out of all discussions on Yari, itโ€™s the most upvoted and most commented discussion (17 upvotes and 40 comments), with seven duplicate issues opened on mdn/yari and four on mdn/content. I have a Userstyle written to add just that, and itโ€™s reached over 750 installs since I put it on userstyles.world on September 28th, 2021. Many users are wanting a dark theme for MDN web docs, and it would be great to get one implemented directly into Yari.

I feel that this is something that will take minimal effort to implement, as the grunt of the work has already been handled in the Userstyle I've written! I'm of course happy to lead this project, and I estimate this should take a week at most to implement.

Faster search to MDN content

When web developers are seeking documentation from MDN, the search results often include another site with apparently better SEO but less useful documentation. Developer have to repeat searches to exclude that site or mention MDN.

Something to take the friction out of searching for content on MDN when you don't have MDN open in front of you would help developers get the content they need. SEO, search providers could help.

OWD project: use webref as the source for CSS formal syntax, instead of mdn/data

This proposes that we should start using the w3c's webref project as the source of CSS formal syntax, instead of mdn/data.

Problem statement

In our CSS documentation we have a section "Formal syntax". This is built using a KS macro CSSSyntax, which gets the data from the mdn/data repo.

The specifications are the source of truth for this data, so it's not optimal having this separate copy in mdn/data. Sometimes the version in mdn/data falls behind and we have to remember to update it, or people get outdated information.

It turns out that the w3c already makes this information available in a machine-readable way in their webref project. So this issue proposes that we:

  • start using webref as the source for this, rather than mdn/data
  • stop maintaining the formal syntax in mdn/data.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Small. We'd need to update the CSSSyntax to fetch the data from webref rather than mdn/data. It's a complex macro but I hope we can leave most of the complexity untouched.
Dependencies Depends on dev team for review of changes to the KS macro and to bless a new dependency in Yari. Also depends on any key users of mdn/data (most obviously CSS Tree) being informed and helped to move away from mdn/data.
Community enablement Low (though helps us build more things with the w3c).
Momentum None.
Enabling learners No. CSS formal syntax is pretty much a power-user thing.
Enabling professionals Would help ensure professionals get up-to-date formal syntax in MDN pages.
Underrepresented topics / ethical web N/A
Operational necessities N/A
Addressing needs of the Web industry N/A

Task list

  1. Understand the interface of webref and how it maps to mdn/data, and whether there is anything missing that we would need.
  2. Get agreement from the dev team to add webref as a Yari dependency.
  3. Get agreement from key users of mdn/data to migrate away from it, towards webref probably.
  4. Update Yari dependencies to include webref.
  5. Update CSSsyntax to use webref instead of mdn/data.

Additional comments

There's a bigger version of this proposal in which we replace not just the formal syntax, but all the CSS data in mdn/data, with webref, and may then be in a position to retire mdn/data entirely. But this is a major step towards that goal, has value in itself and keeps the project small. If, when we get into it, replacing the other CSS data seems straightforward we could consider doing that in this project as well.

OWD project: plan sidebars for content architecture refresh

Summary: Sidebars are difficult for readers to navigate, but authoring sidebars is sufficiently difficult that making improvements to sidebar navigation is not currently practical. This is a step forward to fixing the latter, so we can fix the former.

Daryl (and others) are working on a visual refresh of MDN. Some of the proposed changes have impacts on information and content architecture. The content and arrangement of MDNโ€™s sidebars are the clearest manifestation of these changes. To minimize unpleasant surprises, there ought to be a specific person representing authors in this process.

@wbamberg has already provided a lot of input in this area, so I think it makes sense that he would be the person to continue this work, but that's not an actual requirement (though it'd be nice to have a single owner, to make definitive judgement calls).

Tasks:

(these are rough tasksโ€”to give a sense of the flavor and size of the work; a lot of this is going to be a consequence of design decisions, which aren't final yet)

  • Document requirements for new sidebar structures to meet needs of refresh and authors
  • Propose (interim? v1?) sidebar structure and seek feedback from designer, devs, and authors
  • Write new static sidebar contents (e.g., write YAML files with actual structures) OR write specifications for new sidebar macro behavior

Stuff thatโ€™s not in scope:

  • Sidebar implementation (e.g., writing code that generates sidebars)
  • General content modeling work (we should do this at some point, thereโ€™s more discussions to be done in this area for it to be a coherent projectโ€”not ready for execution yet)

OWD project: Up-to-date & machine readable specification links on MDN and in BCD

This is a write up of a project around specification links that @sideshowbarker and I started to work on and that I'd like to introduce here some more, so that it becomes more transparent why we should do some work on this and what work is involved exactly.

Problem statement

  • The specification sections on MDN oftentimes present links to outdated or irrelevant specs. Browser engineers are unhappy to see links non-current specs and web developers get the wrong information about what is the latest standard. Some old specs are redirected by the W3C already, other links just continue to point to dated material or are 404.
  • The spec links aren't machine readable like the compat data is. Various tools need a mapping between: mdn url, spec url and compat data.
  • The MDN spec sections are inconsistent. If they were rendered from data, like the compat table, we could change the design of this section from a central place and iterate more on it.
  • Currently, to add a spec to MDN, one has to add to the specdata kumascript macro in yari to first register a spec. Then it is possible to call a spec macro to display a link. This process is unnecessarily complicated and costs time.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Large as this affects all MDN reference pages. However, thanks to the scraping work that Mike has done, we were able to quickly get spec_urls in for javascript and HTML pages already.
Dependencies BCD and MDN are both involved. In order to render the spec section from a template like the yari compat table, we need yari engineering time. Collecting the spec_urls into BCD doesn't have a dependency, though.
Community enablement Anyone can submit and review spec_urls to BCD features. Is shareable. Some knowledge about what makes a spec a current spec required.
Momentum I think the momentum comes from being able to use this data in a machine-readable form in some spec tooling. No direct web developer momentum, I think.
Enabling learners N / A
Enabling professionals Professionals appreciate a precise spec section on MDN
Underrepresented topics / ethical web N/A
Operational necessities N / A
Addressing needs of the Web industry N / A

Proposed solutions

  • Add a spec_url property to BCD and review all spec_urls for correctness and if they point to the most recent spec version. (See mdn/browser-compat-data#6765)
  • Source the MDN "Specification" section from the BCD spec_url. mdn/content#1146
  • Improve the rendering of the MDN "Specification" section.

Task list

  • Define spec_url for BCD and agree on what sorts of specs qualify as correct and current.
  • Populate spec_url for all BCD features (upstream from https://github.com/w3c/browser-compat-data but review data from there)
  • Source the Specification section from BCD data
  • Remove the specdata macro implementation
  • (possibly more here)

OWD project: Update MDN Privacy docs

https://developer.mozilla.org/en-US/docs/Web/Privacy is a draft and the sub pages are about Firefox. Since these were authored there has been a lot of spec and browser activity to document and consolidate, and the scope of this area continues to grow.

For example many pages on MDN mention fingerprinting, but I don't think there's a page explaining fingerprinting. Understanding a bit about entropy would help developers see the relationship between topics like fingerprinting, navigator.userAgent simplification, and various vendors' conversion tracking proposals, empowering them to productively engage with this important area. Entropy is just one example; another is many privacy-sensitive ad conversion proposals rely on crypto but applied in a way that may be unfamiliar to many web developers.

As well as conceptual material, we need practical material. @sideshowbarker mentioned that:

Stack Overflow is one place where I can say Iโ€™ve seen a lot of developer confusion/frustration about [privacy and tracking]. I read a lot of questions on Stack Overflow from developers having issues with cross-origin requests โ€” many of which the developers tag with the cors tag, even though theyโ€™re not about CORS; in the minds of a lot of developers, โ€œCORSโ€ just means โ€œcross-originโ€. A while back I started seeing a lot of questions about SameSite stuff, so in April I updated the samesite tag guidance, at https://stackoverflow.com/tags/samesite, and re-tagged a few dozen questions with that tag. I notice the tag now has 404 questions โ€” which I think is a lot more than it had at the time I did the re-tagging in April.

On the other hand, @foolip mentioned that:

I don't think different policies around cookies and storage came up much at all in surveys I've looked closely at. In https://insights.developer.mozilla.org/reports/mdn-browser-compatibility-report-2020.html you can search for "the new SameSite setting for cookies that will break some browsers no matter what you do and you have to resort to browser sniffing" so there's something, but not much. Of course that research was long ago in the context of ITP/Potassium.

OWD project: Fix how MDN distributes Polyfills

This project proposes that we work on fixing how MDN distributes Polyfills.

Originally proposed in the MDN discourse https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500 but never rolled out, because the MDN wiki didn't really allow to make mass changes. This is now much more approachable with MDN in git.

Problem statement

MDN reference pages often contain large code blocks of Polyfills. This is bad for a few reasons.

  • The UX is terrible: The polyfills are distributed in the reference page inside the usual <pre> code blocks which are normally used for static code examples and create a giant blocks of code you normally donโ€™t want to read, but need to copy & paste into your project in order to make use of the polyfill.
  • Maintenance is an impossible task: The MDN staff contributors and the core community lacks knowledge and time for of looking after changes to polyfills. Code of polyfills can be really complicated as it implements functions and algorithms described in e.g. the ECMAScript specification or needs to handle weird edge cases. The code aims to be correct and fast, which can be tricky, too. There are bugs filed against MDN polyfills; they remain unresolved.
  • Translations outdate, too. I havenโ€™t even looked at how bad polyfills are on outdated wiki translations.
  • We do not conform to the advice for polyfill distributors from the W3CTag:
    • We donโ€™t check if we host bad polyfills that are hurting the web. They were in the wiki and editable at any time.
    • We do track spec changes more or less, but we are unable to update the polyfills accordingly.
    • Weโ€™re not a CDN for polyfills, we donโ€™t bundle them (someone apparently started doing that for MDN), nor can we guarantee any integrity, or checksums, caching, or anything the like.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Medium. Need to identify how many pages involved but it is not all reference pages.
Dependencies Need to agree on trusted Polyfill sources
Community enablement Yes. This task is quite self-contained and contributions to update as many pages as possible are welcome
Momentum N/A
Enabling learners Not really. Sometimes remove large distracting code blocks from reference pages
Enabling professionals Probably. You want to trust MDN about its Polyfill recommendation
Underrepresented topics / ethical web N/A
Operational necessities N/A
Addressing needs of the Web industry Might help address compat pain point as Polyfills are part of the story there.

Proposed solutions

  • We should remove polyfill code blocks from the MDN pages.
  • We still want to offer polyfills to MDN readers but we should link to a trusted polyfill source rather than providing untrusted ones inline on the pages.

Task list

  • Confirm Polyfill removal and linking to trusted sources is the way forward.
  • Figure out trusted sources for Polyfills
  • Replace inline Polyfill code with links to trusted Polyfill sources

More information

Open Web Docs (OWD) is a non-profit collective funded by corporate and individual donations.

In order for this project to happen, please consider donating to OWD on https://opencollective.com/open-web-docs.
For more information on sponsorship and membership tiers, see https://openwebdocs.org/membership/

More information is available at https://openwebdocs.org.
For questions, please reach out to [email protected].

Amplifying messages via web.dev/blog

Just sending off a quick message before I forget: we'd be happy to post announcements from time-to-time. Maybe not everything, but key posts. E.g. after 6-months or something maybe you do a roundup of all the work you've done so far, and then the CTA is "BTW plz donate"

We'll have to work out details but I just want to put it on your radar that web.dev/blog is available to spread the good word

Remove obsolete HTML

Our HTML documentation contains lots of pages for elements and attributes that have been obsolete for a long time. For example:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/applet
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/basefont
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bgsound
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/big
etc etc
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table#deprecated_attributes

Although many of them are still supported in browsers, I don't see any good reason for us to document them on MDN any more. As it is they just get in the way of people looking for things that they should use.

We could list them in a single page under HTML/Obsolete (say), or just delete them (my preference).

OWD project: Document Temporal on MDN

This project proposes that Open Web Docs works on adding Temporal docs to MDN.

Repository: https://github.com/tc39/proposal-temporal
Spec: https://tc39.es/proposal-temporal
Docs: https://tc39.es/proposal-temporal/docs/

Problem statement

Temporal is a stage 3 ECMAScript proposal that aims to replace the JS Date API which has many pain points for web developers.

Temporal is a new API with a large surface area: the API reference is a few hundred properties and methods across 10 different types. It is not just a matter of writing a few PRs to get this documented. It likely makes sense to start work on the docs in parallel to implementations so that there won't be a few-month gap between implementation release and MDN docs for it.

See also tc39/proposal-temporal#1449 for the original request for MDN documentation.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Large. A few hundred properties and methods across 10 different types.
Dependencies None
Community enablement Possible. Temporal docs can be added collaboratively.
Momentum High! A replacement for Date is long overdue. Currently stage 3, so probably not yet 100% stable. Implementation work starts now.
Enabling learners Conceptual material should be added to understand dates, time, timezones, etc. a lot better.
Enabling professionals Professionals and early adopters will want to know about Temporal as soon as it implemented.
Underrepresented topics / ethical web N/A. (probably improves l10n/i18n, though)
Operational necessities N/A
Addressing needs of the Web industry Date is known as a pain point of the Web. Temporal aims help with that.

Proposed solutions

  • Start work on documenting Temporal on MDN. Mark it as unstable for the time being, but make progress together with the implementations, so that docs are in shape when the first implementation is ready.
  • Figure out how much is re-usable from https://tc39.es/proposal-temporal/docs/ and give feedback to these docs and the specification when possible.

Task list

A detailed content plan can be worked out as we go. Some first thoughts:

  • The reference docs would live under the Standard built-in objects page tree.
    • This means pages for a few hundred properties and methods across 10 different types.
    • This will need compat data and interactive-examples for all reference pages as well.
  • Date and DateTimeFormat docs might need some pointers to the new / better Temporal APIs.
  • If Date or certain APIs are deprecated or considered legacy now, we should maybe write a guide how to migrate to Temporal (this was proposed in mdn/content#2696) and maybe compare legacy Date APIs and Temporal APIs side by side.
  • The JS Guide has a chapter on Numbers and Dates. I guess it makes sense to split this up and have a dedicated chapter just for Date and Time. I reckon some guidance around when to use Date, when Temporal and when the Intl API is needed, too? And there is likely a compatibility story to tell there, too.

OWD Project Proposal: WebXR Browser Compatibility

WebXR Browser Compatibility

MDN has an essential feature where it provides browser compatibility data for its documented web technologies, including web APIs, JavaScript and HTML. This compatibility is usually represented via a table of browsers, and is essential reading for developers to ensure their apps will be usable across the widest variety of browser platforms.

Currently, the represented browsers in these tables are the common and widely used desktop and mobile browsers. And while this data is of course necessary because of the broad use of these browsers, there are other browser categories that should also be considered when it comes to compatibility.

Virtual and augmented reality (VR and AR, collectively โ€œXRโ€) devices are becoming more common in households and the industry. These devices have web browsers and WebXR provides the functionality and APIs to the web to those devices. In fact, WebXR is becoming so mainstream that MDN is starting to officially document it.

Proposal

Given the increasing use of XR devices, XR should be added alongside desktop and phones in the compatibility tables on MDN. Mozilla Mixed Reality and Facebookโ€™s Oculus Browser are examples of browsers for XR devices which could appear here. We expect browsers which work on desktops and phones, but support XR features, would continue to appear under their primary modality of desktop/phone.

Each browser vendor would provide the necessary data, in the JSON necessary format, to be added to the compatibility repo. And then that data would be exported into the MDN documentation.

The proposal is as follows:

  1. An extra column would be added to the compatibility tables called โ€œXR Devicesโ€, with an icon such as Slice 1, where native XR-based browsers would be listed.
  2. Facebook will work to provide Oculus Browser compatibility data in browser-compat-data. Facebook would like Oculus Browser to appear in the XR Devices column.

Note: Facebook would like feedback on what level of coverage OWD needs to see for (2).

Facebook has noticed some recent XR features are missing from browser-compat-data. Facebook can update missing XR-specific features as it publishes its compatibility data. This will make it easier for other vendors and community contributors to publish updated compatibility data for XR features in other browsers.

OWD project: Generate "experimental" banners from BCD

Currently we store information about whether a feature is experimental in two different places:

  • in the page itself, as a call to the {{SeeCompatTable}} macro, which adds a banner to the page
  • in BCD, as a status flag

We do a pretty good job of maintaining the BCD version, much less well of the version in the page, so they often get out of sync and we get people asking why we are warning people about perfectly good APIs (see e.g. mdn/content#9941, mdn/content#11741, mdn/content#10220, mdn/content#10706, mdn/content#12506, etc etc).

We should display "experimental" banners based on the data in BCD, just as we now display spec tables based on BCD data.

What's involved?

  • updating Yari so it displays an "experimental" banner based on BCD
  • for pages that don't have BCD (mostly, API overview pages), add front matter to represent experimentalness
  • remove the {{SeeCompatTable}} macro

What's the benefit?

Immediate benefits

  • more reliable pages
  • easier to contribute and maintain MDN, as there's only one place to maintain this

Long-term/strategic benefits

This is in line with our general desire to build MDN content from data, where that's appropriate. We should implement this with an eye to doing something similar for other MDN banners, like "deprecated", "available in workers", "requires a secure context", "requires permissions" etc. All these things should be amenable to maintaining as data and rendering in Yari, rather than being part of unstructured prose content.

Prioritization criteria

Effort

Medium. Need to:

  • update Yari to add the banners based on BCD (small)
  • update ~960 pages that currently use SeeCompatTable (small)
  • design and implement a solution for pages that don't have BCD (small-medium)

Dependencies

Needs a little Yari work.

Community enablement

Make it easier to write MDN docs by only having one place to add the data.

Momentum

n/a

Enabling learners

More reliable docs benefit all users.

Enabling professionals

More reliable docs benefit all users.

Underrepresented topics / ethical web

n/a

Operational necessities

n/a

Addressing needs of the Web industry

n/a

OWD project: Mixin docs on MDN

This is a write up of a project around mixin docs on MDN that I've started and that I'd like to introduce here some more, so that it becomes more transparent why we should do some work on this and what work is involved exactly.

Problem statement

What are mixins? Interface mixins in Web IDL are used in specifications to define Web APIs. For web developers, they aren't observable directly, however. They act as helpers to avoid repeating API definitions. This is useful in specifications, but is often confusing in documentation.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Large. About 22 existing mixin documentation trees exist. For each page tree there are about 5-50 pages to rework and new pages to be written as mixin members are often only documented for half of the real interfaces.
Dependencies Needs to get done in compat data and in mdn/content at the same time. Requires redirects/moving pages to work on MDN.
Community enablement Reading specs and understanding mixins and IDL can be complex, yet the work is shareable
Momentum BCD collaborators (foolip, Daniel) and MDN content writers who constantly run into missing guidance for how to document mixins (Chris, Rachel, Joe) seem to really like having some momentum here. Also, the specs are usually stable for the fundamental APIs
Enabling learners It would help to be less confusing. NonDocumentTypeChildNode.nextElementSibling is very weird; Element.nextElementSibling is more accessible.
Enabling professionals This rework will bring more attention to detail and consistency to the docs which professionals would appreciate
Underrepresented topics / ethical web N/A
Operational necessities It is often a blocker that there are no clear guidelines on how to document a new API that uses mixins. (see e.g. the AriaMixin case that Rachel ran into). Once a mixin guideline is approved (first task of this project), there is no blocker anymore, though.
Addressing needs of the Web industry It does clear up very confusing compat data by a lot. So it makes compat tables more clear and probably improves web developer's perception of web compat.

Proposed solutions

  1. MDN stops documenting mixins directly.
  2. BCD stops exposing mixin data and exposes data under real interfaces instead.

Task list

  • Agree on how to document mixins on MDN
  • Write/Update MDN contribution docs on how to document mixins
  • Agree on how to deal with mixins in BCD
  • Write/Update BCD data guidelines on how to add mixin compat data
  • Update existing MDN pages to avoid mixin pages (detailed tasks see below)
  • Update existing BCD files to avoid mixin data (detailed tasks see below)
  • Deal with the special cases (large mixins like WindowOrWorkerGlobalScope and friends). Likely come up with exception rules to the guidelines for practicability.

MDN tasks

The following mixin pages need to be updated/removed per the new guideline.

  • AbstractWorker
  • Body
  • ChildNode
  • DocumentOrShadowRoot
  • GeometryUtils
  • GlobalEventHandlers
  • HTMLOrForeignElement
  • HTMLHyperlinkElementUtils
  • LinkStyle
  • NavigatorConcurrentHardware
  • NavigatorID
  • NavigatorLanguage
  • NavigatorOnLine
  • NavigatorPlugins
  • NavigatorStorage
  • NonDocumentTypeChildNode
  • ParentNode
  • SVGAnimatedPoints
  • SVGFilterPrimitiveStandardAttributes
  • SVGTests
  • SVGURIReference
  • WindowEventHandlers
  • WindowOrWorkerGlobalScope

BCD tasks

The following mixin data needs to be updated/removed per the new guideline.

  • AbstractWorker
  • Body
  • ChildNode
  • DocumentOrShadowRoot
  • GeometryUtils
  • GlobalEventHandlers
  • HTMLHyperlinkElementUtils
  • LinkStyle
  • NavigatorConcurrentHardware
  • NavigatorID
  • NavigatorLanguage
  • NavigatorOnLine
  • NavigatorPlugins
  • NavigatorStorage
  • NonDocumentTypeChildNode
  • ParentNode
  • SVGAnimatedPoints
  • SVGFilterPrimitiveStandardAttributes
  • SVGTests
  • SVGURIReference
  • WindowEventHandlers
  • WindowOrWorkerGlobalScope

Allow quickly running and editing code examples

Coverage of live examples on MDN is spotty, and many are not editable. For example:

https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox is not live
https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids is live but not editable
https://developer.mozilla.org/en-US/docs/Web/CSS/flex-flow live, interactive and editable, although maybe it's not very clear that it is editable (is that what the MDN logo silhouette means?)

If developers could expect to live edit "everything" then they could get more utility out of MDN without the friction of breaking out to jsfiddle, etc.

MDN as a repo of structured content

There have been discussions as part of the Yari transition that the same way BCD has turned to be a very useful source of reusable data, a lot of the pieces of content that constitute an MDN page could also be re-used in other contexts. More generally, moving some of the prose content into more structured data can help with automating and systematizing how MDN pages represent content.

A lot of this structuring has been happening incrementally but it would probably be useful to get a clearer picture of what the goals and constraints would be, possibly recruit consumers of this structured data to make sure that as these incremental improvements land, we're not missing opportunities and creating issues toward that plan.

OWD project proposal: regularize feature namespaces for CSS, HTML, HTTP, and JavaScript

Summary

Some browser compat data is poorly structured, negatively impacting data consistency, MDN page appearance, and other consumers (e.g., caniuse, VS Code). A relatively small number of changes to BCD and MDN content could eliminate these inconsistencies. Fixing this would involve:

  • Moving data in BCD
  • Updating pages to use the moved data
  • Exploring options for the remaining parts not directly specified (i.e., SVG and webextensions)

Background

Historically, structuring BCD was rather loose. This means some unusual cases exist, which are difficult to communicate to consumers, leave much to be desired in terms of rendering on MDN, and may have more widespread issues (e.g., in caniuse or VS Code). It has also prevented a stronger position on semantic versioning for BCD itself.

See mdn/browser-compat-data#13804 for more details.

Prioritization criteria

  • Effort
    • Relatively small, as such things go. I imagine the core part (CSS, HTML, HTTP, and JavaScript) could be completed within a couple of weeks, with a dedicated effort by a writer.
    • The more speculative part is unknown. There's probably a day or two of analysis to be done; completion effort unknown.
  • Dependencies
    • None of note.
  • Community enablement
    • Not a large effort. It's unlikely to be shared effectively, or lead to more contributions (as this is cleaning up after contributors).
  • Momentum
    • This is a new effort, though BCD has substantial reliance factors.
  • Enabling learners
    • Not really applicable. Learners are generally unconcerned with compat issues; they need to support their browser, not all browsers.
  • Enabling professionals
    • Significant. Developers need reliable information on which browsers support various APIs, CSS properties, etc.
  • Underrepresented topics / ethical web
    • Not applicable.
  • Operational necessities
    • Not applicable.
  • Addressing needs of the Web industry
    • BCD data is widely used on MDN, caniuse, VS Code, and elsewhere. Far reaching in this area.

OWD Q4 projects

We met yesterday (September 8th, 2021) to go through current OWD project proposals and ideas.
This issue summarizes them so we can discuss which projects to take on in Q4 2021 (the months October, November, December). For reference, the Q3 issue is #42.

Continued projects

These projects have been started, likely won't get done completely in Q3, and it makes sense to continue them in Q4.

Potential new projects

These are projects that have been discussed before or are new proposals. We will assess them and a stack ranking exercise will determine their importance (every SC member is encouraged to propose projects and to participate in stack ranking). Preparation drivers are people who make sure we have all the information to get started with the project if it gets prioritized by the group.

Mozilla MDN projects

Mozilla shared these MDN projects for Q4 and we might want to collaborate with them.

  • Content reorg (Ruth)
  • Documenting WebGPU (Ruth & Joe Medley)
  • Demos (Ruth)
  • Project Synth / contribution docs (Ruth)

OWD project proposal: implement BCD's next-generation linter

Summary

The current BCD linter is very limited; it doesn't (and cannot) check several things which impede data quality improvements. Starting a new linter, based on what we've learned from projects such as Stumptown and standalone BCD tests, can bring many benefits to consumers in the form of data quality improvements, such as:

  • Consistency up and down the tree (rather than only per source file)
  • Consistency across the tree (e.g., checking consistency between HTML attributes and DOM reflected attributes)

With the existing tools, these quality improvements are high risk to achieve.

Moreover, this would have substantial benefits for authors and contributors, reducing friction in contributing new data or making improvements.

Background

BCD's linter is long in the tooth. It grew from a time when we had lower expectations about what compat data would look like and how we'd work with it. With increasing automation and quality, it's no longer meeting our needs.

Unfortunately, its existing design makes it very difficult to change and improve. It has a number of problems, such as tight coupling, redundant code, and extremely limited test coverage. Even simple bugs require substantial excavation to fix; see mdn/browser-compat-data#12673 as an example.

I've written a high-level design doc for a new linter for BCD, which could make use of developments that emerged after BCD's original linter's design cemented, such as our suite of utility functions, Mocha tests, and more.

Prioritization criteria

  • Effort
    • This is somewhat flexible. A greater time investment will yield more checks and features; a small MVP that implements one consistency check could be completed in a small number of days.
  • Dependencies
    • Needs somebody with familiarity with BCD, Node.js development. Likely Florian or Vinyl.
    • Needs code review. Likely me or Florian, again.
  • Community enablement
    • Helps contributors add better data to BCD
    • Not very easy to involve the community in the initial development, however
  • Momentum
    • This is a new effort, though BCD has substantial reliance factors
  • Enabling learners
    • Not really applicable. Learners are generally unconcerned with compat issues; they need to support their browser, not all browsers.
  • Enabling professionals
    • Significant. Developers need reliable information on which browsers support various APIs, CSS properties, etc.
  • Underrepresented topics / ethical web
    • Not applicable.
  • Operational necessities
    • Not applicable.
  • Addressing needs of the Web industry
    • BCD data is widely used on MDN, caniuse, VS Code, and elsewhere. Far reaching in this area.

OWD project: clean up BCD data guidelines

Summary: To maintain the high quality of BCD data (which appears in compat tables and caniuse), we have conventions for recording certain data. Some of those conventions have been recently established, but were never written down, leading to a risk that that data will not be maintained properly. This proposal addresses that risk.

Recent efforts have caused BCD's data guidelines to slip out of sync with our actual practices. I'd like to propose a (hopefully small) effort to bring the data guidelines back in sync.

Some of these tasks have been nominally claimed by people who participated in them (e.g., sideshowbarker for spec_urls and foolip for globals). Perhaps they still want to work on them and might benefit from having a designated reviewer, or perhaps they'd like to hand off the task to some else.

I'd also be willing to be a reviewer, to support any or all of this work.

Tasks:

  • Write (or review) a data guideline for how to choose a spec URL (e.g., which spec and URL fragment) (i.e., document the completed spec URL work
  • Write (or review) a data guideline for how to record globals (e.g., when to put an API in __globals) (i.e., document mdn/browser-compat-data#11518)
  • Improve navigation of data guidelines (e.g., add more headings to group related guidelines and put the guidelines into some sort of meaningful order)

OWD Project Proposal: Updating DOM guides (and completing its reference)

Problem statement

Our documentation of the DOM is really old. Most of the guides have been written around 2005 at a time DOM implementations were not really portable between browsers.

Given that:

  • DOM is at the core of the Web, and any beginner must understand it,
  • our docs is not coherent, having been edited bit by bit over the years when something has been added/removed,
  • have good SEO (2 MDN pages came first when I tried "DOM" in Google Search) ,
  • there is almost no information about the DOM in the Learning Area of MDN (DOM in the Learning Area)

we should update this area.

Note that we can split this into different parts, not all necessary to be done at once:

  • the guides are pretty outdated and are likely to be completely revised (about 10 pages)

Screenshot 2021-08-11 at 13 51 47

There are other guides to consider, like the Using shadow DOM guide in the Web components area.

  • the reference pages can be numerous and we should analyse them more in detail before committing. (How many pages, how many are missing, โ€ฆ)
  • Things like XPath and XSLTProcessor that are in the DOM spec should be left untouched.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Medium. We will write about 10 new guide pages overall. We need to scope clearly the reference upgrade of the project as this can be a bit of a rabbit hole
Dependencies No dependencies on the devs.
Community enablement Low,.
Momentum No.
Enabling learners The DOM is a core functionality and having up-to-date and accurate guides and references will clearly help them and make MDN more appealing to them.
Enabling professionals No.
Underrepresented topics / ethical web Indirectly, as it makes the step to understand how to make websites easier
Operational necessities No,
Addressing needs of the Web industry No

Task lists

TBD

OWD project: Making MDN syntax boxes beginner friendly

This project proposes that we work on enhancing MDN syntax boxes in MDN JavaScript and Web API docs.

Originally proposed a few years ago on the MDN mailing list https://groups.google.com/g/mozilla.dev.mdc/c/eS12O5mAI-A/m/J1Qd-HajBgAJ and recently re-proposed on mdn/content: mdn/content#2202

Some work in this direction has happened, but it has only been tested on a few pages and not rolled out widely enough. Also, talking to actual beginners, and doing user research and A/B tests would help to further enhance this section.

Problem statement

The syntax section on MDN helps readers to quickly get to the gist of what an API's method or constructor does. Often, the snippets in the syntax section are copy-pasted. Readers might know what splice does, but they don't always know the parameters, for example.

Currently, syntax sections are often using the more complex BNF notation. For example, array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) confuses readers.

Also "[]" is an array in JS, so a method like arr.sort([compareFunction]) can look confusing.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Large. Affects lots of pages. The work on each page is relatively tiny, though.
Dependencies None. Working with user research and/or A/B tests would allow us to find out more and do better, though.
Community enablement Yes. This task is quite self-contained and contributions to update as many pages as possible are welcome
Momentum N/A
Enabling learners Very much helps learners as it simplifies the docs and avoids confusion
Enabling professionals Not really but a detailed look at the section section will make things consistent
Underrepresented topics / ethical web N/A
Operational necessities N/A
Addressing needs of the Web industry N/A

Proposed solutions

  • As a first step, we should eliminate confusions that come with BNF notations. The proposal that is most promising seems to be to switch to multiple lines. We should roll this out to a sensible amount of docs and check if works better and avoids the confusions readers currently face.
  • At a later step, we can think about how to make these sections even better. For example, an idea by Hamish Willee is to also add types to the syntax. This would probably address a need the TypeScript community has. More research is needed to confirm this, though.
  • Ideally, we work with users and/or A/B tests. This adds a dependency though. So, we will probably roll out the multi-line version and see how people react to it to confirm the approach.

Task list

  • Agree on a way forward to avoid the BNF syntax. Done! We're going with multiple lines for now.
  • Update MDN contribution docs. Done by Hamish Willee!
  • Update MDN JS docs

Follow ups:

  • Update MDN API docs
  • Do more research around adding types

OWD project: Organise Web APIs

Ideally Web APIs should be categorised. This will benefit visibility for users, but also help drive how we organise the standalone demos MDN has. Currently the majority of 'github' demos within the MDN org are Web API ones and they could do with an update & better architecture. However this proposal is the first part to categorisation, which is to start by moving interface docs under their relevant Web API.

For example:

  • Web Audio API (Parent folder)
    • AudioNode (Interface)
      • context
      • numberofinputs
      • ...
      • connect()
      • disconnect()

There's a couple of caveats - some things just don't fit in this structure (like fetch) and possibly can be left out. Also probably worth a discussion is tutorial docs, which are usually under the main API folder.

One possible solution is:

  • Web Audio API (Parent folder)
    • Interfaces
    • Tutorials

It might be worth considering tutorials which cover more than one API - should these be a part of learn?

Effort

This should be just the first step to categorising Web APIs. However there would be a lot of moving of docs, so it's not a small effort

Dependancies

No changes to the platform should be needed

Community

One approach could be to raise an issue for each API detailing which docs need to be moved. This might encourage community help

Momentum

There's another proposal to create a searchable page for APIs. This is really the platform grounding to begin something like that

Enabling learners

Eventually a better way to discover APIs - however this is not covered by this first part

Enabling professionals

As above

Underrepresented topics / ethical web

N/A

Operational necessities

N/A

Addressing needs of the Web industry

Eventually be able to categorise Web APIs and mirror that with the external examples we have. Thus making it easier for users to discover both the docs & code examples.

MDN content project: Modernizing the Learning Area JavaScript modules

This was originally filed by Chris in mdn/content. Although the project is now complete I wanted to keep a record of the original proposal for traceability.


This RFC proposes that we work on modernizing the Learning Area JavaScript modules
available on MDN.

Problem statement

The JavaScript learning area modules are pretty good as they stand, and still
helpful to aspiring web developers. The main problem is that many of the
component articles were written before the time that MDN's JS policy was
changed (from "don't use ES6 features, they are too modern" to "use modern
features").

As a result, a number of articles are a bit out of date, or teach the old way
of doing something first, with the new way added in as a new section at the end.

Examples:

  • In the Handling text โ€” strings in JavaScript
    article, old-school string concatenation is introduced centrally,
    whereas template literals are introduced at the end as a newer syntax that
    you'll also come across. This should really be done the other way round.
  • In the arrays introduction,
    the basics are explained just fine, but there is no coverage of modern array
    methods that are very commonplace in JS these days, such as map() or filter().
  • In the JS objects module,
    old-school constructors and prototypes are introduced first, and ES class
    syntax is tacked on the end as an afterthought. This should be the other way
    round.
  • We did some work on making sure that const/let is used in appropriate
    Places instead of var. We should check to see if there is any more work to
    do here.
  • We should include a guide early on about targeting browsers, where we could
    cover things like considering which browsers/non-browser runtimes you need to
    support, making it clear that we only support modern browsers in these guides,
    and setting up tools like Babel.js if you want to support ancient engines.

Priority assessment

This list checks this project against the OWD prioritization criteria.

  • Effort: Medium/High: There are over 40 JavaScript articles in the
    learning area, and each one needs to be audited, a decision made about what we
    should do with it, and then rewriting work done. Related examples also need
    to be updated.
  • Dependencies: Not much to mention here.
  • Community enablement: Yes. Each page rewrite is a self-contained task, so
    we could get community to help out here.
  • Momentum: Medium. A lot of features we'd be writing about are pretty
    stable, but the technology is very popular.
  • Enabling learners: Yes!!
  • Enabling professionals: Yes, somewhat. Even professional web developers
    can often benefit greatly from an authoritative source of information show
    the modern way to write JS. We should aim to keep this pretty up-to-date.
  • Underrepresented topics / Ethical web: n/a
  • Operational necessities: n/a
  • Addressing the needs of the web industry: n/a

Proposed solutions

Audit existing articles, work out how to update them, get them rewritten.

Task list

  • Agree on an overall strategy for the updates. For example, is there a
    particular set of ECMAScript that we want to stick to documenting in this
    resource? How new is too new? Do we gate it on what is supported in at least
    two rendering engines, or some such thing? How do we deal with
    backwards-compatibility? Show examples of how to support older browsers, or
    just teach everyone how to use Babel.js to begin with?
  • Audit each page. For each one, write a list of what needs to be done to get
    that page updated in line with the above strategy.
  • Find writers to help do this work.
  • Divide the writing and reviewing work up between the available writers.

Project: ARIA widget roles

All the roles were documented in Q3 2021 with the exception of the widget roles.
This project would make the ARIA roles section of the MDN complete.
Roles to edit include:

Full documentation for:

Documentation for some of these exist. Others don't. But all need improvement.

Brief documentation needed for:

The reason the latter section needs brief pages is that the roles exist, but should not be used. So, we need to include them for completeness, but we don't need lots of details, just an explanation of existence and purpose, and a "do not use" warning.

OWD project: @layers and cascade

Cascade layers are part of Interop 2022

Cascade layers give web developers more control over the cascade. They provide a way to group selectors into layers, each with its own specificity. Cascade layers are now supported in most, but not all, browsers.

Cascade layers mean developers don't need to order selectors carefully or create highly specific selectors to overwrite base CSS rules. It also means there has been a change to the cascade.

We have to:

2022 Q2 Projects

[This message has been edited by various OWD members]

We have assessed different projects (and added new ones). Here is the list of projects we think are the most valuable for Q2, as well as the list of other projects considered.

( โŒ = not started, โณ = in progress, โœ… = completed)

Q2 projects

Other projects considered

2022 Q1 completed projects

These projects were completed in Q1.

issue# Project Drivers
No# Modernizing the Learning Area JavaScript modules @wbamberg
#61 Documenting events and representing them in BCD @foolip / @Elchi3 / @teoli2003 / @queengooborg
#82 ARIA Widget Roles @estelle

OWD project: Revamp MDN CSS color documentation

Summary

Update our pretty old documentation about CSS colors by rewriting <color> and writing a few guides and glossary entries to describe modern concepts like gamut and color schemes.

Background

Our documentation about CSS color is pretty old. Its structure dates from a time when keywords and rgb() were the only possible CSS Colors.

Nowadays, numerous new color schemes have been added, and are listed on the page but without overall explanations. CSS Color Level 5 is adding two more functions color-mix() and color-contrast() that are documented but not linked from <color>. They are implemented behind flags by two browsers and CSS Color Level 5 is part of INTEROP 2022.

New concepts in the world of web development (like gamut and color schemes) are not explained on MDN but only linked to Wikipedia where the explanation is larger than the one needed in web development.

Prioritization criteria

  • Effort
    • Small to medium. This is the update/creation of 5 to 10 pages, with some research.
  • Dependencies
    • None.
  • Community enablement
    • Not really.
  • Momentum
    • This will support INTEROP 2022.
  • Enabling learners
    • Currently the <color> documentation is complex this will help untangle basic and advanced concepts, as well as having a guide and explanation for the advanced ones.
  • Enabling professionals
    • Significant. This is a new development of the web.
  • Underrepresented topics / ethical web
    • Not applicable.
  • Operational necessities
    • None.
  • Addressing needs of the Web industry
    • INTEROP 2022.

Project: Branding: OWD Website

Websites are the center of an organization's online presence. The site serves as the organization's online hub of information. openwebdocs.org is where visitors should go for information about our projects, where search engines direct visitors, including volunteers and potential contributors, where email announcements should lead to, and a hub for links in social media posts. Instead, we have MDN, a GitHub repo, Google Docs, and a page (and our current redirect) https://opencollective.com/open-web-docs

Creating an OWD website will have the following benefits:

  1. Makes us appear legitimate
  2. Informs visitors how to reach us
  3. Informs potential volunteers how to get involved
  4. Converts donors: Convinces (and enables) potential financial donors to contribute
  5. Tells our story
  6. Expands our reach
  7. Drives new Interest
  8. Provides for a positive impression
  9. Provides a central repository to links to our projects, issues, newsletters, etc.

In general, the website will help boost all our efforts

OWD project: page types

What is a page type?

A page type is a concise, human-readable term that identifies the type of web platform feature that an MDN page is about. For example, it might identify that a particular page documents a CSS property, or a JS method, or an HTML element.

Why page types are important

It's important for reference docs to be consistent, so they contain the same kind of information, organized in the same kind of way. For example, it's important that every CSS property page includes a browser compatibility table and that it appears in the same spot on every page, under the same title. Different types of page should include different elements: for example, a JS class page should have a link to the page describing its constructor, and a CSS shorthand property should contain a list of the properties it sets.

To be able to make rules like this, we need the concept of page types. And of course we use this concept all the time: whenever we say something like "this page ought to have a Syntax section" we are implicitly leaning on page types.

Also, any time want to present a collection of docs in an organized and navigable way - as in the sidebar for a JS global object, for example, where we want to have separate lists for properties, static methods, and instance methods - we're leaning on the concept of page types.

So we already have page types. What we are missing is a sharp and consistent way to define them.

How we represent page types at the moment

On MDN we currently use a few different hints to represent the type of thing a page documents, but the most common one is the page tag. The main problem with using tags for this is that they don't have any semantics. So if we define a tag like "CSS property" it's not at all obvious why this should not apply to, say, a landing page listing all CSS properties (and in fact this kind of blurring of the meaning of tags happens all the time). It would be a lot clearer to have a dedicated front matter key for this with its own definition. See also: mdn/content#3424 (comment).

We also describe page type templates in the MDN contribution docs: https://developer.mozilla.org/en-US/docs/MDN/Structures/Page_types. But these are incomplete and don't correspond to any identifier in the page - so they don't offer a way to map from a template to a particular page.

What a page type could look like

In this proposal the page type is a new front matter key called "page-type" whose value is a single string. Its possible values could be something like:

javascript-class
javascript-constructor
javascript-method
javascript-property
css-at-rule
css-data-type
css-function
css-property

...and so on

What we would use page types for

Sidebars

At the moment MDN pages call a macro to create the sidebar. So CSS pages include {{CSSRef}} at the top, for example. If pages instead of a page-type, and that can determine the sidebar to use, we don't need authors to make these macro calls any more: the correct sidebar can automatically be chosen by Yari.

Note that this won't work for all cases. In particular guide pages and landing pages don't map to a sidebar (because there can be JS, guides, or CSS guides, ...), so even if we do want to define "guide" and "landing-page" types (which is not certain) they would not be enough to determine the sidebar. However, this is a small minority of cases (probably less than 10%).

Tags

As noted above, we use tags as page types for building sidebars. We could replace all these references with references to page types instead.

Linting against a specification

More interestingly, given a reliable way to identify the page type, we could define a specification for pages of given type. The specification could list the set of elements that a page of that type must or may to contain. We can then test our pages against that specification, and know that our pages are consistent (or, where they are not). For example, we could have a list of pages that don't have a BCD table, but should.

Building pages to a specification

With linting, people write pages and we use the specification to check that they have a valid structure. The inverse of that is where people provide components of documentation, and a specification for a page, and the system builds complete pages. This is better than linting in some ways because authors don't have to understand the structure and don't have the chance to get it wrong.

We already do this to some extent using things like BCD, mdn/data, and interactive examples as components of a page, but we could take it a lot further. Why do authors have to remember the position on the page where the BCD table or the interactive example live?

We might start by linting pages, then eventually move towards building pages. Or we might build parts of pages, and lint the rest, and gradually build more and more pieces.

What's the actual project?

The current proposal is:

  • define a complete set of page types for MDN's reference pages
  • document the types in our meta-docs
  • add a front matter items to every reference page representing its type

In practice we would do this in sections - JS, CSS, Web/API, and so on.

See also


Prioritization criteria

Effort

Large? Need to:

  • define page types for all reference pages
  • add them to all the pages

In practice the initial project might target a subset of the docs.

Dependencies

None.

Community enablement

Eventually, this would make it easier to contribute docs successfully, by making it clearer what's needed in a page.

Momentum

n/a

Enabling learners

More reliable docs benefit all users.

Enabling professionals

More reliable docs benefit all users.

Underrepresented topics / ethical web

n/a

Operational necessities

n/a

Addressing needs of the Web industry

n/a

OWD Project Proposal to add the Web Monetization Meta to MDN Docs

This issue proposing adding a Web Monetization meta tag to MDN to enable OWD to seamlessly accept micropayments/donations from Web Monetized users.

Users visiting MDN already have a subscription from a Web Monetization provider and do not have to pay additional fees to support MDN when they use the docs.

Problem Statement

MDN is visited by many users who already have a subscription from a Web Monetization provider. However, even though they do not need to take any other action, OWD is currently not taking micropayments/donations from the users visiting the site.

The impact of this is that we are losing $0.36/hour (as of today) for every hour a Web Monetized user visits MDN. This donation could go towards covering some OWD costs or be donated to organizations like Creative Commons, Web Foundation, or Contract for the Web since they already have an Interledger Payment pointer.

Considering the potential impact for the community vs the effort, 1 line of code (<meta name="monetization" content="$your.payment.pointer.address/xxx">), it will likely be useful to the community that we add the meta tag.

Priority Assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Minimal. We only require to add a new meta to the parent HTML with the OWD payment point or the interledger payment pointer of Non-profits like Creative Commons, Contract for the Web, or the Web Foundation. See a list of Non-profit payment pointers.
Dependencies None. Does not depend on or affect any other component
Community enablement Has the potential to support other communities when we set the payment pointer as theirs. They receive micropayments daily. To make things interesting, the payment pointer can be rotated to the payment pointer of community contributors on a weekly/monthly basis. This will hopefully drive more engagement and provide additional incentives for contributors to continue contributing.
Momentum Yes. There is work being done with Web Monetization by the Grant for the Web Community, the proposed new Rafiki open-source tool.
Enabling learners We Monetized Learners, even those using Samsung Internet and Puma Mobile browsers will be able to support OWD
Enabling professionals Professional Web Developers who create articles, tutorials, and learning series will be able to earn from their content when they learn about it from using MDN. This has the potential to increase the number of content they create to further enable more new Developers to learn from them.
Underrepresented topics / ethical web The Web Monetization standard is privacy-focused on information about the user that is not collected or retained by the Web Monetization provider.
Operational necessities NA
Addressing needs of the Web industry Yes. There is a pressing need for more open, transparent, and fair payment for web content. Developers and other web content creators and maintainers put out useful content but they cannot earn from it from open-source web standard tools. The Web Monetization standard enables that for Web content creators and MDN is a place where many Developers start.

Implementation Process

  • Decide which Interledger payment pointer to use
  • Add the meta tag to the of the pages

Resources

OWD project: Update MDN Performance API docs

A small group of engineers spent about 30 minutes reviewing existing Performance API and Performance Timeline documentation to search for any opportunities for improvement.

We found many examples of improvement opportunities:

For example:

  • Lack of a general "Performance Guide"
  • Issues in references pages:
    • e.g., In PerformanceObserver reference the description for observe() method does not match the descriptions from the actual observe() method reference page. Both descriptions could use updates.
    • e.g., LCP, ElementTiming, and others do not describe the inherited attributes from PerformanceEntry even though their semantic meaning is specific to the API in question.
    • e.g. PerformanceLongTaskTiming reference is basically empty.
  • Issues with Examples throughout reference pages.
    • e.g., dictionary options passed to PerformanceObserver.observe() use entryTypes instead of type and buffered.
  • Certain APIs are labeled experimental when they should no longer be (example PerformanceObserver)
  • Some new experimental apis are not documented, while some long abandoned apis are still documented (e.g. Frame Timing).
  • Various "see also" links are out of date (example)

We think improvements in this area would be very valuable, and greatly appreciated!

OWD project: Fix errors in BCD for API, CSS and JS going back to at least 2020

#66 and similar efforts in the past have eliminated all true and null values in BCD for API, CSS and JS data. @queengooborg and I used https://mdn-bcd-collector.gooborg.com/ to finish the API data over the course of 2021, and the collector also covers a lot of CSS and JS.

We have found that comparing BCD to feature detection results invariably finds a lot of errors in BCD. By comparing BCD with the collector results, we can find many false positives and false negatives. This will likely lead to many features looking "better" (more green) as support has shipped in the past 2 years but BCD was never updated.

Such cross-checking can in principle go back over 10 years, but I suggest limiting it to browser releases after 2020-01-01, and updating earlier data only when it's really easy and does not require much digging to verify.


For reviewers, here's a link to the guide on how to review collector PRs: https://github.com/GooborgStudios/mdn-bcd-collector#reviewing-bcd-changes

OWD project: convert MDN content to Markdown

This proposes that we work on migrating MDN to use (GitHub-Flavored) Markdown instead of raw HTML for the authoring format.

Note that this is a joint project with the Mozilla MDN engineering team. We will need to work out how to divide responsibilities between OWD and MDN engineering so we can work together well. Note also that Mozilla are very likely to do this project anyway, with or without OWD involvement. However, OWD have a lot of:

  • knowledge of MDN content and the problems it might pose for a Markdown conversion
  • experience thinking through these problems
  • opinions about the direction MDN's authoring format should take.

Problem statement

Before Yari, MDN docs were edited in a WYSIWYG editor, with an option to edit the page as raw HTML.

Since Yari, it's only possible to edit MDN docs as raw HTML in a text editor.

This is slower, more difficult and results in more formatting errors. It also results in worse documentation because authors have to think about the formatting all the time instead of the concepts they want to express. People who aren't familiar with HTML may not be able to contribute at all.

It's also harder to review.

Priority assessment

This table checks this project against the OWD prioritization criteria.

Criteria Assessment
Effort Large. We'd need to design all the tooling to convert from HTML to Markdown (for migration) and back into HTML (for rendering web pages). We'd need to convert a substantial section of MDN, and fix any problems.
Dependencies Joint project with the MDN engineering team. OWD's specific contribution would be concerned with the authoring format, any customizations to basic Markdown that are needed to represent MDN pages, and ensuring that as far as possible we're enabling future work to structure MDN content.
Community enablement Editing and reviewing Markdown is a lot easier than editing and reviewing HTML.
Momentum N/A
Enabling learners N/A
Enabling professionals N/A
Underrepresented topics / ethical web N/A
Operational necessities Yes. Maintaining MDN content as HTML is not sustainable.
Addressing needs of the Web industry N/A

Proposed solutions

In this project we would migrate a single subset of MDN docs to Markdown.
It would make sense for this to be a coherent part of the site, big enough to
discover the problems we're most likely to encounter, but small enough to be manageable. For example:

  • all the JS docs: about 1000 pages, or 1/10 of all the en-US Web docs
  • all the CSS docs: about 1000 pages, and probably more challenging than the JS docs

Then at the end of this project we would have:

  • content for that section in Markdown in mdn/content
  • documentation for authors, focusing especially on any customizations we have implemented
  • extra tooling in Yari to convert this content into HTML

After this project we would convert the rest of MDN, section by section.

Task list

  1. Analyze features of MDN content that are likely to make a straight Markdown conversion problematic, and design custom solutions to them. Solutions could include things like:
    • extending basic Markdown syntax to support them
    • writing new KumaScript macros so we can make them build parts of the page
    • documenting exceptions where authors must use raw HTML
  2. Implement HTML->Markdown conversion that includes these customizations
  3. Where content changes are needed, update the content
  4. Implement Markdown->HTML conversion in Yari that reverses these customizations
  5. Verify the rendered pages, and implement any extra customizations as needed.

OWD Project Proposal: SVG docs need some love

SVGs are common place and there's a few parts of the docs which highlight the time is which these docs were first written. There's a lot of good stuff, but re-considering page structure and removing unnecessary docs would be good.

Is there a way to better marry presentational attributes with CSS properties?

Effort

There's quite a few things to address, so probably a large effort. However the SVG docs are pretty complete.

Dependancies

No changes to the platform should be needed

Community

Not sure if there's much engagement to be had

Momentum

My concern is it's a catch 22 - there's some good stuff in the SVG docs which is possibly going un-noticed

Enabling learners

Would be good to refresh the tutorials and make them more discoverable

Enabling professionals

A more structured approach to the ref docs would help

Underrepresented topics / ethical web

N/A

Operational necessities

N/A

Addressing needs of the Web industry

Making SVG docs better for everyone ๐Ÿ’…

2022 Q1 Projects

We will be meeting next week (January 14, 2022) to go through current OWD project proposals and ideas.
This issue summarizes them so we can discuss which projects to take on in Q1 2022 (the months January, February, March). For reference, the Q4 2021 issues is #55 and Q3 was #42.

Continued projects

These projects were started, but not completed in Q4. It makes sense to continue them in Q1.

issue# Driver Topic
#50 Updating DOM guides (and completing its reference) @teoli2003
No# Modernizing the Learning Area JavaScript modules @wbamberg
#61 Documenting events and representing them in BCD @foolip / @Elchi3

Completed

For reference, the following projects were completed:

issue# Driver Topic
#25 @wbamberg Markdown conversation for more of MDN.
#65 @estelle ARIA States and Properties

Potential new projects

These are projects that have been discussed before or are new proposals. We will assess them and a stack ranking exercise will determine their importance (every SC member is encouraged to propose projects and to participate in stack ranking). Preparation drivers are people who make sure we have all the information to get started with the project if it gets prioritized by the group.

Continued Projects

Projects for consideration

Mozilla MDN projects

Mozilla shared these MDN projects for Q4 and we might want to collaborate with them.

@Rumyra / @ddbeck Please complete this section with what has been done and what is going to be done.

  • Content reorg (@ddbeck)
  • Documenting WebGPU (Ruth & Joe Medley)
  • Demos (Ruth)
  • Project Synth / contribution docs (Ruth)

Put browser-compat info in front-runner everywhere on MDN

As a prerequesite for completing issue #24, a quaterly goal of OWD, we need to have the browser-compat clause in the front-runner of any relevant page of MDN.

I have a Python script helping me, but we are speaking about updating 6000+ pages of MDN. I will break this down into small(ish), and manageable, PRs.

Here I will track progress:

Subtotal: standard api: 5398 files

Special cleaning PR

  • Remove duplicate RTCPeerConnection_idpvalidationerror_event PR mdn/content#5570
  • Merge OffscreenCanvas.toBlob into OffscreenCanvas.convertToBlob PR mdn/content#5590
  • Merge XMLHttpRequestresponsetype into XMLHttpRequest.ResponseType PR mdn/content#5664
  • Merge ServiceWorkerState into ServiceWorker.state PR mdn/content#5660
  • Merge AudioContextLatencyCategory into AudioContextOptions.latencyHint

Update documentation about it:

  • Update BCD documentation
  • Update Page templates โ€“ PR mdn/content#5544 โ€“ 12 files
  • [Partial duplicate of mdn/content#5225; be sure to integrate discussed points]

OWD Project: ARIA States and Properties

We should have complete documentation for the ARIA spec within MDN.

ARIA roles is currently in development.

There are 50+ aria states and properties needing to be documented.

  1. Index page at /en-US/docs/Web/accessibility/aria/attributes
    • Four groupings: widget, live region, drag-and-drop, and relationship attributes
    • quick links to all the attributes based on group (name only)
    • List of all the attributes in alphabetical order with summary
    • include link to the role attribute, which doesn't start with aria-*
  2. 53 New documents: one for each of the widget, live region, drag-and-drop, and relationship attributes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.