Change Request to PSS: Relaxing Constraints, Appointing RDF, Removing Political Colonialism

The following proposal for updates to the PSS schema is submitted by Louis Holbrook for review and feedback. Please review the proposed changes and provide your feedback by Tue Aug 20, after which it will be integrated into v4 for the next release.

  • Accept Proposed Changes As-Is
  • Accept Proposed Changes with Amendments (please list as reply in thread)
  • Reject Proposed Changes (please list reasoning as reply in thread)
0 voters

People and Skills - Schema and example change proposal

This proposal only concerns the person data example of the standard. It does not touch the badge part of the standard.

I will discuss the badge part in a different proposal.

Background

I downloaded the PSS example along with the schema from https://standards.internetofproduction.org/pub/r7g0n9fo/release/4

I proceeded to validate the example against the schema, but the validation failed.

On examination it turns out that:

  • The example does not contain all required fields
  • The example contains fields not in the schema

Schema

My opinion is that the schema contains too many required fields.

I propose to relax the constraints, making only the bare minimum of them required.

As this JSON schema does not disallow fields not present in the schema, means there is less need to be explicit about the requirements.

I propose this relaxed version of the schema:

{
  "title": "Maker Passport: Record Creation",
  "type": "object",
  "required": [
    "dateGenerated",
    "UUID",
    "lastName",
    "firstName",
    "preferredFirstName",
    "nationality",
    "residenceCountry"
  ],
"properties": {
    "dateCreated": {
      "type": "string",
      "title": "Today's Date",
      "description": "Date this user record was created in the system.",
      "format": "datetime",
      "options": {
        "flatpickr": {}
      }
    },
    "UUID": {
      "type": "string",
      "title": "Record Number",
      "description": "UUID generator: https://www.uuidgenerator.net",
      "minLength": 4,
      "default": ""
    },
    "lastName": {
      "type": "string",
      "title": "Last Name",
      "description": "User's surname.",
      "minLength": 4,
      "default": ""
    },
    "firstName": {
      "type": "string",
      "title": "First Name",
      "description": "User's given name.",
      "minLength": 4,
      "default": ""
    },
    "middleName": {
      "type": "string",
      "title": "Middle Name",
      "description": "User's middle name (if any).",
      "minLength": 4,
      "default": ""
    },
  "preferredFirstName": {
      "type": "string",
      "title": "Preferred Name",
      "description": "What the user prefers to be called when addressed.",
      "minLength": 4,
      "default": ""
    },
    "email": {
      "type": "string",
      "title": "Email Address",
      "description": "The user's email address.",
      "pattern": "^\\S+@\\S+\\.\\S+$",
      "format": "email",
      "minLength": 6,
      "maxLength": 127,
      "default": ""
    },
    "phone": {
      "type": "string",
      "title": "Phone Number (Home)",
      "description": "User's home phone number.",
      "minLength": 10,
      "maxLength": 20,
      "pattern": "^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$",
      "default": ""
    },
    "mobilePhone": {
      "type": "string",
      "title": "Phone Number (Mobile)",
      "description": "The user's mobile phone number.",
      "minLength": 10,
      "maxLength": 20,
      "pattern": "^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$",
      "default": ""
    },
    "dateOfBirth": {
      "type": "string",
      "title": "Date of Birth (DOB)",
      "description": "Date user was born; ask for confirmation of DOB with a government-issued ID card, if available, especially since confirmation of age may impact access to spaces, equipment, or services.",
      "format": "date",
      "options": {
        "flatpickr": {}
      }
    },
    "nationality": {
      "type": "array",
      "title": "Countries of Citizenship",
      "minLength": 1,
      "items": {
    "type": "string",
        "description": "Use the ISO 3166 standard for country name: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes. If there are more than one country of citizenship, separate using a comma."
      }
    },
  "city": {
      "type": "string",
      "title": "Current City of Residence",
      "description": "If there are multiple cities, list the one where the user lives most of the time.",
      "minLength": 4,
      "default": ""
    },
    "identity": {
    "type": "array",
    "title": "Objects defining ways of identifying the subject",
    "items": {
      "type": "object",
      "description": "May be zero-knowledge digests of ID document images, public keys, etc...",
      "default": []
    }
    }
}
}

And the (validated) example becomes:

