.\" Copyright ©2014 Free Software Foundation .\" 51 Franklin St, Fifth Floor, Boston, MA 02110, USA .\" .\" Permission is hereby granted, free of charge, to any person .\" obtaining a copy of this software and associated documentation .\" files (the "Software"), to deal in the Software without restriction, .\" including, without limitation, the rights to use, copy, modify, .\" merge, publish, distribute, sublicense, and sell copies of .\" the Software, and to permit persons to whom the Software is .\" furnished to do so, subject to the following conditions: .\" .\" The above copyright notice and this permission notice shall be .\" included in all copies, or substantial portions, of the Software; .\" .\" THE SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, .\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES .\" OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND .\" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT .\" HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, .\" WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING .\" FROM, OUT OF, OR IN CONNECTION WITH, THE SOFTWARE, OR THE USE OF, .\" OR OTHER DEALINGS IN, THE SOFTWARE. .\" .\" Formatted with the mom macros .\" .RW (reduce) and .EW (expand) control track kerning .\" .WS controls word spacing .\" Hanging punctuation and hyphens are inserted manually .\" .INCLUDE mission-statement-strings.mom .TITLE "\*[Groff-Mission-Statement] .SUBTITLE "\*[2014] .INCLUDE mission-statement-style.mom .PP As the most widely deployed implementation of troff in use today, groff holds an important place in the Unix universe. Frequently and erroneously dismissed as a legacy program for formatting Unix manuals (manpages), groff is in fact a sophisticated system for producing high-quality typeset material, from business correspondence to complex, technical reports and plate-ready books. \*[BU3]With an impressive record for backward compatibility, it continues to evolve and play a leading role in the development of free typesetting software. .NO_SHIM .PP .WS -1 Future development will focus on groff's typesetting capabilities, the goal being .EW .05 to improve automatic formatting of documents with no corresponding loss of .WS DEFAULT .EW .2 user control over typographic details. In addition to the core binary, .RW .03 where much of the work will be done, the system comprises a macro language, pre-built macro sets, pre- and post-processors, and drivers for outputting to various formats. \*[BU3]The guiding principle for changes to these parts will be to improve and extend, not alter, especially with respect to established usage. .WS DEFAULT .PP .EW .1 A key part of the project's mandate will be to redress issues that have histori-\h'-\w','u' .SPREAD .EW 0 cally discouraged widespread adoption of groff. Issues include the perceived .EW .2 superiority of \[TeX] for general-purpose typesetting, the long and somewhat .EW 0 unfor\%tunate association with manpages, and the difficulty of mastering groff's low-level typesetting requests. .PP Broadly speaking, development will be channelled into two areas: .LIST .SHIFT_LIST 6p .ITEM core groff .LIST DASH .ITEM the typesetting backend and low-level formatting requests .LIST BACK .ITEM program usage .LIST DASH .ITEM general-purpose macro sets and manpages .LIST BACK .QUIT_LISTS Improvements and enhancements to other areas of the system will continue to form a routine part of groff's growth, with active support for contributions pro-\h'-\w'-'u' .SPREAD vided by a team of groff mavens. .HEADING 1 "Core groff" .SP -1 .HEADING 2 "The typesetting backend" .PP .RW .035 Groff currently uses a greedy algorithm to format paragraphs one line at a time,\h'-\w','u' .SPREAD .EW .15 but the Knuth-Plass algorithm, implemented in \*[BU5]\[TeX], \*[BU4]Heirloom troff and else-\h'-\w'-'u' .SPREAD where, .RW .06 optimizes linebreaks throughout whole paragraphs and achieves a more uniform typographic grey. One of the most exciting challenges facing groff will be implementing an improved formatting algorithm, the most likely candidate .EW .1 being Knuth-Plass. It's a big job, but with groff's clean codebase and helpful .RW 0 community of experts, it is hoped additional developers will step forward and contribute their programming skills. .RW .03 .PP .WS +.5 Equally important will be instituting native support for TrueType, \*[BU2]OpenType and other non\*[FU1]-\*[BU3]Type1 PostScript fonts, and improving Unicode support. .WS DEFAULT .HEADING 2 "Low-level formatting requests" .PP 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. .PP .RW 0 At the request level, groff's use of integer arithmetic and linear evaluation of expressions hearkens back to the stone age. \*[BU3]While not top-priority, these and other historical encumbrances (read \*[BU4]"\*[BU4]annoyances") will be addressed\[em]again,\h'-\w','u' .SPREAD with a watchful eye toward backward compatibility. .RW .03 \#.SP .5 .NO_SHIM off .SP .75v .HEADING 1 "Program usage" .NO_SHIM .SP -1 .HEADING 2 "General-purpose macro sets" .PP Macro sets form the primary user interface to groff. \*[BU3]Well-designed, well-docu-\h'-\w','u' .SPREAD .EW .2 mented sets help make groff accessible to users\[em]new users in particular.\h'-\w'.'u' .RW .03 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. .PP .WS -1 The most active area of groff development in the past decade has been in macro sets, with \[mom] alone adding over 1\*[BU4]3,000 lines of code and 1MB of documen-\h'-\w'-'u' .SPREAD tation to the project. Support for existing macro sets and the design of new macro interfaces will therefore play a significant role in groff's future. .WS DEFAULT .HEADING 2 "Manpages" .PP The need for Unix manuals to render cleanly to multiple output media favours structural rather than presentational markup, however the classical \[man](7) macros remain almost exclusively presentational. \[mdoc](7) provides a semanti-\h'-\w','u' .SPREAD cally superior alternative, but the use of \[man](7) is deeply rooted in Unix. .PP Future work on manpages will entail improving the semantic clarity of the \[man](7) macros, decoupling them as much as possible from low-level presen-\h'-\w','u' .SPREAD tational requests. \*[BU3]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. .PP Concurrent with work on \[man](7), \[mdoc](7) will be actively supported and its use promoted. .PP To summarize, this two-pronged strategy aims to foster manpage markup that: .SP 2p .LIST .SHIFT_LIST 6p .ITEM renders cleanly to the terminal .ITEM respects presentational markup when output to PostScript .ITEM allows semantic analysis .ITEM is portable .QUIT_LISTS .HEADING 1 "Looking forward, looking back" .SP .15v .PP 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. .PP Finally, it is hoped that users of and contributors to groff will promote its use,\h'-\w','u' .SPREAD providing unobtrusive advocacy to encourage more widespread adoption of the program, thereby increasing the pool of potential contributors and devel-\h'-\w'-'u' .SPREAD opers and furthering the cause of good typography.