Annotation of wikisrc/projects/project/troff.mdwn, revision 1.4
1.1 jmmv 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"
1.3 dholland 10: difficulty="hard"
1.1 jmmv 11:
12: description="""
1.4 ! dholland 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:
1.1 jmmv 82: """
83: ]]
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb