Mercurial > hg > octave-kai > gnulib-hg
changeset 13575:34fed8ca014c
autoupdate
author | Karl Berry <karl@freefriends.org> |
---|---|
date | Thu, 26 Aug 2010 06:33:40 -0700 |
parents | ac05886b34b6 |
children | 0dcc0397b21a |
files | doc/make-stds.texi doc/standards.texi |
diffstat | 2 files changed, 46 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/make-stds.texi +++ b/doc/make-stds.texi @@ -943,11 +943,12 @@ @end smallexample @noindent -You must define the variable @code{TEXI2DVI} in the Makefile. It should -run the program @code{texi2dvi}, which is part of the Texinfo -distribution.@footnote{@code{texi2dvi} uses @TeX{} to do the real work -of formatting. @TeX{} is not distributed with Texinfo.} Alternatively, -write just the dependencies, and allow GNU @code{make} to provide the command. +You must define the variable @code{TEXI2DVI} in the Makefile. It +should run the program @code{texi2dvi}, which is part of the Texinfo +distribution. (@code{texi2dvi} uses @TeX{} to do the real work of +formatting. @TeX{} is not distributed with Texinfo.) Alternatively, +write only the dependencies, and allow GNU @code{make} to provide the +command. Here's another example, this one for generating HTML from Texinfo:
--- a/doc/standards.texi +++ b/doc/standards.texi @@ -3,7 +3,7 @@ @setfilename standards.info @settitle GNU Coding Standards @c This date is automagically updated when you save this file: -@set lastupdate June 21, 2010 +@set lastupdate August 24, 2010 @c %**end of header @dircategory GNU organization @@ -543,6 +543,7 @@ * User Interfaces:: Standards about interfaces generally. * Graphical Interfaces:: Standards for graphical interfaces. * Command-Line Interfaces:: Standards for command line interfaces. +* Dynamic Plug-In Interfaces:: Standards for dynamic plug-in interfaces. * Option Table:: Table of long options. * OID Allocations:: Table of OID slots for GNU. * Memory Usage:: When and how to care about memory needs. @@ -1122,6 +1123,44 @@ It is ok to mention other appropriate mailing lists and web pages. +@node Dynamic Plug-In Interfaces +@section Standards for Dynamic Plug-in Interfaces +@cindex plug-ins +@cindex dynamic plug-ins + +Another aspect of keeping free programs free is encouraging +development of free plug-ins, and discouraging development of +proprietary plug-ins. Many GNU programs will not have anything like +plug-ins at all, but those that do should follow these +practices. + +First, the general plug-in architecture design should closely tie the +plug-in to the original code, such that the plug-in and the base +program are parts of one extended program. For GCC, for example, +plug-ins receive and modify GCC's internal data structures, and so +clearly form an extended program with the base GCC. + +@vindex plugin_is_GPL_compatible +Second, you should require plug-in developers to affirm that their +plug-ins are released under an appropriate license. This should be +enforced with a simple programmatic check. For GCC, again for +example, a plug-in must define the global symbol +@code{plugin_is_GPL_compatible}, thus asserting that the plug-in is +released under a GPL-compatible license (@pxref{Plugins,, Plugins, +gccint, GCC Internals}). + +By adding this check to your program you are not creating a new legal +requirement. The GPL itself requires plug-ins to be free software, +licensed compatibly. As long as you have followed the first rule above +to keep plug-ins closely tied to your original program, the GPL and AGPL +already require those plug-ins to be released under a compatible +license. The symbol definition in the plug-in---or whatever equivalent +works best in your program---makes it harder for anyone who might +distribute proprietary plug-ins to legally defend themselves. If a case +about this got to court, we can point to that symbol as evidence that +the plug-in developer understood that the license had this requirement. + + @node Option Table @section Table of Long Options @cindex long option names