From 442f6d01b09b27eea12579992d01b310644666b4 Mon Sep 17 00:00:00 2001 From: Kenton Varda Date: Sun, 19 Jan 2025 11:30:45 -0600 Subject: [PATCH 1/2] Improve Durable Objects intro by saying what it does. There is a lot of debate about how best to present DOs so that people "get it". Engineers (like me) usually want to know what a product *does*. This is contrary to the common wisdom that product pages should say what problems a product *solves*. Figuring out how to use a tool to solve a problem is an engineer's job, so as long as they know what it does, they can figure out what it solves. Conversely, if you only tell them what it solves, they then cannot visualize *how* it solves the problem, which is their job, so they get frustrated. To that end, we should very briefly explain what a Durable Object *does* right on the landing page. --- src/content/docs/durable-objects/index.mdx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/content/docs/durable-objects/index.mdx b/src/content/docs/durable-objects/index.mdx index c8b2ef9fd971c6..53ed17503f1687 100644 --- a/src/content/docs/durable-objects/index.mdx +++ b/src/content/docs/durable-objects/index.mdx @@ -23,6 +23,15 @@ Durable Objects provide a powerful compute API for coordinating multiple clients Use Durable Objects to build collaborative editing tools, interactive chat, multiplayer games and applications that need coordination among multiple clients, without requiring you to build serialization and coordination primitives on your own. +### What is a Durable Object? + +A Durable Object is a special kind of [Worker](/workers/). Like a Worker, it is automatically provisioned geographically close to where it is requested, it starts up quickly when needed and shuts down when idle, and you can have millions of them around the world. However, unlike regular Workers: + +* Each object has a **globally-unique name**, allowing you to send requests to a specific object from anywhere in the world. Thus, a Durable Object can be used to coordinate between multiple clients who need to work together. +* Each object has some **durable storage** attached. Since this storage lives together with the object, it is strongly consistent yet fast to access. + +Thus, Durable Objects enable **stateful** serverless applications. + Get started :::note[SQLite in Durable Objects Beta] From 0e865181e06d4a9ab1feefec82e573c72102a290 Mon Sep 17 00:00:00 2001 From: Kenton Varda Date: Sun, 19 Jan 2025 12:19:03 -0600 Subject: [PATCH 2/2] Rephrase the "what it solves" part of the Durable Objects landing page. Parts of this felt redundant with the newly-added section below. Also, I wanted to work in a mention of deeper distributed systems. Durable Objects are not just about collaborative apps. --- src/content/docs/durable-objects/index.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/durable-objects/index.mdx b/src/content/docs/durable-objects/index.mdx index 53ed17503f1687..6dc38a695bd902 100644 --- a/src/content/docs/durable-objects/index.mdx +++ b/src/content/docs/durable-objects/index.mdx @@ -19,9 +19,9 @@ Create collaborative applications, real-time chat, multiplayer games and more wi -Durable Objects provide a powerful compute API for coordinating multiple clients or users. Each Durable Object has private, transactional and strongly consistent storage attached. +Durable Objects provide a building block for stateful applications and distributed systems. -Use Durable Objects to build collaborative editing tools, interactive chat, multiplayer games and applications that need coordination among multiple clients, without requiring you to build serialization and coordination primitives on your own. +Use Durable Objects to build applications that need cordination among multiple clients, like collaborative editing tools, interactive chat, multiplayer games, and deep distributed systems, without requiring you to build serialization and coordination primitives on your own. ### What is a Durable Object?