Git underpins most software projects around the world. It is a technology that has shaped the world, yet it is starting to show its age. In a world where dozens of agents can be launched very quickly, the way Git itself works no longer seems like a perfect fit.
Will I be the one to come up with its replacement? Probably not. But this project gives me a chance to dive into something far more complex than it first appears! This alternative has several key distinguishing features:
- Extensible. Rather than supporting a fixed, limited number of file types, “Lenses” let anyone add support for a new type. Whether it’s how to display it or how to handle conflicts and merges, anything is possible!
- In memory. Creating or switching branches should be instant. And it must be possible to work on several branches at once.
- “Commits” should not necessarily have to be named. Instead, synchronisation is automatic and happens live, and “milestones” can be placed at any point.
- Child branches automatically receive changes from their parent branch.
- Conflicts can exist at any given moment. They are synchronised and can be resolved later.
Not everything in this project is finished yet, but I’m working on both the local side and the server so that – I hope – I can use it for my future projects one day!