From 003bb0b4b132cf0e7ff73317c9cab47ab5139c7f Mon Sep 17 00:00:00 2001 From: randogoth Date: Sun, 11 Oct 2026 15:05:42 +0300 Subject: [PATCH] feat: the mews.page site --- Makefile | 30 ++++++++++++++ site/about.html | 76 ++++++++++++++++++++++++++++++++++ site/check.html | 61 +++++++++++++++++++++++++++ site/index.html | 107 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 274 insertions(+) create mode 100644 Makefile create mode 100644 site/about.html create mode 100644 site/check.html create mode 100644 site/index.html diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..57268c0 --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +# Local build and checks. The real gate is `nix build .#site`, which runs the +# same steps in the sandbox and refuses to produce a non-conforming page. + +SPEC_DESCRIPTION = The Mews Profile specification, version 0.1. + +.PHONY: site test lint clean + +site: + rm -rf build + mkdir -p build/spec build/dtd + cp site/index.html site/about.html site/check.html build/ + cp mews-0.1.css build/mews-0.1.css + cp mews-0.1.css build/spec/mews-0.1.css + cp dtd/mews-0.1.dtd dtd/xhtml-mobile12.dtd build/dtd/ + uv run --script md2mews.py doc/SPEC.md -o build/spec/0.1.html --lang en \ + --variant mews-cool --description "$(SPEC_DESCRIPTION)" + uv run mewslint.py --quiet build/index.html build/about.html build/check.html \ + build/spec/0.1.html + @echo "site built in build/" + +test: + uv run --script dtd/check_dtd.py + uv run pytest -q + +lint: + uv run ruff check . + uv run ruff format --check . + +clean: + rm -rf build diff --git a/site/about.html b/site/about.html new file mode 100644 index 0000000..2a37f58 --- /dev/null +++ b/site/about.html @@ -0,0 +1,76 @@ + + + + + About Mews + + + + + + +

About Mews

+

Mews Profile is a working draft. The format, the stylesheet and this + site are all version 0.1, which is to say I am still changing my mind + about parts of it, and the spec admits as much in its first paragraph. + What a given version promises is written down at + mews.page/spec/0.1, and it stays + there once published.

+ +

How the directory works

+

Anyone can submit an address. The page is fetched and put through both + of the checks in section 9.1: it has to validate against the Mews DTD, and + it has to follow the handful of rules a DTD can't express, like keeping + your images on your own site and the markup under 256 KB (and preferably + under 64). Pass both and + your site is listed at once, by nobody's leave but the checker's.

+ +

Listed sites are looked at again every week, and one whose page stops + conforming is dropped; since I hold no contact details there is nobody to + warn beforehand, so submit the fixed page and it is listed again + immediately. A site the checker simply can't reach gets a few days of + retries before it goes, because being down over a weekend isn't the same + as being wrong.

+ +

The checks say nothing whatsoever about what a site publishes, and they + can't: a page about anything at all can be flawless XHTML. So if a listing + here points at something abusive, write to me and it comes out.

+ +

What this site keeps

+

A submission stores the address you gave, the domain it belongs to, + what the checks found, and a salted hash of your IP address so that the + rate limits work. The salt is replaced every month, so last month's hashes + stop matching this month's, and raw addresses are never written down at + all.

+ +

Submissions and results are deleted after ninety days. No cookies, + nothing loaded from anywhere else, and no analytics, which given the + subject matter would have been embarrassing.

+ +

Thanks

+

The format rests on XHTML Mobile Profile 1.2, which the + Open Mobile Alliance finished in + March 2008 and which is still perfectly good. The stylesheet asks first + for Atkinson + Hyperlegible, made free for anyone to use by the Braille + Institute of America, and then for + Source Code + Pro by Paul D. Hunt. Neither is loaded from anywhere: if you have + them you see them, and if you don't, Verdana is waiting.

+ +

Get in touch

+

Bug reports, arguments about the spec, and sites that ought to be + listed and aren't:

+
hello@mews.page
+ +
+

I would rather this stayed small: a format one person can implement in + a weekend, a directory you can read in a single sitting, and pages that + still open in 2046. If it grows much past that, something has gone + wrong.

+

Mews + · Check a page + · The directory

+ + diff --git a/site/check.html b/site/check.html new file mode 100644 index 0000000..00d39ba --- /dev/null +++ b/site/check.html @@ -0,0 +1,61 @@ + + + + + Check a page + + + + + + +

Check a page

+

Paste an address below. The checker fetches that page, validates it + against the Mews DTD, reads your copy of + the stylesheet and up to twenty of your images, and then lists every rule + the page breaks together with the section of the spec that explains it.

