--- a/schema/ssm.xsd Wed Oct 02 16:56:11 2019 +0200
+++ b/schema/ssm.xsd Wed Oct 02 19:10:46 2019 +0200
@@ -58,8 +58,44 @@
<xs:element name="id" type="ID"/>
<xs:element name="text" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="note" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="link" type="Link" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="item" type="Item" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
+
+ <xs:complexType name="Link">
+ <xs:sequence>
+ <xs:element name="url" type="URL"/>
+ <xs:element name="type" type="LinkType"/>
+ <xs:element name="title" type="xs:string"/>
+ <xs:element name="description" type="xs:string" minOccurs="0"/>
+ <xs:element name="quotation" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:simpleType name="LinkType" final="restriction" >
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="related">
+ <xs:annotation>
+ <xs:documentation>
+ generic link
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="compatible">
+ <xs:annotation>
+ <xs:documentation>
+ link to a particular compatible rule in another guidelines
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="URL">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="https?://[^ ]+"/>
+ </xs:restriction>
+ </xs:simpleType>
</xs:schema>
--- a/text/ssm.en.xml Wed Oct 02 16:56:11 2019 +0200
+++ b/text/ssm.en.xml Wed Oct 02 19:10:46 2019 +0200
@@ -28,8 +28,20 @@
<text>run the program for any purpose,</text>
<text>to study and change it (i.e. has access to the source code under a free software license)</text>
<text>and to distribute modified or unmodified copies.</text>
- <note>see https://www.gnu.org/philosophy/free-sw.html</note>
- <note>see https://www.gnu.org/philosophy/who-does-that-server-really-serve.html</note>
+ <link>
+ <url>https://www.gnu.org/philosophy/free-sw.html</url>
+ <type>compatible</type>
+ <title>What is free software? – The Free Software Definition</title>
+ <quotation>“Free software” means software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”. We sometimes call it “libre software,” borrowing the French or Spanish word for “free” as in freedom, to show we do not mean the software is gratis.</quotation>
+ <quotation>A program is free software if the program's users have the four essential freedoms: The freedom to run the program as you wish, for any purpose (freedom 0). The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this. The freedom to redistribute copies so you can help others (freedom 2). The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.</quotation>
+ </link>
+ <link>
+ <url>https://www.gnu.org/philosophy/who-does-that-server-really-serve.html</url>
+ <type>related</type>
+ <title>Who does that server really serve?</title>
+ <description>About Software as a Service (SaaS) and Service as a Software Substitute (SaaSS)</description>
+ <quotation>On the Internet, proprietary software isn't the only way to lose your freedom. Service as a Software Substitute, or SaaSS, is another way to give someone else power over your computing.</quotation>
+ </link>
</item>
<item>
<id>b7cd1a50-79eb-4df2-925c-7243a46d5ed8</id>
@@ -102,10 +114,14 @@
<text>Major version is incremented if there is an incompatible change.</text>
<text>Minor version is incremented if a feature is added in a compatible way.</text>
<text>Patch version is incremented if a bug is fixed in a compatible way.</text>
- <note>see http://semver.org/</note>
<note>If authors are unable to distinguish between compatible and incompatible changes, they must always increment the major version. However this approach is not recommeded</note>
<note>Propper Semantic versioning is especially important if the software is suposed to be used as dependency by others.</note>
<note>If there is a need of some marketing or cool versioning/codenames like Ultrasonic Umbrella or 2016, they should be used in addition to semantic versioning, not instead of it.</note>
+ <link>
+ <url>http://semver.org/</url>
+ <type>compatible</type>
+ <title>Semantic Versioning</title>
+ </link>
</item>
<item>
<id>cf557a11-b307-4c2f-a7b5-5d2485d23258</id>
@@ -303,7 +319,11 @@
<item>
<id>c5974dcd-4855-40c5-ad22-894c128ca1dc</id>
<text>from the whole system point-of-view, Bootstrappable builds should be taken into account</text>
- <note>see http://bootstrappable.org/</note>
+ <link>
+ <url>http://bootstrappable.org/</url>
+ <type>related</type>
+ <title>Bootstrappable builds</title>
+ </link>
</item>
</chapter>
@@ -394,7 +414,12 @@
<id>e56aad13-f68e-47ea-8b88-65fee6b5331a</id>
<text>Any software with nontrivial user interface must be internationalized</text>
<text>which means that it allows localization (translation of the UI to national languages and other customization to national conventions).</text>
- <note>see https://en.wikipedia.org/wiki/Internationalization_and_localization</note>
+ <link>
+ <url>https://en.wikipedia.org/wiki/Internationalization_and_localization</url>
+ <type>related</type>
+ <title>Internationalization and localization</title>
+ <quotation>Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes. Localization is the process of adapting internationalized software for a specific region or language by translating text and adding locale-specific components.</quotation>
+ </link>
</item>
<item>
<id>ad2f572b-497b-4523-b435-f9752fd1518a</id>
@@ -483,7 +508,17 @@
<item>
<id>d5fbcc9e-a12c-44ce-909b-f514a579ab7e</id>
<text>JavaScript or other code executed on client computers must be also free software with properly declared license.</text>
- <note>see https://www.gnu.org/software/librejs/</note>
+ <link>
+ <url>https://www.gnu.org/philosophy/javascript-trap.html</url>
+ <type>compatible</type>
+ <title>The JavaScript Trap</title>
+ <quotation>When the site transmits a program to the user, it is not enough for the program to be written in a documented and unencumbered language; that program must be free, too. “Transmits only free programs to the user” must become part of the criterion for an ethical web site.</quotation>
+ </link>
+ <link>
+ <url>https://www.gnu.org/software/librejs/</url>
+ <type>related</type>
+ <title>GNU LibreJS</title>
+ </link>
</item>
<item>
<id>e02c3fba-93f3-4f16-bd23-f49a203e40bc</id>
@@ -517,7 +552,12 @@
<item>
<id>b0022cea-4caf-4663-ae24-5fc5da31333b</id>
<text>such requirements and rules should be available to the contributor before he begins; however (especially smaller) projects might communicate such code quality requirements and provide consultations and guidance during the contribution</text>
- <note>example of such rules and guidelines: https://www.gnu.org/prep/standards/</note>
+ <link>
+ <url>https://www.gnu.org/prep/standards/</url>
+ <type>related</type>
+ <title>GNU coding standards</title>
+ <description>example of such rules and guidelines</description>
+ </link>
</item>
<item>
<id>ea4a8d23-b2df-42eb-84ae-7687d35838c8</id>