Subject to a few wording changes (suggestions welcome), this represents the final version of the mission statement.
Steve Izma wrote well on the subject of structured text files, so to demonstrate, I'm not cleaning this version up for email, but including it as I wrote it, with the semantic tags in place. Conversion of this kind of file to other formats, including groff, is absurdly easy. Filtered through a simple sed script, the resulting mom file preserves all of the semantics, has *no* low-level groff requests, and requires exactly 4 trivial tweaks (to satisfy my personal aesthetics). I'll be happy to post the mommified version if anyone wants to see it. -------------------------------------------------------------------- [title] "Groff Mission Statement" [subtitle] "2014" [draft] 3 [include] mission-statement-style.mom As the most widely-deployed implementation of troff in use today, groff holds an important place in the Unix universe. Often dismissed as a legacy program for formatting manual pages, groff is in fact a complete typesetting package. Its powerful backend and flexible macro language are routinely used in the production of high-quality documents, from business correspondence to complex, technical reports and plate-ready books. While maintaining a record for backward compatibility, groff continues to evolve, and plays a leading role in the development of free typesetting software. Ongoing development of groff will be directed into two main areas: [list] - core groff [list] - the backend; low-level formatting requests [end] - program usage [list] - general-purpose macro sets; manpages [end] [end] [heading 1] "Core groff" [heading 2] "The backend" Groff currently uses a greedy algorithm to justify text, but the Knuth-Plass algorithm ("paragraph-at-once"), implemented in TeX, Heirloom troff, and elsewhere, achieves a more uniform "typographic grey" with less user intervention. One of the most exciting challenges facing groff will be implementing paragraph-at-once formatting. It's a big job, but with groff's clean codebase and knowledgeable community, it is hoped additional developers will step forward and contribute their programming skills. Equally important for the future are instituting native support for TrueType, OpenType, and other non-Type1 PostScript fonts, and improving Unicode support. [heading 2] "Low-level formatting requests" Supplementary low-level formatting requests will continue to be added, and the behaviour of some existing requests reviewed, with care taken to maintain backward compatibility whenever modifications are deemed worthwhile. At the request level, groff's use of integer arithmetic and linear evaluation of expressions hearkens back to the stone age. While not top-priority, these and other historical encumbrances (read "annoyances") will be addressed--again, with a watchful eye toward backward compatibility. [heading 1] "Program usage" [heading 2] "General-purpose macro sets" Macro sets form the primary user interface to groff. Well-designed, well-documented sets help make groff accessible to users--new users in particular. Adoption or rejection of the program is often based on whether available sets meet user needs without requiring mastery of low-level requests. Learning curve and ease of use are equally important. The most active area of groff development in the past decade has been in macro sets, with [macroset]mom[macroset] alone adding over 13,000 lines of code and 1MB of documentation to the project. Support for existing macro sets and the design/development of new ones will therefore play a key role in groff's future. [heading 2] "Manpages" The need for Unix manuals to render cleanly to multiple output media favours structural rather than presentational markup, however the classical [manpage]man[manpage](7) macros remain almost exclusively presentational. [manpage]mdoc[manpage](7) provides a semantically superior alternative, but the use of [manpage]man[manpage](7) is deeply rooted in GNU-based systems. Future work on manpages will entail improving the semantic clarity of the [manpage]man[manpage](7) macros, decoupling them as much as possible from low-level presentational requests. The aim will be to ease conversion of manpages to markup languages that do not rely on groff for display and printing, e.g. xml, while preserving the full presentational richness of manpages processed with groff. Concurrent with work on [manpage]man[manpage](7), the use of [manpage]mdoc[manpage](7) will be actively supported and encouraged. To summarize, the goal of this two-pronged strategy is to foster manpage markup that [list] - renders cleanly to the terminal - respects presentational markup when output to PostScript - allows semantic analysis - is portable [end] [heading 1] "Looking forward, looking back" Backward compatibility with existing documents and usage will remain a top priority, as will avoiding feature-bloat and increased overheads. Groff's viability and vitality rest as much on these as on forward-looking development. Finally, it is hoped that users of and contributors to groff will promote its use, providing unobtrusive advocacy to encourage more widespread adoption of the program, thereby increasing the pool of potential contributors and developers. -------------------------------------------------------------------- -- Peter Schaffter http://www.schaffter.ca