Skip to content

About descriptive and normative documents #68

@woutermont

Description

@woutermont

There has been some confusion in recent discussions (#64, #65, and the gitter channel) about the nature of the document being drafted here. I have already tried to address this in #66, but it might be a good idea to treat it separately here. I repeat the most important part:

While it describes itself as a specification, the most voiced foundation seems to be to describe and preserve the way a limited subset of people currently use a number of other drafts within the Solid ecosystem. I do not have anything against current practices informing certain drafts, but I do think that specifications should start in a more specific need, and should be drafted based on arguments (e.g. use cases and technical considerations) rather than conservatism.

To give some examples of what I mean, statements and arguments around this document go like this:

The general purpose of this document is to describe what an app can discover based on the WebID.

The fact, however is that [social media style profiles] do exist.

Our task is to document existing practices and make recommendations related to those existing practices. [Describes current situation] That is the situation we will document.

We are documenting what exists today, [an indexing system] doesn't.

[I]t might be nice to live in a world where [preference files and extended profiles] didn't exist, but the current world isn't that one.

Our document is about things that exist.

This specification aims to describe the discovery process as it is currently in use.

[O]ur discussions [are] about what exists now with [sic] pointing out how things can be better. Our job is documenting what exists now.

Because the links we were discussing exist now whether SAI thinks they should exist or not.

That should suffice in giving an idea.


Now there are two things I want to point out with this approach. Firstly, there is nothing wrong with compiling an descriptive overview of current practices. To the contrary, such document would be very informative. Secondly, however, it IS wrong to conflate this with a normative specification.

Descriptive documents ... describe the current state of affairs. They don't bother thinking about the future, because they don't have to. Having normative statements in such a document would hardly make sense, unless maybe as some kind of notes to inform another separate normative document. Specifications on the other hand start from aims, compile use cases, construct a model, and mandate specific requirements based on rational arguments, in order to reach those aims. While current practices can be of concern for compatibility issues, they typically are not the primary factor of influence, definitely not in draft stages. Relying too much on the current state of things would ultimately never allow improvements to be made.

Since the above makes clear that both goals are at least partially contradictive, and should therefore ideally not live in a single document, it is rather worrying to read phrases like "[to] make recommendations," "[and] pointing out how things can be better," and "this specification aims to describe [...] as it is currently in use," in a so-called descriptive document, which also contains normative sections and conformance terms. This reads almost as if a set of practices employed by a limited set of users is being pushed on all the other users.

I would therefore ask of the contributors of this document to clarify whether it is

  • a normative document, in which case arguments simply referring to the current state of things are no longer valid;
  • a descriptive document, in which case the label "specification" and the conformance terms should be removed from the document;
  • a conflation of both, in which case the document should be split up in two.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions