dwiki: Recent Entries For 2005/06/06

Subdirectories: NewFeatures.

2005-06-06

Directories can now have Readme files, called __readme. Readme files are injected into pages via the new renderer inject::readme (probably the first of several injectors).

The current templates don't inject __readme in normal directory views, but do inject them for blog and blogdir views (as you may see from this directory). Blog and blogdir views now drop all files starting with __, taking out __readme and __access and any future special magic files.

Read more »

Written 18:04:22 by cks.

Features, 13:19:56 by cks

DWiki features

DWiki's job is to be a good way to display version controlled wiki-text pages that you write in a real editor.

The important DWiki features:

  • simple but reasonably powerful text rendering (based on WikiText).
  • natural support for arbitrarily-named links: you don't have to follow some magic page naming standard that doesn't fit well with the natural names for things.
  • pages are normal, simple files, and you edit them directly in Unix.
  • support for putting pages in RCS, with strong disincentives to hand-edit files without checking them out (they stop displaying).
  • directories can display like changelogs: pages inline, most recent first.
  • can generate Atom syndication feeds for recently changed things.

The inevitable feature list:

In no particular order:

  • simple WikiText-like text rendering. (Chris wrote pages in GNU Emacs and relentlessly smushed anything that got in the way of how GNU Emacs wanted to autoformat things.)
  • The text rendering choices are designed to make it easy to write about Unix systems.
  • full support for directly editing wiki pages.
  • does not force a flat page namespace; uses straightforward Unix files and directories to organize the DWiki page space. (Thereby keeping the Unix view of DWiki's pages simple.)
  • supports a blog-like view of a directory that inlines pages there, most recent first.
  • in-filesystem page redirects make it trivial to support plurals, moved/renamed pages, etc.
  • text-based page templates control how all pages appear, making it easy to control various bits of a DWiki's appearance.
  • pages can be put in RCS for version control and multi-person editing access. RCS files can live in either the page directory hierarchy (for simplicity) or another parallel directory tree (for neatness).
  • forces people not to edit RCS-controlled files without locking them by refusing to display inconsistent unlocked files.
  • generates Atom syndication feeds for recently changed pages and recent comments, for the entire DWiki or any subtree thereof.
  • written in Python.
  • simple-ish yet powerful enough (I hope) user authentication system, with an equally simple yet powerful way of restricting who can read DWiki pages.
  • supports the option of letting people (possibly including the world) comment on some or all of the pages.
  • takes some pride in properly generating and handling Last-Modified: and ETag: headers in HTTP responses.
  • wikitext to HTML generates fully HTML 4.01 Transitional compliant HTML provided only that you don't jump multiple indent levels in at once in lists (thus Formatting doesn't validate).
  • can run as a CGI-BIN or standalone, and support for additional environments (SCGI, WSGI, whatever) should be easy to add if it is needed. Disclaimer: standalone does not use a production-quality webserver implementation; it uses Python's BaseHTTPServer with a hack to use threading.

Missing DWiki features

Also in no particular order:

  • you can't edit DWiki pages from the web, but see WhyNotWebEditing.
  • no user authentication.
  • therefor, no access restrictions on who can read what.
  • searching is primitive at best.

A necessary acknowledgement:

A number of DWiki's features and design decisions are shamelessly inspired by C.J. Silverio's as yet (22 May 2005) unfinished Snippy. Note that Snippy is much more powerful than DWiki probably ever will be, plus if it had been finished when I was writing DWiki I probably wouldn't have.

(Previous day | Next day)
By day for June 2005: 1 2 3 5 6 8 9 10 11 13 14 19; before June; after June.

Page tools: See As Blogdir, See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.