MOQ spent October 19–25 examining gaps. Gaps in object numbers, gaps between what a stream header promises and what a filter lets through, and a gap where a worked example ought to be.

The core transport remains Draft 22. This week's interesting work is still being argued through. Keep the decoder pencil handy.

Counting from zero sounds reassuring

On October 22 UTC, Ian Swett proposed numbering objects consecutively from zero. Objects are the pieces of data MOQ delivers; a group collects related objects. If the numbers run 0, 1, 2 and so on, a cache has a simpler way to determine whether it holds the whole group once the end is known.

That could avoid asking an upstream server for data the cache already has. Aman Sharma supported the simplification, including moving any extra meaning an application puts into object numbers into a separate parameter.

Unfortunately, counting what was sent and counting what arrived are different jobs.

Suhas Nandakumar objected that receivers still encounter gaps: data can be lost, filtered, or divided among subgroups carrying different parts of the media. Christian Huitema asked about a relay skipping data under congestion. A neat numbering rule at the publisher does not, by itself, explain every empty space downstream.

On October 23, Luke Curley argued for a more restrictive default: consecutive arrivals make efficient cache storage easier, while gaps complicate both storage and serving the same bytes consistently.

The tradeoff is real. So is the disagreement. No new numbering rule is established by this thread.

Earlier this month, a moqx fix kept a live track's newest group from being evicted. That was an implementation bug. This discussion asks a more basic question: what may a relay assume about the objects it is trying to retain?

The finish flag got ahead of the delivery

Martin Duke's October 21 issue gives the bookkeeping problem a small, uncomfortable example.

A publisher starts a stream containing objects 0 and 1. Its header carries an end-of-group indication. Then the subscriber changes its filter to request only object 0. Object 1, the actual last object, is no longer allowed through.

Now closing the stream can tell the receiver the wrong thing about where the group ended. Resetting it can jeopardize delivery of the earlier object. The discussion considers restricting the header indication, changing where the signal lives, or handling the stream differently. None is presented here as a released fix.

The finish line has moved. The flag is already out.

For implementers, this is a useful test case: change the requested subset while a stream is open, then check what the receiver concludes about completeness. A successful connection is only the beginning of that test.

Packet holds a finish flag beside a conveyor whose lowered gate separates two cargo blocks.
One block is still on the other side of the decision.

Please bring the example

On October 24, Alan Frindell asked proponents of Mandatory Track Properties for a sample extension draft. The editors need a concrete use to work through the mechanism's unresolved details. If nobody documents one before the San Francisco meetings, he says he will propose removing the feature.

That is a conditional proposal, not a removal decision.

In an October 25 reply, Suhas described the desired benefit: an application should learn whether the path understands a required feature before sending objects in vain. He did not claim the current mechanism was the only solution. Alan's follow-up brought the conversation back to writing the example.

The feature has been invited to demonstrate what it does for a living.

One Packet presents an empty display plinth while another waits with a pencil and notebook at a workbench.
A concrete use case would fit nicely here.

Built with MOQ: two players, one Game Boy

For something tangible, MoQ Boy is an existing open-source demo of a remotely emulated Game Boy, with multiple players able to control it. The project documents media delivery and JSON tracks for controls and game status; emulation and encoding start when a viewer subscribes.

Inspect the linked source or try the demo. This uses the project's moq-lite stack, so it is not proof of interoperability with every IETF Draft 22 implementation. No gameplay or latency benchmark was performed for this issue.

Transporting the button presses is the easy part. Agreeing on them remains multiplayer research.

Two deadpan Packets hold controllers beside a shared screen showing a pixel-block game.
The next move requires some negotiation.

October in review

Through October 25, October has moved between protocol detail and things people can inspect. Draft 22 arrived with a Location Filter wire-format change. DEMOQED's programme put applications on the bill, without making talk titles deployment evidence. Meta reported Instagram Live ingest parity with its existing transport; that claim concerned ingest, not delivery all the way to viewers. This week brings us back inside the relay, asking what missing objects and end markers actually mean. The specifications remain drafts, and the gaps still need explanations. The remaining October days belong to the next issue.