GNU Website Guidelines

Our goal is to get information to people. Keeping the site design simple helps accomplish that.

Please be considerate of all who access our web pages, and accommodate them, including those who use text-only browsers or old browsers, as well as those with slow connections. We wish to prevent web designs that look great under one version of one browser, and ugly under many others. Of course, please don't install any of the proprietary web browsers available if you don't already use them anyway.

General Guidelines

Copyright Guidelines

Spelling and Punctuation



HTML Guidelines

Tables and menus

Using our page template


Styling of templated pages

Other stylesheets

Use of Graphics

Appendix 1 - Linking Policies

One of the most complex aspects of maintaining web pages is following the linking guidelines; however, it's also a very crucial aspect of the job.

We strive to ensure that all pages we promote—all pages which are given links on our site—are friendly to the free software movement. Some pages will obviously not meet such standards; if the site flames the Free Software Foundation, or has no apparent relation to free software and surrounding issues, the link shouldn't be made. Beyond that, however, there are criteria used in determining whether or not it is appropriate to provide a link to a page from ours. They are listed below, in order of descending general importance.

What's the context of the link?

The link's purpose on our site will play a role in determining how strongly it should be judged against the other criteria. Pages hosting GNU projects will be held to the highest standards. Pages about other free software and given high promotion—for example, included in a newsfeed on the main page—are a close second. Links on the philosophy page may be given more leeway in talking about proprietary software; GNU/Linux user group pages should call the system GNU/Linux almost always but are hardly checked on other criteria. Always keep this in mind when deciding how to weigh each aspect of these policies.

Does the page promote proprietary software?

The big point made by the free software movement is that proprietary software presents an ethical dilemma: you cannot agree to such nonfree terms and treat those around you as you would like to be treated. When proprietary software is promoted, people get the impression that it is okay to use it, while we are trying to convince them otherwise. As such, we avoid offering such free advertising, either directly on our site or indirectly through links.

What's tricky about this criteria is the “promotion” point: there's a difference between mentioning proprietary software and making a sales pitch for it. Indeed, the GNU Project website mentions proprietary software throughout, but never gives people the impression that its use does not present ethical problems.

There are two things to keep in mind when determining whether a reference to proprietary software promotes it, or simply mentions it. First, how much information does it offer about the software? Second, how much information is the reader likely to actually gain from this page?

Different pages provide different amounts of information about proprietary software; the more it provides, the more of a problem it poses for us. For example, some pages may link to the primary site for a proprietary software program. Others may describe its functionality in detail. Even the product name given matters; there's a difference between “Windows” and “Microsoft Windows XP Home Edition.”

If the page requires nonfree, nontrivial JavaScript and has serious failures with JavaScript disabled, the link shouldn't be made. Similarly, if the page has embedded Flash that plays an important role, so that a person would be missing something important if the videos do not play, the link should not be made.

The subject of the reference will also play a role in determining how problematic a reference is. If the software is already very popular, it's unlikely that a basic mention of it will be news to the reader. Some examples of proprietary software which are common enough to be considered “well-known” are major operating systems (Windows, Mac OS, Sun OS, HP-UX) and primary common applications such as Office, Internet Explorer, Photoshop, Acrobat Reader, and Flash.

GNU software project pages feel the full force of this policy. Proprietary software should only be mentioned when the GNU software provides support for it, or to compare it against the features of well-known proprietary software. For example, the following text—and not much else—would be acceptable:

w3 is a web browser for GNU Emacs, similar to Internet Explorer. It can run on all platforms GNU Emacs runs on, including GNU/Linux, proprietary Unix systems, and Windows.

Links which appear in other areas, such as the testimonials or philosophy pages, as well as links to user groups may discuss such software in greater detail, but links and other methods of encouragement to “learn more” should still be avoided.

How does the page compare free software to open source?

Almost all pages which have links on our site should, at the very least, treat free software and open source equally. Failure to do so—whether it be by omitting free software or by implying that open source is superior—is usually unacceptable. GNU software project pages should have little mention of open source. The GNOME page used to provide a good example of a tactful way to do it:

