Based on the commit history

The log is pulled for every single file, the author is the first person who commited - all others are considered contributors.

Based on meta tags

If the meta tags authors or contributors are present they will override the information from the commit history. Both of them must be arrays. The forge articles for instance have been written by various people but all been committed to this repository by the same user. In this case the meta information from the forge have been used to create meta tags.

   authors: ["John Doe", ...]
   contributors:
       - "John Doe"
       - ....

These syntaxes are equivalent.

Based on meta tags with prefixes

This addresses the problem where the commit log does not show the real authors/contributors. This happens for instance when the first commit has been done as PR by somebody other than the author. The reviewer in this case should rather be considered a contributor than an author. For these cases the meta tags support a different syntax.

   authors: ["-John Doe", -...]

This removes John Doe from the list retrieved from the commit history

   contributors: ["+John Doe", +...]

This adds John Doe to the list retrieved from the commit history

   contributors: ["+Jane Doe", "-John Doe"]

This adds Jane and removes John

   authors: ["-John Doe", "-Jane Doe", "Joe Dough"]

This works as above, Joe Dough however will be omitted. In other words you can mix + and - but not prefixed/non-prefixed or at least in the latter case it won't do anything with the non prefixed names.