\documentclass[DIV=12,%
               BCOR=10mm,%
               headinclude=false,%
               footinclude=false,open=any,%
               fontsize=11pt,%
               twoside,%
               paper=210mm:11in]%
               {scrbook}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainfont{Linux Libertine O}
% these are not used but prevents XeTeX to barf
\setsansfont[Scale=MatchLowercase]{CMU Sans Serif}
\setmonofont[Scale=MatchLowercase]{CMU Typewriter Text}
\setmainlanguage{english}








% global style

\pagestyle{plain}




\usepackage{microtype} % you need an *updated* texlive 2012, but harmless
\usepackage{graphicx}
\usepackage{alltt}
\usepackage{verbatim}
% http://tex.stackexchange.com/questions/3033/forcing-linebreaks-in-url
\PassOptionsToPackage{hyphens}{url}\usepackage[hyperfootnotes=false,hidelinks,breaklinks=true]{hyperref}
\usepackage{bookmark}

% footnote handling
\usepackage[fragile]{bigfoot}
\usepackage{perpage}
\DeclareNewFootnote{default}

\DeclareNewFootnote{B}
\MakeSorted{footnoteB}
\renewcommand*\thefootnoteB{(\arabic{footnoteB})}

\deffootnote[3em]{0em}{4em}{\textsuperscript{\thefootnotemark}~}

% continuous numbering across the document. Defaults to resetting at chapter. Unclear
% \usepackage{chngcntr}
% \counterwithout{footnote}{chapter}

