# 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