+ +
+
+


+

+

+

+
+
+ +

Check page tells you what it found and keeps nothing. + Check and list does the same and then, if the page passes, + puts your site in the directory. + Either way it can take up to a minute, and there is no progress bar, + because a progress bar wants JavaScript and that is the one thing a Mews + page can't have. Leave this page open and go and put the kettle on.

+ +

Doing it yourself

+

The same checks run on the command line, which is far less tedious + while you are still fixing things:

+
uv run mewslint.py https://example.com/
+

It reads local files too, so you can check a page before anyone else + sees it, and I run it on this site as well: the build refuses to produce + mews.page at all if one of its own pages stops conforming. That seemed + only fair.

+ +

What gets listed

+

One page per site, the one you hand me, and nobody reviews it: if the + page passes it goes in, and that is the whole of the trust model. A listed + site is checked again every week, and one whose page stops conforming + comes out of the directory without being asked twice.

+ +

Fix it, submit it again, and it is back in straight away. I keep no + address to warn you at, which is the trade (no account, no password to + forget, and no warning either).

+ +
+

If the checker turns your page down over something the spec doesn't + actually say, that is a bug in my validator rather than a fault in your + page, and I would like to hear about it.

+

The spec + · About this site

+ + diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..2af2807 --- /dev/null +++ b/site/index.html @@ -0,0 +1,107 @@ + + + + + Mews + + + + + + +

Mews

+

A mews is the lane round the back where the stables used to be: + narrow, quiet, and not on the way to anywhere. The web could do with one of + those. Small sites, plain words, nothing watching you read.

+ +

This obviously isn't the first attempt to do so. The + IndieWeb and small web crowd have made this case for way longer than I have. The usual answer is to go and build somewhere else, and the people doing it are right about the problem. + Gemini has been at it since 2019, Spartan trimmed even the TLS out of it, and I keep capsules on all of them.

+ +

Where I disagree is that it takes a new protocol, which means a new client, a new server, and a page hardly anybody can open from a link you send them. + We already had a Web standard that was cut back on purpose, and cut back + properly: a published spec, a DTD, and a few hundred million handsets to + test it against. XHTML Mobile Profile 1.2 is strict XML built + from a fixed list of modules, with the desktop machinery left out of the + build: no frames, no iframes, no image maps, and basic tables instead of + the full set. It kept scripts and author stylesheets, because a phone in + 2008 was expected to want them.

+ +

Mews goes further, for different reasons, and keeps the MP + while it is at it. Out go the scripting, style and object modules and the + event attributes; what is left is a choice rather than a hardware budget: + headings, paragraphs, lists, links, a few images, one stylesheet that + nobody gets to write, and nothing at all loaded from a server you don't + control. The phones were the excuse. The quiet is the point.

+ +

Authors provide structure. Readers control + presentation. Every rule in the spec follows from that one line, + which in practice means I don't get to pick your typeface, your line width + or your colours, and you don't have to put up with mine.

+ +

Have a look round

+ + +

The whole page

+

Here is a conforming Mews page, and not an excerpt either. The + lot:

+
<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN"
+  "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Signal Bars</title>
+    <meta name="mews-profile" content="0.1" />
+    <link rel="stylesheet" type="text/css" href="mews-0.1.css" />
+  </head>
+  <body>
+    <h1>Signal Bars</h1>
+    <p>Notes on old phones and small screens.</p>
+  </body>
+</html>
+

If that looks like 1999 to you, good.

+ +

One stylesheet, thirty-two colours

+

There is exactly one stylesheet, and you don't write it. Copy + mews-0.1.css onto your own site, + link it, and then leave it alone. It sets a readable column width, a light + theme and a dark one, and four palettes (warm, cool, green, and a + monochrome one that looks like an early phone screen) which you choose + between with a single class on the body. Every text colour in it clears + 7:1 contrast against its background, which is a higher bar than most of + the web bothers with.

+ +

Host your own copy rather than linking mine. If every Mews site pointed + at one central file, that file's server would see a request for every page + anybody reads anywhere, and the whole business of loading nothing from + other sites would have been for nothing.

+ +

The bits and pieces

+ + +
+

This is a draft, version 0.1, and I am still changing my mind about + parts of it. The directory is new and nearly empty. But a page written to + these rules opens on a handset from 2006, in your browser today, and in + whatever is reading pages in twenty years, because there is almost nothing + left in it to break.

+ +

So: write something. Link to a neighbour. Leave the light on.

+

About this site

+ +