GNOME is part of the GNU Project, and is free software (sometimes referred to as open source software).

Any exceptions to this rule should be apparent from the context. For instance, user groups pages may talk in greater detail about open source; we state on the user groups page, “As with our links page, the FSF is not responsible for the contents of other websites, or how up-to-date their information is.”

How does the page treat the GNU Project?

Pages which we link to should treat the GNU Project well. The primary thing to look out for in this regard is whether the page calls the system GNU/Linux or just “Linux.” GNU software project and user group pages should almost never, if ever, fail to do this. Again, exceptions for other pages should be apparent from context.

That said, certain parts of a page should not be considered against these criteria. For example, suppose we were to make a link to a page on a free software news site. Any advertisements or reader comments attached to the article would not be considered when determining whether it met or linking guidelines, since they're understood to be the opinion of their individual authors. Similarly, on user group pages, the contents of forums and wiki pages should not hold weight in these regards.

Finally, some sites are understood to always have exception with most of these guidelines. These sites are usually about issues which are important, but somewhat peripheral, to the free software movement. Several times we have linked to the Electronic Frontier Foundation's site, even though they encourage the use of Flash and talked exclusively about open source software. It's generally understood that since these pages are not primarily about free software, the policies do not hold full force for them.

As a final explanation (coming from RMS): Even for making links from, we do not require that people call the system GNU/Linux or use the term “free software” rather than “open source.” We do, however, require that they not promote any nonfree software.

If all this seems complicated, that's because, unfortunately, it is. Don't worry; a knack for it comes with time and experience. You may mis-evaluate a few pages as you're learning to get a feel for what's acceptable and what isn't; please don't hesitate to get a second opinion from a more experienced webmaster, or someone in charge like the Chief Webmaster or RMS. New exceptions will always come up; keep an open mind to that possibility and be ready to handle them properly.

Appendix 2 - Working with Web CVS Repositories

Basic CVS commands

For further details on CVS, such as reverting to a previous version, or looking at the diff output of a particular change, see the CVS documentation.

Since CVS is not able to handle symbolic links directly, a separate mechanism has been implemented to allow webmasters to maintain symbolic links, as follows. (Actual symbolic links are no longer created on; mod_rewrite rules are used instead. But we'll keep this discussion talking about symlinks since it is easier to understand that way.)

Being a symlink means that relative links from the linked page may break when the symlink jumps to a different directory.

Special files, named .symlinks, when committed to the CVS tree, are interpreted as specifications to build symbolic links. 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.

The .symlinks files obey the ln -s format, as described below:

Here is an example of a .symlinks file:

# Make a link named l.html to a target t.html.
# Strictly equivalent to ln -s t.html l.html:
t.html l.html

On each line the first file name must be a relative path name to an existing file. The second file name may not contain any slash; it is the name of the symbolic link to be created in the present directory. For instance, if a page named dir.html exists in the /dir directory, and index.html does not exist, /dir/.symlinks should contain a line like this:

dir.html index.html

The ln -s analogy accounts for only part of the story. The current method actually takes advantage of the flexibility of URL rewriting. Thus a single HTML entry in the .symlinks file defines links to all possible translations that follow our naming conventions. This makes it impossible to use symlinks to redirect to and from HTML files whose names look like translations, that is, page.ll.html or page.ll-cc.html, where ll and cc are two-letter codes. When you need such redirections, use the htaccess mechanism.

These days, the .symlinks handling happens on via a cron job that runs twice an hour. Webmasters do not have access to it.

.htaccess and redirections

To browsers, the symbolic links in the previous section are indistinguishable from the actual file. You may want an actual redirection in some cases. You can do this either in the top-level control file .htaccess, or by using something like this as the file to be redirected:

<meta http-equiv="refresh" content="0; url=">

Server-side scripts

A description of scripts and software used on is available. Please read it before writing any scripts, and also update it as needed if you have write access to www.

System administrators

The system administrators for GNU change from time to time. Please email the sysadmin list <> rather than an individual, unless you have a specific reason to do so.

Useful Resources