Encoding the roles into existing property of CodeMeta or schema.org is a possibility.
The other, that I prefer, is to associate a "role" property to authors/contributors: indeed, an author/contributor may have multiple roles, just like multiple affiliations.
I agree that neither CodeMeta nor schema.org gives the possibility to specify all roles at the moment, and I'm still not sure what we should push for.
I do like the idea of adding a role to author, but the way schema.org is organized, is by adding properties with specific roles:
Instances of Person may appear as values for the following properties
On the Person page: https://schema.org/Person
I do like the idea of adding a role to author, but the way schema.org is organized, is by adding properties with specific roles
Indeed.
@rdicosmo JSON-LD (and therefore codemeta) is about describing nodes (Persons, Organization, SoftwareSourceCode, SoftwareApplication, ...), and relationships between them (author, funder, ...) with (subject, predicate, object) triplets (eg. (parmap, author, rdicosmo)).
My understanding of your suggestion is that you want to qualify the relationship/triplet with extra attributes (the roles).
While this is possible with RDF ("statement reification", see this nice example: https://stackoverflow.com/a/1315775 ), JSON-LD unfortunately doesn't allow this directly.
One way to do this reification while keeping a JSON-LD representation is to turn links into a new type of node (with a new type eg. AuthorRelationship), which would have relationships with the two objects ((parmap, authoredByRelationship, id1) and (rdicosmo, authoringRelationship, id1)) and add the role as a property on that new node ((id1, role, designer), (id1, level, 5)).
Unfortunately, it would mean ditching (the current version of) Codemeta as well as schema.org, because they absolutely do not have the vocabulary to express it.
Another way would be to use the Codemeta/schema.org vocabulary and use the RDF representation instead of JSON-LD. But then it's no longer Codemeta-as-a-file-format.
If you agree with this proposal with @vlorentz's example, I can submit the issue tomorrow.
Proposal for author roles in CodeMeta v3
The question of authorship and contribution roles in the scholarly ecosystem has been addressed in different ways, yet software remains an uncharted terrain.
In the CRedit for example, software is a unique role that combines all roles related to software authorship (see https://casrai.org/credit/ )
We know that the situation with software development is a bit more complex and can't be resumed in the distinction between author and contributor.
Recently the Inria research center's citation WG has published the following article with a specific taxonomy concerning software roles:
Pierre Alliez, Roberto Di Cosmo, Benjamin Guedj, Alain Girault, Mohand-Said Hacid, Arnaud Legrand, Nicolas Rougier. Attributing and Referencing (Research) Software: Best Practices and Outlook From Inria. Computing in Science > Engineering, 22 (1), pp. 39-52, 2020, ISSN: 1558-366X. https://dx.doi.org/10.1109/MCSE.2019.2949413 also available https://hal.archives-ouvertes.fr/hal-02135891
We want to find a way to integrate the identified roles in the CodeMeta vocabulary and eventually in schema.org.
To that end we propose on adding hasOccupation property as a Role property under author, which is a Person in schema.org.
I just realized I didn't follow schema.org's roleName examples when writing this example. Could you copy-paste the new example from the pad, which uses "designer", "coder", and "documenter"?
This is too ambiguous, I think, might be visual design and, without qualification, people will more likely think of software architecture design than algo.
(I don't have a better suggestion, unfortunately.)