GNU 网站指南
我们的目标是向人们传递信息。保持网站设计简洁有助于实现这一目标。
目录
请体谅所有访问我们网页的人,并为他们提供便利,包括那些使用纯文本浏览器或旧浏览器的人,以及那些连接速度较慢的人。我们希望防止在某个浏览器版本下看起来很棒,而在其他许多浏览器下看起来很丑陋的网页设计。当然,如果您还没有使用任何专有网络浏览器,请不要安装它们。
通用指南
- GNU 网络服务器仅提供自由软件。我们更倾向于仅使用自由软件来准备 GNU 网络服务器的页面。
- GNU 网站仅列出并链接到自由软件。该软件的源代码和可执行文件必须可以自由地由所有人或组织重新分发和修改。如有疑问,请咨询<[email protected]>。
- GNU 网站优先考虑使用 GNU 通用公共许可证或 GNU 较宽松通用公共许可证覆盖的软件。
- 应尽量减少图形的使用,以便页面在慢速连接上快速加载。
- 以 GNU 项目拥有的所有格式提供文档。例如,请参阅GNU 自由文档许可证。这允许用户以对他们最有用的格式获取文档。
- 除了版权和许可证声明之外,所有页面的底部都应包含 FSF(或责任方)的联系信息以及错误报告的地址(通用页面的网站管理员,其他情况为项目特定的地址)。在底部注明的原因是,用户总能在每个页面的相同位置找到此信息。
- 在从其他网站获取任何图形或文本之前,请先请求使用许可。这样做是礼貌的。对我们来说,避免侵犯版权也至关重要。
- 在添加链接之前,请检查它是否符合我们的链接标准。
- 除非明确要求列出,否则请勿列出个人的地址,包括 GNU 软件包的维护者。大多数 GNU 维护者不希望收到大量额外的邮件,并且更愿意从 GNU 错误报告邮件列表中获取错误报告等。
- 在具有日期条目的页面(例如,/philosophy/latest-articles.html)上,较新的条目应在最前面(即,反向时间顺序)。
- 页面不应从 FSF 运行的服务器以外的服务器加载 CSS。
- 通常,不允许使用 JavaScript。对此的例外情况需要由首席 GNUisance 逐案审查和批准。
版权指南
- 每个页面都应包含版权声明。请参阅下面的样板。
- 每个页面都应包含一个声明,允许所有人分发它。如果您无法从作者那里获得此类许可,请在发布之前与网站管理员讨论该问题。这适用于 CSS 以及 HTML。
- 通常,除非我们有权修改我们发布的版本,否则您不应发布版权不属于 FSF 的页面。如果您无法从作者那里获得此类许可,请在发布之前与 FSF 讨论该问题。这适用于 CSS 以及 HTML。
- 如果最终我们决定发布我们无权修改的新页面,请在版权声明之后,在 HTML 注释中添加文本“Posted in 20XX without FSF permission to modify”。
- 我们页面的用户应始终在每个页面的相同位置找到版权信息。如果页面由其他人或实体拥有版权,请使用 per 或其版权声明,而不是 FSF 版权声明。使用 FSF 的其余正常页脚材料,除非有特殊原因要更改其中的某些内容。
- 所有解释如何执行某项操作(例如,如何使用某些程序)的页面都是文档。这包括
/software/
中描述特定程序的所有页面。根据我们的原则,文档必须是自由的。因此,这些页面必须带有自由许可证。如果此类页面没有自由许可证,请将问题报告给<[email protected]>。 - 对于其他页面,请使用与具有类似用途的其他页面相同的许可证。
拼写和标点
- 英文页面应遵循标准的美国拼写、连字符和标点符号约定。
- 由于这些约定并非总是非常具体,尤其是在连字符和引号方面,因此 gnu.org 为了保持一致性,添加了自己的规则
- “nonfree”优于“non-free”;同样,“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
- 手写的 URL,用于引用 www.gnu.org 上的其他文件时应是绝对的,从根页面开始。也就是说,路径应以
/
开头(例如,/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 标准。
- 请严格遵守上述 Web 标准。在使用 (X)HTML 时,不要忽略必需的元素,例如
<html>
、<head>
、<title>
、<body>
等,并且始终包含相应的 DTD 或架构引用。这可以安抚过于迂腐的网络浏览器。 - 不要在文档顶部添加注释。Web 浏览器期望 doctype、XML 声明或 Schema 位于顶部。注释会使它们感到困惑,并经常导致它们错误地解释您的标记。
- <head> 元素应包含以下行
<link rel="author" href="mailto:[email protected]">
- 第一个标题标签 <h[n]>,其文本应在 <title> 标签的开头重复。许多浏览器在历史记录和书签列表等菜单中,以及作为该页面的链接使用 <title> 标签。在 <title> 中重复主标题可确保当用户单击这些菜单中的项目时,他们会获得具有预期标题的页面。请按数字顺序正确使用标题:1、2 等。这些不是用于外观,而是用于组织文档。
- <title> 标签应包含 “GNU Project” 和 “Free Software Foundation” 短语,以便在使用 Web 搜索引擎时可以找到这些页面。默认情况下将其添加到末尾:
- GNU Project - Free Software Foundation
。 - 首字母缩略词/缩写
- 永远不要使用
<acronym>
:HTML 5 用<abbr>
取代了它。 - 除非有非常引人注目的理由,否则不要使用
<abbr>
。浏览器以丑陋的方式呈现它。 - 当读者可能不熟悉缩写时,请在文档中第一次使用时给出其展开形式,如下所示:
<abbr title="展开的缩写">EA</abbr>
或EA (展开的缩写)
。 - 在任何情况下,后续出现都应在没有任何标记的情况下编写:只需
EA
。 - 对于常见首字母缩写词,如 GNU、FSF、BSD、RAM、HTML、DVD 等等,根本不需要任何标记。请自行判断。
- 永远不要使用
表格和菜单
- 请使用表格来组织数据,而不是 Web 页面的演示。
- 大多数盲人使用的屏幕阅读器软件从左到右读取文本,忽略您所做的任何表格。如果使用表格,则应确保从左到右阅读整个页面不会使此类软件感到困惑。请遵循 W3C Web 可访问性指南,以确保表格已正确标记以实现可访问性。
- 有些人喜欢在使用图形浏览器时将链接组织为位于主文本左侧或右侧的菜单。这在文本浏览器中效果不佳,因为它们会将菜单显示在页面顶部或底部。如果您有一个超过 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 过渡)中已弃用的标记。
其他样式表
- 历史页面(主要是未维护的翻译)引用
/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
或%
)在 style 属性中调整图像宽度或高度;例如<img src="/graphics/*.jpg" alt=" [描述性文本] " style="width: 10em; height: auto;" />
这样,如果读者增加或减小字体大小,页面看起来会相同。
- 如果您要向使用
layout.css
(模板页面 的样式表)的页面添加小型浮动图像,则可能需要使用imgright
或imgleft
类(在样式表的 IMAGES 部分中定义)。这将确保如果页面被翻译成 RTL 语言,则浮动方向会反转。 - 如果您添加的图像宽度为 12em 或更大,并且页面是模板化的,则您可能会发现使用
layout.css
的 IMAGES 部分中定义的响应式pict
类之一很方便(如果没有预定义的类适合您的需求,则可以在 style 属性中调整宽度);例如
请注意,<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 的网页浏览器,类似于 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 上的页面和资源的链接,GitHub 是一个需要运行非自由 JavaScript 才能按预期使用的网站。
目前(2024 年 3 月),GotHub 没有得到积极维护,并且缺少某些功能。例如,它不提供在不访问 GitHub 网站的情况下浏览存储库或下载源代码的方法,也不提供 git 克隆 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
。cvs -z3 -d:ext:username@cvs.savannah.gnu.org:/web/www co www
如果您具有 www 的写入权限,请使用您的 Savannah 登录名检出主 www 存储库
-
您将获得一个工作目录,
www
,其结构与我们主网站的结构相同。cvs -z3 -d:pserver:[email protected]:/web/www co www
-
如果您没有 www 的写入权限,您仍然可以匿名检出 www
cvs -z3 -d:ext:username@cvs.savannah.gnu.org:/web/fooproject \ co fooproject
检出 fooproject 的 Web 存储库
您将获得一个工作目录
fooproject
,其结构与www/software/fooproject
子目录的结构相同。但是请注意,fooproject 和 www 存储库是独立的。工作目录可以位于文件系统中的任何位置。 -
网站管理员,请在将任何内容提交到软件项目的 Web 存储库之前,阅读 官方 GNU 软件的网页。
cvs add foo
-
添加文件或目录
cvs update -P foo
-
在编辑文件之前更新
cvs diff -U2 foo
-
检查您要提交的更改
cvs commit foo
执行提交(如果文件已在存储库中,则不需要
cvs add
)这将打开一个文本编辑器,您应在其中输入日志消息。它还会向您显示要提交的所有文件的列表。提交将在退出编辑器时发生。
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 规则。但我们将继续讨论符号链接,因为它更容易理解。)
当提交到 CVS 树中时,名为 .symlinks
的特殊文件会被解释为构建符号链接的规范。.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 之外
- 在 gnu.org 上
- GNU 网站指南(此页面);
- 在 www.gnu.org 上网页创建指南;
- 附录 B 提示和技巧,以及 Texinfo 手册中的其他样式提示;
- GNU 无障碍声明;
- GNU 网站管理指南;
- 将 GNU 网页翻译成其他语言的指南;
- 网站管理员提示,以使翻译人员的工作更轻松;
- Savannah 文档,Savannah 是专用于 GNU 项目的 SourceForge 克隆。
- 如何帮助我们的 Web 服务器和其他任务。