class: center, middle # git storytime --- # You've seen git .center[![:width 90%](git-terminal.png)] --- # But what is git? - Where did git come from? - What is the meaning of git? - Are we git in the universe? - Is there a higher git? - How do I become one with git? .center[![:width 50%](sistine.jpg)] --- # But what is git? - Where did git come from? ![](archaelogy.jpg) --- # Dark Ages ![:width 100%](dark-1.png) --- # Dark Ages ![:width 100%](dark-2.png) --- # Dark Ages ![:width 100%](dark-3.png) ??? pic from Windows. floppy disks. picture of the Internet. file shares. new document 1 - Dark Ages - copy a file, all manual - not a lot of collaboration. single person or very small teams --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
--- # diff .center[![:width 90%](diff-2.png)] ??? - 1974 - Hunt–McIlroy algorithm for longest common subsequence - space-efficient storage of revisions --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
--- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - first generation of version control - 1982: RCS - more collaboration, more formal way to store revisions - manage versions of a file by storing series of diffs - limited to a single file --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - 1986: CVS - script on top of RCS to manage revisions of multiple files in a single _changeset_; operation called a _commit_ - introduced notion of a changeset - https://groups.google.com/forum/message/raw?msg=mod.sources/eqze_AHbIK0/uE90wCq3ui4J --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - early 90s greatest invention? --- ![:width 100%](internet.png) --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - newfangled personal computer - didn't have to download all the source code to your 500MB hard drive - .1995. CVS 1.5 - adds client/server - clients only store the current check out. 500MB of hard drive - http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/NEWS?view=markup&revision=1.2 - Remote implementation. This is very helpful when collaborating on a project with someone across a wide-area network. This release can also be used locally, like other CVS versions, if you have no need for remote access. - reasonably good for development by centralized teams --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - .1999. SourceForge - one of the first "forge" development hub - free for open source projects - open source existed on the fringes, first open source revival --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - .2004. Subversion v1 - CVS "done right" --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
--- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
--- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - 1970s. Unix - OS created by Bell Labs - commercially successful --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - .1983. GNU - free OS - no kernel --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - .1991. Linux released - Linus Torvalds, university student didn't like existing OS licensing - invited community --- # It's a hit! .center[![](linus.jpg)] --- # It's a hit!
😅
.center[![](linus.jpg)]
??? # Linus wasn't scaling - Applying everyone's changes took hours - Kernel release took a full year - Patches being accidentally dropped - Community concerned Linus would burnout - Linus - bottleneck for any change to go into the kernel - needs to do a LOT of merges --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - BitKeeper gets free advertising from Linux - Linux gets to use BitKeeper for free, even though it's not open source - each developer workstation has its own full copy of the repository - FAST, especially merges - ~similar time first DVCS - changeset-based - no file locking - non-linear history - most operations are local - full repository locally - optimized for merges - paradigm shifts --- # L-pocalypse - BitKeeper revokes its license from Linux - BitKeeper is closed source - Dev tried to reverse engineer its protocol - Linux development stops indefinitely .center[![:width 60%](l-shutdown.jpg)] .small[[LWN: The kernel and BitKeeper part ways](https://lwn.net/Articles/130746/)] ??? - 2005 April. BitKeeper falling out - like L train shutdown - BitKeeper was commercial and closed source, but offered a free license. Reverse engineering lost favor with vendor - https://lwn.net/Articles/130746/ --- # jk!
.center[![:width 50%](averted.jpg)] ??? - cuomo "psych!" - https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290 - http://lkml.iu.edu/hypermail/linux/kernel/0504.0/2022.html - why named git? --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - Git 1.5 - first usable release - Junio Hamano - https://lwn.net/Articles/222086/ --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
??? - .2009. GitHub - free forge for open source software - culture shift toward mainstream open source --- # TODO write an ending --- class: middle
diff
➡️
Unix
RCS
CVS
❓
1970
1980
1990
2000
2010
--- # TODO --- - VCS intro - pixelapse analogy of version control? - or later stage VCS: communication, collaboration. eng hub, build and deployment - understand changes over time - facilitate communication and sharing - hub of software development ecosystem - plumbing & porcelain - everything else that has been built on top of git - reflect on open source - evolution - perfect is the enemy of good - inconsistencies galore - porcelains abandoned - nothing is precious - unusual perspective on git - share a passion. what are you passionate about? - know your tools - learn from its experience - dialog of innovation - design tradeoffs - complex systems evolve from simple solution increments - successful despite terrible ux --- class: center, middle # My Awesome Presentation ??? Notes for the _first_ slide! --- # Agenda 1. Introduction 2. Deep-dive 3. ... [NOTE]: Note that you need active internet connection to access remark.js script file --- # Introduction