Gnash User Manual
*****************

1 Introduction
**************

Gnash is a free SWF movie player.  It is available as a stand-alone
application or as a plugin for several popular web browsers. It
supports playing media from a disk or streaming over a network
connection. Some popular video sharing sites like YouTube are supported
on a wide variety of devices from embedded ones to modern desktops.

   Gnash has a better focus on security, allowing the user tight
control of all network or disk based I/O. Gnash also supports extending
ActionScript by creating your own classes. You can write wrappers for
any development library, and import them into the player much like Perl
or Python does.

1.1 Audience
============

This manual is primarily focused on users interested in how to get
Gnash installed from a package, and basic usage as a web browser
plugin. For more technical details, please refer to the Gnash Reference
manual.

1.2 What Is Supported?
======================

Gnash is known to compile for most any POSIX and ANSI C++ conforming
system if you have all the dependent libraries installed. Systems we
test on, and which Gnash is known to run on are Ubuntu, Fedora, Debian,
Mandriva, OpenBSD, NetBSD, FreeBSD, Win32, and Darwin (OSX) primarily.
Occasionally other platforms are built, primarily by those distribution
maintainers. This includes BeOS, Haiku, Syllable, OS/2, Solaris,
Slackware, and Gentoo.

   Gnash is capable of reading up to SWF v9 files and opcodes, but
primarily supports SWF v7, with better SWF v8 and v9 support under
heavy development. Since the 0.8.2 release, Gnash includes initial
parser support for SWF v8 and v9.  Not all ActionScript 2 classes are
implemented yet, but all of the most heavily used ones are. Many
ActionScript 2 classes are partially implemented; there is support for
all of the commonly used methods of each class.

   Gnash has implemented about 80% of ActionScript v2.0, and has begun
implementing ActionScript v3.0. Gnash supports the majority of Flash
opcodes up to SWF v9, and a wide sampling of ActionScript classes for
SWF v8.

   As ActionScript 3 is a more developed version of ActionScript 2,
many of the same classes work for both. Support has been added to
Gnash's ActionScript library to support the new ActionScript 3 filters,
which get applied to every class. Implementing ActionScript classes is
often the easiest way for new Gnash developers to make a contribution
without a deep internal knowledge of Gnash.

   Gnash has included video support since early 2007, but this is an
