File:  [NetBSD Developer Wiki] / wikisrc / projects / project / troff.mdwn
Revision 1.4: download - view: text, annotated - select for diffs
Thu Feb 27 09:04:43 2014 UTC (6 years, 1 month ago) by dholland
Branches: MAIN
CVS tags: HEAD
Rewrite in light of the existence of mandoc. Rather than just "rewrite
groff", this project is now "solve the problem we have with
typesetting non-manpage docs". There are a bunch of options for that
but they're all pretty unappealing.

    1: [[!template id=project
    2: 
    3: title="BSD licensed troff/nroff replacement"
    4: 
    5: contact="""
    6: [tech-userlevel](mailto:tech-userlevel@NetBSD.org)
    7: """
    8: 
    9: category="userland"
   10: difficulty="hard"
   11: 
   12: description="""
   13: 
   14: While we now have mandoc for handling man pages, we currently still
   15: need groff in the tree to handle miscellaneous docs that are not man
   16: pages.
   17: 
   18: This is itself an inadequate solution as the groff we have does not
   19: support PDF output (which in this day and age is highly desirable)
   20: ... and while newer groff does support PDF output it does so via a
   21: Perl script. Also, importing a newer groff is problematic for assorted
   22: other reasons.
   23: 
   24: We need a way to typeset miscellaneous articles that we can import
   25: into base and that ideally is BSD licensed. (And that can produce
   26: PDFs.) Currently it looks like there are three decent ways forward:
   27: 
   28: * Design a new roff macro package that's comparable to mdoc (e.g.
   29: supports semantic markup) but is for miscellaneous articles rather
   30: than man pages, then teach mandoc to handle it.
   31: 
   32: * Design a new set of markup tags comparable to mdoc (e.g. supports
   33: semantic markup) but for miscellaneous articles, and a different less
   34: ratty syntax for it, then teach mandoc to handle this.
   35: 
   36: * Design a new set of markup tags comparable to mdoc (e.g. supports
   37: semantic markup) but for miscellaneous articles, and a different less
   38: ratty syntax for it, and write a new program akin to mandoc to handle
   39: it.
   40: 
   41: These are all difficult and a lot of work, and in the case of new
   42: syntax are bound to cause a lot of shouting and stamping. Also, many
   43: of the miscellaneous documents use various roff preprocessors and it
   44: isn't clear how much of this mandoc can handle.
   45: 
   46: None of these options is particularly appealing.
   47: 
   48: There are also some less decent ways forward:
   49: 
   50: * Pick one of the existing roff macro packages for miscellaneous
   51: articles (ms, me, ...) and teach mandoc to handle it. Unfortunately
   52: all of these macro packages are pretty ratty, they're underpowered
   53: compared to mdoc, and none of them support semantic markup.
   54: 
   55: * Track down one of the other older roff implementations, that are now
   56: probably more or less free (e.g. ditroff), then stick to the existing
   57: roff macro packages as above. In addition to the drawbacks cited
   58: above, any of these programs are likely to be old nasty code that
   59: needs a lot of work.
   60: 
   61: * Teach the groff we have how to emit PDFs, then stick to the existing
   62: roff macro packages as above. In addition to the drawbacks cited
   63: above, this will likely be pretty nasty work and it's still got the
   64: wrong license.
   65: 
   66: * Rewrite groff as BSD-licensed code and provide support for
   67: generating PDFs, then stick to the existing roff macro packages as
   68: above. In addition to the drawbacks cited above, this is a horrific
   69: amount of work.
   70: 
   71: * Try to make something else do what we want. Unfortunately, TeX is a
   72: nonstarter and the only other halfway realistic candidate is lout...
   73: which is GPLv3 and at least at casual inspection looks like a horrible
   74: mess of its own.
   75: 
   76: These options are even less appealing.
   77: 
   78: Maybe someone can think of a better idea. There are lots of choices if
   79: we give up on typeset output, but that doesn't seem like a good plan
   80: either.
   81: 
   82: """
   83: ]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb