GNU 网站指南
我们的目标是向人们传递信息。保持网站设计简洁有助于实现这一目标。
目录
请考虑所有访问我们网页的人,并为他们提供便利,包括那些使用纯文本浏览器或旧浏览器的人,以及那些连接速度较慢的人。我们希望防止出现在一个浏览器版本下看起来很棒,而在许多其他浏览器下看起来很糟糕的网页设计。当然,如果您还没有使用任何专有网络浏览器,请不要安装它们。
通用指南
- GNU 网络服务器仅提供自由软件。我们更倾向于仅使用自由软件来准备 GNU 网络服务器的页面。
- GNU 网站仅列出和链接到自由软件。该软件的源代码和可执行文件必须可由所有人及组织自由重新分发和修改。如有疑问,请咨询<[email protected]>。
- GNU 网站优先考虑受 GNU 通用公共许可证或 GNU 较宽松通用公共许可证覆盖的软件。
- 应尽量减少图形的使用,以便页面在慢速链接上快速加载。
- 以 GNU 项目拥有的尽可能多的格式提供文档。例如,请参阅GNU 自由文档许可证。这使用户能够以对他们最有用的格式获取文档。
- 除了版权和许可证声明之外,所有页面都应在每个页面的底部提供 FSF(或责任方)的联系信息以及错误报告的地址(一般页面的网站管理员,其他情况下的项目特定地址)。在底部注明这一点的原因是为了让用户总是在每个页面的相同位置找到此信息。
- 在从其他网站获取任何图形或文本之前,请先请求使用许可。这样做是礼貌的。这对我们避免侵犯版权也至关重要。
- 在添加链接之前,请检查它是否符合我们的链接标准。
- 除非明确要求列出,否则不要列出个人地址,包括 GNU 软件包的维护者。大多数 GNU 维护者不希望收到大量的额外邮件,并且更希望从 GNU 错误报告邮件列表中获取错误报告等。
- 在具有日期条目的页面上(例如,/philosophy/latest-articles.html),较新的条目应该排在前面(即,反向时间顺序)。
- 页面不应从 FSF 运行的服务器以外的服务器加载 CSS。
- 通常,不允许使用 JavaScript。对此的例外情况需要由首席 GNU 负责人逐案审查和批准。
版权指南
- 每个页面都应有版权声明。请参阅下面提到的样板。
- 每个页面都应声明允许所有人分发该页面的通知。如果您无法从作者处获得此类许可,请在发布之前与网站管理员讨论该问题。这适用于 CSS 以及 HTML。
- 通常,除非我们有权修改我们发布的版本,否则您不应发布不是 FSF 版权的页面。如果您无法从作者处获得此类许可,请在发布之前与 FSF 讨论该问题。这适用于 CSS 以及 HTML。
- 如果我们最终决定发布一个我们无权修改的新页面,请在版权声明之后,在 HTML 注释中添加文本“于 20XX 年发布,未经 FSF 许可修改”。
- 我们页面的用户应该始终在每个页面的相同位置找到版权信息。如果页面由其他个人或实体拥有版权,请使用其版权声明,而不是 FSF 版权声明。使用 FSF 的其余普通页脚材料,除非有特殊原因需要更改其中的某些内容。
- 所有解释如何执行某些操作的页面,例如如何使用某些程序,都是文档。这包括
/software/
中描述特定程序的所有页面。根据我们的原则,文档必须是自由的。因此,这些页面必须带有自由许可证。如果此类页面没有自由许可证,请将问题报告给<[email protected]>。 - 对于其他页面,请使用与具有类似用途的其他页面相同的许可证。
拼写和标点
- 英文页面应遵循标准的美国拼写、连字符和标点约定。
- 由于这些约定并非总是非常具体,尤其是在连字符和引号方面,gnu.org 为了保持一致性而添加了自己的规则
- 与“non-free”相比,“nonfree”更受青睐;同样,“noncommercial”比“non-commercial”更受青睐。
- 在普通文本中,HTML 实体“
“
…”
”和“‘
…’
”比直引号("..." 和 '...')更受青睐。这不适用于脚本生成的文档。 - 在存在句号分隔符的情况下,应保留句号分隔符后的双空格。它们使 Emacs 句子命令能够执行正确的操作。
文件名
- 为了使同时编辑多个文件更容易,请尝试为每个 HTML 文件提供一个唯一且描述性的名称;特殊的名称
index.html
应该仅用作符号链接,如下所述。 - Web 服务器树中的每个目录都应有一个名为
index.html
的符号链接,指向该目录的顶级 HTML 文件。使用.symlinks
文件来处理此问题。 - 如果您将网页翻译成不同的语言,请将英文文件命名为
article.html
,将其翻译版本命名为article.lang.html
—lang
应包含来自ISO 639的两位字母语言代码,并可以选择性地包含连字符,后跟 ISO 3166 中给出的两位字母国家/地区代码(小写)。例如,not-ipr.html
的德语翻译应命名为not-ipr.de.html
;巴西葡萄牙语翻译应命名为not-ipr.pt-br.html
。
URL
- 手动编写的引用 www.gnu.org 上其他文件的 URL 应该是绝对的,从根页面开始。也就是说,路径应以
/
开头(例如,/gnu/about-gnu.html
;不是https://gnu.ac.cn/gnu/about-gnu.html
,并且不是about-gnu.html
)。这使得从其他页面复制和粘贴链接更容易。此外,当访问者使用 HTTPS 时,诸如https://gnu.ac.cn/
之类的链接将是错误的。 - 检查链接的主机是否同时支持 HTTPS 和 HTTP,如果支持,请使用协议相对 URL(例如,
//www.example.org
)。 - 从 Texinfo 源代码自动生成的文件集合包含带有相对文件名的链接。它们总是引用同一目录中的另一个文件。这些相对链接是可以容忍的。
- 不要在 URL 中仅使用目录名称;始终包含特定的文件名。例如,使用
/gnu/gnu.html
,而不仅仅是/gnu/
。永远不要在 URL 中使用index.html
。这两种做法都对用户有好处,因为浏览器在链接被访问后会更改链接上的突出显示。如果指向给定文件的链接使用几个不同的 URL,则尚未明确引用的 URL 将不会突出显示为已访问。因此,用户会访问他/她已经看过的页面,这令人恼火。此外,随着事物四处移动,这会简化网站的维护。 - 在链接到同一文件中的锚点时,请务必完全省略文件名,并仔细检查锚点是否确实有效。
- 在删除锚点或
id
属性时,请考虑其他人链接到您的页面。 - 我们鼓励 FTP 站点为每个软件包使用一个目录,并且每个目录中仅放置一个软件包的文件,以便用户可以看到该软件包的哪些版本以及相关信息可以下载(例如,
README
文件、有关可用版本的信息、文档、字体等)。此外,这意味着随着新版本发布到该目录中,此站点和其他站点上的 FTP 位置 URL 不需要更改。 以这种方式引用带有电子邮件地址的人
<a href="//www.stallman.org/">Richard Stallman</a> <a href="mailto:[email protected]"><[email protected]></a>
浏览器会以这种方式显示
Richard Stallman <[email protected]>
这对用户来说不太令人困惑,因为很明显,什么是指向另一个网页的链接,什么是
mailto:
锚点,如果客户端支持,它将弹出一个邮件表单供填写和发送。此外,如果用户保存页面的副本,他们将拥有电子邮件地址的副本,他们可以使用该副本,而无需返回到他们的网络浏览器。如果该人没有网页,请保留未锚定的名称。- 当嵌入静态资源(例如,与 www.gnu.org 页面的其余部分一起不在
www
CVS 存储库中的视频)时,重要的是用于嵌入资产的 URL 是 gnu.org 的子域,以便 GNU IceCat 附带的第三方请求阻止程序加载项不会将其视为第三方资产,从而阻止其加载。例如,当在 www.gnu.org 上嵌入 FSF 活动中的视频时,请使用static.gnu.org
而不是static.fsf.org
。这两个地址都已设置为指向同一台机器,因此可以互换使用。
HTML 指南
- GNU 网络服务器上的 HTML 应严格符合W3C 标准。
- 请严格遵守上述网络标准。在使用 (X)HTML 时,不要忽略必需元素,例如
<html>
、<head>
、<title>
、<body>
等,并始终包含适当的 DTD 或架构引用。这可以安抚过于迂腐的网络浏览器。 - 请勿在文档顶部添加注释。网络浏览器希望 doctype、XML 声明或架构位于顶部。注释会使它们感到困惑,并且经常导致它们错误地解释您的标记。
- <head>元素应包含以下行
<link rel="author" href="mailto:[email protected]">
- 第一个标题标签,<h[n]>,其文本应在 <title> 标签的开头重复。 <title> 标签被许多浏览器用于历史记录和书签列表等菜单中,作为该页面的链接。在 <title> 中重复主标题可确保用户在单击这些菜单中的项目时,能够获得具有预期标题的页面。请按数字顺序正确使用标题:1、2 等。它们不是用于外观,而是用于组织文档。
- <title> 标签应包含短语 “GNU Project” 和 “Free Software Foundation”,以便在使用网络搜索引擎时可以找到这些页面。默认情况下,将其添加到末尾:
- GNU Project - Free Software Foundation
。 - 缩写词/简写
- 永远不要使用
<acronym>
:HTML 5 用<abbr>
取代了它。 - 除非有真正令人信服的理由,否则不要使用
<abbr>
。浏览器会以难看的方式渲染它。 - 当读者可能不熟悉缩写词时,请在文档中首次使用时给出其展开形式,如下所示:
<abbr title="展开的缩写词">EA</abbr>
或EA(展开的缩写词)
。 - 在任何情况下,后续出现时都应不带任何标记地书写:仅需写
EA
。 - 对于常见的首字母缩略词,例如 GNU、FSF、BSD、RAM、HTML、DVD 等等,根本不需要任何标记。请自行判断。
- 永远不要使用
表格和菜单
- 请使用表格来组织数据,而不是组织网页的呈现。
- 大多数盲人使用的屏幕阅读器软件从左到右读取文本,忽略您创建的任何表格。如果您使用表格,则应确保从左到右阅读整个页面不会使此类软件感到困惑。请遵循 W3C 网络可访问性指南,以确保表格正确标记以实现可访问性。
- 当使用图形浏览器时,有些人喜欢将链接组织为位于主文本左侧或右侧的菜单。这对于文本浏览器效果不佳,因为它们会将菜单显示在页面的顶部或底部。如果您的菜单超过 30 行,那么很可能用户在浏览页面时永远不会费心阅读文本,因为它会太靠下。您应该努力将此类菜单保持在 20 行以下,以便在使用文本浏览器查看时,文章的开头在第一页上可见。一到两条水平线的菜单栏也可以实现您的目的。“跳过链接”到主文本是另一种选择。
使用我们的页面模板
- 为了帮助人们遵循上述指南,为 GNU 网站的主要部分和软件项目提供了页面模板(或“样板”)。在 www.gnu.org 中创建新页面时必须使用它,并且强烈建议用于软件页面。请不要从现有页面开始创建新页面;请改用 样板的原始源代码,并按照其中的说明进行操作。
- XHTML 模板页面必须遵循 XHTML-1.0 指南。
- 我们的服务器端包含声明 UTF-8 作为字符编码,因此使用任何其他编码都会有问题。
样式
模板页面的样式
/layout.css
提供了用于桌面和智能手机的通用样式;它涵盖了我们的大多数用例。- 打印机使用
/print.css
。请注意,页眉、导航栏和页脚(版权和许可除外)是不可打印的。 - 除了
/layout.css
,某些页面还有专门的样式表:GNU Art 部分的/graphics/graphics.css
和恶意软件和教育部分的/side-menu.css
。 - 如果某个特定页面需要一些特殊的样式,则应将其添加到页面本身中的 <style> 元素中,位于包含
header.html
和banner.html
的 SSI 指令之间。如果样式适用于单个元素,则通常应将其作为属性添加。 - 如果在 HTML 中指定任何颜色属性,则应指定该标记允许的所有颜色属性。这是因为某些浏览器允许用户指定颜色属性的默认值,并且用户的选择可能会与您的选择冲突,因为您的选择会覆盖用户的选择。在最坏的情况下,前景色和背景色可能会相同。请使用样式表来执行此操作,而不是使用 HTML 3.2(HTML 4 Transitional)中已弃用的标记。
其他样式表
- 历史页面(大多数是不维护的翻译)引用
/gnu.css
,后者又加载/mini.css
(Yahoo 用户界面重置和基本样式表,版本 2),因为这些页面通常是非常基本的、简单的页面,几乎没有格式。 - 软件手册有专门的样式表。主要的是
/style.css
;- gnulib.css,它导入
/style.css
并添加了一些其他定义;它被gendocs.sh
用于 重新生成 Texinfo 手册。
- 翻译人员维护样式表 (
/style.lang.css
),这些样式表会根据他们自己的需要修改 layout.css。RTL 语言(阿拉伯语、波斯语和希伯来语)使用/style.rtl.css
。
图形的使用
- 应尽量减少图形的使用,以便页面可以通过慢速链接快速加载,尤其是动画。
- 我们不在页面上使用背景图像,因为它们会使文本难以阅读。
- 过去,GIF 存在专利问题。但是,现在 IBM 和 Unisys 的专利(以及全球其他与 LZW 压缩相关的专利)已经到期,基于 87a 或 89a 标准的 GIF 是可以接受的。请注意,专有应用程序可能包含非标准的专利技术(我们希望您在为我们的网站创作时使用自由软件应用程序)。一般来说,PNG 或 JPEG 格式仍然是安全的,并且从技术角度来看可能更好。有关旧 GIF 问题的详细信息,请参阅 https://gnu.ac.cn/philosophy/gif.html。也允许其他格式,尽管 JPEG 是 Web 浏览器最广泛认可的格式(避免使用 JPEG 2000,并注意 PNG alpha 通道;前者没有得到广泛支持,后者没有得到一些旧浏览器的完全支持)。
- 在您从其他网站获取图像之前,请征得使用许可。
- 始终为内联图像提供文本替代方案,以确保搜索引擎的可索引性和可访问性。例如
我们添加了不间断空格 ( ) 和方括号,以将描述性文本与相邻文本分开,并帮助用户意识到这是图像的替代品。使用不间断空格而不是普通空格的目的是确保它们能够找到 PO4A/Gettext 工具提取的可翻译字符串。<img src="/graphics/*.jpg" alt=" [描述性文本] ">
- 使用浏览器默认字体大小时,确保图像以其原始大小显示时不会太大或太小。
使用可缩放单位(例如
em
或%
)在样式属性中调整图像的宽度或高度;例如<img src="/graphics/*.jpg" alt=" [描述性文本] " style="width: 10em; height: auto;" />
这样,如果读者增大或减小字体大小,页面看起来会相同。
- 如果您正在向使用
layout.css
(模板页面的样式表)的页面添加小型浮动图像,您可能需要使用imgright
或imgleft
类(在样式表的 IMAGES 部分中定义)。这将确保如果将页面翻译成 RTL 语言,浮动方向会反转。 - 如果添加的图像宽度为 12em 或更大,并且页面是模板化的,则您可能会发现使用
layout.css
的 IMAGES 部分中定义的响应式pict
类之一很方便(如果没有预定义的类适合您的需求,您可以在样式属性中调整宽度);例如
请注意,<div class="pict wide" style="width: 25em"><img src="/graphics/*.jpg" alt=" [描述性文本] " /></div>
div
容器是必要的,因为某些浏览器(例如 NetSurf)不知道如何将max-width
应用于图像。 将整个网站中显示的所有图像链接到相关页面,通常在
/graphics/
中。这可以使用类似于此的代码完成,这对应于左侧的图像<p class="imgleft"> <a href="/graphics/agnuhead.html"> <img src="/graphics/gnu-head-sm.jpg" alt=" [Image of the Head of a GNU] " style="width: 8em" /></a> </p>
这将允许用户快速转到与他们感兴趣的图片相关的页面。
附录 1 - 链接政策
维护网页最复杂的方面之一是遵循链接指南;然而,这也是这项工作中非常关键的一个方面。
我们努力确保我们推广的所有页面(在我们网站上提供链接的所有页面)都对自由软件运动友好。有些页面显然不会符合这些标准;如果该网站攻击自由软件基金会和/或 GNU 项目,或者与自由软件和周围问题没有明显关系,则不应进行链接。除此之外,还有一些标准用于确定是否适合从我们的网站提供指向页面的链接。它们按一般重要性降序排列,如下所示。
- 链接的上下文是什么?
-
链接在我们网站上的用途将影响对其根据其他标准进行判断的力度。托管 GNU 项目的页面将受到最高的标准约束。关于其他自由软件并给予高度推广的页面(例如,包含在主页上的新闻源中)紧随其后。哲学页面上的链接在谈论专有软件时可能会有更多的回旋余地;GNU/Linux 用户组页面几乎总是应将系统称为 GNU/Linux,但在其他标准上几乎没有检查。在决定如何权衡这些政策的各个方面时,请始终牢记这一点。
- 该页面是否推广专有软件?
-
自由软件运动提出的一个重要观点是,专有软件会带来道德困境:您不能同意此类非自由条款,并且不能像您希望被对待那样对待您周围的人。当专有软件得到推广时,人们会认为使用它是可以的,而我们正试图说服他们不要这样做。因此,我们避免提供此类免费广告,无论是在我们网站上直接提供还是通过链接间接提供。
这个标准棘手的地方在于“推广”点:提及专有软件和为其进行推销之间存在差异。实际上,GNU 项目网站自始至终都提到了专有软件,但从未给人们留下使用它不会带来道德问题的印象。
在确定对专有软件的引用是在推广它还是只是提及它时,需要记住两件事。首先,它提供了关于该软件的多少信息?其次,读者可能从该页面实际获得多少信息?
不同的页面提供关于专有软件的信息量不同;信息量越大,对我们来说问题就越大。例如,有些页面可能会链接到专有软件程序的主要网站。其他页面可能会详细描述其功能。甚至给出的产品名称也很重要;“Windows”和“Microsoft Windows XP 家庭版”之间存在差异。
引用的主题也会在确定引用的问题程度方面发挥作用。如果该软件已经非常流行,那么对其基本提及不太可能对读者来说是新闻。一些被认为“广为人知”的专有软件的例子包括主要的操作系统(Windows、Mac OS、Sun OS、HP-UX)和主要的常用应用程序,如 Office、Internet Explorer、Chrome、Photoshop、Acrobat Reader 和 Flash。
GNU 软件项目页面会感受到此政策的全部效力。只有在 GNU 软件提供对专有软件的支持时,或者将其与广为人知的专有软件的功能进行比较时,才应提及专有软件。例如,以下文本(以及其他不多内容)是可以接受的
w3 是 GNU Emacs 的一个 Web 浏览器,类似于 Internet Explorer。它可以在 GNU Emacs 运行的所有平台上运行,包括 GNU/Linux、专有 Unix 系统和 Windows。
出现在其他区域(如推荐或哲学页面)中的链接,以及用户组或第三方组织的链接,可能会更详细地讨论此类软件,但仍然应避免链接和其他鼓励“了解更多”的方法。
- 页面如何比较自由软件和开源软件?
-
我们网站上链接的几乎所有页面,至少应平等对待自由软件和开源软件。未能做到这一点——无论是省略自由软件,还是暗示开源软件更优越——通常是不可接受的。GNU 软件项目页面应很少提及开源。以下是一个巧妙的例子
XYZ 是 GNU 项目的一部分,并且是自由/开放软件(有时称为开源软件)。
此规则的任何例外都应从上下文中显而易见。例如,用户组页面或 links.html 中列出的组织的页面可能会更详细地讨论开源;我们在这些页面上声明,“FSF 不对其他网站的内容或其信息的最新程度负责。”
- 页面如何对待 GNU 项目?
-
我们链接的页面应好好对待 GNU 项目。在这方面需要注意的主要事项是该页面是否将系统称为 GNU/Linux 或仅仅是“Linux”。GNU 软件项目和用户组页面几乎永远不应这样做。同样,其他页面的例外情况应从上下文中显而易见。
也就是说,页面的某些部分不应根据这些标准进行考虑。例如,假设我们要链接到一个自由软件新闻网站上的页面。在确定它是否符合我们的链接准则时,文章附带的任何广告或读者评论都不应被考虑,因为它们被理解为是其个别作者的意见。类似地,在用户组或第三方组织页面上,论坛和 wiki 页面的内容在此方面不应具有任何权重。
最后,一些网站被认为始终存在大多数这些准则的例外情况。这些网站通常是关于重要但对自由软件运动而言有些外围的问题。我们曾多次链接到电子前沿基金会的网站,即使他们鼓励使用 Flash,只谈论开源软件,并且不提倡用户重新分发和更改软件的自由。通常认为,由于这些页面主要不是关于自由软件的,因此这些政策对它们不完全适用。
作为最后的解释(来自 RMS):即使是从 www.gnu.org 建立链接,我们也不要求人们将系统称为 GNU/Linux 或使用术语“自由软件”而不是“开源”。但是,我们要求他们不要推广任何非自由软件。
如果所有这些看起来都很复杂,那是因为,不幸的是,它确实如此。别担心;随着时间和经验的积累,你会掌握窍门。在学习了解什么是可接受的,什么是不可以接受的过程中,您可能会错误地评估一些页面;请不要犹豫,向经验更丰富的网站管理员或负责人(如首席网站管理员或 RMS)寻求第二意见。新的例外情况总会出现;对此可能性保持开放的心态,并准备好正确处理它们。
- 即使用户的浏览器拒绝运行 JavaScript 代码,该页面是否仍然可以工作?
-
如果页面需要非自由的、重要的 JavaScript 并且在禁用 JavaScript 的情况下出现严重故障,则不应建立链接。类似地,如果页面嵌入了 Flash,并且 Flash 播放起着重要作用,以至于如果视频无法播放,人们将会错过一些重要内容,则不应建立链接。
然而,在某些情况下,我们仍然可以通过使用解决方法来绕过 JavaScript 要求来引用此类页面和资源。
一种可能性是使用 GotHub 的实例 - 一个无需 JavaScript 即可工作的 GitHub 自由软件前端 - 来替换指向托管在 GitHub 上的页面和资源的链接,该网站需要运行非自由 JavaScript 才能按预期使用。
目前(2024 年 3 月),GotHub 没有得到积极维护,并且缺少某些功能。例如,它没有提供一种在不访问 GitHub 网站的情况下浏览存储库或下载源代码的方法,并且它没有提供 git clone URL。尽管如此,GotHub 对于某些用途还是有帮助的。例如,它非常适合链接到单个文件。
* 软件包。对于软件项目来说,一个有用的文件是 README 文件;它包含软件包的描述,这通常是用户在尝试获取存储库之前首先想看到的内容。我们在 www.gnu.org 中多次应用了此解决方案;例如,我们替换了以下链接
https://github.com/pbatard/rufus
替换为以下链接
https://gothub.projectsegfau.lt/pbatard/rufus
.另一个解决方案是直接链接到 GitHub 上带标签提交的 tarball。此方法的缺点是它对于跟踪项目随时间变化不是很有用。
* 图形、文档、手册。这些资源有时托管在用户页面中,即使它们托管在 GitHub 网站的某个区域内,也不需要 JavaScript 即可完全使用。在这些情况下,链接到此类页面是可以的。例如,我们将指向的链接替换为
https://github.com/foocorp/gnu-fm/blob/main/clients/meego/librefm/src/librefm-logo.png
替换为指向的链接
https://raw.githubusercontent.com/foocorp/gnu-fm/main/clients/meego/librefm/src/librefm-logo.png
.
我们还有指向文档的链接,例如
https://raw.githubusercontent.com/scootergrisen/licenser/master/gpl-3.0.da.txt
.有时,一个资源可能托管在多个可接受的位置。它可以是 GitHub 或其他地方的个人页面,也可以在某些无关的网站上。在评估选择哪个时,请考虑以下因素:文档的状态是什么?它是最终版本还是很可能很快被修改?URL 是否可靠稳定,还是可能被移动?
例如,过去我们有一个手册的案例,该手册在 other-free-books.html 中列出,其 URL 为
.https://github.com/davidam/orgguide-es
当时,我们有三种可能性来替换该不良链接
1. GotHub
https://gothub.projectsegfau.lt/raw/davidam/davidam.github.io/master/docu/orgguide.es.pdf
2. 作者在 GitHub 上的个人空间
https://raw.githubusercontent.com/davidam/davidam.github.io/master/docu/orgguide.es.pdf
3. 出版商/书店
https://traficantes.net/sites/default/files/pdfs/orgguide.es_.pdf
我们选择了第三个,因为它看起来手册不太可能更新到新版本,并且 Traficantes de Sueños 是一家知名且成熟的出版商。可以在没有 JavaScript 的情况下查看和浏览 GitHub 上的问题跟踪器,但积极参与需要一个帐户,而该帐户无法在不运行非自由 JavaScript 的情况下创建。链接到已关闭的问题是可以的,就像我们对
https://github.com/w3c/fingerprinting-guidance/issues/8
.
所做的那样。对于已关闭的问题,另一种可能性是链接到 Wayback Machine 上的存档页面。最后,请考虑与维护人员和作者沟通以解释问题。希望他们会将存储库移到其他地方或将材料发布到我们可以链接到的地方。
附录 2 - 使用 Web CVS 存储库
基本 CVS 命令
- 有关参考手册,请执行 info cvs。
- 在初始检出之前,设置环境变量
CVS_RSH=ssh
。 -
如果您具有对 www 的写入权限,请使用您的 Savannah 登录名检出主 www 存储库
cvs -z3 -d:ext:username@cvs.savannah.gnu.org:/web/www co www
您将获得一个工作目录
www
,其结构与我们主网站的结构相同。 -
如果您没有对 www 的写入权限,您仍然可以对 www 进行匿名检出
cvs -z3 -d:pserver:[email protected]:/web/www co www
-
检出 fooproject 的 Web 存储库
cvs -z3 -d:ext:username@cvs.savannah.gnu.org:/web/fooproject \ co fooproject
您将获得一个工作目录
fooproject
,其结构与www/software/fooproject
子目录的结构相同。但是,请注意 fooproject 和 www 存储库是独立的。工作目录可以位于您文件系统中的任何位置。网站管理员,在将任何内容提交到软件项目的 Web 存储库之前,请阅读官方 GNU 软件的网页。
-
添加文件或目录
cvs add foo
-
在编辑文件之前更新
cvs update -P foo
-
检查您将要提交的更改
cvs diff -U2 foo
-
执行提交(如果文件已在存储库中,则无需
cvs add
)cvs commit foo
这将打开一个文本编辑器,您应该在其中输入日志消息。它还会显示所有要提交的文件列表。退出编辑器后将进行提交。
或者
cvs commit -m "Log message" foo
此选项不太安全,因为它不会向您显示要提交的文件列表。此外,日志消息中的小错误(省略消息和文件名之间的空格)可能会导致提交目录中的所有已修改文件,因为文件名不会被视为参数,而是消息的一部分。
撰写良好的提交日志消息非常重要,这有助于项目成员和后代查找给定文件中的特定更改并理解您做出更改的原因。
- 日志消息应该在不显得过于冗长的前提下,尽可能清楚地描述提交的性质。
好的:更新指向 XYZ 的链接。
糟糕:更新链接。 - 始终包含对任何相关 RT 票证和/或邮件列表讨论的引用。如果不存在此类引用,请提及授权更改的人员姓名。
- 对于日期,我们使用美式表示法(9 月 27 日,2023 年)或 ISO 8601 国际标准格式(2023-09-27)。
在可能的情况下,应将共享相同日志消息的多个文件的更改捆绑到一个提交中。不要将多个不相关的更改捆绑到一个提交中。
更改(除了 .symlinks 文件)应该在几分钟内出现在 www.gnu.org 上。
- 日志消息应该在不显得过于冗长的前提下,尽可能清楚地描述提交的性质。
有关 CVS 的更多详细信息,例如恢复到以前的版本或查看特定更改的 diff
输出,请参阅 CVS 文档。
符号链接
由于 CVS 无法直接处理符号链接,因此已实施单独的机制,以允许网站管理员维护符号链接,如下所示。(实际的符号链接不再在 www.gnu.org 上创建;而是使用 mod_rewrite 规则。但我们将继续讨论符号链接,因为它更容易理解。)
作为符号链接意味着当符号链接跳转到不同的目录时,来自链接页面的相对链接可能会中断。
名为 .symlinks
的特殊文件在提交到 CVS 树时,会被解释为构建符号链接的规范。将遵守来自 .symlinks 文件的每个符号链接规范,即,如果符号链接尚不存在,则会创建该符号链接。如果在目录中找到符号链接且未在 .symlinks 文件中列出,则将其删除。
.symlinks 文件遵循 ln -s
格式,如下所述
- 以井号(“#”)开头的行将被忽略。
- 不包含以空格分隔的两个字符串的行将被静默忽略。
这是一个 .symlinks 文件的示例
# Make a link named l.html to a target t.html. # Strictly equivalent to ln -s t.html l.html: t.html l.html
在每一行中,第一个文件名必须是现有文件的相对路径名。第二个文件名不能包含任何斜杠;它是在当前目录中创建的符号链接的名称。例如,如果名为 dir.html
的页面存在于 /dir
目录中,并且 index.html
不存在,则 /dir/.symlinks
应该包含如下行
dir.html index.html
ln -s
的类比只解释了部分情况。当前的方法实际上利用了 URL 重写的灵活性。因此,.symlinks 文件中的单个 HTML 条目定义了指向遵循我们 命名约定的所有可能翻译的链接。这使得无法使用符号链接来重定向到和从名称看起来像翻译的 HTML 文件,也就是说,page.ll.html
或 page.ll-cc.html
,其中 ll 和 cc 是两位字母的代码。当您需要此类重定向时,请使用 htaccess 机制。
现在,.symlinks 的处理在 www.gnu.org 上通过一个每小时运行两次的 cron 作业进行。网站管理员无权访问它。
.htaccess 和重定向
对于浏览器而言,上一节中的符号链接与实际文件没有区别。在某些情况下,您可能需要实际的重定向。您可以在顶级控制文件 .htaccess
中执行此操作,也可以使用类似于此的重定向文件
<meta http-equiv="refresh" content="0; url=https://gnu.ac.cn/target">
服务器端脚本
关于 www.gnu.org 上使用的脚本和软件的描述可用。在编写任何脚本之前请阅读它,如果您有 www 的写入权限,也请根据需要更新它。
系统管理员
GNU 的系统管理员会不时更换。请发送电子邮件至系统管理员列表 <[email protected]>,而不是发送给个人,除非您有特别的原因这样做。
有用的资源
- gnu.org 之外
- 我们遵循 使用任何浏览器观看最佳效果活动的指导方针。
- 有关 Web 及其技术规范的基本信息,请访问 万维网联盟。
- GNU Web 服务器遵循 w3.org 的 样式指南。
- 使用 WCAG 2.1 有助于确保广泛的残疾人士可以访问。
- 在 gnu.org 上
- GNU 网站指南(本页);
- www.gnu.org 上 网页创建的指南;
- 附录 B 提示和技巧,以及 Texinfo 手册中的其他样式提示;
- GNU 无障碍声明;
- GNU 网站管理指南;
- 将 GNU 网页翻译成其他语言的指南;
- 为使翻译人员的工作更轻松的网站管理员提示;
- Savannah 的文档,这是专用于 GNU 项目的 SourceForge 克隆。
- 如何帮助我们的 Web 服务器和其他任务。