Posted by andsoitis 1 day ago
FWIW this is how most projects work anyway. And IMO Subversion is still the best VCS when you have a lot of large binaries (the various extensions to Git like git-lfs are just hacks that graft a separate half-baked version control system to it and add further complexity to an already annoyingly complex system). I remember working at a gamedev company in early 2010s and out of curiosity i tried to put everything in the 250GB perforce workspace in a git repository only for git to choke and die before it managed to do anything. In comparison, ~5-6 years earlier i worked briefly at a game porting studio where every single game they had ported (which i'm almost certain went all the way back to the 90s), including all data and source (and these were AAA games, not tiny indie games), were into a single Subversion server.
Unfortunately Subversion lost the VCS fashion wars and nowadays it barely seems to have any development. I still use it for a few projects where i do have a lot of binary stuff, but most new things are in Git. I also have a bunch of stuff in Fossil (which also did handle binary files better than Git when i tested it years ago, though not as good as Subversion or P4) but nowadays i convert them to Git when i need to share because, well, pretty much everyone expects Git (and projects such as Codeberg and Forgejo make sharing and self-hosting easier).
Ironically the "fundamental issue" mentioned above was solved not too long ago with Subversion as nowadays you can have multiple "changelists" and each changelist is a full (hidden) SVN repository by itself, allowing you to do commits (as "shelving") and such locally and then push to remote when you're done. AFAIK changelists can also coexist (unlike Git where you can only work at one branch at each time). Unfortunately since Subversion is basically barely held together, only the command-line UI provides that functionality (at least in FLOSS clients) and even TortoiseSvn didn't seem to support it last time i checked.
but thing is, aren't coding agents tunned for git based workflows? many agents use git trees right?
so it's unlikely that any git alternative will pickup from here?
But who knows? Maybe it would lower the barrier instead. If switching to fossil is just one agent.md instruction away and it brings useful features with minimal effort, it might be an easier sell than without them.
After all, the new generation of programmers won't bother learning git anyway.
Though at some point I would have realized that Atlassian was the wrong fit for my needs as a single-dev, no-AI project and switched.
I wonder how the tag mechanism would perform if you just burned it with this content. I suspect that it would not perform well...
I doubt it's really that useful though - it would be difficult to make the filesystem mutable, which means anything that puts caches or build files in the tree (which is most things) wouldn't work.
I did a very quick search. First result: https://github.com/csutorasa/git-fuse
It’s probably my memory playing tricks and svn was indeed a short term endeavor.
A great article though!
Also a note about a specific bias from old-heads:
At the start things move much faster and changes are more impactful, but the start is ultimately much shorter than the rest of the lifecycle. That's why a lot of the stories you read about tech are about the early years (let's say 5-10 years, chronologically) and less so about the mature years (which can span 3+ decades, chronologically). So the early period has outsized visibility because it's cooler, I guess?
* * *
Using SCMs as an example:
SSCS - 1972. But at that point there was no internet and the number of computer users was minuscule. So SCCS is just a curiousity, a footnote, probably used by 0.000001% of Git users. So at this point for most practitioners SCMs basically don't exist.
RCS - 1982. See SCCS. SCMs still practically don't exist for most practitioners.
CVS - 1986. Now the internet is getting started and the number of computers in the world has increased by orders of magnitude. Even so, adoption of core development technologies like SCMs is slow and yes, it took CVS at least 10 years to become somewhat established. Even at this point, probably at least 50% of software developers still don't use SCMs (especially less professional ones). Visual Source Safe runs in parallel to CVS, with its own problems described in the article.
SVN - 2000. The internet is in full swing, computers are ubiquitous, things are really moving. It's super hard to evaluate how many developers still don't use SCMs, but the number is going down (maybe 30-40%?) and SVN is taking the world by storm. Even after the launch of Git in 2005, until at least 2009-2010, SVN had a solid shot at winning. It's tooling was much better, especially the GUIs, TortoiseSVN & co.
Git - 2005. Git is launched in roughly the same era as SVN, just towards the end. Once Github gets going it starts to take over the SCM scape, primarily from SVN, sometimes from CVS, Perforce, and also from non-SCM people.
So, if you look at the real dates implied above: CVS, SVN, Git are widely adopted in about a 10-12 year span (something like 1998-2000 to 2008-2010). Then we reach the current mature (monoculture?) stage where we're already at least 16 years in and it's quite likely this phase will last decades.
This story has happened for lots of tech. Many different PC OSes during the 1970-1980s, then basically only 3 since about 30 years - 1995 (Windows, MacOS, Linux).
Many CPU architectures during the 1970-1980s, then basically only 2 since about 30 years (x86, ARM - maaaaybe RISC-V).
More than technologies, what really evolved were the ideas on how to work and manage SCM systems. Things like atomic multi-file commits, using unified diffs, management by "patch queues" more than simply merging branches ad-hoc, and of course decentralized SCMs