GNU Webmaster Guidelines

 [image of the typing GNU]


Table of Contents


Everything (well, most everything ;-) you always wanted to know about www.gnu.org!

Organization

In order to work as a webmaster you need one of the following:

The whole www.gnu.org web site is stored under CVS on subversions.gnu.org. Most of the webmaster tasks do not require a shell account on gnudist.gnu.org and are a lot simpler to perform by checking out the pages on your local machine, modifying them and then committing the result. For an example of instructions on how to use CVS for this purpose, see the CVS instructions for the GNU mifluz package.

When a commit is done, a synchronization process will update the www.gnu.org web site immediately. At the end of the commit operation the changes should be visible at www.gnu.org. If it's not the case, complain to cvs-hackers@gnu.org.

In order to be granted edit permissions for a project you must first register yourself on Savannah. This is a very simple step that anyone can do.

A small number of tasks do require to logon gnudist.gnu.org and if you want to devote some time to them you'll need to ask for a shell account.

Instead of having a single group of users who have edit permissions over the whole www.gnu.org CVS tree, a number of groups have been created and only have edit permissions on a specific directory tree. For instance, the Brave GNU World project members only have edit permissions on the http://www.gnu.org/brave-gnu-world/ directory. This has a number of advantages such as easily finding out who is in charge of which portion of the www.gnu.org web site. A www.gnu.org to Savannah projects map is updated every day and shows which directories are handled by which projects.

Some parts of the www.gnu.org web site do not yet have a matching project on Savannah. Don't hesitate to create a project for a given subdirectory if you plan to work on it with other webmasters. When creating the project, select the website only license. The /software/package directories have a special status since they must be bound to a project that have the same name on Savannah and are associated to a source CVS repository. You should try to get in touch with the package maintainer before creating a project in /software/package.

Since it would be very complicated for highly involved webmasters to become a member of each and every projects when they want to make some global changes, the special project www was created. Each member of the www project is granted edit permission over the whole www.gnu.org CVS repository.

If you want more information about Savannah, read the Administration Guide.

How to edit www.gnu.org/... ?

If you want to edit the pages you are responsible for or want to become responsible for a specific subdirectory, proceed as follows: If you want to understand more about www.gnu.org, CVS and Savannah, read the Organization chapter and the Savannah Administration Guide.

Symbolic Links

Since CVS is not able to handle symbolic links, a simple mechanism has been implemented on the machine hosting the www.gnu.org to allow webmasters to control the symbolic link from the CVS tree.

By adding special files (".symlinks") into the CVS tree that are interpreted as specifications to build symbolic links. The "symlinks" script can be run immediately after a "cvs update" to fix the symbolic links according to the specifications included in the ".symlinks" files.

The current directory is searched recursively for ".symlinks" files. Symbolic links that exist in directory where there is no .symlinks files will be ignored. Only directories containing a .symlinks file are handled.

Each symbolic link specification from the ".symlinks" file is honored, i.e. the symbolic link is created if it does not exist yet. If a symbolic link is found in the directory and is not listed in the ".symlinks" file, it is removed.

Special handling to comply to the GNU webmaster standard is also applied. If a subdirectory "foo/bar" has no "foo/bar/index.html" file and a file "foo/bar/bar.html" exists, then a symbolic link from "index.html" to "bar.html" is created even if it is not listed in the .symlinks file. In short, an implicit

               cd foo/bar ; ln -s bar.html index.html
is done.

Symbolic links that point outside the web site document root are ignored.

The ".symlinks" files obey to the following format.

Each line starting with a sharp sign ("#") is treated as a comment and ignored.

Lines that do not contain two strings separated by white space are silently ignored.

Here is an example of .symlinks file content:

               #
               # Link foo.html to bar.html.
               # Stricly equivalent to ln -s foo.html bar.html
               #
               foo.html bar.html

On each line the first file name must be a relative path name to an existing file. The file designated by this path must not be outside the document root. The second file name may not contain any slash, it is the name of the sym- bolic link to be created.

