BootMaker is the software program I use to build this Web site. Bootstrap is a great presentation tool. But editing HTML markup directly is very tedious. And adding Bootstrap makes things worse. BootMaker is a command line tool that creates Web Sites (and some day documents) from files written in easy to edit formats:

In the near future I hope to add

Tim Berners-Lee's original HTML was intended to describe only the structure and content of the document. Style and layout information would be added separately by a stylesheet. H�kon Lie's Cascading Stype Sheets (CSS) support this approach but none of the many HTML editors I have used over the years support it well.

The problem is that the existing tools allow the disciplined user to enforce separation of content style and presentation but don't insist on this. We use the same document format to describe both the structured content and the presentation. As a result HTML editors are cluttered up with almost limitless features for the user who wants to define presentation directly but do not support the user trying to write structured content.

Mark Down Code

The MarkDown variant used in BootMaker is similar to the one used by Wikipedia:

[Bzzt! not any more, moving to the Pandoc style]

A blank line (which may include spaces and/or tabs) marks the end of a paragraph block.

XML is a powerful tool. My only real objection to using it as a text markup language is that I don't need that power all the time. There should be no need to wrap every paragraph with <p> and </p>. HTML was a much friendlier ship to sail on in its earliest days before the SGML crew were invited on board. It is time for them to walk the plank:

Escape sequence
The escape sequence &x is supported where x is any character.
Automatic tag closure
Wherever possible, end tags are inferred by context.
Simplified markup
XML requires that an element have a name and a series of tag-value pairs. This requires the author to remember the names for both the element and the attributes. In many cases the author has to remember particular attribute values as well. The form <x=y> allows the author to specify the tag and its principal parameter. No more having to remember to specify link using the href attribute if it is a hypertext link or src if it is an image.

Automatics

The following text sequences are automatically recognized and interpreted:

[[!label]
Normative reference in the text
[[~label]
Non-normative reference in the text
MUST, MUST NOT, SHOULD, SHOULD NOT, MAY, SHALL, REQUIRED, RECOMMENDED
Requirements language

Structure tags

<a=uri>
Hypertext anchor and href attribute.
<img=uri>
Image and src attribute.
<id=label>
Identifier anchor for creating internal references in the document
<figure=uri>
Image to be made into a numbered figure. The enclosing text block gives the title.
<include=file [pre]>
File to include as Mark Down source. If the pre attribute is specified, the contents of the file are escaped
<pre>
File to include as preformatted text with necessary escaping applied
<bibliography=file [cache]>
Link to bibliography file.
<bibservice=uri>
Link to bibliography service.

Annotation tags

<b>
Bold
<i>
Italics
<u>
Underline
<s>
Strikethrough
<x>
Code
<d>
Definition

Layout tags

<layout atts>
Specify layout elements
<row>
Start a new bootstrap top level grid
<col=x&gt
Start a new column within the current grid occupying x/12 th of the screen. x must be 1, 4, 6 or 8.

Layout attributes:

  • children: Specified layout attributes apply to all children that do not specify an override.
  • navigator: Add a navigator bar
  • toc: Add a table of contents
  • tof: Add a table of figures
  • tor: Add a table of requirements
  • tot: Add a table of defined terms
  • Content Markup

  • <title> Document title
  • <title-short> Short title used for headings, etc.
  • <keyword> Document keyword
  • <version> Document version number
  • <priority> Document priority, used to determine order documents appear in navigation, etc.
  • <author> Author's full name
  • <author-first> Author's first name
  • <author-last> Author's last name
  • <author-initials> Author's initials
  • <author-organization> Author's organization
  • <author-email> Author's email
  • Organization specific terms

Most standards organizations require documents to be formatted in a particular way and with boilerplate text, etc. specific to that organization.

<ietf=id atts>
IETF document identifier and organization specific attributes:

Valid IETF document attributes include:

  • Area: app/applications, gen/general, int/internet, ops/operations, rai/real-time, rtg/routing, sec/security, tsv/transport
  • IPR: trust200902, noModifications, noDerivatives
  • Track: std/standard, bcp, info/informational, exp/experimental, historic
  • Type: id, rfc

Since the attribute identifiers are mutually exclusive, there is no need to identify them as IPR terms, area, etc. Thus a draft being submitted for standards track consideration in the general area under the full 2009 trust terms would have the following element:

<ietf=id-hallambaker-bootmaker id gen trust200902 standard>

To Do List

  • File Handling
  • Copy images from the source to the target directory
  • Only perform action if output file has not been modified
  • Input Formats
  • Copy images with format conversion and rescalling
  • Word
  • Output Formats
  • RFC / Plaintext
  • XML2RFC
  • Text Parsing
  • Parse text blocks
  • Text Output
  • Output HTML with bold, underline, etc.
  • Citations etc
  • Table of Content, requirements, etc.