[Top] [Contents] [Index] [ ? ]

PHP Weather User and Reference Guide

This is the definitive guide to PHP Weather, or at least it tries to be. PHP Weather is a script written in PHP which makes it possible to display the current weather on a webpage. The system is based on data from 4,500 airports scattered all over the world, so there is a good chance that you will find a station near your place.

Introduction  What is PHP Weather?
1. Installation  Instructions for installation
2. Configuration  How to change the defaults configuration?
3. Using PHP Weather  How to use it after installation?
4. Translating PHP Weather  Make PHP Weather speak your language
5. Things To Do  What the future might bring
6. History  How PHP Weather came to be
7. Contributors  A lot of people have helped...
A. Licenses  How may you copy PHP Weather?
B. Concept Index  
-- The Detailed Node Listing ---
Installation
1.1 Installation Details  A step by step installation guide
Configuration
2.1 The `defaults.php' file  Your local defaults
2.2 Choosing a Database Backend  Using a database
2.3 Required Functions in a Backend  
Using PHP Weather
3.1 Output Modules  The standard output modules
3.2 The Raw Data  It is yours to play with, if you want it
Output Modules
3.1.1 Changing the Output  Customize the output to suit your needs
Translating PHP Weather
4.1 Diverse Translations  How you can handle special cases
Licenses
A.1 GNU General Public License  
A.2 GNU Free Documentation License  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Introduction

PHP Weather is script written in PHP that can decode a METAR. A METAR(1) is a weather report used for avionic purposes -- it has information about the temperature, the wind speed and direction, the clouds, the current weather phenomena, and so on. The information is presented in a special coded format, a format which PHP Weather can decode.

The METAR reports are made at about 4,500 airports from around the world, so there is a good chance that you live near one of them. And the airports make an report once or twice an hour, so you will be able to provide fresh reports on your website.

The reports from all over the world are stored at the National Weather Service (the NWS, see http://www.nws.noaa.gov/) which is a department under the National Oceanic and Atmospheric Administration (NOAA, see http://www.noaa.gov/) of the United States. The reports are available using both HTTP and FTP -- PHP Weather uses HTTP because it is the fastest of the two protocols.

Once you have got hold of a METAR, you will want to display the weather report contained within it. A textual display, known as a pretty print looks like this:

This is a report for Aalborg, Denmark. The report was made 33 minutes ago, at 21:50 UTC. The wind was blowing at a speed of 2.1 meters per second (4.6 miles per hour) from east (100). The temperature was 16C (61 F), with a dew-point at 15 C (59 F). The atmospheric pressure was 1017 hPa (30.03 inHg). The relative humidity was 93.8%. There were no clouds below 1524 meter (5000 feet) and no cumulonimbus clouds. The overall visibility was greater than 10 kilometers (6.2 miles).

Each station is uniquely identified by it is ICAO code. ICAO is an abbreviation for the International Civil Aviation Organization.

You can control the output in various ways:

Instead of text, you can also have PHP Weather select icons for you that match the current weather conditions.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Installation

PHP Weather has been designed so that it is easy to install it. After you have obtained PHP Weather, just unpack it somewhere on your webserver and load the file `index.php' in your favorite browser.

The next section will give you more details.

1.1 Installation Details  A step by step installation guide


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Installation Details

The first thing to do, is to get hold of PHP Weather. The official PHP Weather homepage can be reached at http://phpweather.net/ and you will be able to download the latest version of PHP Weather from the "Downloads" section.

After you have downloaded PHP Weather in your favorite format (we provide files in three formats: `tar.gz', `tar.bz2', and `zip') you should unpack it in a temporary place. If the file you downloaded is called `phpweather-x.y.tar.gz', then it will be unpacked in a directory called `phpweather-x.y'. Upload this directory with all its files to your webserver.

