Version-control Commit timestamps

In Git and in other version control systems, commits and patches have timestamps attached to them:

  • The time a patch was created by its author
  • The time a patch was applied to the repo before being pushed

In Git, those are called “author date” and “committer date”.

In AS2 and AP, as far as I can see, there aren’t standard properties to indicate the time that something was created. The only relevant property is published, which indicates when something was, well, published. In our terms here, that would be the time that a commit got pushed to the repository, and a Push activity then produced automatically by the forge. But that time, as far as I understand, is not the time that a commit was originally written, or applied/merged before the push.

It’s possible that Alice writes a patch in the year 2000. In 2004, Bob reviews that patch and applies it to his local copy of the repo, and pushes it. The project goes inactive, but after a few years, it gets revived by Cindy, who clones Bob’s old repo and pushes it in 2019 to a repo hosted on a ForgeFed federating forge.

In that case, and please correct me if I’m wrong,

  • The default git log, which displays only the author date, would say “Date: 2000”
  • The full git log, which displays both dates, would say “Author Date: 2000” and “Committer Date: 2004”
  • The time of the push, yeah 2019, wouldn’t be displayed in git log at all, but that would be the time the commit got published in Cindy’s repo, and the value of the published property of the generated Push activity.

There is a possibility to abuse the published property, but even if we did, do we use it for the author date or the committer date? And which property do we use for the other?

As far as I can see, the most commonly used property is the author date, usually it’s the only date displayed. But author date is a worse candidate for published because usually the commit date is very close to the push, while author date can be days, weeks, even years earlier.

Are there some created properties on the fediverse? I’ve seen a created property in the Security Vocabulary, which simply maps to the Dublin Core created property URL. I suppose we could use dc:created.

PROPOSAL: Use the Dublic Core created property, put it in the ForgeFed JSON-LD context so that it can be used as-is without a prefix.

But do we use it for the author date or the committer date? Technically if used with a Commit, the committer date would be a closer fit. On the other hand, author date is the more commonly displayed date. If we use created for author date, what do we use for commiter date? Maybe just not have a property for it? Does any existing forge/client need this property? If yes, what do we name it? committed? committedAt? And if we use created for the committer date, what do we use for the author date?

Relevant properties from Dublin Core:

  • date
  • dateSubmitted
  • dateAccepted
  • issued