Next: , Up: Command-Line Interfaces


4.7.1 --version

The standard --version option should direct the program to print information about its name, version, origin and legal status, all on standard output, and then exit successfully. Other options and arguments should be ignored once this is seen, and the program should not perform its normal function.

The first line is meant to be easy for a program to parse; the version number proper starts after the last space. In addition, it contains the canonical name for this program, in this format:

     GNU Emacs 19.30

The program's name should be a constant string; don't compute it from argv[0]. The idea is to state the standard or canonical name for the program, not its file name. There are other ways to find out the precise file name where a command is found in PATH.

If the program is a subsidiary part of a larger package, mention the package name in parentheses, like this:

     emacsserver (GNU Emacs) 19.30

If the package has a version number which is different from this program's version number, you can mention the package version number just before the close-parenthesis.

If you need to mention the version numbers of libraries which are distributed separately from the package which contains this program, you can do so by printing an additional line of version info for each library you want to mention. Use the same format for these lines as for the first line.

Please do not mention all of the libraries that the program uses “just for completeness”—that would produce a lot of unhelpful clutter. Please mention library version numbers only if you find in practice that they are very important to you in debugging.

The following line, after the version number line or lines, should be a copyright notice. If more than one copyright notice is called for, put each on a separate line.

Next should follow a line stating the license, preferably using one of abbrevations below, and a brief statement that the program is free software, and that users are free to copy and change it. Also mention that there is no warranty, to the extent permitted by law. See recommended wording below.

It is ok to finish the output with a list of the major authors of the program, as a way of giving credit.

Here's an example of output that follows these rules:

     GNU hello 2.3
     Copyright (C) 2007 Free Software Foundation, Inc.
     License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
     This is free software: you are free to change and redistribute it.
     There is NO WARRANTY, to the extent permitted by law.

You should adapt this to your program, of course, filling in the proper year, copyright holder, name of program, and the references to distribution terms, and changing the rest of the wording as necessary.

This copyright notice only needs to mention the most recent year in which changes were made—there's no need to list the years for previous versions' changes. You don't have to mention the name of the program in these notices, if that is inconvenient, since it appeared in the first line. (The rules are different for copyright notices in source files; see Copyright Notices.)

Translations of the above lines must preserve the validity of the copyright notices (see Internationalization). If the translation's character set supports it, the ¡(C)¢ should be replaced with the copyright symbol, as follows:

©

Write the word “Copyright” exactly like that, in English. Do not translate it into another language. International treaties recognize the English word “Copyright”; translations into other languages do not have legal significance.

Finally, here is the table of our suggested license abbreviations. Any abbreviation can be followed by ¡vversion[+]¢, meaning that particular version, or later versions with the ¡+¢, as shown above.

In the case of exceptions for extra permissions with the GPL, we use ¡/¢ for a separator; the version number can follow the license abbreviation as usual, as in the examples below.

GPL
GNU General Public License, http://www.gnu.org/licenses/gpl.html.
LGPL
GNU Lesser General Public License, http://www.gnu.org/licenses/lgpl.html.
GPL/Guile
GNU GPL with the exception for Guile; for example, GPLv3+/Guile means the GNU GPL version 3 or later, with the extra exception for Guile.
GPL/Ada
GNU GPL with the exception for Ada.
Apache
The Apache Software Foundation license, http://www.apache.org/licenses.
Artistic
The Artistic license used for Perl, http://www.perlfoundation.org/legal.
Expat
The Expat license, http://www.jclark.com/xml/copying.txt.
MPL
The Mozilla Public License, http://www.mozilla.org/MPL/.
OBSD
The original (4-clause) BSD license, incompatible with the GNU GPL http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6.
PHP
The license used for PHP, http://www.php.net/license/.
public domain
The non-license that is being in the public domain, http://www.gnu.org/licenses/license-list.html#PublicDomain.
Python
The license for Python, http://www.python.org/2.0.1/license.html.
RBSD
The revised (3-clause) BSD, compatible with the GNU GPL, http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5.
X11
The simple non-copyleft license used for most versions of the X Window system, http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3.
Zlib
The license for Zlib, http://www.gzip.org/zlib/zlib_license.html.

More information about these licenses and many more are on the GNU licensing web pages, http://www.gnu.org/licenses/license-list.html.