PHP Weather has now been installed! Use your browser to load the file `index.php' found in the root-directory of the PHP Weather installation and see how it works. You will be presented with a demonstration of PHP Weather.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. Configuration

Although PHP Weahter works right out of the package, you should configure it before you start to use it on your frontpage.

2.1 The `defaults.php' file  Your local defaults
2.2 Choosing a Database Backend  Using a database
2.3 Required Functions in a Backend  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 The `defaults.php' file

The behaviour of PHP Weather is controlled by several things. All options have default values, but they can be changed in several places. The value of an option is found by this process:

  1. The file `defaults-dist.php' in the root-directory of the PHP Weather installation is read using include. This defines the initial values of the options.

  2. Next, the file `defaults.php' is read if it exists. This file is not part of the PHP Weather distribution, but should be created by you if you want to change some of the defaults from `defaults-dist.php'.

  3. You can supply an array when you create an object from the PHP Weather codebase. The following code will create a phpweather object with the ICAO set to `EKAH':

     
    $weather = new phpweather(array('icao' => 'EKAH'));
    

    You can (of course) change several options at the same time, the general template for this is

     
    $weather = new phpweather(array('option-1' => `value-1',
                                    'option-2' => `value-2',
                                    ...,
                                    'option-n' => `value-n'));
    

  4. You can change some of the options after you have created the object. If you want to change the current ICAO of a phpweather object, then you will use the set_icao method like this:

     
    $weather->set_icao('EKYT');
    

The idea is, that you should create a `defaults.php' file with the options that you will always want to use -- things like database and proxy settings. To create the file, you should use the supplied script `make_config.php' found in the `config' directory.

Load the script in the browser and follow the instructions. In short, then you build the configuration file by repeatedly choosing/changing options until the all say "Input accepted". You will notice that all options are at their default settings when you load the page initially --- you will have to change something and press the "Update Options" button before anything changes.

When you press the button, the page will reload, and the configuration file found at the bottom is updated with your new selections. Also, your selection might give your more choices such as when you change the use_proxy option from "No" to "Yes". When you press the update button you will be presented with input fields for the proxy_host and the proxy_port. Because we cannot anticipate the name of your proxy, the proxy_host will be set to nothing (the empty string "") initially. Since this is not a valid hostname, you will see a text in red that says exactly this.

Continue to make changes to the options. When you are happy with the configuration you should press the "Download the Configuration" button. Your browser should ask you where to same the downloaded file --- save it as `defaults.php' in the root of your PHP Weather installation.

All new objects created will now start out with the options in this file. This means that you can store sensitive things like database passwords in just one location, instead of having it scattered through out all the scripts that use PHP Weather. Just remember to protect the `defaults.php' file itself if you put your password in it!


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 Choosing a Database Backend

PHP Weather works by retrieving weather reports called METARs. It takes some time to get the METARs, so you will be interested in using a local database as a cache. All database backends support the same features (see 2.3 Required Functions in a Backend for details) but differ in speed. Your version of PHP might also lack support for some of the backends. PHP Weather supports the following databases backends:

null
This is the default "database" backend, but it is not really a database. It pretends to cache the METARs, but in reallity it just throws them away. This means that PHP Weather will have to fetch them from the NWS again each time.

This makes the null backend the slowest backend if you repeadaly need the same METAR, e.g. if you show the current weather for a fixed location on your homepage. But it is just as quick (or slow, depending on how you view things) as the other backends when it comes to showing the weather for a random station. So if that is your typical usage-pattern, then you might like this backend.

pw_mysql
You can use the MySQL relational database with PHP Weather.

pw_pgsql
You can also choose to use a PostgreSQL database.

pw_dba
This database backend uses normal files on the webserver to do the caching. You will have to ensure that the PHP process on the webserver can write to the `db/files' directory so that the necessary files can be created and maintained.

After you have chosen a database backend, you will have to initialize the database. You should first generate the appropriate `defaults.php' file, see 2.1 The `defaults.php' file.

After you have uploaded the file to the webserver, you can load the script `make_db.php' found in the `config' directory in your favorite browser. When you press the "Create or Recreate Tables" button the database will be initialized. If you have selected a SQL-based database, then the necessary tables will be created.

