$Id: PROJECTS,v 1.2 1998/02/25 04:08:24 ken Exp $

There always seems to be more work than time. :-) Here are a list of
Quilt related projects that might interest you.

Pod-GroveBuilder, pod.spec
Info-GroveBuilder, info.spec
HTML-GroveBuilder, html.spec
Man-GroveBuilder, man.spec
SDF-GroveBuilder, sdf.spec
specs for other SGML and XML DTDs
    These read their respective source formats and create SGML-Grove
    objects, the `.spec's will be used by Quilt for formatting.

RefEntry
    For man-page like documents, DocBook has it's RefEntry model.
    man.spec would create these RefEntry objects and toMan.spec would
    format to n/troff man macros for DocBook, man pages, and POD.

Documentation
    Tutorials, writing backends, getting around groves, working with
    document objects.  Web page and evangelism.

Document objects
    Add more vCard stuff to Author, BibTex/refer interface, calendars,
    directed graphs, PIC or Fig vector graphics, add more features to
    Tables, Equations, graphic and image conversion, add methods to
    existing objects so they can be used as ``real'' objects in
    addition to being able to be formatted.

Modular DTDs
    DocBook is a good starting place for being able to create modular
    DTDs.  A modular DTD would let you organize your own document
    structure (FAQ, README, whatever) and let you include common
    display and inline elements like lists, paragraphs, technical
    terms, figures, links, etc.  You'd need modular spec's to go with
    the modular DTDs, an upcoming release of Quilt will support
    modular specs.

quilt.dsl
    A DSSSL stylesheet for Quilt's internal document objects.  Quilt's
    document objects are loosely based on DocBook's elements.  Quilt's
    object set is designed to be extended easily, so a DSSSL
    stylesheet should also be easily extended.

Additional backends (toLaTeX, toRTF, toMan)
    Backends are fairly easy to port over from other packages, the
    hardest part is choosing which backend sequences to use for which
    source elements and the other package's have done that.  Look at
    Writer::Ascii and Writer::HTML for the kind of processing support
    needed to match the toWhatever specs.  I use a two-pass formatting
    for Ascii and HTML, the first pass converts Quilt Document Objects
    to more-like-output objects (in some cases to Flow objects) and
    the second pass actually writes out the stream.  I found it easier
    to squeeze whitespace between blocks this way.

    I have RTF and troff backends from earlier incarnations of Quilt.
    SGML-Tools has LaTeX, LyX, groff, and RTF.  SDF has HTML,
    PostScript, PDF, man pages, POD, LaTeX, SGML, GNU Info, MIMS HTX
    and F6 help, LyX, MIF, RTF, Windows help and plain text (many of
    those are done using other tools).

Display back-ends
    Using Tk, Gnome, GNUstep, or whatever.  I see this being done in
    two layers, the lower layer is made up of DSSSL flow objects (much
    like TeX's boxes) that can be common to all display backends and
    PostScript, and the upper layer displays the flow objects as a
    widget.  One major reason for the DSSSL flow objects lower layer
    is to be able to display FOT generated by Jade using DSSSL
    stylesheets.

Binaries
    Make binaries available for different platforms.  PkgMaker,
    included in the Kits, can create binary tar files and Solaris
    pkg's using the RPM specs that are also in the Kits.

The Unix Library
    With the various front-ends, Quilt can be used to format and
    present all the various Unix documents in a common style.  You'd
    need a way to locate various kinds and places for documentation.
    See also TkMan
      <ftp://ftp.cs.berkeley.edu/ucb/people/phelps/tcltk/tkman.tar.Z>

Info extensions to toAscii
    The formatting of toAscii is inspired by GNU Info, it should be
    fairly easy to add info markup to create sections and links.  Info
    linking has some character restrictions so a formula should be
    used to create link section names from titles and/or allow
    processing instructions or an external file.

Casbah  <http://www.ntlug.org/casbah/>
    Take a look at what the Casbah group is doing with scripting, XML,
    and web content.  Jump in anywhere.

diff
    Quilt should be able to produce change marks or other highlights
    for changes between two revisions of documents.  I asked once for
    pointers to tree (grove) differencing algorithms and Joe English
    gave this pointer:

    Barnard, David T.; Clarke, Gwen; Duncan, Nicholas. Tree-to-Tree
    Correction for Document Trees. Queen's University Technical Report
    95-372 [Revision of Technical Report 91-315]. Kingston, Ontario:
    Department of Computing and Information Science, Queen's University,
    1995.

    available at:
        <http://www.qucis.queensu.ca/TechReports/Reports/95-372.ps>

    contains a comprehensive survey of tree comparison algorithms.

Objective-C, C++, Java, CORBA
    I have a start at Quilt (SPGroveBuilder and Grove, actually)
    implemented in Objective-C.  Implementing Quilt in ObjC, C++, or
    CORBA would make it available to languages other than Perl.

DSSSL
    Investigate using Jade's DSSSL engine inside Quilt, porting a
    Scheme interpreter, or writing one.  I have a Scheme-in-Perl
    package that is very clean and may be easily portable to ObjC.

Extend DocBook to support Object class definitions
    The GNUstep folks need this also.  It'd be really cool if Quilt
    could merge or crosscheck ObjC .h's with their documentation in
    DocBook.  AutoDoc formats documentation contained in ObjC headers
    <ftp://next-ftp.peak.org/pub/next/apps/devtools/>