{
    "firstName" : "Sarah",
    "preferredFirstName": "Sarah",
    "lastName": "Hutton",
    "email" : "sarah@iopa.org",
    "dateGenerated": "2023-03-27T12:34:56.000Z",
    "UUID": "ba52c94f-a9c3-4e55-a103-1bc46b1608df",
    "state": "0xabcdef0123456789abcdef0123456789abcdef00",
    "nationality": ["US"],
    "residenceCountry": "US",
    "identity": []
}

See sections below for comments on these changes

Comms

There should be no need to require phone nor email. Some may use either (i.e. at least anyOf constraint is needed). Some may prefer not to disclose. And I think in very near future we will see more use neither.

Key

It should be possible for the subject to provide one or more public keys as future proof of their identity (and custody).

Nationality

Some may have multiple nationalities. The schema should allow for that.

Please avoid political colonialism

I also strongly contest the inclusion of the ā€œpreferredPronounsā€ field. This is because it has strong colonial undertones, in suggesting that everyone using this standard by implication have to accept this as a political issue, and on terms dictated by its origin in ā€œwesternā€ political doctrine.

It should suffice that the schema allows any field extranous to the schema to be present. And simple ā€œDuck Typingā€ can be applied by those limiting their interest to the strict schema.

Migration

I further propose to define this JSON schema as a downstream format, and appoint an RDF standard instead.

My belief is that this project would come out much stronger by following these two strategies:

  • Allowing and encouraging communities and groups of communities to devise and use their own vocabularies to describe the contents and features of their activities.
  • Making a system that on most levels can be reasonably validated by humans and machines alike.

In my view, RDF is designed specifically for these purposes.

Not only does it allow any kind of mash-up of taxonomies and vocabularies, but its data members can all be URLs, which easily lets a human follow the link and learn and verify the details and intent behind the data member (like contents of a course etc).

Or, since the data members are all, in fact, URIs, unambiguously define members in a content addressed fashion (e.g. URN:sha256:<hash>) to make sure any signatures over it renders later change of data impossible.

Example

Below is an example of how the example of the current PSS standard could be expressed in rdf instead.

I use the turtle RDF format for readability:

@prefix pss: <http://internetofproduction.org/rdf/pss/current#>
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dct:    <http://purl.org/dc/terms/> .
@prefix sha256: <URN:sha256:> .
@prefix uuid: <URN:uuid:> .
@prefix wot:    <http://xmlns.com/wot/0.1/>.
@prefix iso3316a2:  <https://www.iso.org/obp/ui/#iso:code:3166:> .


uuid:80aecb88-04c7-4587-92c1-e3ac9f24d992
    wot:fingerprint "C0036D11C5386757A45242B471AB077CA401983F" ;
    a   wot:pubKey .


uuid:ba52c94f-a9c3-4e55-a103-1bc46b1608df
    dct:created "2023-03-27T12:34:56+00:00"^^xsd:dateTime ;
    foaf:GivenName  "Sarah" ;
    foaf:FamilyName "Hutton" ;
    foaf:name   "Sarah Hutton" ;
    pss:nationality iso3316a2:US ;
    pss:residenceCountry    iso3316a2:US ;
    wot:hasKey  uuid:80aecb88-04c7-4587-92c1-e3ac9f24d992 ;
    a   pss:Person .

# pss:Person must be wot:User and foaf:Agent

I donā€™t think these changes should be voted on as a whole they are to broad and wide ranging.
There are numerous things that should be considered separately:

