ssm-en.xhtml
author František Kučera <franta-hg@frantovo.cz>
Fri, 20 Sep 2019 16:13:07 +0200
branchv_0
changeset 11 f07103582ef4
parent 10 a549e04e160e
permissions -rw-r--r--
Added tag v0.1 for changeset b0e72d76cccf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     1
<?xml version="1.0" encoding="UTF-8"?>
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     2
<!DOCTYPE html SYSTEM "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd">
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     3
<html xmlns="http://www.w3.org/1999/xhtml">
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     4
	<head>
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     5
		<title>Sane Software Manifesto</title>
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     6
		<link href="style.css" 	type="text/css" rel="StyleSheet" />
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     7
	</head>
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     8
	<body>
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     9
		<h1>Sane Software Manifesto</h1>
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    10
9
bb745fbb9b85 draft warning
František Kučera <franta-hg@frantovo.cz>
parents: 8
diff changeset
    11
		<p style="text-align: center">&lt;DRAFT&gt; Please note that this is a draft version. Stay tuned for v1.0.0! &lt;/DRAFT&gt;</p>
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    12
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    13
		<p>In respect to user freedoms, privacy, liberty, quality, mental health and world peace we create software according to these guidelines.</p>
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    14
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    15
		<h2>Free software</h2>
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    16
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    17
		<ul>
4
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    18
			<li>Every piece of Sane software is also <a href="https://www.gnu.org/philosophy/free-sw.html">Free software</a>.</li>
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    19
			<li>The user has freedom to run the program for any purpose, to study and change it (i.e. has access to the source code under a free software license) and to distribute modified or unmodified copies.</li>
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    20
			<li>The user controls his/her computer and software and owns the data.</li>
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    21
			<li>Non-free software can not be trusted.</li>
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    22
			<li>Must be buildable using free software toolchain (like GNU/Linux + GCC or OpenJDK etc.).</li>
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    23
			<li>Should not promote non-free (proprietary) software or services.</li>
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    24
			<li>Copyleft licenses (like GNU GPL or GNU Affero GPL) are strongly recommended because they guarantee software freedoms to every single end-user and prevent possibility that freedom vanishes somewhere in the distribution chain and the user can't benefit from the free software albeit the software is build on originally free source code.</li>
53e8012e5461 free software
František Kučera <franta-hg@frantovo.cz>
parents: 3
diff changeset
    25
			<li>If the software is distributed with a hardware, the hardware must support instalation of independently built software without any restrictions or requirements (e.g. digital signature from the original author).</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    26
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    27
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    28
		<h2>Documented</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    29
		<ul>
5
60e67a0c8b61 documentation
František Kučera <franta-hg@frantovo.cz>
parents: 4
diff changeset
    30
			<li>At least basic documentation must be released under a free license (GNU FDL is recommended).</li>
8
7155027c2be4 first 2018 update
František Kučera <franta-hg@frantovo.cz>
parents: 7
diff changeset
    31
			<li>Every advertised feature must be properly documented. Undocumented features can not be considered as features from the user/customer point-of-view.</li>
5
60e67a0c8b61 documentation
František Kučera <franta-hg@frantovo.cz>
parents: 4
diff changeset
    32
			<li>There might be also other documentation/books released under any license and price.</li>
60e67a0c8b61 documentation
František Kučera <franta-hg@frantovo.cz>
parents: 4
diff changeset
    33
			<li>But average software engineer must be able to build and operate the software with just the free (basic) documentation.</li>
60e67a0c8b61 documentation
František Kučera <franta-hg@frantovo.cz>
parents: 4
diff changeset
    34
			<li>There must be a free documentation with description of building and running the software on a fresh operating system installation including description of all dependencies.</li>
60e67a0c8b61 documentation
František Kučera <franta-hg@frantovo.cz>
parents: 4
diff changeset
    35
			<!--
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    36
			<li>documentation should focus on all target groups: users, administrators, developers</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    37
			<li>there must be a big picture and software architercure described</li>