If you have selected a file-based database, then the script will attempt to create the necessary files. This might very well fail: the script is run by the webserver, and the webserver will most likely not have permission to create new files in the `db/files' directory under the PHP Weather root directory because the webserver runs as an unprivileged user.

So, you will have to change the permission on the `db/files' directory. Assuming that the webserver is running some form of Unix and that you have shell access to the machine, then you can execute the following commands after you have logged into the webserver. If you do not have that kind of access to the machine, then you should still be able to change the permissions using your FTP program. The relevant commands are:

 
cd /root/directory/of/phpweather/installation
chmod 777 db/files
chmod 777 db/files/*

Everybody will now be allowed to create and change files under the `db/files' directory. This is a security risk! If you know of a better way to allow the webserver read/write access to the files, please use that instead and tell us so that we can update the manual.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.3 Required Functions in a Backend

All database backends have to support a common set of methods -- if PHP had support for interfaces, then we would require them to implement a database interface. Because of the lack of interfaces in the PHP language we are left with this description of what a database backend has to satisfy.

All database backends are defined in their own class which is a subclass of the pw_db_common class. If we pretend that we have a pw_db_foo database backend, then it must implement the following methods:

Method: pw_db_foo get_type
This should return the type of the backend, `foo' in our case.

Method: pw_db_foo connect
This is called by every other method that wants to ensure that the database is up and running. The method should cache the result of this operation as it will be called several times.

Method: pw_db_foo disconnect
This disconnects from the database.

Method: pw_db_foo insert_metar $station $metar $timestamp
Inserts a METAR into the database.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. Using PHP Weather

Now that you have learned about how to install and configure PHP Weather, you might want to learn how you can use it on your own webpages.

3.1 Output Modules  The standard output modules
3.2 The Raw Data  It is yours to play with, if you want it


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 Output Modules

The textual output you have seen on the `index.php' demonstration page is produces by an output module called pw_text. The images are selected by another module called pw_images.

These modules illustrate the idea behind PHP Weather: the code in `phpweather.php' handles the parsing of the METAR and then someone else has to present the data in a meaningful way.

3.1.1 Changing the Output  Customize the output to suit your needs


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.1 Changing the Output

You can change the output of PHP Weather.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 The Raw Data

It is easy for you to get hold of the raw data produced by the code in `phpweather.php':

 
$weather = new phpweather();
$data = $weather->decode_metar();

The variable $data is now an multidimensional associative array filled with all the information that the decode_metar function was able to extract from the METAR. The different parts in the METAR is stored under specific keys in the array -- if the METAR lacks a given part, then the corresponding entry in the array will be left out. This means that you will have to check each entry with the built-in PHP function empty before you use it, otherwise you see warnings from PHP, if you have set the error reporting level high enough.

You can have PHP show you the structure of the array by using the builtin print_r function like this:

 
echo "<pre>\n";
print_r($data);
echo "</pre>\n";

The following entries is always part of a METAR report, and is therefore always part of the decoded METAR array:

type
This can either be `METAR' or `SPECI' and denotes the type of the report. This is not used for anything.

metar
The raw METAR report.

icao
The ICAO of the station which made the report.

location
The English name of the station.

time
A UNIX timestamp corresponding to the time of the report.

The following entries are all optional so check with empty before accessing them:

report_mod
A report modifier which gives information about how the report was made: `AUTO' for a fully automated report with no human intervention or `COR' for a corrected report. It is supposed to be part of all METARs, but experience shows that it is not.

wind
This is an array with information about the wind. The deg entry tells you the direction of the wind as compass-direction. If the wind came from variable directions, then will be the string `VRB'.

The meters_per_second, miles_per_hour, and knots entries tells you the wind speed in various units.

If gust was observed, there will be three extra entries: gust_meters_per_second, gust_miles_per_hour, and gust_knots.

If the wind was varying, then two extra entries are present: var_beg and var_end. Both of these entries contain a compass-direction

visibility
This is an array with visibility information. Each entry in the array is a separate visibility group.

Each visibility group contains a prefix which can be `-1', `0', or `1' which tells you if the visibility reported is "less than", "normal", or "greater than" respectively.

The visibility itself is stored in the meter, km, ft, and miles entries. There is an optional entry dir for a direction -- if there is no direction, then the visibility refers to the overall visibility.

runway
This is an array of runway groups. Each entry is a separate group.

The groups contain an nr entry and an optional approach entry which tells you the runway-number and the approach respectively. The approach is one of `L', `C', or `R' for "left", "center", or "right" respectively.

The visibility information can either be a single value or a pair of values in case of varying conditions. If there is only a single value, then meter and ft holds the visibility, an optional prefix can be `-1' if range is less than the lowest reportable value or `1' if greater than the greatest reportable value. A tendency entry holds either `D', `N' or `U' for "downward tendency", "no distinct tendency", or "upward tendency" respectively.

weather
This holds the current weather phenomena and is one of the most interesting groups. It is an array of weather groups which means that the the first group will be $data['weather'][0], the second group (if there is such a group) will be $data['weather'][1], and so on.

Each group contains a proximity entry which can be either `VC' for phenomena in the vicinity or the empty string otherwise.

Next comes the intensity. This can be `-' for light phenomena, the empty string for moderate phenomena, or `+' for heavy phenomena.

This is followed by a descriptor, a precipitation, a obscuration, and finally a other entry. These entries contain the actual data found in the METAR. This means that it's up to the application to decode these symbols further, so that `RA' becomes "rain" and so on.

clouds
This is an array of cloud groups. Each group has a condition entry which can be either `CAVOK' for no clouds and no significant weather, `VV' for "vertical visibility", `FEW' for "few clouds", `SCT' for "scattered clouds", `BKN' for "broken clouds", `OVC' for "overcast", and `SKC' and `CLR' for "clear sky". The condition `CAVOK' is a bit special, because if it is present, then the condition entry will be the only entry in the cloud group.

The other conditions will be part of a larger array with an optional cumulus entry denoting the presence of cumulonimbus (`CB') or towering cumulus (`TCU') clouds. There will also be meter and ft entries with the height of the clouds. If the clouds are below the station, then the height will be stored as `nil'. Theres an optional prefix with the usual meaning.

temperature
This is the temperature group. It is an array with two or four entries: temp_c and temp_f is always present and is the temperature in degrees Celsius and Fahrenheit respectively. If information about the dew-point is present, then dew_c and dew_f will be added to the array.
temp_min_max
Some stations report the minimum and maximum temperature over various timescales. The temperatures are stored in min6h_c, min6h_f, max6h_c and max6h_f for the temperatures in the last 6 hours, and in min24h_c, min24h_f, max24h_c and max24h_f for the temperatures in the last 24 hours.

altimeter
This is the air pressure measured in various units. The array has these entries: inhg, mmhg, hpa, and atm.

precipitation
This is an array which stores the precipitation measured over various timescales. The entries mm and in contains the precipitation during the last hour, entries mm_h6 and in_6h store the amount of precipitation in the last 3--6 hours and finally there is mm_24h and in_24h with the precipitation measured over the last 24 hours. If there has been snowfall, then that will be reported in the snow_mm and snow_in entries.

All the entries can contain the special value `-1' which means that there was only a trace of precipitation.

remarks
Anything which is not recognized is added to this entry.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. Translating PHP Weather

You can translate PHP Weather into other languages that the ones provided in the package you downloaded.

4.1 Diverse Translations  How you can handle special cases


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 Diverse Translations

PHP Weather has facilities ready that makes it possible to totally redefine the generated text from within a translation.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5. Things To Do

PHP Weather is a work in progress -- it will probably never be finished because people seams to have a never-ending thirst for new features.

This an attempt to list some of the things that PHP Weather might do in the future:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6. History

I began writing PHP Weather in June 2000. I had been talking with Kristian Kristensen zianet@zianet.dk about making such a script for a project we were both working on. But it was only after the project was finished, that I began investigating the possibilities of making a script with PHP that could display the current weather.

I knew that it was possible to do such a thing, as I had seen a couple of applets (small programs that serves only one purpose, such as displaying the time or the amount of free space on the hard drive, etc.) that could display the weather. I discovered that they got their data from the NWS who makes the data available at no cost.

The data is available off the Internet via either FTP or HTTP, so it is easy to get hold of it with PHP. The only problem was that the data has to be decoded because it is written in a compact fashion. The data in question is a so-called METAR report that the airports issue once or twice an hour.

I then discovered a script written in Perl that could take a METAR and split it into its components. The script was written by Jeremy D. Zawodny Jeremy@Zawodny.com and is licensed under the GPL just like PHP Weather. So there was no problem with me peeping at his code for PHP Weather. I took the logic from the Perl script and wrote a function in PHP that would decode a METAR.

But that would not do it -- to be useful the decoded data has to be displayed in a nice fashion, preferable so that it is easy to customize. The script should also be able to fetch a METAR from the NWS and once that is done, the METAR should be cached so that the script would run faster after the METAR had been fetched once. The problem is, that it takes about a second to contact the NWS.

I wanted to see the data I could extract from the METAR in a meaningfull way, so I started wrapping the data in English words to form sentences like in "The temperature is 20 degrees Celsius (68 degrees Fahrenheit)". That turned out very nice so I released the code to the public.

I did not think about internationalization then, but after a while, I received a Spanish translation made by Eduardo Guilenea. Because the script was not ready for internationalization, he had simply gone through the script and translated all the English words into Spanish.

That promped me to start thinking about how we could translate PHP Weater into other languages. I quickly found out, that it would work if we kept the strings used in external files instead of having them in the main `phpweather.inc' file. The users could then simply use include(locale_da.inc) to get Danish output.

As things started to grow, it became apparent that PHP Weather would have to be reorganized. I wanted a more flexible structure, a structure that would allow us to extend PHP Weather in the future without having to mess with the code that does the actually parsing of the METARs. We also had to be able to support databases in a cleaner way -- the code in `phpweather.inc' had turned into a mess.

So I started to split the file up into several files, and also started to use classes in PHP. This was the first time I had to do an object oriented design, so it was very exciting.

The result is the current PHP Weather, and it does have a quite flexible structure. All locale-specific code has been moved out from the main parsing algorithms, so that PHP Weather can be truly localized. All access to the database is now done through a database abstraction layer: each database is defined in its own class, so it is free to implement the various methods any way it wants.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7. Contributors

Everybody listed below has helped in some way with the creation of PHP Weather. If, by some mistake, your name isn't listed below, then send a mail to Martin Geisler gimpster@gimpster.com so that proper credit can given. Please include your SourceForge login, if any, and an URL if you like.

Kristian Kristensen (kkrz)

He made the interface to PostgreSQL.

Jeremy D. Zawodny

He wrote Geo::METAR, which is a Perl module which can do some of the things PHP Weather now does. Geo::METAR can be found here: http://www.wcnet.org/jzawodn/perl/Geo-METAR/index.html.

Enrico Lodolo

For suggesting that I use http to get the METARs instead of the much slower ftp.

Stefan Wiesendanger

For rewritting some large case- and switch-statements as a couple of arrays. This speeds-up the parsing of the METARs.

Mike

He noticed that the pressures was all wrong. I though the unit used in the METAR was hPa, when it really was inHg.

Jeffrey Y. Sue

Suggested that I told people how to turn off the warnings, if you don't establish a connection to MySQL.

Later he made it possible to use PHP Weather with DBM databases. He also added support for precipitation. Lots of other stuff, see the `ChangeLog' for more details.

Rutger Lubbers

Noticed that South/southeast was duplicated in the directions-array.

Eduardo Guilenea

Translated PHP Weather into Spanish, and thereby forced me to add support for multiply languages. (Which was a Good Thing :-)

Sven-Erik (seasoft)

Translated PHP Weather into Norwegian.

He also sat down and did the boring work, when he manually compiled the complete list of all airports available from NWS.

Maciek Uhlig

Noticed that I sometimes tried to access $cloud_coverage_array with just $cloud_coverage -- which, of cause, didn't work.

Ing. Vladimir Kotala

Suggested that I changed the long text `... degrees Celsius' into the more compact `... C', which is much better.

Gyulai Mihály (misibacsi) http://gyulai.freeyellow.com/

Made the Hungarian translation for PHP Weather. He has also corrected tons of spelling errors.

Johnny Funder jhf@naviair.dk

Lots of explanations and suggestions. He also gave a much simpler formula for calculating the relative humidity.

Ray van Beek

Helped me spot a little error with the current weather. He has also written code that displays the current weather as an image.

David Kjellquist

Added support for windchill.

Max Hammond (iridium)

Lots of different things: bugfixes, clever suggestions, and general maintenance.

Jesús Peñas
Made the Spanish translation.

Ondrej Jombik (nepto)

Translated PHP Weather into Slovak and rewrote the navigation system used in index.php. He also looked at the MySQL and PostgreSQL database and found some security flaws.

Reini Urban

Fixed some problems with using PHP Weather on a default installation of PHP 4.2.

Kari Salovaara and Tage Malmen

Translated PHP Weater into Swedish and Finnish.

Paul Kairis

Wrote the code that handles connections through a proxy server.

Bas Elshof

Translated PHP Weather into Dutch.

Václav R'{ikal}

Made a Czech translation.

Radoslava Fedáková

Czech translation.

Guillaume Petit

Translated PHP Weather into French.

Rudy Boedts

Updated the Dutch translation.

Konrad Tadesse

Finally, a working German translation.

Andrew Simpson (andrewsimpson)

Reported problems with the use of short open tags in a couple of files.

Jim Whitehead

Fixed the rounding of hours and minutes in the pretty-printed report.

Ferhat Bingol

Made a Turkish translation.

Renato Gallmetzer

Provided us with an Italian translation.

Pablo Alcaraz (pabloa)

Updated the Spanish translation and other bugfixes.

Etienne Tourigny (etienne_t)

Added a method that decodes TAF reports and made some of the database backends archive the data instead of always replacing the old data with new reports.

Justin Heideman

Drew a full set of beautiful icons for PHP Weather to display the current weather conditions.

Warren Rohner

Updated the South African stations in the `stations.csv' file.

Nick Crossland (ncrossland)

Made a British English translation.

José de Ávila Junior

Updated the Brazillian stations in the `stations.csv' file.

Cláudio Gamboa

Contributed a Portugues translation.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A. Licenses

Because we believe in Open Source, we have licensed the code in PHP Weather under the GNU General Public License and the manual under the GNU Free Documentation License. This license is similar to the GPL, it is just aimed for documentation.

This means that you are allowed to use PHP Weather on as many websites as you like, and you are even allowed to use it on commercial websites.

A.1 GNU General Public License  
A.2 GNU Free Documentation License  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.1 GNU General Public License

Version 2, June 1991

 
Copyright © 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA  02111-1307, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

  2. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

  3. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

    1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

    2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

    3. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

    In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

  4. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

    1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

    2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

    3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

    The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

    If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

  5. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program 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.

  6. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

  7. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

  8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

  9. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

  10. The Free Software Foundation may publish revised and/or new versions of the General Public 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.

    Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

  11. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    NO WARRANTY

  12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.1.1 Appendix: How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

 
one line to give the program's name and a brief idea of what it does.
Copyright (C) yyyy  name of author

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA  02111-1307, USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this when it starts in an interactive mode:

 
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:

 
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.

signature of Ty Coon, 1 April 1989
Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.2 GNU Free Documentation License

Version 1.1, March 2000

 
Copyright © 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA  02111-1307, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

  1. 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 noncommercially. 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.

  2. 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 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 whose titles are designated, as being those of Invariant Sections, in the notice that says that the 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 is released under this License.

    A "Transparent" copy of the 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.

  3. VERBATIM COPYING

    You may copy and distribute the 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.

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

  4. COPYING IN QUANTITY

    If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires 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 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 copies of the Document numbering more than 100, you must either include a machine-readable 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 well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

  5. MODIFICATIONS

    You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 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:

    1. Use in the Title Page (and on the covers, if any) a title distinct from that of the 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.

    2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).

    3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

    4. Preserve all the copyright notices of the Document.

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

    6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

    7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

    8. Include an unaltered copy of this License.

    9. 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 as given on the Title Page. If there is no section entitled "History" in the 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.

    10. Preserve the network location, if any, given in the Document for public access to a 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.

    11. In any section entitled "Acknowledgments" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgments and/or dedications given therein.

    12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

    13. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.

    14. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.

    If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections 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 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 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, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. 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 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 do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

  6. COMBINING DOCUMENTS

    You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections 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 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 "Acknowledgments", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."

  7. COLLECTIONS OF DOCUMENTS

    You may make a collection consisting of the 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.

  8. AGGREGATION WITH INDEPENDENT WORKS

    A compilation of the 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 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 requirement of section 3 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.

  9. TRANSLATION

    Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections 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.

  10. TERMINATION

    You may not copy, modify, sublicense, or distribute the 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.

  11. FUTURE REVISIONS OF THIS LICENSE

    The Free Software Foundation 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/.

    Each version of the License is given a distinguishing version number. If the 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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.2.1 ADDENDUM: How to use this License for your documents

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 (C)  year  your name.
  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 the Invariant Sections being list their titles, with the
  Front-Cover Texts being list, and with the Back-Cover Texts being list.
  A copy of the license is included in the section entitled ``GNU
  Free Documentation License''.

If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being list"; likewise for Back-Cover Texts.

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, to permit their use in free software.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

B. Concept Index

Jump to:   A   B   C   D   F   G   H   I   L   M   O   P   R   T   U  

Index Entry Section

A
advanced translations4.1 Diverse Translations

B
Backend, databases2.2 Choosing a Database Backend

C
Checking for new versions1.1 Installation Details
Choosing a database2.2 Choosing a Database Backend
Configuration2. Configuration

D
data, raw3.2 The Raw Data
Database backends, differences2.2 Choosing a Database Backend
database, functions2.3 Required Functions in a Backend
`defaults.php', building2.1 The `defaults.php' file
distributing PHP WeatherA. Licenses
diverse translations4.1 Diverse Translations
Downloading PHP Weather1.1 Installation Details

F
FDL, GNU Free Documentation LicenseA.2 GNU Free Documentation License
future5. Things To Do

G
GPL, GNU General Public LicenseA.1 GNU General Public License

H
history6. History

I
Installation1. Installation
IntroductionIntroduction

L
licensA. Licenses
Localization4. Translating PHP Weather

M
modules, output3.1 Output Modules

O
Obtaining PHP Weather1.1 Installation Details
output modules3.1 Output Modules
Output, changing3.1 Output Modules
Output, changing3.1.1 Changing the Output

P
PHP Weather, configuration2. Configuration
PHP Weather, history6. History
PHP Weather, how to install1. Installation
PHP Weather, how to install1.1 Installation Details

R
raw data3.2 The Raw Data

T
TODO list5. Things To Do
Translating4. Translating PHP Weather
translating, advanced4.1 Diverse Translations

U
usage3. Using PHP Weather

Jump to:   A   B   C   D   F   G   H   I   L   M   O   P   R   T   U  


[Top] [Contents] [Index] [ ? ]

Footnotes

(1)

The abbreviation METAR is a French abbreviation for "message d'observation météorologique régulière pour l'aviation" which roughly translates to English as "Aviation Routine Weather Report".


[Top] [Contents] [Index] [ ? ]

Table of Contents

Introduction
1. Installation
1.1 Installation Details
2. Configuration
2.1 The `defaults.php' file
2.2 Choosing a Database Backend
2.3 Required Functions in a Backend
3. Using PHP Weather
3.1 Output Modules
3.1.1 Changing the Output
3.2 The Raw Data
4. Translating PHP Weather
4.1 Diverse Translations
5. Things To Do
6. History
7. Contributors
A. Licenses
A.1 GNU General Public License
A.1.1 Appendix: How to Apply These Terms to Your New Programs
A.2 GNU Free Documentation License
A.2.1 ADDENDUM: How to use this License for your documents
B. Concept Index

[Top] [Contents] [Index] [ ? ]

Short Table of Contents

Introduction
1. Installation
2. Configuration
3. Using PHP Weather
4. Translating PHP Weather
5. Things To Do
6. History
7. Contributors
A. Licenses
B. Concept Index

[Top] [Contents] [Index] [ ? ]

About this document

This document was generated by using texi2html

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ < ] Back previous section in reading order 1.2.2
[ > ] Forward next section in reading order 1.2.4
[ << ] FastBack beginning of this chapter or previous chapter 1
[ Up ] Up up section 1.2
[ >> ] FastForward next chapter 2
[Top] Top cover (top) of document  
[Contents] Contents table of contents  
[Index] Index concept index  
[ ? ] About this page  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:



This document was generated by Martin Geisler on June, 17 2004 using texi2html