\usepackage[shortlabels]{enumitem}
\usepackage{tabularx}
\usepackage[normalem]{ulem}
\def\hsout{\bgroup \ULdepth=-.55ex \ULset}
% https://tex.stackexchange.com/questions/22410/strikethrough-in-section-title
% Unclear if \protect \hsout is needed. Doesn't looks so
\DeclareRobustCommand{\sout}[1]{\texorpdfstring{\hsout{#1}}{#1}}
\usepackage{wrapfig}
\usepackage{indentfirst}
% remove the numbering
\setcounter{secnumdepth}{-2}

% remove labels from the captions
\renewcommand*{\captionformat}{}
\renewcommand*{\figureformat}{}
\renewcommand*{\tableformat}{}
\KOMAoption{captions}{belowfigure,nooneline}
\addtokomafont{caption}{\centering}

% avoid breakage on multiple <br><br> and avoid the next [] to be eaten
\newcommand*{\forcelinebreak}{\strut\\*{}}

\newcommand*{\hairline}{%
  \bigskip%
  \noindent \hrulefill%
  \bigskip%
}

% reverse indentation for biblio and play

\newenvironment*{amusebiblio}{
  \leftskip=\parindent
  \parindent=-\parindent
  \smallskip
  \indent
}{\smallskip}

\newenvironment*{amuseplay}{
  \leftskip=\parindent
  \parindent=-\parindent
  \smallskip
  \indent
}{\smallskip}

\newcommand*{\Slash}{\slash\hspace{0pt}}


\addtokomafont{disposition}{\rmfamily}
\addtokomafont{descriptionlabel}{\rmfamily}

% forbid widows/orphans
\frenchspacing
\sloppy
\clubpenalty=10000
\widowpenalty=10000
% http://tex.stackexchange.com/questions/304802/how-not-to-hyphenate-the-last-word-of-a-paragraph
\finalhyphendemerits=10000

% given that we said footinclude=false, this should be safe
\setlength{\footskip}{2\baselineskip}

\title{GitHub Is Anarchy for Programmers}
\date{2011-10-01}
\author{Steve Klabnik}
\subtitle{}




% https://groups.google.com/d/topic/comp.text.tex/6fYmcVMbSbQ/discussion
\hypersetup{%
pdfencoding=auto,
pdftitle={GitHub Is Anarchy for Programmers},%
pdfauthor={Steve Klabnik},%
pdfsubject={},%
pdfkeywords={}%
}


\begin{document}






  \begin{titlepage}

  \strut\vskip 2em
  \begin{center}

  {\usekomafont{title}{\huge GitHub Is Anarchy for Programmers\par}}%
  \vskip 1em
  
  \vskip 2em
  
  {\usekomafont{author}{Steve Klabnik\par}}%
  
  \vskip 1.5em


   
   \vfill


  
  {\usekomafont{date}{2011-10-01\par}}%
  

  \end{center}

  \end{titlepage}

\cleardoublepage



\tableofcontents
% start a new right-handed page

\cleardoublepage




I finally got to see Zach Holman give his talk, \href{http://speakerdeck.com/u/holman/p/how-github-uses-github-to-build-github}{How GitHub Uses GitHub to Build GitHub}. It was awesome. Zach is a great speaker, and the slides don’t do it justice. I highly recommend catching it on video or in person sometime.


Anyway, there’s something that I found really interesting about GitHub’s ‘process’: it’s basically anarchism, applied to software development.


If you’re not familliar with anarchism, check out \href{http://truth-reason-liberty.blogspot.com/p/what-i-believe-in.html}{“What I believe in”}. It’s a pretty decent introduction to a complicated topic. Ultimately, anarchism is fairly simple, but it requires dismantling a \emph{lot} of beliefs that Americans in particular hold about society, power, and control. We’re quite happy in this country to be slaves to the rich, but that’s another blog post. ;)


Another excellent post on that blog is \href{http://truth-reason-liberty.blogspot.com/2010/11/digression-on-what-it-means-to-be.html}{“A Digression On What It Means to Be An Anarchist”}. I’m going to use it as a framework to point out my comparison to GitHub. The first sentence is stolen from TFA, but the second sentence is my GitHub comparison.

\section{What anarchists oppose}


\begin{itemize}
\item\relax 
Hierarchy – anarchists oppose domination of one person or group of people by another as detrimental to human society. GitHub has built a very flat process, where “some days the CEO ships more code than I do.”



\item\relax 
Authority – all forms of authority must bear a heavy burden of proof in order to demonstrate their legitimacy and necessity. GitHub has hired people that have built awesome things, and have shown themselves to be a trusted authority in whatever kind of software that they build. Nobody needs to question if anyone is in the position to deploy or review some code.



\item\relax 
The state – centralised rule of a set geographical area (country) or people (nation) by a government of elites is inherently illegitimate. Okay, this has nothing to do with GitHub all together. All abstractions are leaky here. :) The same goes for Capitalism and State Socialism too.



\item\relax 
Nationalism and fascism – these are but the worst forms of the state, gaining the loyalty of the people with strong, often brutal discipline and by developing an almost religious, fevered love of the state and the rulers in the form of patriotism. GitHub actively uses multiple programming languages in production, and while it came out of the Ruby world, they don’t really run around pitching “Ruby is awesome and the only thing you should ever use.”



\item\relax 
Discrimination – nobody should be excluded or discriminated against based on nothing more than their gender, ethnicity, sexuality, background, or beliefs. I don’t know everyone at GitHub, but it’s a pretty diverse crew overall. This is hard for any tech company, but they’re doing pretty well on the race\Slash{}sex thing.




\end{itemize}
\section{What anarchists stand for}


\begin{itemize}
\item\relax 
Liberty – all people should be free to live their life as they see fit, without rules and laws passed from above that serve no purpose other than control and domination, as long as they are not infringing the right of anybody else to the same. See Homan’s talk. That’s pretty much how they work.



\item\relax 
Equality – as stated above, nobody should face discrimination because of their gender, ethnicity, sexuality, background, or beliefs. See above comment about GitHub’s varied devs.



\item\relax 
Community – human civilisation evolved, from its primitive roots, through the priciple of Mutual Aid. GitHub has a lot of elements of mutal aid in their process, where they mention some people in some pull requests, work together on features, and generally high five until the code is running in production.



\item\relax 
Solidarity – humanity is divided only between the rulers and the ruled. Other divisions, those which bring about sexism, racism, heterosexism, and other bigotries, are promoted by the ruling class in order to divide their subjects and keep them under control. GitHub holds tons of events, buys everyone lots of beer, and just generally encourages lots of friendly interactions between everyone. CodeConf was a great group of diverse people hanging out and having a good time.




\end{itemize}
\section{How anarchy would work}


\begin{itemize}
\item\relax 
Self-management – groups, such as workforces or local communities, would be free to operate and govern themselves free of any higher authority. GitHub has no deadlines, no prioritization meetings, and 100\% “do what you want” time.



\item\relax 
Free association – all individuals would be free to live where they wanted and associate with who they chose. Zach mentioned in his talk that different people work on different parts of the site, and it’s really based on what people are interested in and what they’ve done in the past.



\item\relax 
Voluntary federation – instead of the state, where indivudal communities and groups of people are bound together by the coercive force of a central authority, local communities and workers collectives can choose for themselves which other communities or collectives to associate with. Sort of like the free association comment, people get together and work on what they want to, and these groups are organic.



\item\relax 
Direct democracy – unlike in parliamentary democracy, these spokespeople would be just that, elected not to a position of authority but to voice decisions that remain in the hands of the people, as in trade union and workers council structures. Anybody can comment on a pull request, add some commits, put in their two cents, and be heard.



\item\relax 
Mutual Aid – in participatory communities and workers collectives, Mutual Aid is a central principle. Easily summed up with the phrase “from each according to his ability, to each according to his need,” this boils down to voluntary cooperation, fair distribution of resources, and help and support to those who need it within a local community. As mentioned before, everybody helps each other out at GitHub to get things done.



\item\relax 
Free, fair trade – for the sharing of resources between different communities and individuals who opt out of Mutual Aid, anarchy would see the emergence of a truly free market. This doesn’t really fit with software, I think. Same with ‘individual liberty.’



\item\relax 
Collective defence – this is not to say that anarchist society will contain “perfect people,” and there will certainly be acts of aggression, oppression, and violence – albeit on a lesser scale than is commonplace in today’s world. I’d liken this to things like “the site is down.” Everyone at GitHub cares about GitHub being up, and so they don’t need someone who’s responsible for ‘defense,’ as if shit hits the fan, everyone chips in and takes care of it.



\item\relax 
Justice, not vengeance – courts would be elected for each individual case, rather than appointed and given unnecessary authority, with the aim to establish guilt or innocence, negotiate reparations, and organise rehabilitation rather than to support the oppressive prison systems which only make matters worse by serving as little more than universities of crime. I’m not sure this fits well here.




\end{itemize}
\section{All abstractions are leaky}


Just like when ‘lean’ was a concept that applied manufacturing techniques to software development, I don’t think that ‘anarchism’ is a 100\% fit with GitHub’s process. I do think that it’s close enough to hold a lot of value, however, even to the point that Zach had to write a blog post about \href{http://zachholman.com/posts/scaling-github-employees/}{scaling}, which is something that \emph{always} gets leveled at people talking about anarchism. I see GitHub in the same way that I see \href{http://en.wikipedia.org/wiki/Anarchism\_in\_Spain}{anarchist Catalonia} or the \href{http://en.wikipedia.org/wiki/Free\_Territory}{Free Territory} in the Ukraine. It’s a place where ideals are actually working in practice. Let’s just hope that the \href{http://en.wikipedia.org/wiki/Anarchist\_Catalonia\#Clashes\_with\_the\_Communists}{communists don’t betray them when the fascists show up}.


Damn leaky abstractions.




% begin final page

\clearpage


% if we are on an odd page, add another one, otherwise when imposing
% the page would be odd on an even one.
\ifthispageodd{\strut\thispagestyle{empty}\clearpage}{}


% new page for the colophon

\thispagestyle{empty}

\begin{center}

The Anarchist Library



\smallskip
Anti-Copyright



\bigskip
\includegraphics[width=0.25\textwidth]{logo-en}
\bigskip

\end{center}

\strut

\vfill

\begin{center}


Steve Klabnik

GitHub Is Anarchy for Programmers



2011-10-01


\bigskip


Retrieved on 2018-04-10 from \url{http://blog.steveklabnik.com/posts/2011-10-01-github-is-anarchy-for-programmers}
   

   



\bigskip
\textbf{theanarchistlibrary.org}


\end{center}

% end final page with colophon


\end{document}