5
60e67a0c8b61 documentation
František Kučera <franta-hg@frantovo.cz>
parents: 4
diff changeset
    38
			-->
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    39
		</ul>
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    40
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    41
		<h2>Semantic versioning</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    42
		<ul>
6
bd140638915f Semantic versioning
František Kučera <franta-hg@frantovo.cz>
parents: 5
diff changeset
    43
			<li><a href="http://semver.org/">Semantic versioning</a> is strongly recommended.</li>
bd140638915f Semantic versioning
František Kučera <franta-hg@frantovo.cz>
parents: 5
diff changeset
    44
			<li>Especially when the software is suposed to be used as dependency by others.</li>
bd140638915f Semantic versioning
František Kučera <franta-hg@frantovo.cz>
parents: 5
diff changeset
    45
			<li>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.</li>
bd140638915f Semantic versioning
František Kučera <franta-hg@frantovo.cz>
parents: 5
diff changeset
    46
			<li>Once publicly released, the package must not be changed anymore – if a change (even a small fix) is needed, new version number must be assigned.</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    47
			<li>
8
7155027c2be4 first 2018 update
František Kučera <franta-hg@frantovo.cz>
parents: 7
diff changeset
    48
				APIs, file formats and protocols might (and usually should) be semanticly versioned independently from the implementation;
6
bd140638915f Semantic versioning
František Kučera <franta-hg@frantovo.cz>
parents: 5
diff changeset
    49
				in such case, there should be a table documenting which API/format/protocol version matches which implementation version.
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    50
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    51
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    52
7
8bda15db8a3d compatibility
František Kučera <franta-hg@frantovo.cz>
parents: 6
diff changeset
    53
		<h2>Compatible with itself</h2>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    54
		<ul>
7
8bda15db8a3d compatibility
František Kučera <franta-hg@frantovo.cz>
parents: 6
diff changeset
    55
			<li>Focus on backward compatibility. Newer version should work as a drop-in replacement.</li>
8bda15db8a3d compatibility
František Kučera <franta-hg@frantovo.cz>
parents: 6
diff changeset
    56
			<li>Don't broke things – rather postpone the release date than deliver a faulty product.</li>
8bda15db8a3d compatibility
František Kučera <franta-hg@frantovo.cz>
parents: 6
diff changeset
    57
			<li>Don't remove features unless they are really obsolete, unused or unrepairably broken.</li>
8bda15db8a3d compatibility
František Kučera <franta-hg@frantovo.cz>
parents: 6
diff changeset
    58
			<li>Incompatible changes must be planned and announced in advance. <!--Major/minor/patch numbers must be increased according to the Semantic versioning.--></li>
8
7155027c2be4 first 2018 update
František Kučera <franta-hg@frantovo.cz>
parents: 7
diff changeset
    59
			<li>Upgrade scripts and upgrade documentation must be provided.</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    60
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    61
7
8bda15db8a3d compatibility
František Kučera <franta-hg@frantovo.cz>
parents: 6
diff changeset
    62
		<h2>Compatible with others</h2>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    63
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    64
			<li>use open standards (protocols, formats) if they exist</li>
