Stefan Fehrenbach
2016-03-29

Provenance in the wild

With delight I read today in GitHubs summary of git 2.8 release notes the following:

Git configuration values are read from several different places, including system-level, user-level, and repository-specific files. This can make it hard to figure out where a setting has to be changed. Now you can use git config –show-origin to show where a particular setting came from.

They give an example that shows in which file the user.name setting was set:

$ git config --show-origin user.name
file:/home/me/.gitconfig    Me Myself

This tells us that the value Me Myself “comes from” the file /home/me/.gitconfig.

I keep having trouble finding good examples for why you need provenance support in a language. It really should not be that hard. This makes a great case for language-integrated provenance. I should look into what their exact semantics are, but at a first glance this looks like what I would call where-provenance.

You could model this in Links with where-provenance, if config values were stored in a database. I guess this is a point in favor of relaxing our restrictions (to database values) on provenance a bit.

People care about provenance, even though few people know what you’re talking about, when you say “provenance”.