slides.org
#+title: Git without GitHub
#+subtitle: A smol workshop
#+author: Jez Cope
#+date: 3 September 2025
#+options: num:t timestamp:nil toc:nil
#+options: reveal_history:t
#+reveal_root: reveal.js-4.6.0
#+reveal_theme: dracula
#+reveal_trans: fade
#+reveal_extra_css: custom.css
#+export_file_name: index.html
#+exclude_tags: noexport draft
#+columns: %40ITEM %Duration
* Overview
:PROPERTIES:
:CUSTOM_ID: overview
:Duration: 5 minutes
:END:
1. Why bother with alternatives
2. What's possible
3. Strategies
** Please note...
This workshop is in *beta*!
Any and all feedback welcome (but be kind 😅)
# ** Ground rules
# :PROPERTIES:
# :CUSTOM_ID: ground-rules
# :END:
#+reveal:split
We are /not/ here to bash anyone's choice of tool, workflow, knowledge, experience, etc
We are all learning: /please be generous & curious/
** Recurse Center's 4 rules
:PROPERTIES:
:CUSTOM_ID: recurse-centers-4-rules
:END:
1. No well-actually's
2. No feigned surprise
3. No backseat driving
4. No subtle -isms
[[https://www.recurse.com/social-rules]]
** Icebreaker
:PROPERTIES:
:Duration: 10 minutes
:END:
Your name
Your favourite comfort food
One thing you hope to learn today
* Why consider alternatives to GitHub?
** Monocultures are fragile
** Git is distributed by design
** It's good to have backup options
* A brief (and probably wrong) history of (mostly) open source version control
#+reveal: split
#+attr_html: :style width: 70%;
[[file:PCR-896.jpg]]
#+reveal: split
#+attr_html: :style width: 70%;
[[file:PCR-896-routing.jpg]]
#+reveal: split
#+attr_html: :style width: 70%;
[[file:First_Computer_Bug_1945.jpg]]
#+reveal: split
#+attr_html: :style width: 70%;
[[file:SAR-L-1D-03.jpg]]
#+reveal: split
Images: [[https://www.ibiblio.org/apollo/links2.html#PcrsPcns&gsc.tab=0][Virtual AGC Document Library]]/[[https://commons.wikimedia.org/wiki/File:First_Computer_Bug,_1945.jpg][Wikimedia]]
** In the beginning there was Unix
Shared access to files
But what if *two people*\\
edit the *same file*\\
at the *same time*...
** 1982: Revision Control System (RCS)
Works through file locking:\\
check out -> edit -> check in
Per-file history (no security)
No concept of a "repository"
** 1986: Concurrent Version System (CVS)
A front-end to RCS
Server/client model
Repositories!
** 2000: Subversion
Many improvements on CVS
Atomic commits
Branch and directory tracking
HTTP/WebDAV support
** Mid-2000s: The Cambrian Explosion!
Distributed version control as we know it
Darcs released in 2003!\\
Bazaar, Git, Mercurial in 2005\\
Fossil in 2006
Every working copy is a first-class repository
Push from/pull to multiple repositories
Work offline & sync changes later
** Forges
#+attr_reveal: :frag (fade)
- Sourceforge (CVS, later Subversion, Bazaar, Mercurial, Git)
- GitHub, Gitorious, GitLab, Bitbucket and many more (during the Cambrian Explosion)
- Network effects kick in, GitHub "wins"
- Microsoft purchases GitHub, invests heavily in differentiating features (i.e. vendor lock-in)
- /...time passes.../
- GitHub marketed as "the world’s most widely adopted AI-powered developer platform" 💀
* Your experiences
*5 minutes* in breakout rooms
- What do you use GitHub for?
- If you /don't/ use it: what do you use instead?
- What features do you use?
- What would you miss most/least if it wasn't there?
#+reveal: split data-background-iframe="https://wall.sli.do/event/e7o7sMfEg4X3wsL58HQD2j"
* Strategies
** Stick with it... for now
** Replace wholesale
** Replace piecemeal
** Augment
** Back to basics
** All of the above?
- Stick with it... for now
- Replace wholesale
- Replace piecemeal
- Augment
- Back to basics
* Intermission
* Options
** Before you start: make backups
- ~git clone --mirror~
- [[https://docs.github.com/en/repositories/archiving-a-github-repository/backing-up-a-repository][GitHub API or CLI]]
- [[https://pypi.org/project/github-backup/][ ~python-github-backup~ script]]
- Zenodo & figshare integrations
** Alternative forges
- GitLab: https://gitlab.com
- Bitbucket: https://bitbucket.org
- Codeberg: https://codeberg.org
- [[https://codeberg.org/forgejo-contrib/delightful-forgejo#public-instances][Many other instances]] available
- Sourcehut: https://sr.ht
- Azure DevOps
** Serverless or self-hosted
- A shared folder!: Access via network share or SSH
- Patches by email: ~git send-email~
- Static web site: Use ~git update-server-info~ & any web server
- Gitolite: Minimal ssh-based setup
- Radicle: Peer to peer
- Forgejo, Gitea, Gogs, Kallithea: Full self-hostable web forges
- Soft Serve: TUI-style minimalist server
** Individual pieces
N.B. these lists are *not* authoritative or complete
*** Issue tracking
- Minimal
- Mailing lists
- In-repository management e.g. trackdown
- Open source
- Bugzilla
- Trac
- Request Tracker
- Redmine
- Commercial
- Jira
- Trello
*** Code review
- Minimal
- Mailing lists
- Open source
- Gerrit
- Commercial
- /Sooooo many.../
*** Continuous Integration/Deployment
- Minimal
- Git ~pre-commit~ or ~post-commit~ hooks
- Open source
- Woodpecker CI
- Circle CI
- Jenkins
- Commercial
- Travis CI
- Netlify
- Honourable mention
- Radicle CI
*** Static web hosting
- Minimal
- Your internet service provider
- Your employer/institution
- Open source
- Apache httpd
- nginx
- lighttpd
- Commercial
- /Sooooo many.../
*** Project management
- Minimal
- Plain text files
- Taskjuggler, todo.txt, org-mode
- Whiteboard & sticky notes
- Open source
- Launchpad
- Redmine
- Commercial
- /Sooooo many.../
*** Wiki
- Minimal
- Text files in version control
- Tiddlywiki
- Open source
- Mediawiki
- DokuWiki
- MoinMoin
- Commercial
- /Sooooo many.../
* Discussion
10 minutes in breakout rooms
#+reveal: split data-background-iframe="https://app.sli.do/event/e7o7sMfEg4X3wsL58HQD2j/embed/polls/4be1e96e-a54a-415a-8d5d-bba9bdcc4b0a"
* A final thought
- *Easygit:* Alternative frontend to git
- *Mercurial:* Python-based, very stable and flexible, can clone/pull/push git repositories
- *Breezy:* Python-based, successor to Bazaar, can work directly on git working copies
- *Fossil:* Integrates many forge-features directly
- *Darcs:* Haskell-based, stores patches instead of snapshots
- *Pijul:* Rust-based, under development, also patch-focused
#+reveal: split data-background-iframe="https://wall.sli.do/event/e7o7sMfEg4X3wsL58HQD2j/embed/polls/41b59695-f671-4173-86e1-9af125016cc5"