
Two dozen mathematicians wrote a 600 page book in 6 months on GitHub - jacoblyles
http://math.andrej.com/2013/06/20/the-hott-book/
======
anandkulkarni
The most interesting suggestion, to me:

"However, there is something else we can do. It is more radical, but also more
useful. Rather than letting people only evaluate papers, why not give them a
chance to participate and improve them as well? Put all your papers on github
and let others discuss them, open issues, fork them, improve them, and send
you corrections. Does it sound crazy? Of course it does, open source also
sounded crazy when Richard Stallman announced his manifesto.

Let us be honest, who is going to steal your LaTeX source code? There are much
more valuable things to be stolen. If you are tenured professor you can afford
to lead the way. Have your grad student teach you git and put your stuff
somewhere publicly. Do not be afraid, they tenured you to do such things."

This is a fascinating idea. I'm curious. If we did this (say, with an upcoming
technology paper), would anyone want to contribute?

~~~
kleiba
_open source also sounded crazy when Richard Stallman announced his
manifesto._

rms: "Aaaaaaaaaaaaaarrrrrrrrrrrrggggggggghhhhhhhhhhhhhhhhhh"

(Background: [http://www.gnu.org/philosophy/open-source-misses-the-
point.h...](http://www.gnu.org/philosophy/open-source-misses-the-point.html))

~~~
AlexanderDhoore
Richard Stallman still sounds crazy. But open source software has gotten
credibility because it's very good. Linus Torvalds had more to do with the
acceptance of open source than Richard Stallman.

PS: I hate the stupid fights over words: "Gnu/Linux", "Free software"... It's
called "Linux" and it's called "open source software". Now get off my lawn.

~~~
easytiger
> Richard Stallman still sounds crazy.

He doesn't sound crazy he is just very eccentric as a individual. And he has
an "extremist" position, some would say. IMHO we need someone like that to
keep us honest. Remember all the years people like Microsoft put actually
money into discrediting FOSS? Would a wishy washy attitude have done much good
then? Diplomacy doesn't work worth a damn when your enemy wants to destroy you
by any means possible, be it by embracing you or extinguishing you

~~~
slacka
His extreme positions sure sounded crazy to me. Like "I refuse to have a cell
phone because they are tracking and surveillance devices... many can be
remotely converted into listening devices."

After this NSA scandal broke, I feel I was a little quick to judge him. I'm
not going to give up my cellphone, but I've already quit using FB and have
started using more digital privacy tools like OTR in pidgin.

------
jere
Another post that actually loaded for me:
[http://homotopytypetheory.org/2013/06/20/the-hott-
book/](http://homotopytypetheory.org/2013/06/20/the-hott-book/)

[incidentally, it's the _official_ post announcing the book]

~~~
jacoblyles
I like this blog post better. It goes more into the radical innovation (for
academia) of the authors' process:

"But more importantly, the spirit of collaboration that pervaded our group at
the Institute for Advanced Study was truly amazing. We did not fragment. We
talked, shared ideas, explained things to each other, and completely forgot
who did what (so much in fact that we had to put some effort into
reconstruction of history lest it be forgotten forever). The result was a
substantial increase in productivity. There is a lesson to be learned here
(...), namely that mathematicians benefit from being a little less possessive
about their ideas and results. I know, I know, academic careers depend on
proper credit being given and so on, but really those are just the
idiosyncrasies of our time. If we can get mathematicians to share half-baked
ideas, not to worry who contributed what to a paper, or even who the authors
are, then we will reach a new and unimagined level of productivity. Progress
is not made by those who break rules."

"Truly open research habitats cannot be obstructed by copyright, profit-
grabbing publishers, patents, commercial secrets, and funding schemes that are
based on faulty achievement metrics. Unfortunately we are all caught up in a
system which suffers from all of these evils. But we made a small step in the
right direction by making the book source code freely available under a
permissive Creative Commons license. Anyone can take the book and modify it,
send us improvements and corrections, translate it, or even sell it without
giving us any money. (If you twitched a little bit when you read that sentence
then the system has gotten to you.)"

(borrowing the google cache link from below:
[https://webcache.googleusercontent.com/search?strip=1&q=cach...](https://webcache.googleusercontent.com/search?strip=1&q=cache:http%3A%2F%2Fmath.andrej.com%2F2013%2F06%2F20%2Fthe-
hott-book%2F))

~~~
jere
That seems like quite a contrast from Mochizuki.

~~~
NerdShame
Yeah... Bummer....

------
susi22
Some direct links:

[https://github.com/HoTT/book](https://github.com/HoTT/book)

[http://hottheory.files.wordpress.com/2013/03/hott-
online.pdf](http://hottheory.files.wordpress.com/2013/03/hott-online.pdf)

[http://hottheory.files.wordpress.com/2013/03/hott-
ebook.pdf](http://hottheory.files.wordpress.com/2013/03/hott-ebook.pdf)

First commit in Nov '12\. Most work seems to be have been done since Jan/Feb
'13:

[https://github.com/HoTT/book/graphs/commit-
activity](https://github.com/HoTT/book/graphs/commit-activity)

------
anigbrowl
Quibble: I downloaded the pdf, which defaults to a file called 'hott-
online.pdf'. Why not Homotopy Type Theory - 1st Edition.pdf'? I download a
_lot_ of pdfs (mainly because of being a law nerd), and I am sick to the back
teeth of having to rename virtually everything that I download so that I'll be
able to find the filename again later. I do use Mendeley to keep my documents
more-or-less organized, but what have people got against human-readable
filenames? Really I ought to be able to get semantic metadata for everything I
download.

As for the work itself, great stuff, I look forward to reading it, or at least
dipping into it (not a mathematician).

~~~
bloaf
Zotero has a feature which will attempt to read metadata from a PDF and create
a bibliographic reference for the PDF.

It also has a feature which allows you to rename the PDF based on the
bibliographic reference it creates.

Using those two together has been a really easy way to earn brownie points
with my professor boss.

~~~
tmzt
A similar application exists for Gnome, called Referencer
([https://launchpad.net/referencer](https://launchpad.net/referencer)). It
keeps a library of PDF files and can extract metadata such as title and DOI.

------
csense
Someone should make an effort to market Git to mathematicians (and academics
and scientists in fields where Git exists).

This article is a start, but it would probably be stronger if the author had a
nuts-and-bolts tutorial about how to use Git from the point of view of someone
whose use case involves LaTeX markup rather than source code.

~~~
acadien
Honest question: what is the advantage of Git over something like Dropbox or
remote centralized storage accessed via ssh? The only possible answer I can
think of is you get a revision history, but this doesn't seem terribly useful.

If you could provide a use case to demonstrate how Git+latex is a winner, I'd
genuinely appreciate it!

Edit: As soon as I submitted this it occurred to me that for collaborative
editing Git is the obvious choice.

~~~
cocoflunchy
I think the most important difference is conflict resolution. If you modify a
file on DropBox and save it while someone else still has it opened, you're
going to end up with two files, one named youFileName (conflicted copy of
someone 06/20/13).tex and the original. Not only does Git allow you to see and
fix the conflicts when you merge, it does it automatically most of the time,
which is a huge advantage.

~~~
mjn
I haven't found git to work much differently in practice, at least with papers
(I haven't written a book in it). You will end up with way too many conflicts
unless you basically "lock" sections through either a software mechanism or
agreement, because edits often touch or reorder many paragraphs. A
copyediting/wording pass will typically touch _every_ paragraph, for example,
and these are more frequent in writing than refactoring or variable-renaming
passes are in coding.

You can _somewhat_ improve the situation if you adopt a somewhat weird source-
formatting policy, where you write each sentence on one separate long-ish
line, rather than flowing by paragraph. Then you will be able to automatically
merge as long as nobody has made an edit or move that touches the same
sentence, giving you better merge granularity. But even then conflicts happen
pretty often, and few people like this style of formatting (maybe it'd work
better with tool support).

For a book this might work better, though, because I assume you'd be making
less frequent edits, and people would less often be working at the same time.

~~~
jessriedel
Note that in principle it's probably better to change your diff software to
recognize sentences than to change how you write your latex.

~~~
nickzoic
Sure, but in practice, starting each sentence on a new line isn't difficult
and works great with standard 'diff'. I actually quite like it for
proofreading, since fragments and run-on sentences jump out at you.

------
mkehrt
Looks like I'm in the minority for being mostly excited about a solid book on
homotopy type theory!

~~~
ek
To be fair, this is a community of mostly non-mathematicians, most of whom
will probably have no use for this work. But yeah, certainly that's the real
"big deal" here.

~~~
guelo
Well, homotopy type theory is in the same general area of study as the type
theory studied in computer science.

------
kryptiskt
So it's basically Bourbaki with modern tools.

~~~
Someone
For those who don't know about Bourbaki,
[http://en.wikipedia.org/wiki/Nicolas_Bourbaki](http://en.wikipedia.org/wiki/Nicolas_Bourbaki):

 _" Nicolas Bourbaki is the collective pseudonym under which a group of
(mainly French) 20th-century mathematicians wrote a series of books presenting
an exposition of modern advanced mathematics, beginning in 1935."_

------
kryten
Even better: _One surgeon_ wrote a mathematics book in a decade in Microsoft
Word!

It's better than anything I've read from any mathematician. They seem to
forget that people don't know what they are talking about to start with.

[http://www.amazon.com/dp/039304002X](http://www.amazon.com/dp/039304002X)

~~~
anigbrowl
I found this new book surprisingly readable, but agree with your general
criticism - I hope others will be inspired by this project to do more
elementary open-source affordable books aimed at a more general audience.
Imagine if kids could afford to buy their own maths books instead of having
them dispensed by the school district with all the corruption that entails.

I quite like this book that you linked, BTW.

------
cocoflunchy
I wonder if GitHub are planning to add LaTeX files compilation any time soon.
It would be amazing to be able to see diffs on a generated output rather than
source code.

~~~
adrianN
You can roll your own using latex-diff. It comes eg. with TexLive and has some
(limited) built-in support for different versioning systems.

~~~
twog
We are rolling out support for Latex & Git with our new latex editor in the
next two weeks. Sneak peek here:
[http://cl.ly/image/3u3Z3f40382K](http://cl.ly/image/3u3Z3f40382K)

Drop me a line toni@banyan.co if you want early access.

------
tel
Shamelessly copied [1] from tactics (go upvote him there) from the Haskell
subreddit in case it's of interest to anyone here:

"Homotopy Type Theory is a recent advancement in the area of dependent types.
Think Agda, Coq, Idris-style languages if you're familiar with them...
otherwise think GADTs on supersteroids gone berserk.

Dependent types allow you to be extremely precise with your data types. You
can talk about not just lists or lists of strings.... but also lists of
strings of length n (for some natural number n). In the far future, it may be
the key to getting fast-as-C performance (think removing bounds checking on
arrays completely safely) and software verified correctness of a program
simultaneously.

This isn't software, though. This is a math book. There was a realization a
few years ago that equality types (the ability to express x = y in the type
system) gave rise to a mathematical structure called a weak ω-groupoid which
was giving homotopy and category theorists a hard time. Homotopy Type Theory
(HoTT) is a typed lambda calculus that makes studying these things easier. In
fact, every data type corresponds to (a very boring) weak ω-groupoid.

What this allows mathematicians to do, though, is to create new interesting
data types corresponding to more interesting examples of these things. You get
a data type for a Circle, or a Sphere, or a Torus. You can define functions
between them via recursion the same way you'd define a function on lists or
trees. These new fancy data types are called higher inductive types, and while
they don't (currently) have any use for programmers, they pay the meager
salaries of long beards in the ivory tower.

The other novelty of the theory might be more interesting for programmers some
day (at least if you believe dependent types will save the world).

A guy named Voevodsky proposed a new axiom called the Univalence Axiom that
makes HoTT a substatial alternative to the former foundations of mathematics.
The Univalence Axiom formalizes a practice mathematicans had been using for a
long time, (despite its technical incompatibility with ZFC). tl;dr, the
Univalence Axiom says that if two data types are isomorphic then they are
equal.

Eventually, this axiom may allow a programmer to do some neat things. For
instance, a programmer could write two versions of a program -- a naive
version and a "fast" version. (Currently, all programmers only write the
"fast" version). If you want to formally prove your "fast" program doesn't
suck, it's nasty. However, it might even be humanly possible to prove some
correctness about the naive version. The Univalence Axiom (once given
"computational semantics") may be able to let us prove things about the dumb,
slow, reference implementation of a program or library, then transfer that
proof of correctness to the fast one.

To give a small example for anyone familiar with a dependently-typed language,
you may notice that in Coq and Agda and whatever, the first data type you
learn (and one you stick with for a long time) are the unary natural numbers.
That is, you have 0, and 0+1, and 0+1+1, and 0+1+1+1, etc.. We use unary
numbers because they are reaaaally easy to prove stuff about. But as any
programmer might guess, actually doing anything with them is suicide. The
Univalence Axiom would allow us to keep on working with unary numbers for all
of our proofs, but then swap them out for actual, honest-to-God 2's complement
representations when it comes time to run the program.

So there's that.

Not everyone cares about software correctness, though. But if you're sold on
category theory, here's a neat trick. You probably know that equality becomes
a hairy, nasty thing in category theory. Two objects can be equal or
isomorphic. If you move onto 2-categories, two categories can be equal,
isomorphic, or equivalent! And for higher category theory, you end up with
even more notions of equaltiy, isomorphism, equivalence, etc, etc.

In a univalent foundation of category theory (which appears in the later
chapters of this book), we see that all of these notions of equality collapse
down into just one. If two things are isomorphic, then they are, by
definition, equal to each other. You no longer have to worry about that stupid
squiggle over your equals signs, because univalence means that every
construction must respect the structure of your data. There are no leaky
abstractions in your data types!"

[1]
[http://www.reddit.com/r/haskell/comments/1gr3uw/the_homotopy...](http://www.reddit.com/r/haskell/comments/1gr3uw/the_homotopy_type_theory_book_is_now_available/)

------
broken_symlink
I guess no one on here has heard of the stacks project. Its over 3800 pages
and I counted 93 contributors on the first page. Also, the LaTeX source is
freely available on github. [https://github.com/stacks/stacks-
project](https://github.com/stacks/stacks-project)

------
sp332
Google cache:
[https://webcache.googleusercontent.com/search?strip=1&q=cach...](https://webcache.googleusercontent.com/search?strip=1&q=cache:http%3A%2F%2Fmath.andrej.com%2F2013%2F06%2F20%2Fthe-
hott-book%2F)

------
pseut
So, obviously I don't want to sound ungrateful and I'm impressed that they put
this together and made it freely available. I'm not sure that creative commons
is the right license though, since it doesn't require the LaTeX source to be
redistributed if the pdf is (unlike the GPL or the GNU Free Documentation
License). (They're providing the source on GitHub, but if interest in the
project trails off and someone else forks it, the person forking is under no
obligation to share the modified LaTeX).

I can think of many sets of notes on the MIT OCW site that are CC, which I'd
like to be able to modify and share but can't because the source is missing.

Anyone else have thoughts on the right license for this sort of project?

------
a-nikolaev
Btw, the blog author, Andrej Bauer, is an amazing guy.

I was really fascinated by some of his older blog publications (and I was only
scratching the surface):

[http://math.andrej.com/2007/09/28/seemingly-impossible-
funct...](http://math.andrej.com/2007/09/28/seemingly-impossible-functional-
programs/) (by Martin Escardo, an article about a Haskell program doing
exhaustive search over the “Cantor space” of infinite sequences)

[http://math.andrej.com/eff/](http://math.andrej.com/eff/) (Language Eff, a
functional programming language based on algebraic effects and their
handlers.) My understanding is that in this language all effects and
evaluation order are explicit; effects and pure functions are easily and
explicitly composable. Something like monads but more advanced. (My
interpretation is probably wrong!)

[http://andrej.com/plzoo/](http://andrej.com/plzoo/) (The Programming Language
Zoo). A number of mini languages which demonstrate various techniques in
design and implementation of programming languages. (calculator, mini-ML,
mini-Haskell, mini-Prolog, etc)

------
cinquemb
If I were to go back to college, I'd probably try to get all my engineering
friends to use git for projects to the point of getting their annoyance. Even
now when I ask them why they don't use github to do something that would make
their job easier, I get blank stares… so is life I suppose.

~~~
wisty
I guess it's partly resistance to change. If you tried to follow every
recommendation a friend gave you, you'd go mad.

But sometimes it's hard to encourage VC simply because it shifts the balance
of power. You can't hold anyone hostage with "your" code. Mistakes are
traceable. You can't waste as much time in meetings, discussing things like
project status and interfaces. Silos exist for a reason, it's just not a good
reason.

------
acjohnson55
I'd love a good epub or mobi version of this, if anyone's got one

------
garysweaver
> NOTE: my blog is being slashdotted by Hacker News

:) I think we need a new verb here.

~~~
charlieflowers
ycombinated?

~~~
tel
pointfixed, recursed

------
tel
For anyone interested, with a little background in Coq or Agda it feels like
(from what I've read so far) this book is pretty approachable by
mathematicians and computer scientists alike.

------
jdn
One of the authors listed, Thorsten Altenkirch, teaches quite a few second
year Computer Science modules at Nottingham. He's absolutely mad. Here is a
selection of some of his best moments:
[http://www.cs.nott.ac.uk/~txa/thorsten.html](http://www.cs.nott.ac.uk/~txa/thorsten.html).

Note that this hasn't been updated in 13 years. The gold that has been lost
since then truly saddens me.

------
twog
This is awesome! Great use of git & latex! This is the exact problem we are
tackling at my startup, Banyan, with our new latex platform
[http://cl.ly/image/3u3Z3f40382K](http://cl.ly/image/3u3Z3f40382K)

------
Dove
Bourbaki!

~~~
otoburb
A more forthcoming Bourbaki since all the HoTT authors are publicly listed. No
conjectures needed.

~~~
keithpeter
Less opportunity for guessing games and amateur sleuthing though. Seriously
Bourbaki was the first thing that came into my head when reading the blog post
about the book linked to in these comments.

------
johnchristopher
I am going to refer to the latex code for my future assignments in electronics
and mathematics classes.

Really nice to have the source.

------
charlieflowers
Off topic -- The title of the hacker news submission made me chuckle. It
reminds me the old software principle that "9 women can't have a baby in one
month."

------
jacoblyles
git treats every paragraph as a single line. That seems like an annoying
default for english text.

~~~
jdpage
The issue is less that git treats every paragraph as a single line, and more
that git treats every line as a single line and they've put the paragraphs
onto one line. It turns out that LaTeX actually looks for a double line break
between paragraphs, and you can insert single line breaks into paragraphs
without having them appear in the output.

So what you actually want to do is put a line break after every sentence and
possibly after every clause, so that in the LaTeX source diffs work sanely,
while the output looks as normal.

~~~
Stwerp
I'd argue that what you _want_ to do is write English language as you're
accustomed. Paragraphs with multiple sentence in a single line.

What you'd like Git (or whatever your diff'ing program) to do is parse the
individual sentences as individual lines for version control.

To each his own though. I have trained myself to start putting LaTeX sentences
on separate lines to accomodate for this, but don't think that this is the
best solution.

