iDOES A BLOG HAVE TO BE HTML? null (FALSE) 0 i null (FALSE) 0 i2024-05-03 null (FALSE) 0 i null (FALSE) 0 iTerence Eden wrote about his recent experience of IndieWebCamp Brighton, in null (FALSE) 0 iwhich he mentioned that somebody - probably Jeremy Keith - had said, null (FALSE) 0 ipresumably to provoke discussion: null (FALSE) 0 i> A blog post doesn't need a title. null (FALSE) 0 iTerence disagrees, saying: null (FALSE) 0 i> In a literal sense, he was wrong. The HTML specification makes it clear that null (FALSE) 0 ithe element is mandatory. All documents have title. null (FALSE) 0 iBut I think that's an overreach. After all, where is it written that a blog null (FALSE) 0 imust be presented in HTML? null (FALSE) 0 i null (FALSE) 0 iNON-HTML BLOGS null (FALSE) 0 i null (FALSE) 0 iThere are plenty of counter-examples already in existence, of course: null (FALSE) 0 i* Terence's own no-ht.ml (now offline) demonstrated that a website needn't use null (FALSE) 0 iHTML (no-ht.ml technically does use HTML, but the same content could easily be null (FALSE) 0 idelivered with an appropriate non-HTML MIME type if he'd wanted.). This null (FALSE) 0 iinspired my own "page with no code", which worked by hiding content in CSS and null (FALSE) 0 iloading the CSS using HTTP headers (Again, I suppose this technically required null (FALSE) 0 iHTML, even if what was delivered was an empty file!). null (FALSE) 0 i* theunderground.blog's content, with the exception of its homepage, is null (FALSE) 0 idelivered entirely through an XML Atom feed. Atom feed entries do require null (FALSE) 0 is, of course, so that's not the strongest counterexample! null (FALSE) 0 i* This blog is available over several media other than the Web. For example, null (FALSE) 0 iyou can read this blog post: null (FALSE) 0 i null (FALSE) 0 i in Gemtext (Gemtext is basically Markdown, and doesn't require a title.) null (FALSE) 0 i null (FALSE) 0 i via Gemini at gemini://danq.me/posts/does-a-blog-have-to-be-html null (FALSE) 0 i via Spartan at spartan://danq.me/posts/does-a-blog-have-to-be-html null (FALSE) 0 i null (FALSE) 0 iin plain text (Plain text obviously doesn't require a title.) null (FALSE) 0 i null (FALSE) 0 i via Gopher at gopher://danq.me/1/posts/does-a-blog-have-to-be-html null (FALSE) 0 i via Finger at finger://does-a-blog-have-to-be-html@danq.me null (FALSE) 0 i null (FALSE) 0 iBut perhaps we can do better... null (FALSE) 0 i null (FALSE) 0 iA TOTALLY TEXT/PLAIN BLOG null (FALSE) 0 i null (FALSE) 0 iWe've looked at plain text, which as a format clearly does not have to have a null (FALSE) 0 ititle. Let's go one step further and implement it. What we'd need is: null (FALSE) 0 i* A webserver configured to deliver plain text files by preference, e.g. by null (FALSE) 0 iadding directives like index index.txt; (for Nginx). (There's no requirement null (FALSE) 0 ithat default files served by webservers are HTML, although it's highly-unsual null (FALSE) 0 ifor that not to be the case.) null (FALSE) 0 i* An index page listing posts by date and URL. Most browser won't render these null (FALSE) 0 ias "links" so users will have to copy-paste or re-type them, so let's keep null (FALSE) 0 ithem short, null (FALSE) 0 i* Pages for each post at those URLs, presumably without any kind of "title" null (FALSE) 0 i(just to prove a point), and null (FALSE) 0 i* An RSS feed: usually I use RSS as shorthand for all feed types, but this null (FALSE) 0 itime I really do mean RSS and not e.g. Atom because RSS, strangely, doesn't null (FALSE) 0 irequire that an <item> has a <title>! null (FALSE) 0 i null (FALSE) 0 iI've implemented it! it's at textplain.blog. null (FALSE) 0 i null (FALSE) 0 iIn the end I decided it'd benefit from being automated as sort-of a basic null (FALSE) 0 iflat-file CMS, so I wrote it in PHP. All requests are routed by the webserver null (FALSE) 0 ito the program, which determines whether they're a request for the homepage, null (FALSE) 0 ithe RSS feed, or a valid individual post, and responds accordingly. null (FALSE) 0 i null (FALSE) 0 iIt annoys me that feed discovery doesn't work nicely when using a Link: null (FALSE) 0 iheader, at least not in any reader I tried. But apart from that, it seems null (FALSE) 0 ipretty solid, despite its limitations. Is this, perhaps, an argument for my null (FALSE) 0 i.well-known/feeds proposal? null (FALSE) 0 i null (FALSE) 0 iAnyway, I've open-sourced the entire thing in case it's of any use to anybody null (FALSE) 0 iat all, which is admittedly unlikely! Here's the code. null (FALSE) 0 i null (FALSE) 0 iLINKS null (FALSE) 0 i null (FALSE) 0 hTerence Eden URL:https://shkspr.mobi/ (FALSE) 0 hTerence Eden's (titleless) blog post URL:https://shkspr.mobi/blog/2024/05/49911/ (FALSE) 0 hJeremy Keith URL:https://adactio.com/ (FALSE) 0 hTerence's blog post about no-ht.ml URL:https://shkspr.mobi/blog/2022/12/you-dont-need-html/ (FALSE) 0 1My blog post about "the page with no code" /posts/nocode danq.me 70 hTheunderground.blog URL:https://theunderground.blog/ (FALSE) 0 hGemini://danq.me/posts/does-a-blog-have-to-be-html URL:gemini://danq.me/posts/does-a-blog-have-to-be-html (FALSE) 0 hSpartan://danq.me/posts/does-a-blog-have-to-be-html URL:spartan://danq.me/posts/does-a-blog-have-to-be-html (FALSE) 0 1Gopher://danq.me/1/posts/does-a-blog-have-to-be-html gopher://danq.me/1/posts/does-a-blog-have-to-be-html danq.me 70 1Finger://does-a-blog-have-to-be-html@danq.me finger://does-a-blog-have-to-be-html@danq.me danq.me 70 hTextplain.blog URL:https://textplain.blog/ (FALSE) 0 1https://textplain.blog/ https://textplain.blog/ danq.me 70 1My blog post promoting the testing of websites in Lynx /posts/test-your-site-in-lynx danq.me 70 hMy post on textplain.blog about it being annoying that feed discovery doesn't work via HTTP Link: tags URL:https://textplain.blog/feed-discovery (FALSE) 0 hMy URL:https://danq.me/2023/08/23/well-known-feeds/ (FALSE) 0 h.well-known/feeds URL:https://danq.me/2023/08/23/well-known-feeds/ (FALSE) 0 h Proposal URL:https://danq.me/2023/08/23/well-known-feeds/ (FALSE) 0 hMy post on textplain.blog about open-sourcing textplain.blog URL:https://textplain.blog/open-source (FALSE) 0 hSource code for textplain.blog on Github URL:https://github.com/dan-Q/textplain.blog (FALSE) 0 .