I would argue splitting this suggestion up into multiple smaller change requests that are actually tractable:

  • Schema Validation Issues - The Example in the document isnā€™t valid for the current schema. (also the current schema is missing two closing }'s
  • Changing required fields - Here I tend to agree, fewer required fields tends to ease uptake. However there may be good reasons why those fields were set to required. If this is the case that reasoning may want to be explained
  • Removing preferredPronouns field - This change changes this field from required, to not even present in the schemaā€¦ A compromise may be to include it but not require it?
  • Changing field names - Changing dateCreated to dateGenerated, changing Country to Nationality, adding residenceCountry (couldnā€™t this be part of the city field. i.e. ā€œBath, UKā€). Also worth noting here that the new schema doesnā€™t define residenceCountry as such any data in this field would be valid.
  • Changing the data format entirely - :rotating_light::rotating_light::rotating_light: Warning here be dragons :rotating_light::rotating_light::rotating_light: - There are lots of strong feelings about which file formats. Everyone has their own favourites, and many people have strong negative feelings about other formats (often which boil down to overstated personal preferences. I think that a technical team should certainly review how a switch away from JSON towards RDF would work with open badging systems, and to think about what benefits (if any) this would actually provide. I would also note that this change is not a simple one to implement, it will effectively require re-writing most of the standard, considering the size of such a change it probably needs a pretty solid reason.
3 Likes

I do not have the technical knowledge to know which format is best for the PSS. However I understand thereā€™s something with the compatibility with the Maker Wallet/Passport. Canā€™t the wallet be written in JSON? I would be happy to hear more on the choice of format so we can make sure to keep the one that would be sustainable for the future.
I think it is a good idea to reduce the number of required fields and with @julianstirling on leaving the choice to add the preferred pronouns.

1 Like

@julianstirling thank you for your comments.

I agree, we can spilt them up and address them separately.

For work on the data/schema itself, is there a git repository somewhere, where this work is already or can be tracked? If so, please advise. We can discuss the individual items there.

Let me just generally say that I am not necessarily proposing a data format change for the badges. There is no problem to deterministically generate the desired json data, even if the data in the passports themselves use RDF.

The question is not really that much about taste in my opinion, but more which paradigm to choose. I believe semantic data structure suits this pilot better, and within that paradigm are both RDF and JSON-LD for example.

I think we all can learn a lesson from the approach of e.g. raptor/rapper Raptor RDF Syntax Library which generously converts all sorts of ins and outs.

1 Like

@Jessicang that reply is for you too. sorry.

Now with regards to the pronouns, please keep in mind that by the inclusion, you are - in my opinion - forcing anyone using this schema to also implicitly agree on that representation of the world. I would say hardly the best idea, when the target group seems to be the ā€œnon-golden billionsā€ whom I daresay most likely would either not accept such a concept, or donā€™t consider it a question at all (with the possible exception of western alumni and laptop-class urbanites, of course). And it thus follows, that including it is a political and cultural statement, not a neutral action.

And lastly, regardless of all this, the two things can actually co-exist.

That is, even if the badge output format is JSON or JSON-ite, IOP could also define and publish an RDF vocabulary that others in the community at large could use as they see fit to express their data and relations.

2 Likes

On pronouns - It doesnā€™t have any impact on the skills learning in any case. I believe the desire behind this question originally was for representation data @schutton? I think we could also remove this question if thereā€™s no direct implication or learning we can retrieve from it.

1 Like

Yes, you are correct - this is predominantly for representation data, which, while critical to ensure an iterative review and design improvement process for PSS, is not technically necessary for the wallet/passport/product to function.

However

I do think it would be useful to leave the pronouns category as a field that is not required as part of the proposed schema, with the decision to include or suppress the field in any organizationā€™s decision to use it for having makers create their own records.

At this stage during the pilot, the onus of data entry into recommended or required fields is entirely on makerspace staff. I think it would be interesting to gather additional information from makers on this field were it to be offered as an optional way to collect data.

Looking at this in the longer term - data related to gender identity as expressed/represented by individuals, if collected (and protected in accordance with PII data storage requirements, of course), can be used to support program, funding, and policy change proposals. Particularly as incorporation of the GESI Framework becomes increasingly prolific in funding proposal requirements, this data will become invaluable to organizations - and part of all of this work is to support community agency, autonomy for self-advocacy, so ĀÆ_(惄)_/ĀÆ

FWIW - I believe Iā€™d shared with @lash some of the feedback we received from individual makers who had completed a PSS sign-up form as part of the IMA pilot; in aggregate, folks werenā€™t really bothered by the pronoun question - mostly about the overall length of the form/required information.

1 Like

On the data format example. In my experience pretty much any serialisation format can hold any data, whether it is YAML, TOML, JSON, XML. There are simple ways t convert. Now I know that RDF and JSON-LD can in theory do fancy extra things. But even as a programmer I have never found a guide clear enough at expressing what is actually added that has made me get over the barrier to learn how to use them.

The barrier is significant at the documentation is normally RDF fans showing lots of graphs with arrows. I think the key point is that if the data is unambiguously held in json, what specific benefit is there moving to a different format.

I mean an actual specific example where if the data is like X and we try to do Y, then json will fail. I think without that I see no point in adding the quite significant complexity of a format that is considerably less used and less supported outside very specific communities.

1 Like