GNU Webmaster Guidelines
Table of Contents
- Organization
- How to edit www.gnu.org/... ?
- Symbolic Links
- Style guidelines
- Webmasters
- CVS and timestamps
- .emacs and timestamps
- umask
-
Using the
TAGSfile - Groups on files
- Update the What's New page!
- Update the Sitemap page?
- Update GNUs Flashes on the home page http://www.gnu.org/
- Check your HTML!
- More webmaster tasks
- Archive of <webmaster@www.gnu.org>
- Scripts
- Cron Jobs
- Adding FTP mirrors
- Audio and video files
- Adding an Event
- Creating Pages under www.gnu.org/software
- Updating ThankGNU pages
Everything (well, most everything) you always wanted to know about www.gnu.org!
Organization
In order to work as a webmaster for GNU you need to become a member of the www project on savannah.gnu.org.
If you just want to edit the web pages for your particular package, not work as a general webmaster, then you need only become a developer for the corresponding project. If no savannah project exists, register one. This will allow you to edit the web pages directory for the project.
The whole www.gnu.org web site is stored in CVS on savannah.gnu.org. Most webmaster tasks are performed by checking out the CVS repository on your local machine, modifying them, and committing the result. Instructions on how to use CVS (you want the “Webpages repository”).
When a commit to CVS is done, the live www.gnu.org web site is not updated instantly. The cron job that does the updates currently runs at :10 and :40 past each hour.
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:
- Go to the www.gnu.org projects map. If the directory you're interested in is already listed here, contact the people in charge to get write access. You don't have anything else to do. Anyone in charge of this directory will be able to grant you write access to the CVS respository.
- If the directory you're interested in is not listed, logon Savannah and register a new project whose purpose is simply Edit the www.gnu.org/thedirectory/. Within 24h the project will be validated and you'll be able to checkout this portion of the web read/write.
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 symbolic 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:$ <!-- 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
hhmtsmethod for updates described below, please switch it to the
timestampmethod.
.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:
- an optional asterisk, if present this means the item should be a GNUs Flash
- the date of the news item
- a carriage return
- the HTML text of the news item, possibly spanning many lines
- a blank line to end the entry
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 ... id="...")) 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 id= 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:
- Update the file
prep/FTPin your CVS checkout - Run
make -f Makefile, also in prep/ 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:
-
rsync
rsync -av audio-video.gnu.org::audio-video .
-
http
http://audio-video.gnu.org/
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:
-
Events of a type that
fp:/gd/gnuorg/EventAndTravelInfo/announce-events.plxcan already handle. Check the POD of the script itself for information on whom to forward messages to. The short version: you should normally forward a message to the person who is speaking, except in the case of RMS---those go to <rms-assist@gnu.org>. - Events of a type that are not supported yet. In that case, you should always ask webmaster-escalate.
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
Usually a package's maintainer(s) take care of their own web pages. Here are some tips, though (maybe for maintainers themselves).
- Style guidelines
Please read http://www.gnu.org/server/fsf-html-style-sheet.html before writing any HTML for www.gnu.org -
Content
When writing a page for a certain program, we want to have some basic information on such a page. See the boilerplate.- A description on what the program does
- Where to download the program in question
- Where to report bugs
- List of FAQs and documentation if they are available
- Documentation should be available online. For info about a script to do generate many formats from Texinfo, and other information too, see the maintainer information.
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.html 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.
