-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial Proposal #2
Changes from all commits
3cdaca1
dec351c
853affb
62b8786
6159506
797ad8d
748009b
6b0dbd3
807c457
b50003a
d9abbb1
b812381
49df483
a38987c
2658f83
1e8b057
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
index.html | ||
.vercel |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,215 @@ | ||
<pre class='metadata'> | ||
Title: Runtime Keys | ||
Shortname: runtime-keys | ||
Level: 1 | ||
Status: w3c/CG-DRAFT | ||
Group: wintercg | ||
URL: http://runtime-keys.proposal.wintercg.org | ||
Editor: Ethan Arrowood, Vercel http://vercel.com, ethan-arrowood@vercel.com | ||
Abstract: A proposal defining standard identifier keys for various runtime environments | ||
Markup Shorthands: markdown yes | ||
</pre> | ||
<pre class=link-defaults> | ||
spec:url; type:interface; text:URL | ||
spec:html; type:attribute; for:Window; text:navigator | ||
spec:html; type:attribute; for:Window; text:self | ||
</pre> | ||
|
||
Introduction {#intro} | ||
===================== | ||
|
||
This proposal defines a list of keys that represent various runtime environments. | ||
|
||
These keys can be used in a variety of ways, and should be considered a reliable representation of the given runtime. | ||
|
||
For example, they may be used in a project configuration file to indicate the given project supports the specified runtime. | ||
|
||
This specification does not detail <i>how</i> the keys can be used; that is left up to community developed tools. | ||
|
||
The point of this proposal is to only define <i>what</i> the keys are in order to prevent conflicts, and provide users a reliable list of platforms they can build tooling around. | ||
|
||
Inclusion in this registry does not imply that the specified runtime is conformant with the WinterCG [Minimum Common API](https://proposal-common-min-api.deno.dev/). | ||
|
||
Inclusing in this registry does not imply endorsement of any kind. | ||
|
||
## Example Usage ## {#example-usage} | ||
|
||
One example of how these keys <i>may</i> be used (remember, this proposal <strong>does not specify</strong> <i>how</i> the keys are to be used) is within `package.json` files for projects hosted on npm. | ||
|
||
The following `package.json` file demonstrates a library that exports seperate outputs for Node.js and Deno, as well as specifies which versions of each runtime it supports. | ||
|
||
```json | ||
{ | ||
"name": "the-library", | ||
"version": "1.0.0", | ||
"exports": { | ||
"node": "./dist/node/index.js", | ||
"deno": "./dist/deno/index.js" | ||
}, | ||
"engines": { | ||
"node": ">=16", | ||
"deno": ">=1.10" | ||
} | ||
} | ||
``` | ||
|
||
Keys {#keys} | ||
============ | ||
|
||
## Alibaba Cloud - edge-routine ## {#edge-routine} | ||
|
||
The JavaScript/Webassembly runtime that powers Alibaba Cloud edge-routine. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is it JavaScript/Webassembly ? or just JS ? (I don't find any reference of webassembly on the doc - but only did a quick search) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just copied this comment: #2 (comment) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
Key: `edge-routine` | ||
|
||
Website: [https://www.alibabacloud.com/help/en/dynamic-route-for-cdn/latest/er-overview](https://www.alibabacloud.com/help/en/dynamic-route-for-cdn/latest/er-overview) | ||
|
||
## Cloudflare - workerd ## {#workerd} | ||
|
||
The JavaScript / WebAssembly runtime that powers Cloudflare Workers. | ||
|
||
Key: `workerd` | ||
|
||
Website: [https://workers.cloudflare.com/](https://workers.cloudflare.com/) | ||
|
||
Repository: [https://github.com/cloudflare/workerd](https://github.com/cloudflare/workerd) | ||
|
||
## Deno Land - Deno ## {#deno} | ||
|
||
A modern runtime for JavaScript and TypeScript. | ||
|
||
Key: `deno` | ||
|
||
Website: [https://deno.com](https://deno.com) | ||
|
||
Repository: [https://github.com/denoland/deno](https://github.com/denoland/deno) | ||
|
||
## Lagon - Lagon Runtime ## {#lagon} | ||
|
||
Lagon is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Functions at the Edge. | ||
|
||
Key: `lagon` | ||
|
||
Website: [https://lagon.app](https://lagon.app) | ||
|
||
Repository: [https://github.com/lagonapp/lagon](https://github.com/lagonapp/lagon) | ||
|
||
## Meta - React Native ## {#react-native} | ||
|
||
A framework for building native apps using React. This key represents supported React Native JS runtimes on native platforms (excludes react-native-web). | ||
|
||
Key: `react-native` | ||
|
||
Website: [https://reactnative.dev/](https://reactnative.dev/) | ||
|
||
Repository: [https://github.com/facebook/react-native](https://github.com/facebook/react-native) | ||
|
||
## Netlify - Edge Functions ## {#netlify} | ||
|
||
Edge Functions connect the Netlify platform and workflow with an open runtime standard at the network edge. | ||
|
||
Key: `netlify` | ||
|
||
Website: [https://docs.netlify.com/edge-functions/overview/](https://docs.netlify.com/edge-functions/overview/) | ||
|
||
Repository: [https://github.com/netlify/edge-functions](https://github.com/netlify/edge-functions) | ||
|
||
## OpenJS Foundation - Electron ## {#electron} | ||
|
||
Build cross-platform desktop apps with JavaScript, HTML, and CSS. | ||
|
||
Key: `electron` | ||
|
||
Website: [https://www.electronjs.org/](https://www.electronjs.org/) | ||
|
||
Repository: [https://github.com/electron/electron](https://github.com/electron/electron) | ||
|
||
## OpenJS Foundation - Node.js ## {#node} | ||
|
||
Node.js is an open-source, cross-platform JavaScript runtime environment. | ||
|
||
Key: `node` | ||
|
||
Website: [https://nodejs.org](https://nodejs.org) | ||
|
||
Repository: [https://github.com/nodejs/node](https://github.com/nodejs/node) | ||
Comment on lines
+127
to
+135
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
|
||
## Oven - Bun ## {#bun} | ||
|
||
Incredibly fast JavaScript runtime, bundler, transpiler and package manager - all in one. | ||
|
||
Key: `bun` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 (per twitter DM asking for review of bun being included on the page) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thank you! |
||
|
||
Website: [https://bun.sh/](https://bun.sh/) | ||
|
||
Repository: [https://github.com/oven-sh/bun](https://github.com/oven-sh/bun) | ||
|
||
## Vercel - Edge Light ## {#edge-light} | ||
|
||
Developing, testing, and defining the runtime Web APIs for Edge infrastructure. | ||
|
||
Key: `edge-light` | ||
|
||
Website: [https://edge-runtime.vercel.app/](https://edge-runtime.vercel.app/) | ||
|
||
Repository: [https://github.com/vercel/edge-runtime](https://github.com/vercel/edge-runtime) | ||
|
||
<!-- | ||
## <Runtime Name> ## {#<Runtime Key>} | ||
|
||
<Runtime Description> | ||
|
||
Key: `<Runtime Key>` | ||
|
||
Website: [<Runtime Website>](<Runtime Website>) | ||
|
||
Repository: [<Runtime Repository>](<Runtime Repository>) | ||
--> | ||
|
||
Key Management {#key-management} | ||
================================ | ||
|
||
## Adding a key ## {#adding-a-key} | ||
|
||
All JavaScript runtimes are welcome to create a key and add it to this list. New keys must not conflict with another existing key. Runtime entries on this list are encouraged, but not required, to participate in the community group. | ||
|
||
To propose a new key, create a pull request in [runtime-keys](https://github.com/wintercg/runtime-keys) repository that adds the desired key to the `index.bs` file using the following format: | ||
|
||
```md | ||
## <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>} | ||
|
||
<Runtime Description> | ||
|
||
Key: \`<Runtime Key>\` | ||
|
||
Website: [<Runtime Website>](<Runtime Website>) | ||
|
||
Repository: [<Runtime Repository>](<Runtime Repository>) | ||
``` | ||
|
||
The key should be inserted in alphabetical order based on the first character of the Runtime Organization. | ||
|
||
Keys should meaningfully represent the relative runtime and be a simple, string-like value so it can be used in common configuration formats such as JSON and YAML. | ||
|
||
Keys should also not conflict with existing [Browserlist entries](https://github.com/browserslist/browserslist#browsers). | ||
|
||
Entry pull requests must be approved by at least two active members of the community group that are not directly affiliated with the proposed runtime. | ||
|
||
## Modifying a key ## {#modifying-a-key} | ||
|
||
Modifying an entry requires opening a pull request and recieving two approvals from active community group members not affiliated with the relative runtime project. | ||
|
||
Modifications can be made to aspects such as the Organization, Name, Description, Website, and Repository. | ||
|
||
Aside from extraordinary circumstances, to prevent breaking tools built around this list, <b>Keys are not modifiable</b>. | ||
|
||
Keys may be deprecated to indicate inactive runtime projects. | ||
|
||
Deprecated Keys may be undeprecated and claimed by another runtime. | ||
|
||
To deprecate or undeprecate a key, open a pull request adding or removing `<b>[Deprecated]</b>` from the Name: | ||
|
||
```diff | ||
+ ## <b>[Deprecated]</b> <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>} | ||
- ## <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>} | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a couple of items here from the discussion today:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Included two lines covering this detail. let me know what you think