Source Code Management - More than Just Git

In 2019 it is easy to think we “solved” source code management (SCM), that we have it all worked out. Personally my journey started with Visual SourceSafe (terrible) followed by CVS (still terrible). I moved a few companies on to Subversion (great - had atomic commits; what a revelation). In the meantime, Linus famously called everyone stupid for using Subversion so I checked out this “Git” thing he “named after himself.”

other than Git meme

Git brought with it a few great things: distributed version control and this super power to do things with branches and merging (in the past this was a bit terrifying).

Then GitHub happened, Bitbucket and so on (interestingly Bitbucket started as mercurial, a similar version control system) and the rest is history. The world settled on Git, or seemed to. Its distributed nature still built in, but for the mainstream, ignored as people centralized around services like GitHub.

There have been other movements in the meantime, monorepos and so on (Google famously built its own system for their massive monorepo scale called Piper).

Largely it seems: Git Is It.

Or is it?

On one hand it is interesting and powerful that as an industry we picked a tool which unlocked a bunch of productivity and patterns of usage, allowed skills to be portable across jobs and more. On the other hand, monocultures can be problematic if it means innovation stands still.

It is with interest I came across “Plastic SCM” a distributed (or centralized) “full stack” SCM tool (full stack in this sense means it isn’t just a command line like git) alternative. You can consume it with the git command line if that makes you more comfortable, but it does have some powerful differentiators. The biggest differentiator for me was the ability to deal with large files: with Git we lost that capability and people had to find external places to park large assets, which is fine, but sometimes annoying).

There is of course a plugin that provides Plastic SCM integration.

From Jordi, product marketing manager at Plastic SCM:

What happened to version control in the last 15 years?

What has happened with version control in the last years? I won’t go down memory lane, don’t worry. At Plastic we already made the walk down that road fairly visual with a short history of version control that you can find, download and, hopefully, print and hang in your kids bedroom.

It is often the case that commodities are overlooked. Git, for the good and the bad, made version control a commodity. Everyone, since then, took for granted that modern version control was Git. Git was pretty revolutionary, to be honest, by providing the structure to program distributed. Services built on top of them were equally successful, like GitHub or Gitlab.

The reality of modern-day software development is though not commoditized or normalized at all. As popular as distributed programming is, it is not the best solution in every case and it hides a myriad of different edge cases that should be addressed and even named differently than distributed software development.

You can read more about Plastic SCM (yes, it works with CloudBees!), learn about “mergebots” (I bet you can guess what they do!). I am also interested to see the next generation of SCM with things like semantic merging (i.e. where your SCM actually understands the meaning of your source code, not just as lines of text). Innovation is still happening here!

Additional resources