Github is a website which provides "version control" in the cloud. Think of version control as being like "
track changes" in Microsoft Word, only
much more powerful and versatile.
In simple terms, you can put content in a Github Repo and — if it's in Markdown format, which Learn 3D is — it will render as normal readable text.
Here's an example (I just open-sourced the entire book — you're welcome):
https://github.com/tonioloewald/Learn-3D-with-Cheetah-3D/blob/master/docs/10.7_UV_Mapping.md
Now, suppose you found a problem in this section. You could actually fix it yourself!
- If you don't have a Github account, create one (the accounts are free).
- Now log in and go to the page. You can click on the pencil icon (top-right) to edit it right there.
- When you're done you can submit your changes as a "Pull Request". In effect you're saying, "I just made a new version of your book that's better than your version. If you like you can PULL my changes and add them to yours."
What's really cool is that anyone can do this, and more than one "pull request" can be in flight at a time. There's even mechanisms for resolving overlapping and conflicting changes.
But it the changes need to be approved. Anyone can be made an "approver" and the repo can even be transferred from owner to owner OR
forked. (E.g. if I get hit by a bus, or you think I'm a jerk, you can make your own "fork" of the book and control it.) That's the benefit of open source. The downside is that no-one needs to pay me to get the book. Oh well!
If you remember the time when we tried a Wiki and it was quickly defaced by spammers and porn sites, the great thing about Github as that
any given version of a repo is owned by someone, but if you despise the owner you can clone the repo and fix it yourself. Also,
Markdown is a much nicer language for writing documents that Wiki's markup language.
The repo includes all the source necessary to build the software (web app) version of the book. So you could clone the entire thing and host it on your own site. Martin could make it a tab of the Cheetah 3D website if he wanted to. (The automatic indexing system I built into it is pretty good, but it only indexes headings down to a certain level — I had plans to write a free text retrieval engine but only so many hours in a day.)
Aside
If you're interested, the first version of the book was written using
Pages — which I love — but its ePub export had a massive bug which caused images to be omitted beyond a certain point. I ended up having to completely move the book to
VoodooPad to fix the problem as quickly as possible, and contacting every single person who had paid for the book and getting them fixed copies (luckily not many copies had sold yet). VoodooPad had its own problems and produced ugly output, so I moved to
Ulysses for 2nd/3rd Edition. Then Ulysses switched to a subscription model while not fixing glaring issues that had been annoying me for years (e.g. still no decent table support). Eventually, I wrote
bookify to convert the exported output from Ulysses and convert it into a directory full of images and markdown files (one per major subheading) along with a
documentation.json file in the same basic format as bindinator's documentation.json file. This allowed me to use a lightly customized version of
bindinator's documentation component to host the book as a website.
Along the way, I've also tried going back to Pages (which eventually fixed the bug that drove me away), tried Microsoft Word, and also dabbled with iBooks Author. While writing Learn 3D was fun and rewarding, and it sold FAR more copies than I ever expected, it's a labor of love and I really don't have time to do it justice.