Skip to content
This repository has been archived by the owner on Sep 2, 2023. It is now read-only.

doc: add MANIFESTO.md #45

Closed
wants to merge 18 commits into from
45 changes: 45 additions & 0 deletions MANIFESTO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
## The Module Manifesto

We the undersigned agree on the the following,

* Getting modules "right" is one of the biggest existential threats to JavaScript
* This affects a large number of people on this planet (and future planets), with varying interests including but not limited to:

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

- web applications
- serverside applications and services
- command line interfaces
- libraries and frameworks
- transpilers
- robots
- art and music
* Getting modules "right" is hard because of these varying interests
* Creating a good developer experience is the number one priority
* The aim will be to not compromise the Node.js Developer Experience, but we recognize that may be necessary to improve the health of the JavaScript ecosystem
* While compromise is neccessary, it is important to recognize when Node.js needs to lead and attempt to influence change at an industry level
* The closer the Node.js and Web platform remain the better the developer experience will be

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.


* The Node.js implementation of ESModules must have the following features:
- Compliant to ECMA-262. It is important to follow the standard. If we need changes in the standard we should attempt to accomplish them at TC39.
- Interoperability. It is important to be able to utilize ESModule code from CommonJS and vice versa.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

- Hooks. It is important to be able to have hooks into the lifecycle of a Module.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

- Multiple Goals. e.g. wasm. It is important that our implementation scales to any number of future goals.

This comment was marked as off-topic.

* Packages written with the Node.js implementation of ESModules must have the following features.
- Dual mode. It is important that a single package should be capable of being loaded as both ESM and CJS. This does not have to be the default.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

- Web Compatible. It is important that a published package be capable of running on both the web and node.js platform without any source changes. This does not mean all APIs need to be compatible.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.


Without working together there will be no chance of a successful module system. "Together" is larger than the undersigned.

Signed,

Myles Borins (@MylesBorins)
Gus Caplan (@devsnek)
Jordan Harband (@ljharb)
Matteo Collina (@mcollina)
Benjamin Gruenbaum (@benjamingr)
Hassan Sani (@inidaname)
Michaël Zasso (@targos)
Ahmad Abdul-Aziz (@devamaz)
Jan Krems (@jkrems)
Guy Bedford (@guybedford)
Timothy Gu (@TimothyGu)
Gil Tayar (@giltayar)
Rob Palmer (@robpalme)