# Designing types of website hosting Sustainable website hosting is a balancing act among multiple qualities and tools. # Qualities ## content reading ## content search Ideal would be for hosting tools to pre-compute static search index and serve e.g. [Lunr.js] for dynamic client-rendered result page. Additionally, larger sites should offer and advertise server-rendered search, compliant with the [OpenSearch] API. [Lunr.js]: "Lunr.js - small, full-text search library for use in the browser" [OpenSearch]: "OpenSearch - collection of simple formats for the sharing of search results" ## content editing Hosting tools should ideally support the open [Micropub] standard API, offer a web-based client for inline use, and encourage use of alternative native [Micropub clients]. [Micropub]: "Micropub - open API standard (W3C Recommendation) for creating, editing, and deleting posts on websites" [Micropub clients]: "Micropub clients - sites and client applications that publish to servers via Micropub" ## content markup ## Plain source files ## Change tracking # Tools ## MoinMoin * [-] read: dynamic server-rendered pages + static media * [-] inline-search: dynamic server-rendered result page * [-] remote-search: unsupported * [-] inline-edit: proprietary WSGI-based editing form * [-] remote-edit: unsupported * [-] markup: proprietary creole * [x] source: plaintext files and plain media files * [-] tracking: proprietary revision control system ## Ikiwiki * [x] read: static server-pre-rendered pages and media * [-] inline-search: dynamic server-rendered result page * [-] remote-search: unsupported * [-] inline-edit: proprietary CGI-based editing form * [x] remote-edit: git hook * [x] markup: semi-standard Markdown with proprietary macros * [x] source: plaintext files and plain media files * [x] tracking: git, content optionally separated and/or layered ## MkDocs * [x] read: static server-pre-rendered pages and media * [x] inline-search: static pre-computed index + dynamic client-rendered result page * [-] remote-search: unsupported * [-] inline-edit: unsupported * [x] remote-edit: git hook * [x] markup: semi-standard Markdown with proprietary macros * [x] source: plaintext files and plain media files * [x] tracking: git, content optionally separated and/or layered ## Zola * [x] read: static server-pre-rendered pages and media * [x] inline-search: static pre-computed index + dynamic client-rendered result page * [-] remote-search: unsupported * [-] inline-edit: unsupported * [x] remote-edit: git hook * [x] markup: standard Commonmark with TOML metadata header * [x] source: plaintext files and plain media files * [x] tracking: git, content optionally separated and/or layered ## Ideal * [x] read: static server-pre-rendered pages and media * [x] inline-search: static pre-computed index + dynamic client-rendered result page * [x] remote-search: static pre-computed index + dynamic server-rendered OpenSearch API * [x] inline-edit: Micropub interface + web-based Micropub client * [x] remote-edit: Micropub interface + native Micropub client, and git hook * [x] markup: standard Commonmark with YAML or TOML metadata header * [x] source: plaintext files and plain media files * [x] tracking: git, content optionally separated and/or layered