One catalogue, several front ends #37
Replies: 1 comment
|
My position, plus a correction to something I said. What the RFCs are missing is a defined role for the services that live next to the index, so I would add one RFC on top of RFC 0033 rather than rework it. 6. Three options, and the one I would takeA. Git stays the record, and every service is a derived view with a stated contract. A front end additionally produces submissions: it authenticates the author with their own GitHub account, validates locally so the author gets a fast answer, and then opens the normal pull request against the canonical repositories on the author's behalf. B. A cloud database is primary and git is an export. C. True multi-master, several indexes syncing each other in both directions. The part of A I like most is that git already is the sync protocol. The trust question is already answered by RFC 0033: the index never trusts a submitted fact. |
Uh oh!
There was an error while loading. Please reload this page.
@SafeShows shipped ksamods.gg , with a public index repository at ksamods-gg/index carrying real listings and stamped releases in something close to the RFC 0031 shape.
It also means there are now two indexes, and RFC 0033 did not anticipate that.
The RFC says that a central index all projects work from is the goal.
Please reference the numbers so the thread stays followable.
1. The index can not exist twice
The content id namespace needs exactly one arbiter.
For mods the id is the folder name, because
Mod.MakeUsingoverwrites whatevermod.tomldeclares (see research/ksa-mod-loading.md), and RFC 0031 extends that namespace across every content type.Two catalogues that both hand out ids will eventually hand out the same one twice and cause conflicts.
2. Who is the Authority Decision
RFC 0033: git is the record.
Two static repositories hold the authored documents and the stamped releases, humans and a scheduled watcher write through checks, clients read one snapshot artifact.
No server anywhere, which is what RFC 0025 requires, and mirroring the whole catalogue is
git clone.ksamods.gg today: the server is the record.
The site holds the data and an exporter rewrites
ksamods-gg/indexevery half hour or so; every commit there is authored by "ksamods exporter".Nothing lands by pull request, so the repository is a report of the database rather than the thing the database was built from.
I would take the git-of-record one, for the reason RFC 0025 gives. We dont want to rely on someone sponsoring infrastructure somewhere we could loose access to at any time once they cant sponsor it any more.
3. The format delta today
@SafeShows said the index follows the RFC, and structurally it does but two gaps are not cosmetic:
game_minanywhere, neither on the listings nor stamped into any release. It is required by RFC 0031, and without it RFC 0017 evaluates every entry as Unknown.[releases]section on either listing, so nothing in the index says where the next release comes from or which host is the authority.Plus a medium one:
index.jsonis a counts manifest rather than the snapshot artifact RFC 0033 defines as the client contract, andmoderation-log.jsonis an append-only action log where RFC 0033 has a steward-ownedindex-status.tomlwithdelisted,disputedandretracted.The rest is small and mechanical: listings are JSON at a lowercased path instead of TOML at
listings/<id>.toml, StarMap is typedmodinstead ofmod-loader, release files carry nolistingsnapshot block,download.content_typeis whatever the GitHub asset API reports,nameis the repository name instead of the display name, andbuilds.jsonis empty where KSA-CKAN-meta has a working master-server poll to copy.4. What I would propose
The canonical index stays what RFC 0033 describes, in the KSAModding org: two static repositories, a watcher, publish-time checks, one snapshot artifact, mirrorable by anyone.
ksamods.gg becomes the WebUI front door, which is the half RFC 0033 is weakest at:
What makes this safe is already in RFC 0033: the index never trusts a submitted fact.
The pull request path re-downloads the archive, recomputes the hash, sizes and install root, re-runs the dependency merge, and rejects anything that disagrees.
So a hosted service can produce submissions without anyone having to trust the service, and the day the site is down the catalogue is unaffected.
Everything that genuinely needs a server, accounts, comments, votes, social signals, stays on the site and out of the index, which is where RFC 0025 already puts it.
5. What each side would have to do
Us, and this is the larger half. finally create the index repositories, the watcher, the checks.
ksamods.gg. Point the publish flow at the canonical repositories of this org instead of at an export of its own database, and close the gaps in 3.
All reactions