summaryrefslogtreecommitdiff
path: root/.html/dev/webapp-versions.html
blob: 0a394634b29de2348b99558e06006a320225b0c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!DOCTYPE html>
<html>
<head>
	<title>
		The Codex » 
		Semver Is Wrong For Web Applications
	</title>

	<link
		rel='stylesheet'
		type='text/css'
		href='http://fonts.googleapis.com/css?family=Buenard:400,700&amp;subset=latin,latin-ext'>
	<link
		rel="stylesheet"
		type="text/css"
		href="../media/css/reset.css">
	<link
		rel="stylesheet"
		type="text/css"
		href="../media/css/grimoire.css">
</head>
<body>

<div id="shell">
	
		<ol id="breadcrumbs">
			
				<li class="crumb-0 not-last">
					
						<a href="../">index</a>
					
				</li>
			
				<li class="crumb-1 not-last">
					
						<a href="./">dev</a>
					
				</li>
			
				<li class="crumb-2 last">
					
						webapp-versions
					
				</li>
			
		</ol>
	

	
	<div id="article">
		<h1 id="semver-is-wrong-for-web-applications">Semver Is Wrong For Web Applications</h1>
<p><a href="http://semver.org">Semantic Versioning</a> (“Semver”) is a great idea, not least
because it's more of a codification of existing practice than a totally novel
approach to versioning. However, I think it's wrong for web applications.</p>
<p>Modern web applications tend to be either totally stagnant - in which case
versioning is irrelevant - or continuously upgraded. Users have no, or very
little, choice as to which version to run: either they run the version currently
on the site, or no version at all. Without the flexibility to choose to run a
specific version, Semver's categorization of versions by what compatibility
guarantees they offer is at best misleading and at worst irrelevant and
insulting.</p>
<p>Web applications must still be <em>versioned</em>; internal users and operators must be
able to trace behavioural changes through to deployments and backwards from
there to <a href="commit-messages">code changes</a>. The continuous and incremental nature
of most web development suggests that a simple, ordered version identifier may
be more appropriate: a <a href="builds">build</a> serial number, or a version <em>date</em>, or
otherwise.</p>
<p>There are <em>parts</em> of web applications that should be semantically versioned: as
the Semver spec says, “Once you identify your public API, you communicate
changes to it with specific increments to your version number,” and this remains
true on the web: whether you choose to support multiple API versions
simultaneously, or to discard all but the latest API version, a semantic version
number can be a helpful communication tool <em>about that API</em>.</p>
	</div>


	
<div id="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'grimoire'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>


	
	<div id="footer">
		<p>
			
				The Codex —
			
			Powered by <a href="http://markdoc.org/">Markdoc</a>.
			
<a href="https://bitbucket.org/ojacobson/grimoire.ca/src/master/wiki/dev/webapp-versions.md">See this page on Bitbucket</a> (<a href="https://bitbucket.org/ojacobson/grimoire.ca/history-node/master/wiki/dev/webapp-versions.md">history</a>).

		</p>
	</div>
	
</div>
</body>
</html>