8
7155027c2be4 first 2018 update
František Kučera <franta-hg@frantovo.cz>
parents: 7
diff changeset
    65
			<li>define and publish own open standards if needed
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    66
				<ul>
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    67
					<li>also standards must be semantically versioned</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    68
					<li>should be written in machine readable format (WSDL, WADL, ASN.1, XSD, Diameter dictionary etc.) or at least formal language (Backus–Naur Form, EBNF etc.)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    69
					<li>also configuration should have machine readable description and should be testable by executing a command</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    70
				</ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    71
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    72
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    73
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    74
		<h2>Modular architecture</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    75
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    76
			<li>larger and multi-purpose software should be divided into smaller modules</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    77
			<li>modules must have defined dependencies (less = better)</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    78
			<li>particular modules should be compilable and executable separately</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    79
			<li>whole system should be compilable (buildable) with only selected modules – must not require compilation or even distribution of all modules, if they are not necessary</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    80
		</ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    81
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    82
		<h2>Extensible</h2>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    83
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    84
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    85
			<li>able to be extended
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    86
				<ul>
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    87
					<li>by configuration (RegExp, SQL, XSLT, XPath etc.)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    88
					<li>by scripting (Guile, Bash, Python, Lua, ECMA Script etc.)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    89
					<li>and/or third-party plugins/modules
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    90
						<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    91
							<li>it should be easy to create a third-party module and plug it in an existing system</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    92
							<li>dependencies needed to write an extension (i.e. header files, API classes/interfaces) should be as small as possible (do not require large codebase to write a mere plug-in); the required dependency should contain just interfaces (method/function signatures) and data structures but no implementation (executable code)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    93
						</ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
    94
					</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    95
				</ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    96
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    97
			<li>there should be public directory of extensions/scripts</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
    98
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    99
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   100
		<h2>Testable</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   101
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   102
			<li>there should be automated build-time complex tests for the package – feed the program with sample input and verify expected output</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   103
			<li>there should be also automated runtime/postinstall tests – in order to verify that software was installed properly, all required dependencies are met and basic function is guaranteed – the program should report problem during its start (as a warning if it is not fatal), instead of unexpected failures during operation</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   104
			<li>unit tests are recommended for code parts that are internally complex (algorithms, important business logic) and have simple interfaces</li>
8
7155027c2be4 first 2018 update
František Kučera <franta-hg@frantovo.cz>
parents: 7
diff changeset
   105
			<li>each external interface should contain procedure/function that does nothing important or heavy, is idempotent and returns simple response which proves that the interface (connection) is working (e.g. echo, print version, status or current time); if authentication and authorization mechanisms are present, there should be one procedure/function callable anonymously and one that requires authorization</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   106
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   107
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   108
		<h2>Safe code and sustainability</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   109
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   110
			<li>correctness, safety and readability is prefered to performance</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   111
			<li>use strong data typing, declare preconditions and possible exceptions</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   112
			<li>data structures must be known and well documented – don't use undocumented map keys or properties</li>
8
7155027c2be4 first 2018 update
František Kučera <franta-hg@frantovo.cz>
parents: 7
diff changeset
   113
			<li>code, comments and specification should be written in the same natural language</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   114
			<li>there should be a dictionary of used terms, so whole team and also users and customers will speak same language</li>
8
7155027c2be4 first 2018 update
František Kučera <franta-hg@frantovo.cz>
parents: 7
diff changeset
   115
			<li>fail fast – errors in the code should be reported during build time or at least on first execution – don't silently continue if given error would lead to failure later in another part of the code – bad weak coupling leads to difficult debugging</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   116
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   117
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   118
		<h2>Small code footprint</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   119
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   120
			<li>less LOC (resp. complexity) = better</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   121
			<li>reduce boilerplate and unused code</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   122
			<li>use code generators (during build process, not to generate code to be manually edited and versioned)</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   123
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   124
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   125
		<h2>Sane dependencies</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   126
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   127
			<li>avoid NIH and reuse code but also avoid dependency hell</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   128
			<li>know your dependencies, know why they are required</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   129
			<li>reduce dependencies to only necessary ones</li>
3
f31614583438 indentation
František Kučera <franta-hg@frantovo.cz>
parents: 1
diff changeset
   130
			<li>depend on small and useful libraries – not on bulky application packages or libraries with large transitive dependencies</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   131
			<li>if dependency on bulky application package is inevitable, add a layer of abstraction – create a generic interface and connector and allow others to replace the bulky package with their own sane implementation</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   132
			<li>helper tools:
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   133
				<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   134
					<li>if you e.g. use Bash and Perl during the build process, don't add also Python dependency, write it in Perl – or use Python instead of Perl.</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   135
					<li>Or if you use Java as your main language, consider not using Python/Perl for scripting and use Java for it</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   136
				</ul>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   137
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   138
			<li>if possible, always depend on abstract interfaces, not on particular implementations</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   139
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   140
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   141
		<h2>Easily auditable</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   142
		<ul>