The actual command used to implement this feature is symlinks(1) and the sources can be found in gnudist.gnu.org:/usr/local/src/symlinks-1.1.tar.gz.

Style guidelines

Please read http://www.gnu.org/server/fsf-html-style-sheet.html before writing any HTML for www.gnu.org

Webmasters

New webmasters should read Information on how to be a webmaster on www.gnu.org and review the various Readme's.

CVS and timestamps

Each HTML file should contain a timestamp. Because we only recently switched to CVS, there are still two ways that timestamps are done. The preferred way is via CVS:
Updated:
<!-- timestamp start -->
$Date:$ $Author:$
<!-- timestamp end -->
<HR>

If you are working in a file that is stored by CVS, and such a timestamp entry isn't in the file, please add it. If a file under CVS that you are working in still uses the

hhmts
method for updates described below, please switch it to the
timestamp
method.

.emacs and timestamps

If the web directory you are working in isn't in CVS, please use this method, via your .emacs, to update the timestamp.

The file ~www/.emacs contains some suggestions for your own ~/.emacs. In particular, what we want is numbered backups and the "Last updated" field changed automatically on file write - this field is the date and user name between these two comments lines:

<!-- hhmts start -->
18 Apr 2000 tower
<!-- hhmts end -->
An easy way to use them and get future updates is to add these lines to your own ~/.emacs:
(let ((www-emacs-file (expand-file-name "~www/.emacs")))
(if (file-exists-p www-emacs-file)
(load-file www-emacs-file)))

umask

Your umask on www.gnu.org is set to 000 as default, please don't change this.

Using the TAGS file

A file TAGS in directory ~www/html/ lists all the HTML files on this site. This files allow one to search or query replace all of the HTML files. See these instructions for more information.

Groups on files

All files in the html tree should have the group www, if a file does not (and is not writable by world), please ask someone to change it.

Update the What's New page!

When you add something significant to www.gnu.org, please add an entry to the news database in the CVS file:

/server/whatsnew.txt

This file is used to generate the whatsnew.html page, the home page and GNU's RSS news feed.

The organization of the whatsnew database is simple:

For example:

* 21 July 2004 FSF is offering <a href="http://patron.fsf.org/sf2004seminar.html">two days of
seminars at Stanford University</a> on the
<abbr>GPL</abbr> and Free Software Licensing on August 24
and 25 of 2004.

6 July 2004
<a href="http://www.gnu.org/people/speakers.html#Stallman">Richard
M. Stallman</a> put a short note on the 
<a href="http://www.gnu.org/licenses/license-list.html">license
page</a> explaining why the 
<a href="http://www.opensource.org/licenses/rpl.php">Reciprocal 
Public License</a> is a non-free license.

Once you have edited the news database the files that depend on it will be regenerated within an hour. But you can do this manually by running the Makefile in the rss directory of the CVS:

cd rss
make whatsnew.rss ../server/whatsnew.html ../home.shtml

Altenately, see the Makefile for convieniant targets.

Entries that can, should contain a <A HREF=" to the page (or section of a page (<A ... NAME="...")) that has the newly added text. (Multiple <A HREF=" are OK, if appropriate.)

Entries should be newest first, so repeat visitors to the page, see the new items first.

Update the Sitemap page?

When you add something very significant to www.gnu.org, please add an entry to /home/www/html/server/sitemap.html
in the right section. Entries that can, should contain a <a href=" to the page (or section of a page (<a ... id="...")) that has the newly added text. Multiple <a href=" are OK, if appropriate (HTML 3.2 and 2 use NAME= instead of id=).

Update GNUs Flashes on the home page http://www.gnu.org/

GNUs Flashes on the home page are controlled by the server/whatsnew.txt file. You should look at the entry for managing news in the the webmastering guidelines: /server/standards/README.webmastering.html.

Check your HTML!

/usr/local/bin/htmlchek can and SHOULD be used to do a syntax and some semantic checks on HTML files.
You could also use weblint or other checkers which may or may not be better.

More webmaster tasks

