Git Is Not Revision Control

Sun 21 January 2018 by feld

Git has always rubbed me the wrong way. The ability to rewrite history and not tracking file renames are a few of the reasons it has turned me sour, not to mention the awful inconsistent UX as brilliantly mocked in Git Koans. I'm not objective enough to come up with a solid case against git as a revision control system which is why this FreeBSD developer email from phk resonated with me enough that I flagged it and re-read it many times over the last year.

There was an internal discussion about the possible merits of switching to git to increase user contributions. This was his brilliant response, published with his permission:

On Sun, Feb 26, 2017, at 14:59, Poul-Henning Kamp wrote:
It is fundamentally wrong to ask "SVN or Git ?"

SVN is obviously a Version Control System, it has all the classic
attributes of one, including such crucial elements as progressing
version number a definitive timeline and imutability.

Git is clearly not a VCS, and it has never tried to be one, and
people calling it one doesn't change that.

The absense of a progressing version number and lack of a definitive
timeline, not to mention all the many "unnatural acts" you can do
to a git repo are sufficient arguments to settle this point.

No, Git is something else, it is a colaboration tool.

Git is a tool which allows people and projects to manage, modify,
fork and merge the many different views, instances, variations and
modifications of a work in progress across barriers of distrust.

The crucial word there was "many different", which is the exact
opposite of what a VCS strives for.

A lot of the features Git provides, features which are what makes
it great as a colaboration tool, flies in the face or or directly
invalidates the guarantees you normally expect from a VCS, most
notably progression of time & version, immutability and consistency
of view.

But in many cases Git is an adequate substitute for a VCS, you just
have to augment it with an out-of-band definition of which tree is
the 'definitive', and settle who gets to define what 'a version'
means.  This is why github exists in the first place.

In FreeBSD we have insisted on "proper version control" from
day one, 23 years ago, and while it is a decision we should
revisit periodically, everytime it has come up, it has been
overwhelmingly confirmed as "the way we do things here".

And this this thread, which is far from our first on the subject,
fails to converge:  One side desires better colaboration tools and
the other side is not willing to give up good old-fashioned version
control to get it, both parties failing to realize that neither SVN
nor Git will ever be able to do both, because the requirements are
fundamentally different and in conflict with each other.

So the task at hand, if there still is one, is to ask how we can
make it easier to use Git as a colaboration tool for our committers
and down-stream users.


PS: A good place to start would be to "bless" the github mirror
and make sure the pull requests there get dealt with:

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@nospamplz           | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

I originally intended to cite specific points made in this email but honestly it's too good to not publish in its entirety. It's impossible to refute this line of reasoning in my opinion.

Book Review: Altered Carbon

Wed 06 December 2017 by feld

Title: Altered Carbon

Author: Morgan K. Richard

Takeshi Kovacs is brought to earth in a sleeve he doesn't own. His reputation precedes him, and he has been offered a reward for solving the murder of Laurens Bancroft which local authorities ruled a suicide...

This book explores some provocative aspects of …

read more

Book Review: Invasive

Sun 07 May 2017 by feld

Title: Invasive

Author: Chuck Wendig

This is a backdated review

Set in the same universe as Zeroes, Invasive explores the possible consequences of research into genetically altered insects (ants). We are already doing this with mosquitoes to try to stop the spread of infectious disease, so this technology is with …

read more

FreeBSD Remote Serial Console Access With Dell and Cisco Servers

Mon 01 May 2017 by feld

I have become allergic to Java. It seems every time I need to access a server console my system is throwing fits about Java security. I've spent hours trying to fix a Java issue which was preventing me from fixing a server I needed console access to. I will show …

read more

Using FreeBSD as a Time Capsule for OSX

Mon 19 December 2016 by feld

I've had both a coworker and a FreeBSD developer ask me recently how to use FreeBSD as a Time Capsule for Time Machine from OSX. There are a lot of tutorials out there and most of them are non-functional. This is possibly the simplest guide that is known to be …

read more

Generating DDNS TSIG Keys for BIND

Thu 15 December 2016 by feld

The tutorials on how to generate TSIG keys for BIND DDNS updates suck. It would also be tedious if tasked to generate several. I'm not sure why ISC has not produced a standalone script or utility to make this easier as nobody should have to piece it together by hand …

read more

Speeding up MySQL Import on FreeBSD

Wed 28 September 2016 by feld

I was recently tasked with rebuilding a readonly slave database server which only slaves a couple of the available databases. The backup/dump is straightforward and fast, but the restore was being excruciatingly slow. I didn't want to wait a week for this thing to finish, so I had to …

read more

Monitoring FreeBSD Base System Vulnerabilities with pkg audit

Fri 12 August 2016 by feld

The FreeBSD base system has been difficult to monitor for published vulnerabilities for a long time. This will improve when we achieve a packaged base system, but that leaves users of currently supported -RELEASE systems without a standardized option.

The freebsd-version(1) utility has existed since FreeBSD 10.0. This …

read more

Java KVM Troubles on OSX

Thu 30 June 2016 by feld

I was having troubles on OSX getting access to the KVM at work which is a Dell KVM 4322DS. The connection errors from Java about security settings were not resolved by whitelisting the site in the Java console. Turns out newer Java disables some SSL/TLS algorithms and settings that …

read more

Book Review: Zeroes

Sun 28 February 2016 by feld

Title: Zeroes

Author: Chuck Wendig

This is a backdated review

A young, spunky group of kids land themselves in hot water with a government agency and are tasked to work^HHHhack for The Man. Weaponized artificial intelligence? Yes please. This was a fun read all the way through the end …

read more