Clarify presence rules for contractors and contacts#213
Conversation
This clarifies when `maintenance/contractors` and `maintenance/contacts` are expected to be present. For `contractors`, we now explicitly say it's mandatory if the type is `contract`, and must not be present otherwise. This is _technically_ a breaking change, but it's a sensible and consistent interpretation and we can see it as just removing ambiguity. For `contacts`, being optional if type is *not* `internal` or `community` was already enforced by publiccode-parser-go, and even the examples in this repo include `contacts` with type `contract`, so it's just stating the de facto behavior.
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
|
@yaml-9000 minor-change Minor change, but not really, but then again I don't see it worth of a major version just for this |
|
Thanks for your contribution 🙏 This is now marked as a Example of minor changes are additions of new keys or making keys optional. The Chair will eventually pick up this proposal and start the voting procedure using cc @publiccodeyml/chair @publiccodeyml/steering-committee 📄 Voting procedure | 📄 Working Group Charter | 🤖 bot commands |
|
@bfabio agreed -- I would even say it's a bugfix |
|
A quick check in the Italian catalog shows that the affected software, those having ❯ publiccode-api-client -- software --publiccode-yml | jq '.[] | select(.maintenance.type != "contract" and .maintenance.contractors != null) | {contractor: .maintenance.contractors[0].name, type: .maintenance.type, url: .url}'
{
"contractor": "Leonardo S.p.a.",
"type": "internal",
"url": "https://github.com/DGSCU/SistemaUnicoSCU"
}
{
"contractor": "Unicode srl ",
"type": "internal",
"url": "https://github.com/AUSL-ReggioEmilia/Matilde"
}
{
"contractor": "SPAC Community",
"type": "internal",
"url": "https://github.com/RegioneDelVeneto/mypivot.git"
}
{
"contractor": "SPAC Community",
"type": "internal",
"url": "https://github.com/RegioneDelVeneto/mypay.git"
}
{
"contractor": "Links Management and Technology S.P.A",
"type": "internal",
"url": "https://github.com/consiglionazionaledellericerche/STI"
}
{
"contractor": "smartme.IO",
"type": "internal",
"url": "https://github.com/MDSLab/s4t-iotronic-standalone.git"
}
{
"contractor": "Engineering",
"type": "community",
"url": "https://github.com/regione-marche/meetpad-public"
}
{
"contractor": "smartme.IO",
"type": "internal",
"url": "https://github.com/MDSLab/s4t-lightning-rod.git"
}
{
"contractor": "Corvallis S.p.A.",
"type": "internal",
"url": "https://github.com/CittaMetropolitanaVenezia/WebMappVenezia"
}
{
"contractor": "Link.it",
"type": "community",
"url": "https://github.com/link-it/govway"
}
{
"contractor": "Invisible Farm",
"type": "internal",
"url": "https://github.com/atsmilano/Controllo-di-gestione"
}
{
"contractor": "Link.it",
"type": "community",
"url": "https://github.com/link-it/govpay"
} |
|
hi @bfabio. This has been a relevant topic in the last months about the standard and its evolution. As DTD, we discussed about this issue. So, we had the time to develop a proposal. At the end of this discussion, we propose that both |
|
@valeriocomo i agree on this proposal. The fact that there can only be I wonder if it would be useful to add a field I'll make a discussion for this. @valeriocomo maybe you can create a different PR for your new proposal? I'd like to know which arguments you guys have for it. |
@tomootes @valeriocomo can you please open a new issue or Discussion for your proposal so it can be discussed separately? |
|
@yaml-9000 vote-start |
|
Voting is now open on this proposal! If you are a member of the Steering Committee you can now vote! The polls will stay open for 14 days, until Tue, 14 Oct 2025 07:21:29 GMT. Leave a 👍 (thumbs up) on this comment to accept the proposal or a 👎 (thumbs down) to reject it. cc @publiccodeyml/steering-committee 📄 Voting procedure | 📄 Working Group Charter | 🤖 bot commands |
|
@yaml-9000 vote-end |
Vote resultsThe results of the vote are:
Proposal approved 👍 This proposal is now ready to be merged and get released with a new version of the standard. cc @publiccodeyml/chair @publiccodeyml/maintainers DetailsFirst round: unanimity required The following users voted (includes non-members of the steering committee):
📄 Voting procedure | 📄 Working Group Charter | 🤖 bot commands |
This clarifies when
maintenance/contractorsandmaintenance/contactsare expected to be present.For
contractors, we now explicitly say it's mandatory if the type iscontract, and must not be present otherwise. This is technically a breaking change, but it's a sensible and consistent interpretation and we can see it as just removing ambiguity.For
contacts, being optional if type is notinternalorcommunitywas already enforced by publiccode-parser-go, and even the examples in this repo includecontactswith typecontract, so it's just stating the de facto behavior.