of computer software worked on by tens of thousands of people around the globe. These changes need to be collected, tracked, merged, and combined into one canonical piece of software. With this kind of model, a Distributed Version Control System (DVCS) is needed. I’ll explain what this means later. Originally, a tool called BitKeeper was used, but it wasn’t free enough for everyone, and there was a call from the community to replace it.
to corruption •Fast •Easy to Automate •Fast Wednesday, July 13, 2011 Distributed - you don’t need network access to work, and there’s no central server that has to know about every operation Fast - this means the network doesn’t slow you down, and working over modem isn’t frustrating Support patches by email - you can connect, blast out patches, take in patches, and disconnect Fast - this means that you’re only limited by your mail server, not somebody’s git server hosted on their cable modem Resistant to corruption - each commit refers to the entire history of ﬁles and commits that it depends on with a cryptographic hash Fast - this also helps the storage and networking parts Easy to automate - git was originally more of a “version control construction kit” than a big system; it was useful within a week of when it was ﬁrst started, and has got consistently better as it got wrapped up in more automation Fast - the simple parts are still simple and fast
the GitHub service. GitHub’s original tagline was “Git Hosting: no longer a pain in the ass;” an important distinction from all the other ways to host Git in 2008. The three founders of Git used a short closed beta to get some buzz in the Ruby on Rails community, provide free hosting for open-source projects, and paid hosting for closed-source projects.
•Network protocols •A set of small tools Wednesday, July 13, 2011 A ﬁlesystem where each ﬁle is named after what’s in them; this means that objects with different names but the same contents are only stored once Git doesn’t actually store “sets of changes” in a useful fashion; it stores snapshots since this makes tools easier to write. The storage/networking backend compresses these snapshots into changesets, but it’s not important to understand this at all. Git has three simple network protocols; you’ll only use one or two of them on a daily basis. Git is a bunch of small tools; “plumbing” tools are things you don’t care about unless you are a serious repo janitor, “porcelain” tools are how you actually manipulate the repository, and GUI tools are generally a friendly face for the porcelain.
cheap and that's exactly how you want to start out. Draw stuff. Scrawl stuff. Boxes, circles, lines. Get your ideas out of your head and onto paper. The goal at this point should be to convert concepts into rough interface designs. This step is all about experimentation. There are no wrong answers. 37signals, “Getting Real” Chapter 6, “From Idea to Implementation” Wednesday, July 13, 2011