3
f31614583438 indentation
František Kučera <franta-hg@frantovo.cz>
parents: 1
diff changeset
   143
			<li>small code footprint and minimal dependencies makes it easy to do security audit</li>
f31614583438 indentation
František Kučera <franta-hg@frantovo.cz>
parents: 1
diff changeset
   144
			<li>avoid ungrounded refactoring and reformatting – they make mess and noise in the version control system and impede the audit</li>
f31614583438 indentation
František Kučera <franta-hg@frantovo.cz>
parents: 1
diff changeset
   145
			<li>refactoring/reformatting changesets should be separated from substantive changes</li>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   146
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   147
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   148
		<h2>Reproducible builds</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   149
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   150
			<li>builds should be reproducible: same code/version → same binary package</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   151
			<li>if not, it should be documented, why and how build products mihgt differ, and there should be plan/task to make it reproducible</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   152
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   153
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   154
		<h2>Trustworthy packages and sources</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   155
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   156
			<li>every released version (binary or source) is cryptographically signed by the authors (GnuPG/OpenPGP is strongly recommended)</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   157
			<li>if HTTP is supported, HTTPS should also be – the attacker/eavesdropper should not even know what software/package/update is downloaded by the user</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   158
			<li>the attacker should not be able to suppress updates – the program must not be silent in such case and must warn the user that something possibly nasty and dangerous is happening </li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   159
			<li>releases should be downloadable also (or exclusively) over BitTorrent or other P2P network</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   160
			<li>there should be also checksums/hashes for every package</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   161
			<li>source code repository is accessible through an encrypted connection</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   162
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   163
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   164
		<h2>Network interactions</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   165
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   166
			<li>no network connection is needed during build – build must be possible completely offline, all dependencies must be downloadable and documented including secure hashes or better cryptographic signatures</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   167
			<li>if dependencies are optionally automatically downloaded during/before build, the packaging system must cryptographically verify that that they are undamaged</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   168
			<li>avoid unwanted network interactions during runtime – no „call home“ or update-checks without user's explicit consent</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   169
			<li>if any network connection is used, it must be cryptographically secured against MITM attacks</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   170
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   171
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   172
		<h2>Localized/internationalized</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   173
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   174
			<li>is is strongly recommended that it should be possible to localize the user interface independently from the original author by writing a language pack</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   175
			<li>GNU Gettext or other standard framework (like Java resource bundles) should be used</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   176
			<li>error messages should have assigned unique error codes, so it is possible to find relevant information regardless current locale</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   177
			<!-- GEC is recommended for such unique error identifiers -->
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   178
			<li>data formats and protocols must be language/locale independent
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   179
				<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   180
					<li>e.g. use decimal point instead of comma and no thousand separators for numbers, use standardized date formats</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   181
					<li>in general: everything that is expected to be machine-readable or machine-generated must be independent from current locale</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   182
				</ul>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   183
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   184
			<li>character encoding:
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   185
				<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   186
					<li>always be aware of it, don't just blindly use current platform's default (because the other side might run on different platform with different default)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   187
					<li>if given software/format/protocol has some default encoding, it must be clearly defined in its specification and this default should not be changed without changing the major version number</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   188
					<li>if there is no default, the encoding must be specified in the metadata attached (e.g. protocol headers, extended attributes on filesystem) to the actual data or at least at the begining of the data (like declaration in XML format)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   189
				</ul>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   190
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   191
			<li>the metric system should be used as default</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   192
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   193
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   194
		<h2>Communication channels</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   195
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   196
			<li>use RSS/Atom or other machine readable format for:
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   197
				<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   198
					<li>security announcements</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   199
					<li>new version announcements</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   200
					<li>infrastructure outage announcements</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   201
					<li>blog, documentation, how-tos etc.</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   202
					<li>AFK events (conferences, meetings, hackatons etc.), for calendar data iCal format is strongly recommended</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   203
				</ul>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   204
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   205
			<li>mailing list</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   206
			<li>e-mail/SMTP
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   207
				<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   208
					<li>use TLS</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   209
					<li>use DKIM/ADSP</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   210
					<li>use signed and encrypted messages (GnuPG or X.509)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   211
					<li>avoid spam and viruses, don't spam the users, don't push them to subscribe your „newsletter“ – always offer also anonymous channel like RSS/Atom</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   212
				</ul>
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   213
			</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   214
			<li>Jabber MUC or IRC</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   215
			<li>discussion forum</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   216
			<li>don't push users to register at a proprietary social networks resp. at particular company like Facebook – users without such account must not be discriminated – use open and decentralized networks/protocols instead</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   217
			<li>Q&amp;A tool + FAQ</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   218
			<li>there should be a second-level internet domain for the project or its team</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   219
			<li>but don't buy an internet domain if you are not prepared to mainain it for decades – rather use third level domain under some reliable second level domain maintained by a credible group or person – think of that every expired domain helps spammers and scammers and hurts the users</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   220
			<li>URLs should be as stable as possible (don't broke old links, set up redirections if needed)</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   221
			<li>the website must be independent and must contain everything needed – any content (JavaScripts, CSS, fonts, images etc.) downloaded from other domains must not be required to browse/use the website</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   222
			<li>authors should publish their public keys (GnuPG/OpenPGP or X.509)</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   223
			<li>crpyptographically secured e-mail address or web form for receiving security vulnerabilities report</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   224
			<li>every security incident must be clearly documented and investigated – don't obscure it</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   225
		</ul>
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   226
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   227
		<h2>Accept contributions</h2>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   228
		<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   229
			<li>good quality code contributions with appropriate copyright and patent licenses or assignments should be accepted from anyone</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   230
			<li>the <em>good quality code</em> is defined by the project and might involve code style, idioms, design patterns, software architecture, required tests, documentation etc.</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   231
			<li>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</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   232
			<li>in order to contribute, it must not be required:
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   233
				<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   234
					<li>to have an account on any particular third party service like particular e-mail or hosting provider</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   235
					<li>to sign a contract (which includes accepting <em>Terms and conditions</em>) with any particular third party (e.g. source code hosting provider)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   236
					<li>to sign any political, religious or other proclamation or agree with it</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   237
				</ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   238
			</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   239
			<li>in order to contribute, it might be required:
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   240
				<ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   241
					<li>to have an e-mail address (but not at particular domain)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   242
					<li>to assign the copyright to the project and grant a free license for all patents relevant to the contribution</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   243
				</ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   244
			</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   245
			<li>the project should record all accepted contributions and maintain a public list of all authors/contributors</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   246
			<li>the contributor must not loose the right to use or distribute the contributed code under any license (of his choice)</li>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   247
		</ul>
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   248
1
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   249
		<h2>Open development – has public:</h2>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   250
		<ul>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   251
			<li>source code repository (versioning system), not just source code releases</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   252
			<li>description of the process of accepting external patches</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   253
			<li>feature/bug tracking system</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   254
			<li>roadmap of future releases</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   255
			<li>plan of supported versions/branches</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   256
			<li>every release/version/branch must clearly declare the status (alpha, beta, prototype, stable, retired, deprecated…)</li>
83f6bf9077c5 indented text → XHTML lists
František Kučera <franta-hg@frantovo.cz>
parents: 0
diff changeset
   257
		</ul>
10
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   258
a549e04e160e Accept contributions
František Kučera <franta-hg@frantovo.cz>
parents: 9
diff changeset
   259
0
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   260
	</body>
b0e72d76cccf import of the sane-software-manifesto.txt (earlier draft, not versioned)
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
   261
</html>