Skip to content

Commit

Permalink
docs: initial take on PWA
Browse files Browse the repository at this point in the history
Add PWA page and update examples table to expose all the information we
already had available.
  • Loading branch information
molant committed Sep 21, 2021
1 parent 37fb4ad commit e955ca1
Show file tree
Hide file tree
Showing 6 changed files with 174 additions and 18 deletions.
28 changes: 28 additions & 0 deletions data/examples/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,34 @@
"documentation": ""
}
},
{
"name": "Notifications",
"electron": {
"gist": "",
"status": "",
"documentation": ""
},
"pwa": {
"gist": "",
"status": "",
"documentation": "https://web.dev/push-notifications-overview/"
},
"react-native": {
"gist": "",
"status": "",
"documentation": ""
},
"webview2": {
"gist": "",
"status": "",
"documentation": ""
},
"xamarin": {
"gist": "",
"status": "",
"documentation": ""
}
},
{
"name": "Run on OS login",
"electron": {
Expand Down
38 changes: 38 additions & 0 deletions data/technologies/pwa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"$schema": "../schemas/technology.json",
"name": "PWA",
"normalizedName": "pwa",
"platforms": {
"Windows": "",
"macOS": "",
"Linux": "",
"Android": "",
"iOS": ""
},
"languages": {
"C++": "",
"C#": "",
"Go": "",
"Java": "",
"JavaScript": "",
"Rust": ""
},
"rendering": {
"Browser engine": "",
"Platform controls": "",
"Direct drawing": ""
},
"releases": [
{
"version": "N/A",
"date": "2021-01-01T00:00:00Z"
}
],
"codeLicense": {
"name": "BSD 3-clause",
"url": "https://source.chromium.org/chromium/chromium/src/+/main:LICENSE"
},
"url": "https://web.dev/progressive-web-apps/",
"community": "https://www.chromium.org/developers/discussion-groups",
"documentation": "https://web.dev/learn/"
}
32 changes: 16 additions & 16 deletions docs/examples-list.pmd
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<!-- ⚠ File automatically generated in process-examples-sources.js. DO NOT MODIFY MANUALLY -->

| Feature | Electron | React Native | WebView2 | Xamarin |
| --- | :---: | :---: | :---: | :---: |
| Bluetooth access |✅ | | | |
| Custom title bar |🛠 | | | |
| File System access |✅ | | | |
| Gamepad access | | | | |
| Generic sensor access | | | | |
| Geolocation | | | | |
| Idle detection | | | | |
| Notifications | | | | |
| Run on OS login | | | | |
| Serial access |✅ | | | |
| URL handler | | | | |
| [URL protocol handler](/docs/examples/url-protocol-handler) |✅ ([Docs](https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app)) | | | |
| USB access | | | | |
| Video codecs | | | | |
| Feature | Electron | PWA | React Native | WebView2 | Xamarin |
| --- | :---: | :---: | :---: | :---: | :---: |
| Bluetooth access |✅ | | | | |
| Custom title bar |🛠 |❓ ([Docs](https://web.dev/window-controls-overlay/)) | | | |
| File System access |✅ |❓ ([Docs](https://web.dev/file-system-access/)) | | | |
| Gamepad access | | | | | |
| Generic sensor access | | | | | |
| Geolocation | | | | | |
| Idle detection | |❓ ([Docs](https://web.dev/idle-detection/)) | | | |
| Notifications | | | | | |
| Run on OS login | |❓ ([Docs](https://chromestatus.com/feature/5534549008187392)) | | | |
| Serial access |✅ |❓ ([Docs](https://web.dev/serial/)) | | | |
| URL handler | |❓ ([Docs](https://web.dev/pwa-url-handler/)) | | | |
| [URL protocol handler](/docs/examples/url-protocol-handler) |✅ ([Docs](https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app)) |❓ ([Docs](https://web.dev/url-protocol-handler/)) | | | |
| USB access | | | | | |
| Video codecs | |❓ ([Docs](https://web.dev/webcodecs/)) | | | |
83 changes: 83 additions & 0 deletions docs/pwa.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
title: PWA
---

# PWA

<!-- ✍ Please populate the content `/data/technologies/pwa.json`
first. The text starting with `{{` will be interpolated in build time with
the information in that file. -->

<!-- ✍ Please write about the technology, when it was created, what type of technology is it,
some of the key characteristics for developers, etc. -->

:::tip
The content of this page referes to Chromium (the engine with the most features) unless stated
otherwise. This engine is used by many browsers like Chrome and Edge, and other technologies such as
[Electron] and [WebView2].
:::

## Summary

| Characteristic | |
| ------------------ | :---------------------------------------------------------------------------: |
| Website | [{{technologies.pwa.url}}]({{technologies.pwa.url}}) |
| Platforms | Desktop, mobile |
| Rendering strategy | [Browser engine] |
| Code License | [{{technologies.pwa.codeLicense.name}}]({{technologies.pwa.codeLicense.url}}) |
| Copyright | It's complicated |
| Documentation | [{{technologies.pwa.documentation}}]({{technologies.pwa.documentation}}) |
| Community | [{{technologies.pwa.community}}]({{technologies.pwa.community}}) |
| Latest version | {{technologies.pwa.releases.0.version}} |
| Release cadence | Major versions: 4 weeks <br/> Minor/patch: As needed |
| Release support | 4-8 weeks |
| Update model | Automatically updated |
| Governance model | It's complicated |

**Platform support:**

{{ table technologies.pwa.platforms.{} }}

:::warning
Even though browsers based on Chromium (like Chrome and Edge) are available on iOS, the reality is
that they use a different engine. The Apple Store policy only permits browser vendors to use the
Safari WebView.
Unfortunately, this browser engine only has a subset of the features available in Chromium and
updates at a much lower rate.

There is more information about this in "[iOS Engine Choice In Depth]" by [Alex Russell].
:::

**Language support:**

{{ table technologies.pwa.languages.{} }}

## Release cadence, version support and update model

Google releases a major version every 4 weeks. During this period it will receive minor updates as
needed (bug fixes and security).
Additionally there is an Extended Stable option that releases every 8 weeks. This version receives
also security updates (every 2 weeks) but not all the ones that the 4 week version has.
You can read more in [this blog post][speeding-up-release-cycle].

[Firefox release cycle] is also 4 weeks for major versions and Safari does not have a public release
cycle policy.

Chromium based browsers and Firefox update automatically without user intervention while Safari
requires the user to update the Operating System on iOS or accept the update process on macOS.

## Governance

TBD
<!-- ✍ Please add an introductory paragraph about the governance model of the project: part of a
foundation, company driven, etc. -->

<!-- Ref links -->

[Alex Russell]: https://twitter.com/slightlylate
[browser engine]: ./browser-engine.md
[electron]: ./electron.md
[Firefox release cycle]: https://wiki.mozilla.org/Release_Management/Release_Process
[iOS Engine Choice In Depth]: https://infrequently.org/2021/08/webkit-ios-deep-dive/
[speeding-up-release-cycle]: https://blog.chromium.org/2021/03/speeding-up-release-cycle.html
[webview2]: ./webview2.md
2 changes: 1 addition & 1 deletion scripts/process-examples-sources.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ const normalizeStatus = (status) => {
}
if (status.includes('crbug')) {
// TODO: Get the resolution of the issue via Playwright because x-xsrf-token and other stuff :(
return 'TBD';
return '';
}

return status;
Expand Down
9 changes: 8 additions & 1 deletion sidebars.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
module.exports = {
technologies: ['technologies', 'electron', 'webview2', 'react-native', 'xamarin'],
technologies: [
'technologies',
'electron',
'pwa',
'react-native',
'webview2',
'xamarin',
],
rendering: [
'rendering',
{
Expand Down

0 comments on commit e955ca1

Please sign in to comment.