A text-based bookmark manager rendered in a web page
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

223 lines
7.7 KiB

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Groff Mission Statement - 2014</title>
<link rel="stylesheet"
type="text/css"
href="groff-mission-statement.css">
<link rel="author"
href="mailto:peter@schaffter.ca">
<link rel="stylesheet"
type="text/css"
href="http://fonts.googleapis.com/css?family=Cardo">
</head>
<body>
<div class="main">
<h1>
Groff Mission Statement
<br/>
2014
</h1>
<span class="divider">&#9753;</span>
<p class="initial">
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.
With an impressive record for backward compatibility, it continues
to evolve and play a leading role in the development of free
typesetting software.
</p>
<p>
Future development will focus on groff&#8217;s typesetting
capabilities, the goal being to improve automatic formatting
of documents with no corresponding loss of user control over
typographic details. In addition to the core binary, 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. The guiding principle for changes
to these parts will be to improve and extend, not alter, especially
with respect to established usage.
</p>
<p>
A key part of the project&#8217;s mandate will be to redress issues
that have historically discouraged widespread adoption of groff.
Issues include the perceived superiority of
<span class="mkern">T</span><span class="tex">e</span>X
for general-purpose typesetting, the long and somewhat unfortunate
association with manpages, and the difficulty of mastering
groff&#8217;s low-level typesetting requests.
</p>
<p>
Broadly speaking, development will be channelled into two areas:
<ul>
<li><span class="diamond-bullet">&diams;</span>&nbsp;
<a href="#core">core groff</a></li>
<ul class="second-level">
<li>&ndash;&nbsp;the typesetting backend and low-level formatting requests</li>
</ul>
<li><span class="diamond-bullet">&diams;</span>&nbsp;
<a href="#usage">program usage</a></li>
<ul class="second-level">
<li>&ndash;&nbsp;general-purpose macro sets and manpages</li>
</ul>
</ul>
Improvements and enhancements to other areas of the system will
continue to form a routine part of groff&#8217;s growth, with active
support for contributions provided by a team of groff mavens.
</p>
<h2 id="core">Core groff</h2>
<h3 class="backend">The backend</h3>
<p class="initial" style="margin-top: -.75em">
Groff currently uses a greedy algorithm to format paragraphs one
line at a time, but the
Knuth-<span class="pkern">P</span>lass
algorithm, implemented in
<span class="mkern">T</span><span class="tex">e</span>X,
Heirloom troff and elsewhere, 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 being
Knuth-<span class="pkern">P</span>lass.
It&#8217;s a big job, but with groff&#8217;s clean codebase and
helpful community of experts, it is hoped additional developers will
step forward and contribute their programming skills.
</p>
<p>
Equally important will be instituting native support for
<span class="mkern">T</span>rue<span class="mkern">T</span>ype,
Open
<span class="mkern">T</span>ype,
and other
non<span class="mkern">-T</span>ype1
PostScript fonts, and improving Unicode support.
</p>
<h3 class="requests">Low-level formatting requests</h3>
<p class="initial" style="margin-top: -.75em">
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.
</p>
<p>
At the request level, groff&#8217;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 &#8220;annoyances&#8221;) will be addressed&mdash;again, with
a watchful eye toward backward compatibility.
</p>
<h2 id="usage">Program usage</h2>
<h3>General-purpose macro sets</h3>
<p class="initial" style="margin-top: -.75em">
Macro sets form the primary user interface to groff. Well-designed,
well-documented sets help make groff accessible to users&mdash;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.
</p>
<p>
The most active area of groff development in the past decade
has been in macro sets, with
<a href="http://www.schaffter.ca/mom/mom-01.html">mom</a>
alone adding over 13,000 lines of code and 1MB of documentation to
the project. Support for existing macro sets and the design and
development of new ones will therefore play a significant role in
groff&#8217;s future.
</p>
<h3 style="margin-top: .5em">Manpages</h3>
<p class="initial" style="margin-top: -.75em">
The need for Unix manuals to render cleanly to multiple output media
favours structural rather than presentational markup, however the
classical
<span class="manpage">man</span>(7)
macros remain almost exclusively presentational.
<span class="manpage">mdoc</span>(7)
provides a semantically superior alternative, but the use of
<span class="manpage">man</span>(7)
is deeply rooted in Unix.
</p>
<p>
Future work on manpages will entail improving the semantic clarity
of the
<span class="manpage">man</span>(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.
</p>
<p>
Concurrent with work on
<span class="manpage">man</span>(7),
<span class="manpage">mdoc</span>(7)
will be actively supported and its use promoted.
</p>
<p>
To summarize, the goal of this two-pronged strategy is to foster
manpage markup that:
<ul>
<li><span class="diamond-bullet">&diams;</span>&nbsp;
renders cleanly to the terminal</li>
<li><span class="diamond-bullet">&diams;</span>&nbsp;
respects presentational markup when output to PostScript</li>
<li><span class="diamond-bullet">&diams;</span>&nbsp;
allows semantic analysis</li>
<li><span class="diamond-bullet">&diams;</span>&nbsp;
is portable</li>
</ul>
</p>
<h2>Looking forward, looking back</h2>
<p class="initial" style="margin-top: .5em">
Backward compatibility with existing documents and usage will
remain a top priority, as will avoiding feature-bloat and increased
overheads. Groff&#8217;s viability and vitality rest as much on
these as on forward-looking development.
</p>
<p>
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 and furthering the cause of
good typography.
</p>
<p class="copyright">
<small>©2014 Free Software Foundation, Inc.<br>
51 Franklin St, Fifth Floor, Boston, MA 02110, USA</small>
</p>
</div>
</body>