X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=Documentation%2Fdesign_www.txt;h=704f81774335864f9593e8f36d4577e5bb3492f9;hb=4ba430497bfb4763691b0ad8af573eb6ff420b96;hp=50c9731721d4c97ac72ce29e147c922305a7acbc;hpb=48dc8ff5e67714985897047c189bdf019b796a60;p=public-inbox.git diff --git a/Documentation/design_www.txt b/Documentation/design_www.txt index 50c97317..704f8177 100644 --- a/Documentation/design_www.txt +++ b/Documentation/design_www.txt @@ -1,47 +1,94 @@ -URL naming ----------- +URL and anchor naming +--------------------- ### Unstable endpoints -/$LISTNAME/?r=$GIT_COMMIT -> HTML only -/$LISTNAME/atom.xml -> Atom feed +/$INBOX/?r=$GIT_COMMIT -> HTML only +/$INBOX/new.atom -> Atom feed + +#### Optional, relies on Search::Xapian +/$INBOX/$MESSAGE_ID/t/ -> HTML content of thread + anchors: + #u location of $MESSAGE_ID in URL + #m per-message links, where is of the Message-ID + of each message (stable) + #s relative numeric position of message in thread (unstable) + +/$INBOX/$MESSAGE_ID/t.atom -> Atom feed for thread +/$INBOX/$MESSAGE_ID/t.mbox.gz -> gzipped mbox of thread ### Stable endpoints -/$LISTNAME/m/$MESSAGE_ID.html -> HTML content (short quotes) -/$LISTNAME/m/$MESSAGE_ID.txt -> raw original -/$LISTNAME/m/$MESSAGE_ID -> 301 to .html version -/$LISTNAME/f/$MESSAGE_ID.html -> HTML content (full quotes) -/$LISTNAME/f/$MESSAGE_ID -> 301 to .html version -/$LISTNAME/f/$MESSAGE_ID.txt -> 301 to m/$MESSAGE_ID.txt +/$INBOX/$MESSAGE_ID/ -> HTML content + anchors: + #r location of the current message in thread skeleton + (requires Xapian search) + #b start of the message body (linked from thread skeleton) + +/$INBOX/$MESSAGE_ID -> 301 to /$INBOX/$MESSAGE_ID/ +/$INBOX/$MESSAGE_ID/raw -> raw mbox +/$INBOX/$MESSAGE_ID/#R -> HTML reply instructions + +# Covering up a pre-1.0 design mistake: +/$INBOX/$MESSAGE_ID/f/ -> 301 to /$INBOX/$MESSAGE_ID/ + +### Legacy endpoints (may be ambiguous given Message-IDs with similar suffixes) +/$INBOX/m/$MESSAGE_ID/ -> 301 to /$INBOX/$MESSAGE_ID/ +/$INBOX/m/$MESSAGE_ID.html -> 301 to /$INBOX/$MESSAGE_ID/ +/$INBOX/m/$MESSAGE_ID.txt -> 301 to /$INBOX/$MESSAGE_ID/raw +/$INBOX/f/$MESSAGE_ID.html -> 301 to /$INBOX/$MESSAGE_ID/ +/$INBOX/f/$MESSAGE_ID.txt [1] -> 301 to /$INBOX/$MESSAGE_ID/raw + +/$INBOX/atom.xml [2] -> identical to /$INBOX/new.atom + +Additionally, we support git clone/fetch over HTTP (dumb and smart): + + git clone --mirror http://$HOSTNAME/$INBOX FIXME: we must refactor/cleanup/add tests for most of our CGI before adding more endpoints and features. -Maybe TODO (these might be expensive) -------------------------------------- -/$LISTNAME/t/$MESSAGE_ID.html -> HTML content of thread -/$LISTNAME/t/$MESSAGE_ID.mbox -> mbox content of thread +[1] These URLs were never linked, but only exist as a convenience to folks + who edit existing URLs + +[2] Do not make this into a 301 since feed readers may not follow them as well + as normal browsers do. -We use file name suffixes on all of these (except /) so URLs may easily -cached/memoized using a static file server. +Encoding notes +-------------- + +Raw HTML and XML should only contain us-ascii characters which render +to UTF-8. We must not rely on users having the necessary fonts +installed to render uncommon characters. + +Plain text (raw message) endpoints display in the original encoding(s) +of the original email. Guidelines for using limited HTML --------------------------------- + We mainly use HTML for linking pages together with . We also set to make window management easier. We favor <pre>-formatted text since public-inbox is intended as a place to share and discuss patches and code. Unfortunately, long paragraphs tends to be less readable with fixed-width serif fonts which GUI -browsers default to. So perhaps we will add different endpoints for -variable-width fonts. - -* Do not build <a> links from user-generated-content, this prevents - public-inbox deployments from being turned into a spam linkfarm. +browsers default to. * No graphics, images, or icons at all. We tolerate, but do not encourage the use of GUIs. * No setting colors or font sizes, power to users to decide those. + We will include and document <span class=?> to support colors + for user-supplied CSS. + +* Only one font type: fixed. This is for accessibility, we must + not blow certain elements out-of-proportion with different + fonts on the page when a reader increases font size. + +* Bold and underline elements are OK since they should render fine + regardless of chosen font and gracefully degrade if a display does + not support them. Italics and strike-through elements must be + avoided as they do not render well with some displays or user-chosen + fonts. * No JavaScript. JS is historically too buggy and insecure, and we will never expect our readers to do either of the following: @@ -50,7 +97,16 @@ variable-width fonts. * We only use CSS for one reason: wrapping pre-formatted text This is necessary because unfortunate GUI browsers tend to be - prone to layout widening. lynx is fine here without CSS :) + prone to layout widening from unwrapped mailers. + w3m is fine here without CSS :) No other CSS is allowed, especially with scary things like: http://thejh.net/misc/website-terminal-copy-paste + + However, we will try to make it easy for users to supply their + own colors via user-side CSS. + +CSS classes (for user-supplied CSS) +----------------------------------- +span.q - quoted text in email messages +...