Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions quest/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ there first. A quest here that needs it waits on a pin quest, which
- [m0: the studio](/quest/m0/README.md) - the native and wasm studio for creators who rely on OBS today
- [m1: after the studio ships](/quest/m1/README.md) - viewers and a server compose a broadcast from its sources and a layout track, plus studio features held past m0
- [m2: later](/quest/m2/README.md) - work with no consumer yet
- [m3: someday](/quest/m3/README.md) - work no customer asks for, kept so its plans are not lost
4 changes: 2 additions & 2 deletions quest/m0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ cameras, packaging, signing) that one monorepo no longer pays off.
- **Pin:** moq is a `moq` git submodule whose crates are path dependencies,
as in moq.pro, so the studio compiles against one moq checkout.
- **moq-scene** moved here with the app, its only consumer. The
[viewer-side composition](/quest/m2/compose/README.md) epic (now m2) moved whole:
[viewer-side composition](/quest/m3/compose/README.md) epic (now m3) moved whole:
browser composition ships as a package from this repository layered on
`@moq/watch`, and the server composite is a headless binary here rather
than a moq-cli subcommand, so moq never depends on the studio.
Expand All @@ -77,7 +77,7 @@ broadcast reaches viewers, not the fallback. Sources are not published to the
relay by default (decided 2026-11-03 on
[moq-dev/studio#21](https://github.com/moq-dev/studio/pull/21)), because
each encoding costs an encoder session and consumer GPUs have few, so the
[viewer-side composition](/quest/m2/compose/README.md) epic moved to m1.
[viewer-side composition](/quest/m3/compose/README.md) epic moved to m1.
Overlays and animation render into the program here, and travel to viewers
in the layout track only once that epic lands.

Expand Down
13 changes: 4 additions & 9 deletions quest/m2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,11 @@ it.

## Plan

Opened 2026-11-05 (maintainer, /quest-plan) for publishing a source
independently, which no service uses yet. A quest moves up to m0 or m1 when a
consumer appears.

Viewer-side composition moved here from m1 on 2026-11-07 (maintainer, on
[moq-dev/studio#97](https://github.com/moq-dev/studio/pull/97)): it composes
from sources published independently, so it follows that quest.
Opened 2026-11-05 (maintainer, /quest-plan). A quest moves up to m0 or m1
when a consumer appears. Publishing a source independently and viewer-side
composition moved on to [m3](/quest/m3/README.md) on 2026-11-07 (maintainer):
no customer asks for them.

## Required

- [Published independently](/quest/m2/publish-independently.md) - a source opts out of the program and publishes its own track for services that place it themselves
- [Viewer-side composition](/quest/m2/compose/README.md) - independently published sources plus a layout track, composed by viewers and by a server
- [Overlays drop their Blitz panic guard](/quest/m2/overlay-blitz-release.md) - the next Blitz release lets overlay checks parse without `catch_unwind`
17 changes: 17 additions & 0 deletions quest/m3/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# m3: someday

## Goal

Work no customer is asking for, kept so its plans are not lost. Nothing here
is offered for work until a customer need moves it up.

## Plan

Opened 2026-11-07 (maintainer, /quest-spawn): publishing a source
independently drives no customer demand, so it and the viewer-side
composition epic that requires it moved here from m2.

## Required

- [Published independently](/quest/m3/publish-independently.md) - a source opts out of the program and publishes its own track for services that place it themselves
- [Viewer-side composition](/quest/m3/compose/README.md) - independently published sources plus a layout track, composed by viewers and by a server
12 changes: 6 additions & 6 deletions quest/m2/compose/README.md → quest/m3/compose/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ more encoder sessions than a consumer GPU has (decided 2026-11-03 on
are not published to the relay by default: a source's own track encodes only
while something in the studio uses it, such as an isolated recording or a
replay, and reaches viewers only when the creator ticks
[Published independently](/quest/m2/publish-independently.md). The Delivery
[Published independently](/quest/m3/publish-independently.md). The Delivery
and Cost bullets above, and this epic's parity goal, are deferred with it: a
source published independently is left out of the program, so no picture a
viewer composes from fetchable tracks matches the program today. When this
Expand All @@ -59,12 +59,12 @@ independent sources layered over it) and replan those bullets.
Moved to m2 on 2026-11-07 (maintainer, on
[moq-dev/studio#97](https://github.com/moq-dev/studio/pull/97)): nothing in m1
can fetch a source's track, so nothing can read a layout. The layout waits on
[Published independently](/quest/m2/publish-independently.md), and the
[Published independently](/quest/m3/publish-independently.md), and the
browser, server, and controls quests wait on it through the layout.

## Required

- [Layout track](/quest/m2/compose/layout.md) - the live scene state as a hang JSON track on the media clock, specified in the hang draft
- [Browser composition](/quest/m2/compose/browser.md) - `@moq/watch` composes a broadcast with a layout track through moq-scene's browser build
- [Server composition](/quest/m2/compose/server.md) - a headless compositor renders the program from sources and layout, headless
- [Viewer controls](/quest/m2/compose/controls.md) - viewers toggle elements and the layout's priorities steer what they fetch
- [Layout track](/quest/m3/compose/layout.md) - the live scene state as a hang JSON track on the media clock, specified in the hang draft
- [Browser composition](/quest/m3/compose/browser.md) - `@moq/watch` composes a broadcast with a layout track through moq-scene's browser build
- [Server composition](/quest/m3/compose/server.md) - a headless compositor renders the program from sources and layout, headless
- [Viewer controls](/quest/m3/compose/controls.md) - viewers toggle elements and the layout's priorities steer what they fetch
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ studio, compared within a stated tolerance.

## Required

- [Layout track](/quest/m2/compose/layout.md) - what the browser composes
- [Layout track](/quest/m3/compose/layout.md) - what the browser composes
- [moq-video's browser backends are pinned](/quest/m0/pin-browser-video.md) - browser frames into wgpu
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ of them is on, at the highest priority among them.

## Required

- [Browser composition](/quest/m2/compose/browser.md) - the viewer that exposes the toggles
- [Browser composition](/quest/m3/compose/browser.md) - the viewer that exposes the toggles
6 changes: 3 additions & 3 deletions quest/m2/compose/layout.md → quest/m3/compose/layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ their scene went on program, so the layout says when that was on the media
clock, and a viewer that joins late lands at the same point of them.

Only sources the creator publishes independently
([Published independently](/quest/m2/publish-independently.md)) have tracks a
([Published independently](/quest/m3/publish-independently.md)) have tracks a
viewer can fetch; the rest reach viewers only in the program.

Decided 2026-11-05 (maintainer, /quest-plan): the layout serializes the
Expand All @@ -58,7 +58,7 @@ canvases and mixes they replaced.

Decided 2026-11-07 (maintainer, on
[moq-dev/studio#97](https://github.com/moq-dev/studio/pull/97)): this quest
waits on [Published independently](/quest/m2/publish-independently.md), since
waits on [Published independently](/quest/m3/publish-independently.md), since
until then no viewer can fetch a track the layout names, and the epic moved to
m2 with it. Once that lands, replan this quest around the epic's reference
picture, which decides what the layout carries. Rejected: replanning now
Expand All @@ -68,4 +68,4 @@ it.

## Required

- [Published independently](/quest/m2/publish-independently.md) - the source tracks a viewer can fetch, which the layout names
- [Published independently](/quest/m3/publish-independently.md) - the source tracks a viewer can fetch, which the layout names
2 changes: 1 addition & 1 deletion quest/m2/compose/server.md → quest/m3/compose/server.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ and document it in `README.md`.

## Required

- [Layout track](/quest/m2/compose/layout.md) - what the server composes
- [Layout track](/quest/m3/compose/layout.md) - what the server composes
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ source among those on program (`Publish::set_on_program` in
`rs/moq-scene/src/publish.rs`) keeps it encoding.

Moved to m2 on 2026-11-05 (maintainer, /quest-plan): no service places
sources itself yet, so it waits behind m0 and m1.
sources itself yet, so it waits behind m0 and m1. Moved on to m3 on
2026-11-07 (maintainer, /quest-spawn): it drives no customer demand.

A source with its background removed (`background = "remove"`) keeps the
background in its track, since H.264 carries no transparency. Publishing one
Expand All @@ -37,4 +38,4 @@ user does, so `README.md` documents them.

## Related

- [Viewer-side composition](/quest/m2/compose/README.md) - the epic that composes from independently published sources
- [Viewer-side composition](/quest/m3/compose/README.md) - the epic that composes from independently published sources