ever changing field of reverse engineering. Many of the popular video
sharing sites use SWF v8 or v9, which Gnash supports imperfectly. This
is improving all the time, so often builds from a development snapshot
will work when using the older release packaged in your distribution
doesn't. You can find daily snapshots of the latest CVS tree at:
http://www.gnashdev.org/dev_snapshots
(http://www.gnashdev.org/dev_snapshots/).

   Gnash uses FFmpeg for codecs, so any file supported by Mplayer
should work with Gnash. Gnash supports the loading of patent free
codecs like Ogg Vorbis or Theora from disk based files, while work is
being done to support these codecs when embedded in a SWF file. FFmpeg
contains the codecs used by the current SWF defintion, FLV, VP6 (ON2),
H.263, H.264, and MP3.

2 Using Gnash
*************

When used as a standalone player, you can play any SWF file from the
command line by entering a command of the format:

           gnash <option> <flashfile.swf>

The only required argument is the name (and location) of the file to be
played.

   The available options are listed in the following section, or you
may view them in the terminal window by executing the following at the
command line:

           gnash --help | less

   The source code download of Gnash includes several example SWF
files.  They are located in the `testsuite/samples/' directory of the
Gnash source directory.  If you have installed Gnash correctly, issuing
a command similar to the following plays a short animation of a car
swerving and crashing:

           gnash
           /home/<username>/gnash/testsuite/car_smash.swf

   The above is useful for playing Flash files downloaded to your local
system.  It is also possible to play Flash files directly from the web.
To do so, use the `-u' option along with the URL of the desired file.

           gnash -u http://example.domain.com/flashfile.swf

Note that this will not work with every website; some embedded Flash
files are difficult to play.

2.1 Gnash Command Line Options
==============================

No options are required for  Gnash's default behavior.  However, there
are many options that can be used to change that behavior.

     	gnash <options>
     	filename.swf

*Gnash Command Line Options*

Option                               Function
`-h, --help'                          Print usage information.
`-s, --scale'<FACTOR>                 Scale the movie up/down by the
                                     specified factor.
`-c'                                  Produce a core file instead of
                                     letting SDL trap it. By default,
                                     SDL traps all signals, but
                                     sometimes a core file is desired to
                                     assist with debugging.
`-d, --delay'<NUM>                    Number of milliseconds to delay in
                                     main loop. The main loop polls
                                     continuously with a delay to adjust
                                     how long _Gnash_ sleeps between
                                     iterations of the loop. The smaller
                                     the number, the higher the CPU load
                                     gets, and of course, the more
                                     iterations of the main command loop.
`-v, --verbose'                       Be verbose; i.e. print important
                                     messages to stdout.
`-vv'                                 Be very verbose; i.e. also print
                                     debug messages to stdout.
`-va'                                 Be verbose about movie actions
                                     (for ActionScript debugging). This
                                     usually generates very large
                                     amounts of text and will affect
                                     Gnash's performance.
`-vp'                                 Be verbose about parsing the
                                     movie. This generates a fairly large
                                     amount of text, and is likely to
                                     affect Gnash's performance.
`-A'<FILE>                            Write the audio output to a wave
                                     format file.
`-D'<FILE>                            Write the video output to a raw
                                     video file.  This option is only
                                     valid with dump-gnash.
`-w, --writelog'                      Write the log messages to disk
                                     using the file specified in the
                                     gnashrc file.  The default is
                                     gnash-dbg.log.
`-j, --width'<NUM>                    Specify the starting width of the
                                     window. This is mostly used only by
                                     the plugin.
`-k, --height'<NUM>                   Specify the starting height of the
                                     window. This is mostly used only by
                                     the plugin.
`-1, --once'                          Play once; exit if or when the
                                     movie reaches the last frame.
`-r, --render-mode'<0|1|2|3>         ? [undisplayable block object]
`-t, --timeout'<SEC>                  Timeout and exit after the
                                     specified number of seconds. This
                                     is useful for movies which repeat
                                     themselves.
`-g, --debugger'                      Start Gnash with a Flash debugger
                                     console so one can set break points
                                     or watchpoints.
`-x, --xid'<ID>                       This specifies the X11 window ID
                                     to display in; this is mainly used
                                     by plugins.
`-u, --real-url'<URL>                 Set the _url member of the root
                                     movie. This is useful when you
                                     download a movie and play it from a
                                     different location. See also the -U
                                     switch.
`-U, --base-url'<URL>                 Set base URL for this run. URLs
                                     are resolved relative to this base.
                                     If omitted or empty, it defaults to
                                     the _url member of the top-level
                                     movie (see the -u switch).
`-P, --param'<PARAMETER>              Parameters are given in the syntax
                                     "ParamName=Value" and are mostly
                                     useful for the plugin to honour
                                     EMBED tags attributes or explicit
                                     OBJECT PARAM tags. A common use for
                                     -P is to provide FlashVars (ie: -P
                                     "FlashVars=home=http://www.gnu.org").
`-F, --fd'<FILEDESCRIPTOR>            Use the given filedescriptor to
                                     send requests to the host
                                     application. This is currently only
                                     used for GETURL requests.  The
                                     protocol is not documented yet, and
                                     also needs improvement.  Primary
                                     use for this switch is for the
                                     NPAPI plugin to properly support
                                     javascript and target windows in
                                     geturl requests.
`--max-advances'<NUM>                 Exit after the specified number of
                                     frame advances.
`--fullscreen'                        Start Gnash in fullscreen mode as
                                     long as the GUI and window manager
                                     support this.

2.2 Gnash Interactive Control Keys
==================================

While a movie is playing, there are several control keys. These can be
used to step through frames, pause the playing, and control other
actions.

*Gnash Interactive Control Keys*

Key Combination                      Function
`CTRL-Q'                              Quit/Exit.
`CTRL-W'                              Quit/Exit.
`ESC'                                 Quit/Exit.
`CTRL-P'                              Toggle Pause.
`CTRL-R   '                           Restart the movie.
`CTRL-L'                              Force immediate redraw.
`CTRL-T'                              Debug.  Test the set_variable()
                                     function.
`CTRL-G'                              Debug.  Test the get_variable()
                                     function.
`CTRL-M'                              Debug.  Test the call_method()
                                     function.

2.3 User Configuration File
===========================

Individual user preferences may be set by editing variables with the
`.gnashrc' file:

           ~/.gnashrc

   Each line must begin with an action: either _set_ or, in the case of
lists, also _append_.

   The values in this configuration file apply only to an individual
user, and become the default settings of the standalone player and the
plugin.  Note that any command line options take precedence over
`.gnashrc' settings.

   The variables in the `.gnashrc' file support three types of
arguments: on/off, numeric values, or in the case of the whitelist and
blacklist, a list of hostnames as ASCII text.  User configuration
variables in `.gnashrc' are case-insensitive.

*User Configuration Variables*

Variable                 Value                    Function
localdomain              on/off                   This value can be set
                                                  to either _on_ or
                                                  _off_, and controls the
                                                  loading of external
                                                  Flash movies over a
                                                  network. This option
                                                  tells Gnash to only
                                                  load Flash movies from
                                                  the existing domain.
localhost                on/off                   This value can be set
                                                  to either _on_ or
                                                  _off_, and controls the
                                                  loading of external
                                                  Flash movies over a
                                                  network. This is a
                                                  stricter version of the
                                                  _localdomain_ setting as
                                                  this allows the loading
                                                  of Flash movies to the
                                                  same host that is
                                                  running Gnash.
whitelist                hostnames                This is a list of
                                                  hostnames separated by
                                                  spaces, or _off_ to
                                                  disable the whitelist.
                                                  The hostname must be
                                                  given without a
                                                  protocol (http://,
                                                  https://). If this list
                                                  is populated, Gnash
                                                  will only load external
                                                  Flash movies from the
                                                  specified hosts.  The
                                                  whitelist takes
                                                  precedence over the
                                                  blacklist. Because
                                                  several files can be
                                                  parsed in succession,
                                                  each file can override
                                                  or add to lists in
                                                  other files. Use _set_
                                                  to override all other
                                                  lists or _append_ to
                                                  add your blacklisted
                                                  hosts to lists in
                                                  previously parsed files.
blacklist                hostnames                This is a list of
                                                  hostnames separated by
                                                  spaces, or _off_ to
                                                  disable the blacklist.
                                                  The hostname must be
                                                  given without a
                                                  protocol (http://,
                                                  https://).  External
                                                  flash movies from these
                                                  domains are never
                                                  allowed to load. If
                                                  whitelist is present
                                                  and not empty,
                                                  blacklist is not used.
                                                  Because several files
                                                  can be parsed in
                                                  succession, each file
                                                  can override or add to
                                                  lists in other files.
                                                  Use _set_ to override
                                                  all other lists or
                                                  _append_ to add your
                                                  blacklisted hosts to
                                                  lists in previously
                                                  parsed files.
localSandboxPath         dirs                     This is a list of
                                                  directories separated
                                                  by spaces.  Only
                                                  resources from these
                                                  directories and from
                                                  the directory portion
                                                  of movie filename (if
                                                  loaded from filesystem)
                                                  are allowed to load.
                                                  Because several files
                                                  can be parsed in
                                                  succession, each file
                                                  can override or add to
                                                  lists in other files.
                                                  Use _set_ to override
                                                  all other lists or
                                                  _append_ to add new
                                                  sandboxes. Note that
                                                  there's currently no
                                                  way to _drop_ the
                                                  directory of base dir
                                                  from the list of
                                                  allowed local sandboxes.
delay                    Number                   Gnash uses a
                                                  timer-based event
                                                  mechanism to advance
                                                  frames at a steady
                                                  rate. This option
                                                  overrides the default
                                                  setting in Gnash to
                                                  play a movie slower or
                                                  faster.
verbosity                Number                   This is a numeric value
                                                  which defines the
                                                  default level of
                                                  verbosity from the
                                                  player.
MalformedSWFVerbosity    on/off                   This value can be set
                                                  to either _on_ or
                                                  _off_, and controls
                                                  whether malformed SWF
                                                  errors should be
                                                  printed. If set to
                                                  true, verbosity level is
                                                  automatically
                                                  incremented. Set
                                                  `verbosity' to 0
                                                  afterwards to hush.
ASCodingErrorsVerbosity  on/off                   This value can be set
                                                  to either _on_ or
                                                  _off_, and controls
                                                  whether ActionScript
                                                  coding errors should be
                                                  printed. If set to
                                                  true, verbosity level
                                                  is automatically
                                                  incremented.  Set
                                                  `verbosity' to 0
                                                  afterwards to hush.
debuglog                 Absolute path            This is the full path
                                                  and name of debug
                                                  logfile as produced by
                                                  Gnash. On systems with
                                                  a UNIX-type shell, a
                                                  tilde prefix (~) will
                                                  be expanded as by Posix
                                                  shell requirements (see
                                                  http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_01).
writelog                 on/off                   This value can be set
                                                  to either _on_ or
                                                  _off_, and controls
                                                  whether a debug log is
                                                  always written by
                                                  Gnash, or not at all.
sound                    on/off                   This value can be set
                                                  to either _on_ or
                                                  _off_, and controls the
                                                  sound of the standalone
                                                  player. By default
                                                  Gnash enables playing
                                                  the sound in any Flash
                                                  movie.
pluginsound              on/off                   This value can be set
                                                  to either _on_ or
                                                  _off_, and controls the
                                                  sound of the player
                                                  when running as a
                                                  browser plugin. By
                                                  default, sound is
                                                  enabled when using
                                                  Gnash as a browser
                                                  plugin.
EnableExtensions         on/off                   Set to _on_ to enable
                                                  extensions. This option
                                                  is _off_ by default
StartStopped             on/off                   Set to _on_ to have the
                                                  GUI start in "stop"
                                                  mode. This is useful in
                                                  particular for the
                                                  plugin, so you have to
                                                  explicitly start any
                                                  movie on a webpage. This
                                                  option is _off_ by
                                                  default.
webcamDevice             integer                  The integer value
                                                  (index into vector of
                                                  video devices) that
                                                  represents the default
                                                  webcam. To easily get
                                                  this entry run
                                                  utilities/findwebcams
                                                  (only works with
                                                  Gstreamer right now)
microphoneDevice         integer                  The integer value
                                                  (index into vector of
                                                  microphone devices)
                                                  that represents the
                                                  default microphone. To
                                                  easily get this entry
                                                  run
                                                  utilities/findmicrophones
                                                  (only works with
                                                  Gstreamer right now)
flashVersionString       string                   Set the string returned
                                                  by $version and
                                                  System.capabilities.version.
                                                  Useful to get around
                                                  some flash version
                                                  detection movies. Note
                                                  that the version
                                                  advertised by the
                                                  plugin is NOT affected
                                                  by this setting,
                                                  instead you need to set
                                                  the GNASH_FLASH_VERSION
                                                  environment variable for
                                                  the latter (which
                                                  doesn't affect $version
                                                  and
                                                  System.capabilities.version).
flashSystemOS            string                   The string that Gnash
                                                  should return for
                                                  System.capabilities.OS
flashSystemManufacturer  string                   The string that Gnash
                                                  should return for
                                                  System.capabilities.manufacturer
StreamsTimeout           double                    Set the number of
                                                  seconds after which
                                                  streams download time
                                                  out. Timeouts only
                                                  occur after the given
                                                  number of seconds have
                                                  passed without anything
                                                  being received.
insecureSSL              on/off                   If set to _on_, no
                                                  verification of SSL
                                                  connections is
                                                  performed. This means
                                                  that, although the
                                                  connection is
                                                  encrypted, the server
                                                  certificate could be
                                                  invalid, may not belong
                                                  to the host, or both.
                                                  Equivalent to curl
                                                  -insecure. By default,
                                                  this option is _off_
                                                  and connections will
                                                  fail when a host cannot
                                                  be verified.
SOLsafedir               Absolute path            The full path to a
                                                  directory where Gnash
                                                  should store Shared
                                                  Object files ("flash
                                                  cookies") if they are
                                                  enabled.
solLocalDomain           on/off                   If set to _on_, allow
                                                  the loading of Shared
                                                  Objects only on the
                                                  localhost.
SOLreadonly              on/off                   If set to _on_, Gnash
                                                  will not write Shared
                                                  Object files.
ignoreFSCommand          on/off                   If set to on (default),
                                                  Gnash will ignore
                                                  fscommands in
                                                  standalone mode.
                                                  Fscommands are requests
                                                  from the playing movie
                                                  to the operating system
                                                  or user interface: the
                                                  most common are quit,
                                                  fullscreen, showmenu
                                                  and exec. Gnash always
                                                  ignores fscommands when
                                                  running as a plugin.
URLOpenerFormat          string                    Set the format of an
                                                  url opener command. The
                                                  %u label would be
                                                  substituted by the
                                                  actual url to be opened.
                                                  Examples: ?
                                                  [undisplayable block
                                                  object]
HWAccel                  string                    Specify the type of
                                                  Hardware Video Decoder.
                                                  Currently only _vaapi_,
                                                  _omap_, _xv_ or _none_
                                                  are supported. None
                                                  disables any
                                                  acceleration support
                                                  (the default).
MediaHandler             string                    Specify the type of
                                                  Media Handler to use.
                                                  Currently only _ffmpeg_
                                                  or _gst_ are supported.
                                                  The default is ffmpeg.
Renderer                 string                    Specify the type of
                                                  Renderer to use.
                                                  Currently only _agg_,
                                                  _opengl_, or _cairo_
                                                  are supported. The
                                                  default is AGG, as it
                                                  doesn't require any
                                                  special hardware
                                                  support.
quality                  [-1|0|1|2|3]              Set rendering quality.
                                                  If set to _-1_, Gnash
                                                  will use whatever
                                                  quality set by the
                                                  movie being run. If set
                                                  to any value from _0_
                                                  to _3_Gnash will lock
                                                  quality to the
                                                  specified value (0=low,
                                                  1=medium, 2=high,
                                                  3=best). Defaults to -1.
scriptsTimeout           integer                   The amount of seconds
                                                  after which to prompt
                                                  popup for script
                                                  execution abortion.
                                                  Defaults to 15. Can be
                                                  changed by SWF tags
                                                  unless you 'set
                                                  lockScriptLimits on'.
scriptsRecursionLimit    integer                   The maximum depth of
                                                  function call stack for
                                                  ActionScript execution.
                                                  Defaults to 256. Can be
                                                  changed by SWF tags
                                                  unless you 'set
                                                  lockScriptLimits on'.
lockScriptLimits         boolean                   Makes
                                                  scriptsRecursionLimit
                                                  and scriptsTimeout
                                                  locked to the default
                                                  (or rcfile) values and
                                                  doesn't allow SWF tag
                                                  to modify it.  Defaults
                                                  to off.

   The following example `.gnashrc' file allows a user to only play
Flash files saved locally to the machine on which Gnash is running.  It
also specifically forbids content from doubleclick.com and
mochibot.com.  Gnash's error output is set to be fairly verbose, with
the debug log placed in a location convenient for the user.  Finally,
sound is turned on for both the standalone player and the plugin.

         #
         # Gnash client options
         #

         # Only access remote content from our local domain
         set localdomain on

         # Only access content from our local host
         set localhost on

         # These sites are OK
         # uncommenting the following line will allow load of external
         # movies *only* from the specified hosts.
         #set whitelist www.doonesbury.com www.cnn.com www.9news.com

         # Disable whitelists set in any other gnashrc files, because
         # these could override our blacklist.
         set whitelist off

         # Don't access content from these sites
         set blacklist www.doubleclick.com mochibot.com

         # The delay between timer interrupts
         set delay 50

         # The default verbosity level
         set verbosity 1

         # Be verbose about malformed SWF
         set MalformedSWFVerbosity true

         # Be verbose about AS coding errors
         set ASCodingErrorsVerbosity true

         # The full path to the debug log
         set debuglog ~/gnash-dbg.log

         # Write a debug log to disk
         set writelog on

         # Enable or Disable sound for the standalone player
         set sound on

         # Enable or Disable sound for the standalone player
         set pluginsound on

         # Make sure SSL connections are always verified
         set insecureSSL off

         # Use firefox to open urls
         set urlOpenerFormat firefox -remote 'openurl(%u)'

3 Installing and Configuring Gnash
**********************************

There are two ways of installing Gnash: using a package manager, or
installing from source (see Getting the Source).

3.1 Requirements
================

Before downloading and installing Gnash, check that your hardware and
software meet the following requirements.

3.1.1 Hardware Requirements
---------------------------

One of the goals of Gnash is to make it portable enough to install on
small devices.  As a result, the hardware requirements are minimal.
Gnash has even run on an ARM9 at 200 MHz with 32 MB of RAM! (It ran
without video support in this case.) While firm minimums have not been
established, Gnash has been shown to run successfully with the
following:

   * 336 MHz processor

   * 128 MB RAM

   * Gnash will run on anything from a raw frame buffer up to an
     OpenGL-supporting graphics card.

   The following table provides a list of the Operating System/CPU
combinations on which Gnash has been shown to run.

*Build Matrix*

Operating System                     Processor
OpenBSD, FreeBSD, NetBSD             Alpha AXP, AMD64, i386, Itanium,
                                     PC-98, PowerPC, SPARC64
Debian                               Alpha AXP, AMD64, ARM, hppa, i386,
                                     Itanium, MIPS, PowerPC, IBM zSeries
                                     (s390), SPARC
Fedora                               x86-32, x86-64, Geode GX, Geode LX
Gentoo                               AMD64, PowerPC, SPARC, x86
Maemo 2.1                            i385, ARMv5t
Scratchbox                           i386, ARMv5t
Access Linux Platform                i386, ARMv5t
Mandriva                             i386, x86-64, MIPS
Open Embedded, OpenMoko              ARM
YellowDog Linux 6                    PowerPC, PS3
OpenSuSE 10                          i586, x86-64
Red Hat Enterprise, CentOS           x86-32, x86-64
Ubuntu                               x86-64, x86-32, PowerPC, UltraSPARC
Haiku                                i386
Syllable                             i386
Irix 6.5                             MIPS R10K
Darwin (MacOS X)                     PowerPC and x86-32
Windows XP, Windows Vista            x86-32

3.1.2 Software Requirements
---------------------------

The 0.8.9 release of Gnash has been designed to run on UNIX/Linux
variants, and has been run on most of the free ones.  However, Gnash
has successfully run on Windows, Darwin (Mac OS X), Irix, Solaris,
BeOs, OS/2, and Haiku.  Gnash has also run on the following 64-bit
systems: PowerPC, Itanium, UltraSparc, and AMD64.  For now, it is
important to be sure that the following code, testing, and
documentation dependencies are met before installing Gnash.  If you
will be downloading Gnash with a package manager, these dependencies
may be solved by the package manager.  Otherwise, you must first verify
that each of these dependencies are installed on the target system.

3.2 Downloading Gnash
=====================

There are two ways to download Gnash: using a package manager or by
downloading the source code and building it on your system. If
possible, it is advisable to use a package manager to download Gnash,
as it will resolve dependencies for you.  However, if you want the very
latest features, or a Gnash package is not available for your operating
system, it is better to download the source code and build Gnash
locally.

3.2.1 Getting the Source
------------------------

Gnash is available as a release tarball (see Releases), a
development checkout (see Repository), or a development snapshot
(see Snapshot).

3.2.1.1 Releases
................

The source can be acquired from a GNU FTP Mirror
(http://www.gnu.org/prep/ftp.html).  The release version is intended to
be stable, and is probably your best choice if the release took place
recently.  If you need features or fixes which were introduced after
the release, consider a CVS checkout (see Repository) or the daily
snapshot (see Snapshot).

   To download, select a mirror near you, then choose the `gnash'
directory.

3.2.1.2 Snapshot
................

The daily development snapshot can be downloaded from
http://www.gnashdev.org/dev_snapshots/
(http://www.gnashdev.org/dev_snapshots/).  This is the best option if
you need changes which were introduced after the last release (see
Releases) of Gnash, but are unable to download directly from the
repository. (see Repository)

3.2.1.3 Repository
..................

The latest development sources are available via anonymous CVS.  This
is recommended if you need features or bug fixes which were introduced
after the last release (see Releases).  Look at the daily snapshot
(see Snapshot) if you experience difficulty accessing the
repository.

   To download via anonymous CVS, first set the environment variable
`CVS_RSH' to `ssh', then check out the source code.  The example below
uses the GNU Bourne-Again shell (bash):

     	    export CVS_RSH="ssh"
     	    cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/gnash co gnash

   It is also possible to browse the repository
`http://cvs.savannah.gnu.org/viewcvs/gnash/?root=gnash' on the web.

3.2.2 Getting Codec Support
---------------------------

Gnash requires codec support to handle audio and video correctly. Some
platforms like Ubuntu or Fedora under the GNOME desktop will
automatically notify the user that the proper codecs aren't installed,
and pop up a dialog box to let the user download the codecs Gnash needs
to make site like YouTube work correctly. If you have installed Gnash on
any other platform, and video doesn't work, it's highly likely you need
to install the proper codecs. For most platforms, this is the
Gstreamer-ffmpeg plugin, available from your distributions repository.

4 Reporting Bugs
****************

The Gnash project relies on the community of Gnash users to test the
player.  Feedback is critical to any successful project.  Not only does
it let us know that people use Gnash, but it helps us understand the
community's needs. Gnash uses a bug tracker on
`http://savannah.gnu.org' to manage these reports.

   When filing a report, please follow the guidelines below. The better
your bug report is, the easier it will be for the developers to address
the issue. Bug reports without enough information will be asked to
provide this information anyway. Adding critical details, like the
Operating System you are on, its version, and any relevant error
messages from Gnash that you get.

4.1 Get a Fresh Binary Package
==============================

For starters, it's a good idea to obtain a copy of the latest snapshot.
Although Gnash is primarily released as source, the Gnash build
infrastructure allows the automated building of binary packages. Often
the version of Gnash as packaged by a GNU/Linux or BSD distribution is
based on the last official release, which could be months out of date.
It helps us, if this is the case, for you to try a newer packaged build
of Gnash.

   You can get a fresh binary package of Gnash, as well as recent
source packages from http://www.getgnash.org/packages
(http://www.getgnash.org/packages/).

4.2 Determine if the bug was previously reported
================================================

Search the Gnash bug tracker
(https://savannah.gnu.org/bugs/?group=gnash) to see if the bug has
already been identified.

   If the issue has already been reported, you should not file a bug
report.  However, you may add some additional information to the ticket
if you feel that it will be beneficial to the developers.  For
instance, if someone reported a memory issue on Ubuntu GNU/Linux, and
you noticed the same problem on OpenBSD, your stacktrace would be
useful.  Conversely, adding a "me too" note to a feature request is not
helpful.

4.3 Review the bug writing guidelines
=====================================

A good bug report should be precise, explicit, and discrete.  This
means that there should be just one bug per ticket, and that a ticket
should contain the following information:

   * An overview of the problem;

   * Instructions on how to replicate the bug;

   * A description of what happened when you performed the steps to
     replicate the bug, and what you expected to happen;

   * Your system information: operating system name and version, as
     well as the versions of major development dependencies;

   * The release number or checkout timestamp for the version of Gnash
     where you observe the problem;

   * The file `config.log', which should be attached as a file;

   * A descriptive title.

   Include any additional information that you feel might be useful to
the developers.

4.4 Filing a bug report
=======================

After following the steps described above, you can file a bug report at
`https://savannah.gnu.org/bugs/?group=gnash'.

5 Glossary
**********

A
=

ActionScript
     _ActionScript_, or "AS", is the scripting language for _SWF_
     applications. It is compiled to bytecode, which is a subset of the
     _SWF_ format.

AGG
     AGG is the AntiGrain 2D graphics library, which can be used as a
     renderer in Gnash. It is faster than OpenGL on systems without
     hardware graphics acceleration. As of Gnash version 0.8.2 it is
     the more feature complete renderer.

AMF
     _AMF_ is the object format used by _SWF_ for shared objects and
     streaming video.

as_environment
     In Gnash terms, the as_environment, or ActionScript execution
     environment, contains a stack of objects, characters and values
     which are in the immediate environment of the current fn_call.
     Please refer to the Gnash ActionScript manual for more information.

C
=

Cairo
     Cairo is a 2D graphics library with support for multiple output
     devices. Can be used as a renderer in Gnash. A useful feature of
     Cairo is that it will automatically use graphic card acceleration
     when available. Cairo has an experimental OpenGL backend.

D
=

DejaGNU
     DejaGNU is a framework for testing software.

DocBook
     _DocBook_ is a markup language for presentation-neutral
     documentation, such as manuals.

Doxygen
     _Doxygen_ is a documentation generator for for multiple languages
     which uses comments in the source code to create stand-alone
     documentation.

Drupal
     Drupal is a CMS/blog system used for the main Gnash website.

E
=

extensions
     A Gnash _extension_ is a plugin (not a browser plugin) which
     implements additional functionality beyond what is covered by the
     _SWF_ specification. These are shared libraries which are loaded
     at runtime.

F
=

FFmpeg
     FFmpeg is an audio and video decoding library which can be used by
     Gnash to decode mp3, FLV and other media types.

Flash
     The term _Flash_ is used to describe both the Adobe IDE for
     creating _SWF_ files, and Adobe's player.  Flash is a registered
     trademark belonging to Adobe.

FLV
     FLV is a proprietary file format used to deliver Flash video. It
     is used by YouTube, among others.

FLTK
     FLTK, or the 'Fast Light ToolKit', is a portable GUI library which
     is intended to replace the SDL GUI. Currently in Gnash, FLTK may
     be used with the Cairo and AGG renderers. FLTK has an experimental
     Cairo backend.

FrameBuffer
     In Gnash, this is a GUI library that outputs directly to the Linux
     Frame Buffer and so does not need a window system to run. This
     makes it particularly suitable for use on small devices.

G
=

Gnash
     Gnash is the GNU Flash movie player.

Gstreamer
     Gstreamer is a multimedia framework which Gnash can use for
     decoding audio and video. Gstreamer itself cannot decode anything,
     so it needs some appropriate decoding-plugins to do the work for
     it. Remember to install them if you use Gnash with Gstreamer
     enabled. To get the best out of Gnashs gstreamer-parts, it is
     recommended to install the gst-plugins-good, gst-plugins-good and
     gst-ffmpeg plugins packages.

GTK
     GTK is the GIMP Toolkit GUI library. It is one of the GUI options
     for Gnash. As of Gnash 0.7.2, this is the more performant and
     feature-rich choice. GTK uses Cairo internally.

GUI
     A _GUI_ is a "graphical user interface". In Gnash, the GUI library
     provides a wrapper for mouse and keyboard events, menus, windowing
     (where available) and a drawing area.  You must choose a GUI
     library during the configuration stage of building Gnash.

K
=

kde-gnash
     _kde-gnash_ is the name given to the stand-alone instance of Gnash
     which used the KDE GUI.  It has been replaced with an
     implementation using Qt.  The Konqueror plugin runs kde-gnash and
     is called _Kparts_.

Kparts
     _Kparts_ is a plugin for Konqueror which is enabled with the
     configuration option -enable-kparts.

M
=

Mesa
     _Mesa_ is the free software OpenGL implementation.  Gnash
     documentation will sometimes use the glossterms 'OpenGL' and
     'Mesa' interchangeably.

Ming
     Ming is a C library for generating _SWF_ format movies, plus a set
     of wrappers for using the library. It is used by the Gnash project
     for generating testcases.

N
=

Nellymoser
     Nellymoser is a proprietary audio codec introduced in the Flash
     Player in version 6. For more information, please see Wikipedia.

O
=

OpenGL
     OpenGL (Open Graphics Library) is a standard specification
     defining a cross-language cross-platform API for writing
     applications that produce 3D and 2D computer graphics. Accelerated
     graphic cards usually provide OpenGL at the hardware level. Please
     refer to Wikipedia for availability of free software OpenGL
     hardware drivers. A free software implementation of the API is
     available (Mesa). OpenGL can be used as a renderer in Gnash.

ORM
     ORM is a system for ensuring the rights of the creator over a
     piece of digital content. It is more passive than DRM.

P
=

plugin
     The glossterm _plugin_ is used in Gnash to refer to both any Gnash
     browser plugin, as well as the Firefox plugin specifically.  The
     Konqueror plugin is called _Kpart_.  Sometimes, the term is used in
     an even more generic sense to refer to _extensions_.

Q
=

Qt
     Qt is a GUI library which is used by KDE. The plugin version of
     Gnash using this GUI library is Kpart. The standalone version is
     enabled with -enable-gui=kde.

R
=

renderer
     The _renderer_ is the subsystem of Gnash which renders content.
     Only one renderer may be used; it is selected at configuration
     time if building from source.

     Available renderers are: AGG, OpenGL, and Cairo. In terms of
     feature completeness, AGG comes first; followed by OpenGL and then
     Cairo. In most cases, AGG is preferred for performance, except
     cases where it is beneficial to have hardware accelerated
     rendering (for example, when you have a very slow CPU but a very
     fast graphics card). In this case OpenGL should be used.

RTMP
     RTMP is the Real Time Messaging Protocol primarily used with to
     stream audio and video over the internet to the Flash Player
     client.

RTMPT
     RTMPT is basically a HTTP wrapper around the RTMP protocol that is
     sent using POST requests from the client to the server. Because of
     the non-persistent nature of HTTP connections, RTMPT requires the
     clients to poll for updates periodically in order to get notified
     about events that are generated by the server or other clients.

RTMPTS
     RTMPTS is the same as RTMPT, but instead of being a HTTP wrapper,
     it is a HTTP SSL wrapper (HTTP secure connection).

S
=

SDL
     Simple DirectMedia Layer is a cross-platform multimedia free
     software library that creates an abstraction over various
     platforms' graphics, sound, and input APIs. Gnash can use it as a
     GUI and/or as a sound handler. Note that the two usages are
     independent of each other: you can use it for a task and not for
     the other if you wish.  This version of Gnash does not implement
     menus in the SDL GUI; the SDL sound handler is the most feature
     rich, supporting video through FFmpeg.

sound handler
     The _sound handler_ is the part of Gnash which handles both event
     sounds and streaming sound.  Audio from external sources is sent
     through the sound handler when SDL is used.  The sound handler
     must be selected during configuration of Gnash when compiling.

     There are currently two sound handlers available in Gnash: FFmpeg
     and Gstreamer.  The ffmpeg sound handler uses SDL for mixing.  The
     Gstreamer-sound handler uses the available plugins to decode the
     audio, so it might not work if some important plugins are missing.
     The GST sound handler is recommended (the default).

sprite
     A sprite is an element of an Flash Movie. It's basically a Movie
     inside another, having its own timeline.

Stage
     The visible area of a Flash movie. The name derives from a theater
     analogy. Graphical elements are referred to as characters.

SWF
     _SWF_ is the generic name for _Flash_ movies.

T
=

Tamarin
     The Tamarin project seeks to create an open source implementation
     of the ECMAScript 4th edition language specification. The code is
     used by Adobe as part of the ActionScript Virtual Machine within
     the Adobe Flash Player. Gnash does not use Tamarin; it already has
     a working virtual server and most ActionScript classes are
     implemented.

timeline
     In Flash technology, a timeline is a sequence of "frames". A
     single Flash movie can contain multiple timelines, each
     independently controlled (STOP or PLAY). At regular intervals
     (FPS) the player advances all timelines in PLAY mode to the next
     frame, looping back when last frame is reached.

X
=

X.org
     X.org is the most commonly used X server; it was forked from
     XFree86.

6 Authors
*********

Gnash is maintained by Rob Savoye. Other active developers are: Sandro
Santilli, Bastiaan Jacques, Udo Giacomozzi, Chad Musick, Benjamin
Wolsey, Zou Lunkai, and Russ Nelson. Please send all comments and
suggestions to <gnash-dev@gnu.org>. Past and sometimes current
developers are Tomas Groth and Markus Gothe.

   Gnash was initially derived from GameSWF.  GameSWF is maintained by
Thatcher Ulrich <tu@tulrich.com>.  The following people contributed to
GameSWF: Mike Shaver, Thierry Berger-Perrin, Ignacio Castan~o, Willem
Kokke, Vitaly Alexeev, Alexander Streit, and Rob Savoye.

Appendix A GNU Free Documentation License
*****************************************

A.1 0. PREAMBLE
===============

The purpose of this License is to make a manual, textbook, or other
written document "free" in the sense of freedom: to assure everyone the
effective freedom to copy and redistribute it, with or without
modifying it, either commercially or non-commercially. Secondarily,
this License preserves for the author and publisher a way to get credit
for their work, while not being considered responsible for
modifications made by others.

   This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft license
designed for free software.

   We have designed this License in order to use it for manuals for
free software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.

A.2 1. APPLICABILITY AND DEFINITIONS
====================================

This License applies to any manual or other work that contains a notice
placed by the copyright holder saying it can be distributed under the
terms of this License. The "Document", below, refers to any such manual
or work. Any member of the public is a licensee, and is addressed as
"you".

   A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.

   A "Secondary Section" is a named appendix or a front-matter section
of the Document (see fdl-document) that deals exclusively with the
relationship of the publishers or authors of the Document to the
Document's overall subject (or to related matters) and contains nothing
that could fall directly within that overall subject. (For example, if
the Document is in part a textbook of mathematics, a Secondary Section
may not explain any mathematics.)  The relationship could be a matter
of historical connection with the subject or with related matters, or of
legal, commercial, philosophical, ethical or political position
regarding them.

   The "Invariant Sections" are certain  Secondary Sections (see
fdl-secondary) whose titles are designated, as being those of
Invariant Sections, in the notice that says that the Document (see
fdl-document) is released under this License.

   The "Cover Texts" are certain short passages of text that are
listed, as Front-Cover Texts or Back-Cover Texts, in the notice that
says that the Document (see fdl-document) is released under this
License.

   A "Transparent" copy of the  Document (see fdl-document) means a
machine-readable copy, represented in a format whose specification is
available to the general public, whose contents can be viewed and edited
directly and straightforwardly with generic text editors or (for images
composed of pixels) generic paint programs or (for drawings) some
widely available drawing editor, and that is suitable for input to text
formatters or for automatic translation to a variety of formats
suitable for input to text formatters. A copy made in an otherwise
Transparent file format whose markup has been designed to thwart or
discourage subsequent modification by readers is not Transparent.  A
copy that is not "Transparent" is called "Opaque".

   Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML or
XML using a publicly available DTD, and standard-conforming simple HTML
designed for human modification. Opaque formats include PostScript, PDF,
proprietary formats that can be read and edited only by proprietary
word processors, SGML or XML for which the DTD and/or processing tools
are not generally available, and the machine-generated HTML produced by
some word processors for output purposes only.

   The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in formats
which do not have any title page as such, "Title Page" means the text
near the most prominent appearance of the work's title, preceding the
beginning of the body of the text.

A.3 2. VERBATIM COPYING
=======================

You may copy and distribute the Document (see fdl-document) in any
medium, either commercially or noncommercially, provided that this
License, the copyright notices, and the license notice saying this
License applies to the Document are reproduced in all copies, and that
you add no other conditions whatsoever to those of this License. You
may not use technical measures to obstruct or control the reading or
further copying of the copies you make or distribute. However, you may
accept compensation in exchange for copies. If you distribute a large
enough number of copies you must also follow the conditions in section
3 (see 3_ COPYING IN QUANTITY).

   You may also lend copies, under the same conditions stated above,
and you may publicly display copies.

A.4 3. COPYING IN QUANTITY
==========================

If you publish printed copies of the Document (see fdl-document)
numbering more than 100, and the Document's license notice requires
Cover Texts (see fdl-cover-texts), you must enclose the copies in
covers that carry, clearly and legibly, all these Cover Texts:
Front-Cover Texts on the front cover, and Back-Cover Texts on the back
cover. Both covers must also clearly and legibly identify you as the
publisher of these copies. The front cover must present the full title
with all words of the title equally prominent and visible. You may add
other material on the covers in addition. Copying with changes limited
to the covers, as long as they preserve the title of the Document
(see fdl-document) and satisfy these conditions, can be treated as
verbatim copying in other respects.

   If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.

   If you publish or distribute Opaque (see fdl-transparent) copies
of the Document (see fdl-document) numbering more than 100, you
must either include a machine-readable Transparent (see
fdl-transparent) copy along with each Opaque copy, or state in or
with each Opaque copy a publicly-accessible computer-network location
containing a complete Transparent copy of the Document, free of added
material, which the general network-using public has access to download
anonymously at no charge using public-standard network protocols. If
you use the latter option, you must take reasonably prudent steps, when
you begin distribution of Opaque copies in quantity, to ensure that
this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.

   It is requested, but not required, that you contact the authors of
the Document (see fdl-document) well before redistributing any
large number of copies, to give them a chance to provide you with an
updated version of the Document.

A.5 4. MODIFICATIONS
====================

You may copy and distribute a Modified Version (see fdl-modified)
of the Document (see fdl-document) under the conditions of sections
2 (see 2_ VERBATIM COPYING) and 3 (see 3_ COPYING IN QUANTITY)
above, provided that you release the Modified Version under precisely
this License, with the Modified Version filling the role of the
Document, thus licensing distribution and modification of the Modified
Version to whoever possesses a copy of it. In addition, you must do
these things in the Modified Version:

   * *A. * Use in the Title Page (see fdl-title-page) (and on the
     covers, if any) a title distinct from that of the Document (see
     fdl-document), and from those of previous versions (which
     should, if there were any, be listed in the History section of the
     Document). You may use the same title as a previous version if the
     original publisher of that version gives permission.

   * *B. * List on the Title Page (see fdl-title-page), as authors,
     one or more persons or entities responsible for authorship of the
     modifications in the Modified Version (see fdl-modified),
     together with at least five of the principal authors of the
     Document (see fdl-document) (all of its principal authors, if
     it has less than five).

   * *C. * State on the Title Page (see fdl-title-page) the name of
     the publisher of the Modified Version (see fdl-modified), as
     the publisher.

   * *D. * Preserve all the copyright notices of the Document (see
     fdl-document).

   * *E. * Add an appropriate copyright notice for your modifications
     adjacent to the other copyright notices.

   * *F. * Include, immediately after the copyright notices, a license
     notice giving the public permission to use the Modified Version
     (see fdl-modified) under the terms of this License, in the
     form shown in the Addendum below.

   * *G. * Preserve in that license notice the full lists of  Invariant
     Sections (see fdl-invariant) and required Cover Texts (see
     fdl-cover-texts) given in the Document's (see fdl-document)
     license notice.

   * *H. * Include an unaltered copy of this License.

   * *I. * Preserve the section entitled "History", and its title, and
     add to it an item stating at least the title, year, new authors,
     and publisher of the Modified Version  (see fdl-modified)as
     given on the Title Page (see fdl-title-page).  If there is no
     section entitled "History" in the Document (see fdl-document),
     create one stating the title, year, authors, and publisher of the
     Document as given on its Title Page, then add an item describing
     the Modified Version as stated in the previous sentence.

   * *J. * Preserve the network location, if any, given in the Document
     (see fdl-document) for public access to a Transparent (see
     fdl-transparent) copy of the Document, and likewise the network
     locations given in the Document for previous versions it was based
     on. These may be placed in the "History" section.  You may omit a
     network location for a work that was published at least four years
     before the Document itself, or if the original publisher of the
     version it refers to gives permission.

   * *K. * In any section entitled "Acknowledgements" or "Dedications",
     preserve the section's title, and preserve in the section all the
     substance and tone of each of the contributor acknowledgements
     and/or dedications given therein.

   * *L. * Preserve all the Invariant Sections (see fdl-invariant)
     of the Document (see fdl-document), unaltered in their text
     and in their titles.  Section numbers or the equivalent are not
     considered part of the section titles.

   * *M. * Delete any section entitled "Endorsements". Such a section
     may not be included in the Modified Version (see fdl-modified).

   * *N. * Do not retitle any existing section as "Endorsements" or to
     conflict in title with any Invariant Section (see
     fdl-invariant).

   If the Modified Version (see fdl-modified) includes new
front-matter sections or appendices that qualify as Secondary Sections
(see fdl-secondary) and contain no material copied from the
Document, you may at your option designate some or all of these
sections as invariant. To do this, add their titles to the list of
Invariant Sections (see fdl-invariant) in the Modified Version's
license notice.  These titles must be distinct from any other section
titles.

   You may add a section entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version (see
fdl-modified) by various parties-for example, statements of peer
review or that the text has been approved by an organization as the
authoritative definition of a standard.

   You may add a passage of up to five words as a Front-Cover Text
(see fdl-cover-texts), and a passage of up to 25 words as a
Back-Cover Text (see fdl-cover-texts), to the end of the list of
Cover Texts (see fdl-cover-texts) in the Modified Version (see
fdl-modified).  Only one passage of Front-Cover Text and one of
Back-Cover Text may be added by (or through arrangements made by) any
one entity. If the Document (see fdl-document) already includes a
cover text for the same cover, previously added by you or by
arrangement made by the same entity you are acting on behalf of, you
may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.

   The author(s) and publisher(s) of the Document (see
fdl-document) do not by this License give permission to use their
names for publicity for or to assert or imply endorsement of any
Modified Version  (see fdl-modified).

A.6 5. COMBINING DOCUMENTS
==========================

You may combine the Document (see fdl-document) with other
documents released under this License, under the terms defined in
section 4 (see 4_ MODIFICATIONS) above for modified versions,
provided that you include in the combination all of the Invariant
Sections (see fdl-invariant) of all of the original documents,
unmodified, and list them all as Invariant Sections of your combined
work in its license notice.

   The combined work need only contain one copy of this License, and
multiple identical Invariant Sections (see fdl-invariant) may be
replaced with a single copy. If there are multiple Invariant Sections
with the same name but different contents, make the title of each such
section unique by adding at the end of it, in parentheses, the name of
the original author or publisher of that section if known, or else a
unique number. Make the same adjustment to the section titles in the
list of Invariant Sections in the license notice of the combined work.

   In the combination, you must combine any sections entitled "History"
in the various original documents, forming one section entitled
"History"; likewise combine any sections entitled "Acknowledgements",
and any sections entitled "Dedications".  You must delete all sections
entitled "Endorsements."

A.7 6. COLLECTIONS OF DOCUMENTS
===============================

You may make a collection consisting of the Document (see
fdl-document) and other documents released under this License, and
replace the individual copies of this License in the various documents
with a single copy that is included in the collection, provided that
you follow the rules of this License for verbatim copying of each of the
documents in all other respects.

   You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.

A.8 7. AGGREGATION WITH INDEPENDENT WORKS
=========================================

A compilation of the Document (see fdl-document) or its derivatives
with other separate and independent documents or works, in or on a
volume of a storage or distribution medium, does not as a whole count
as a Modified Version (see fdl-modified) of the Document, provided
no compilation copyright is claimed for the compilation.  Such a
compilation is called an "aggregate", and this License does not apply
to the other self-contained works thus compiled with the Document , on
account of their being thus compiled, if they are not themselves
derivative works of the Document.  If the Cover Text (see
fdl-cover-texts) requirement of section 3 (see 3_ COPYING IN QUANTITY)
is applicable to these copies of the Document, then if the
Document is less than one quarter of the entire aggregate, the
Document's Cover Texts may be placed on covers that surround only the
Document within the aggregate. Otherwise they must appear on covers
around the whole aggregate.

A.9 8. TRANSLATION
==================

Translation is considered a kind of modification, so you may distribute
translations of the Document (see fdl-document) under the terms of
section 4 (see 4_ MODIFICATIONS). Replacing  Invariant Sections
(see fdl-invariant) with translations requires special permission
from their copyright holders, but you may include translations of some
or all Invariant Sections in addition to the original versions of these
Invariant Sections. You may include a translation of this License
provided that you also include the original English version of this
License. In case of a disagreement between the translation and the
original English version of this License, the original English version
will prevail.

A.10 9. TERMINATION
===================

You may not copy, modify, sublicense, or distribute the Document (see
fdl-document) except as expressly provided for under this License.
Any other attempt to copy, modify, sublicense or distribute the
Document is void, and will automatically terminate your rights under
this License. However, parties who have received copies, or rights,
from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.

A.11 10. FUTURE REVISIONS OF THIS LICENSE
=========================================

The Free Software Foundation (http://www.gnu.org/fsf/fsf.html) may
publish new, revised versions of the GNU Free Documentation License
from time to time. Such new versions will be similar in spirit to the
present version, but may differ in detail to address new problems or
concerns. See http://www.gnu.org/copyleft/
(http://www.gnu.org/copyleft).

   Each version of the License is given a distinguishing version
number. If the Document (see fdl-document) specifies that a
particular numbered version of this License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that specified version or of any later version
that has been published (not as a draft) by the Free Software
Foundation. If the Document does not specify a version number of this
License, you may choose any version ever published (not as a draft) by
the Free Software Foundation.

A.12 Addendum
=============

To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:

     Copyright 2008, Free Software Foundation.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with noInvariant Sections (see fdl-invariant),
     with no Front-Cover Texts (see fdl-cover-texts), and with no
     Back-Cover Texts (see fdl-cover-texts). A copy of the license
     is included in the section entitled "GNU Free Documentation
     License".

   If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License
(http://www.gnu.org/copyleft/gpl.html), to permit their use in free
software.