Skip to content

Commit 5f1ad71

Browse files
committed
Update README
1 parent 7094b61 commit 5f1ad71

File tree

1 file changed

+22
-34
lines changed

1 file changed

+22
-34
lines changed

README.md

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
1-
This collection of packages empowers you to build modern web applications with maximum interoperability and portability, leveraging the power of web standards. Whether you're using [Remix](https://remix.run) or another framework, these tools are designed to seamlessly integrate into your workflow.
1+
# Welcome to Remix 3!
22

3-
This repository is laying the groundwork for the next major evolution of Remix.
3+
This branch (`v3`) is the source for Remix 3. It is under active development.
44

5-
## Philosophy
5+
We published [a blog post](https://remix.run/blog/wake-up-remix) earlier this year with some of our thoughts around Remix 3. It explains our philosophy for web development and why we think the time is right for something new. In particular, we follow these principles:
66

7-
Our core philosophy is simple: **build on web standards, embrace single responsibility.**
7+
1. Model-First Development. AI fundamentally shifts the human-computer interaction model for both user experience and developer workflows. Optimize the source code, documentation, tooling, and abstractions for LLMs. Additionally, develop abstractions for applications to use models in the product itself, not just as a tool to develop it.
8+
2. Build on Web APIs. Sharing abstractions across the stack greatly reduces the amount of context switching, both for humans and machines. Build on the foundation of Web APIs and JavaScript because it is the only full stack ecosystem.
9+
3. Religiously Runtime. Designing for bundlers/compilers/typegen (and any pre-runtime static analysis) leads to poor API design that eventually pollutes the entire system. All packages must be designed with no expectation of static analysis and all tests must run without bundling. Because browsers are involved, `--import` loaders for simple transformations like TypeScript and JSX are permissible.
10+
4. Avoid Dependencies. Dependencies lock you into somebody else's roadmap. Choose them wisely, wrap them completely, and expect to replace most of them with our own package eventually. The goal is zero.
11+
5. Demand Composition. Abstractions should be single-purpose and replaceable. A composable abstraction is easy to add and remove from an existing program. Every package must be useful and documented independent of any other context. New features should first be attempted as a new package. If impossible, attempt to break up the existing package to make it more composable. However, tightly coupled modules that almost always change together in both directions should be moved to the same package.
12+
6. Distribute Cohesively. Extremely composable ecosystems are difficult to learn and use. Therefore the packages will be wrapped up into a single package as dependencies and re-exported as a single toolbox (remix) for both distribution and documentation.
813

9-
Each package in this repository:
10-
- Adheres to the [single-responsibility principle](https://en.wikipedia.org/wiki/Single-responsibility_principle).
11-
- Prioritizes web standards to ensure maximum interoperability and portability across JavaScript runtimes.
12-
- Augments standards unobtrusively where they are missing or incomplete, minimizing incompatibility risks.
14+
## Goals
1315

14-
This approach means the JavaScript you write is **portable by default**. These packages work seamlessly across [Node.js](https://nodejs.org/), [Bun](https://bun.sh/), [Deno](https://deno.com/), [Cloudflare Workers](https://workers.cloudflare.com/), and other environments.
16+
The goal is to develop all packages independently, and then stitch them together into the `remix` package for ease of use. However, all packages that make up Remix should be usable standalone as well. This forces us to consider package boundaries and helps us keep public interfaces portable and interopable.
17+
18+
Each package in Remix:
19+
20+
- Has a [single responsibility](https://en.wikipedia.org/wiki/Single-responsibility_principle)
21+
- Prioritizes web standards to ensure maximum interoperability and portability across JavaScript runtimes
22+
- Augments standards unobtrusively where they are missing or incomplete, minimizing incompatibility risks
23+
24+
This approach means the Remix code you write is **portable by default**. These packages work seamlessly across [Node.js](https://nodejs.org/), [Bun](https://bun.sh/), [Deno](https://deno.com/), [Cloudflare Workers](https://workers.cloudflare.com/), and other environments.
1525

1626
We leverage server-side web APIs like:
1727

@@ -20,13 +30,13 @@ We leverage server-side web APIs like:
2030
- [The Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) instead of the Node.js crypto library
2131
- [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) and [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) instead of some bespoke runtime-specific API
2232

23-
The benefit? Code that's not just reusable, but **future-proof**.
33+
The benefit is code that's not just reusable, but **future-proof**.
2434

25-
The goal is that these packages should be useful for anyone who is building for the web. If you're using [Remix](https://remix.run), we've designed it from the start to work with web standards. If you're using some other framework, you should easily be able to integrate these tools into your workflow as well without going full-blown Remix. If you're building your own framework, we hope you'll be able to build on this foundation as well.
35+
These packages should be useful for anyone who is building for the web. If you're using [Remix](https://remix.run), we've designed it from the start to work with web standards. If you're using some other framework, you should easily be able to integrate these tools into your workflow as well without going full-blown Remix. If you're building your own framework, we hope you'll be able to build on this foundation as well.
2636

2737
## Packages
2838

29-
Discover our growing suite of tools:
39+
We currently publish the following packages:
3040

3141
- [fetch-proxy](packages/fetch-proxy): Seamlessly construct HTTP proxies with the familiar `fetch()` API – ideal for API gateways or abstracting microservices.
3242
- [file-storage](packages/file-storage): Robust key/value storage tailored for JavaScript `File` objects, simplifying file management.
@@ -37,28 +47,6 @@ Discover our growing suite of tools:
3747
- [node-fetch-server](packages/node-fetch-server): Build Node.js HTTP servers using the web-standard `fetch()` API, promoting code consistency.
3848
- [tar-parser](packages/tar-parser): A fast, streaming parser for tar archives, designed for efficient data extraction.
3949

40-
## Why Choose These Packages?
41-
42-
- **Web Standard-Focused:** Write code that's portable across Node.js, Deno, Bun, Cloudflare Workers, and more.
43-
- **Single Responsibility:** Each package is focused and does one thing well, making them easy to understand and integrate.
44-
- **Interoperable:** Designed to work together, and with your existing tools, thanks to their adherence to web standards.
45-
- **Future-Proof:** By building on web standards, your codebase remains adaptable and resilient to ecosystem changes.
46-
- **Remix Ready (and Beyond!):** While born from the needs of Remix, these packages are valuable for any web developer or framework author seeking robust, standard-compliant tools.
47-
48-
## Using with Remix v2
49-
50-
If you're trying to use these libraries with Remix v2, you'll need to [enable "Single Fetch"](https://remix.run/docs/en/main/guides/single-fetch#enabling-single-fetch) first. This tells Remix to use Node's built-in fetch primitives (`Request`, `Response`, `Headers`, etc.) instead of a broken polyfill we shipped in earlier versions of Remix.
51-
52-
## Quick Start
53-
54-
Each package is available on npm and can be installed using:
55-
56-
```bash
57-
npm install <package-name>
58-
```
59-
60-
Then, import and use as needed in your project. Refer to individual package `README` files for specific usage instructions.
61-
6250
All packages are published in both modern ESM and legacy CJS formats for maximum compatibility with both existing and new projects.
6351

6452
## Contributing

0 commit comments

Comments
 (0)