summaryrefslogtreecommitdiff
path: root/.html/dev/why-scm.html
diff options
context:
space:
mode:
authorOwen Jacobson <owen.jacobson@grimoire.ca>2015-07-03 22:31:49 -0400
committerOwen Jacobson <owen.jacobson@grimoire.ca>2015-07-03 22:35:09 -0400
commit76aed6ef732de38d82245b3d674f70bab30221e5 (patch)
treed50e9a296d91ef8a49bcb29c3e80096f200a3c26 /.html/dev/why-scm.html
parent92f66d3e3a0996bb1fad9dc83d7e184f92673e5d (diff)
Fuck it, serve the files directly.
Diffstat (limited to '.html/dev/why-scm.html')
-rw-r--r--.html/dev/why-scm.html147
1 files changed, 147 insertions, 0 deletions
diff --git a/.html/dev/why-scm.html b/.html/dev/why-scm.html
new file mode 100644
index 0000000..d278190
--- /dev/null
+++ b/.html/dev/why-scm.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>
+ The Codex »
+ Why we use SCM systems
+ </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">
+
+ why-scm
+
+ </li>
+
+ </ol>
+
+
+
+ <div id="article">
+ <h1 id="why-we-use-scm-systems">Why we use SCM systems</h1>
+<p>I'm watching a newly-minted co-op student dealing with her first encounter
+with Git, unhelpfully shepherded by a developer to whom everything below is
+already second nature, so deeply that the reasoning is hard to articulate. It
+is not going well.</p>
+<p>I have the same problem, and it could be me trying to give someone an intro to
+Git off the top of my head, but it's not, today. For next time, here are my
+thoughts. They have shockingly little to do with Git.</p>
+<h2 id="assumptions">Assumptions</h2>
+<ul>
+<li>You're working on a software project.</li>
+<li>You know how to read and write code.</li>
+<li>You're human.</li>
+<li>You have end users or customers - people other than yourself who care about
+ your code.</li>
+<li>Your project is going to take more than a few minutes to reach end of life.</li>
+</ul>
+<h2 id="the-safety-net">The safety net</h2>
+<p>Having a record of past states and known-good states means that, when (WHEN)
+you write some code that doesn't work, and when (WHEN) you're stumped as to
+why, you can throw your broken code away and get to a working state again. It
+also helps with less-drastic solutions by letting you run comparisons between
+your broken code and working code, which helps narrow down whatever problem
+you've created for yourself.</p>
+<p>(Aside: if you're in a shop that “doesn't use source control,” and for
+whatever insane reason you haven't already run screaming, this safety net is a
+good reason to use source control independently of the organization as a
+whole. Go on, it's easy; modern DSCM tools like Mercurial or Git make
+importing “external” trees pretty straightforward. Your future self thanks
+you.)</p>
+<h2 id="historical-record">Historical record</h2>
+<p>Having a record of past, released states means you can go back later and
+recover how your project has changed over time. Even if your commit practices
+are terrible, when (WHEN) your users complain that something stopped working a
+few months ago and they never bothered to mention it until now, you have some
+chance of finding out what caused the problem. Better practices around <a href="commit-messages">commit
+messages</a> and other workflow-related artifacts improve your
+chances of finding out <em>why</em>, too.</p>
+<h2 id="consensus">Consensus</h2>
+<p>Every SCM system and every release process is designed to help the humans in
+the loop agree on what, exactly, the software being released looks like and
+whether or not various releasability criteria have been met. It doesn't matter
+if you use rolling releases or carefully curate and tag every release after
+months of discussion, you still need to be able to point to a specific version
+of your project's source code and say “this will be our next release.”</p>
+<p>SCM systems can help direct and contextualize that discussion by recording the
+way your project has changed during those discussion, whether that's part of
+development or a separate post-“freeze” release process.</p>
+<h2 id="proposals-and-speculative-development">Proposals and speculative development</h2>
+<p>Modern SCM systems (other than a handful of dismal early attempts) also help
+you <em>propose</em> and <em>discuss</em> changes. Distributed source control systems make
+this particularly easy, but even centralized systems can support workflows
+that record speculative development in version control. The ability to discuss
+specific changes and diffs, either within a speculative line of development or
+between a proposed feature and the mainline code base, is incredibly powerful.</p>
+<h2 id="the-bottom-line">The bottom line</h2>
+<p>It's about the people, not the tools, stupid. Explaining how Git works to
+someone who doesn't have a good grasp on the relationship between source
+control tools and long-term, collaborative software development won't help.</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/why-scm.md">See this page on Bitbucket</a> (<a href="https://bitbucket.org/ojacobson/grimoire.ca/history-node/master/wiki/dev/why-scm.md">history</a>).
+
+ </p>
+ </div>
+
+</div>
+</body>
+</html> \ No newline at end of file