The file /home/www/html/server/tasks.html has the tasks it be good to do to our site, www.gnu.org.
The file /home/www/html/server/BUGS.html has a list of known bugs that should be fixed ASAP.

Archive of <webmaster@www.gnu.org>

You might want to review the archive of the mailing list <webmaster@www.gnu.org>. It has discussions about the design of this site, and the rationales for the design decisions. It's on the gnu.org machines (for example mail.gnu.org) at UMB as file /com/archive/webmaster files /com/archive/webmaster*.gz for the older messages.

If you don't have an account on those machines, and have been appointed a webmaster, please request an account from <accounts@gnu.org>.

Scripts

For a description of scripts/software that is used on www.gnu.org, please read http://www.gnu.org/server/source/source.html. Be sure to read that before trying to write any scripts that work with the website, such as programs that automatically updated pages.

Cron Jobs

(This cron information is no longer especially useful, since webmasters no longe have shell access to www.gnu.org and so none of these directories or files are accessible.)

The cron daemon as user www
runs /usr/www/bin/web-backup, which sets up the file that mirror sites pick up,
and also runs /home/www/bin/nightly, which (among other stuff, maybe) creates /home/www/html/TAGS, useful for making global changes to all the html files via the GNU Emacs command tags-query-replace, or searching all the html files via tags-search.

Also creates files /home/www/html/TAGS.LG, that list those translations in language LG, for the use of each translation team.

See these instructions for more information.

The crontab file is in /home/www/crontab and you should modify that file and install it into cron instead of modifying the system crontab. Use the command crontab -u www -e to do this.

Adding FTP mirrors

To change the ftp mirror list:

  1. Update the file prep/FTP in your CVS checkout.
  2. Run make -f Makefile, also in prep/.
  3. cvs commit FTP ftp.html

At some later time, a cron job may do this automatically.

The FTP-related files in /gd/gnuorg on fencepost.gnu.org are no longer current. Everything is in CVS.

Audio and video files

A 22Gb disk partition was allocated to audio and video files on the machine audio-video.gnu.org. In order to add new files in this repository, one should be registered as a member of the GNU and FSF audio video project. Uploading a file can be done using rsync over ssh

rsync --rsh=ssh file.vob audio-video.gnu.org:/audio-video/video
The access methods offered to users are:

Adding an event

For now, edit the /events.tmp.html file. When replication works again, follow the instructions below.

Webmasters should not usually add and remove events to our events page, they should only update the events.input-html file for formatting changes, etc. The actual addition and removal of events is handled by fp:/gd/gnuorg/EventAndTravelInfo/announce-events.plx and gnudist:~www/bin/auto-event-handle.

However, from time to time, the webmasters might get an email to add an event in error. There are two types of events webmasters might get:

In a pinch, someone from the FSF staff might ask the webmasters to add an event in a hurry. In these cases, you can, if you want, figure out how to edit the relevant file in fp:/gd/gnuorg/EventAndTravelInfo/. If you can't figure that out, you can add the event to events.input-html above the AUTO section. However, if you do the latter, please take responsibility for the event and remove it when it has passed.

Creating Pages under www.gnu.org/software

Updating the FTP mirror list

To update the FTP server mirror list you should manually edit /prep/ftp.html. DO NOT USE THE MAKEFILE TO BUILD THE LIST FROM /prep/FTP, AS IT GENERATES INVALID XHTML.

Updating ThankGNU pages

You'll will be seeing tickets in the webmaster queue that have `ThankGNU' in the title and originate from `sysadmin at gnu.org'.

Each ticket will have a name that needs to be added to appropriate year page under http://www.gnu.org/thankgnus/. For e.g. if the ThankGNU corresponds to the year 2006, go to http://www.gnu.org/thankgnus/2006supporters.xhtml page. Please add the name there, in the appropriate place based on the amount of the contribution and in the alphabetical ordering, and then resolve the ticket.


Return to GNU's home page.

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.

Please send comments on these web pages to webmasters@gnu.org, send other questions to gnu@gnu.org.

Copyright (C) 1999, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Updated: $Date: 2006/09/19 10:28:40 $ $Author: ramprasadb $