json-schema-spec icon indicating copy to clipboard operation
json-schema-spec copied to clipboard

Schemas and other data are public domain

Open awwright opened this issue 2 years ago • 26 comments

A remedy for #1160.

awwright avatar Jan 14 '22 22:01 awwright

  • does the filename UNLICENSE have any special meaning in that it is not a LICENSE?
  • I would put this file in the root of the repository, rather than in meta/, as the main schema file is in the root as schema.json. It will also be much more visible there to casual browsers of the repo.

karenetheridge avatar Jan 15 '22 04:01 karenetheridge

does the filename UNLICENSE have any special meaning in that it is not a LICENSE?

I think the name is to emphasize that, to the extent it is acting as a license, that it's not intending to be one. I've found that GitHub recognizes the filename. But it doesn't matter either way.

I would put this file in the root of the repository

To me, I would read this, and it would imply it's authoritative for all the content in the entire repository, but this isn't correct.

awwright avatar Jan 15 '22 06:01 awwright

To me, I would read this, and it would imply it's authoritative for all the content in the entire repository, but this isn't correct.

The file should either say explicitly which files it applies to, or be rewritten so it does apply to all files.

I feel that if the file is not in the root it will not be seen, and certainly not be understood to apply to /schema.json.

karenetheridge avatar Jan 15 '22 18:01 karenetheridge

I think this is fine, but let's add it to the agenda for our upcoming Open Community Working Meeting call (for which I have yet to create an issue... on it now and will update).

I'm not keen on the file name. It just, is odd. Interesting that GitHub recognise it.

I see you're using the "unlicense" license, which is OSI regonised and approved, as opposed to some statements about public domain.

Relequestual avatar Jan 17 '22 11:01 Relequestual

@karenetheridge do you use schemas in the output directory too? If so, we will need the licence and readme there also.

Relequestual avatar Jan 17 '22 14:01 Relequestual

The file should either say explicitly which files it applies to, or be rewritten so it does apply to all files.

It's uncommon to modify the actual contents of the license file, and probably discouraged for possible legal complications that none of us can foresee. I think it's best if README.md describe which files are provided under which license. We can then include the text of each license to remove any remaining ambiguity.

I feel that if the file is not in the root it will not be seen, and certainly not be understood to apply to /schema.json.

I think it can be buried somewhat if that helps clarify its scope; it's more important that we be unambiguous. We can also specify: "As attached in the meta/UNLICENSE file in this repository." (Or "As attached in LICENSE.Unlicense", or whatever the filename is.)

awwright avatar Jan 19 '22 22:01 awwright

I think it's best if README.md describe which files are provided under which license

Yup, it can't hurt to be explicit :)

I think it can be buried somewhat if that helps clarify its scope

Yes, but part of my point was that burying a licence file in meta/ would be wrong if we intend it to apply to /schema.json as well.

@karenetheridge do you use schemas in the output directory too?

I would assume that all the schema files would apply under the same licence.

Perhaps we should move them all to a common subdirectory. Then there can be a LICENSE file in that subdirectory, along with a README that clearly states that the licence is intended to apply to those files.

karenetheridge avatar Jan 21 '22 23:01 karenetheridge

The draft-next branch has been merged and is now closed. The merge target for this PR has been changed to main. Here are the recommended steps to get your branch reabsed properly.

  1. Make sure your remote for the json-schema-org/json-schema-spec repo is up-to-date. (Example: git fetch upstream).
  2. Rebase your commits onto main. (Example: git rebase --onto upstream/main abcd123~1 (replace abcd123 with the commit hash of the first commit in your PR)).
  3. Force push the rebased branch to your fork. (Example: git push --force origin my-branch).

jdesrosiers avatar Jul 08 '22 15:07 jdesrosiers

#1255 covers the non-data related portion of #1160 (and so is related).

Julian avatar Jul 12 '22 12:07 Julian

@awwright @Julian is this an alternative to #1255 or is it complementary? Austin, can you rebase/recreate/whatever this onto main so the diff is readable without having to dig out the individual commit?

handrews avatar Aug 14 '22 16:08 handrews

This one was before we got guidance from OpenJS legal. It's still possibly relevant though if we want an even more liberal licence for the schemas than for the rest of the repo.

Julian avatar Aug 15 '22 04:08 Julian

I just looked at this again. This bit causes me concern:

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software

How would we feel if someone took the main metaschema, modified it (say to change the semantics for a keyword they didn't like), and then published it in their implementation without changing the $id? That would cause confusion among any who used that implementation, and surely is something we would ask the author to stop doing. Can we avoid that by spelling out that the files can be redistributed but not altered?

karenetheridge avatar Aug 29 '22 03:08 karenetheridge

That's how open source works; nothing stops someone from doing that - but in practice, who would actually care about the knockoff?

ljharb avatar Aug 29 '22 05:08 ljharb

Can we avoid that by spelling out that the files can be redistributed but not altered?

I think one of the Creative Commons variations might do that.

handrews avatar Aug 29 '22 05:08 handrews

who would actually care about the knockoff?

If the knockoff is an implementation like ajv (which already does some roguish things), the impact could be significant.

gregsdennis avatar Aug 29 '22 06:08 gregsdennis

If the knockoff is an implementation like ajv (which already does some roguish things), the impact could be significant.

That's a good point. We should probably be better about defining what it means to claim you implement JSON Schema. Which is not a spec thing, but is a thing the JSON Schema Org should think about. At this point, what AJV implements by default (without having to reconfigure it) is not JSON Schema despite the claims, and it's a problem.

handrews avatar Aug 29 '22 15:08 handrews

If a deviation is sufficiently useful that it gains adoption, then perhaps that’s a strong signal that the spec should incorporate it.

ljharb avatar Aug 29 '22 15:08 ljharb

@ljharb not if the deviations results in a constant stream of people showing up asking us why their schema that ought to work doesn't work. AJV is one implementation, no matter how popular. We don't get people showing up in the slack asking for more implementations to act like it, but we do get a lot of people who are confused and annoyed.

handrews avatar Aug 29 '22 15:08 handrews

We've adopted quite a few innovations from the community, including AJV (which played a large role in the adoption of if/then/else). But those adoptions are due to broader demand beyond any one implementation.

handrews avatar Aug 29 '22 15:08 handrews

(Any language or license that limits peoples' ability to create derivative works from official metaschemas is going to cause issues for people creating metaschemas we do want them to create, i.e. ones where they do indeed change $id and add stuff, or modify stuff, or use what we produce as a baseline, etc. So I too would oppose any restrictions there personally, for whatever my vote counts.)

Julian avatar Aug 29 '22 15:08 Julian

@Julian the language would be tied to the $id value. Other people shouldn't publish json-schema.org identifiers.

handrews avatar Aug 29 '22 15:08 handrews

I still think such a thing would cause issues personally. Any custom language typically does for e.g. corporate users.

Julian avatar Aug 29 '22 15:08 Julian

Any custom language

  1. That's overly vague, let's talk about specifics
  2. There are many licenses covering many usage patterns, it need not be "custom" (we shouldn't be writing custom legal language without a lawyer)

The things to consider are:

  • Can you use a json-schema.org-identified schema (JSOIS) in a for-profit application? Yes
  • Can you redistribute an unmodified JSOIS in a for-profit application? Yes
  • Can you create a derivation of a JSOIS that does not use json-schema.org in its $id and do anything you want with it? Yes
  • Can you non-functionally modify (e.g. minify or otherwise reformat) a JSOIS and use/redistribute it just as the original? Yes
  • Can you functionally modify a JSOIS and re-publish it with the same $id? No
  • Can you create a new schema with a json-schema.org $id and publish it? No

handrews avatar Aug 29 '22 16:08 handrews

I've shared my opinion. Feel free to have your own or disregard mine, but I stand by what I said.

EDIT: by which I mean any such language that would limit someone's use of $id is what I mean by custom, even if written by a lawyer.

Julian avatar Aug 29 '22 16:08 Julian

I'd be interested in hearing from any FOSS compliance people on whether the approach I sketched out would cause any problems.

I'm not dead set on these restrictions, but it's worth considering, and perhaps checking to see if the OpenJS Foundation has any resources or advice to consider.

handrews avatar Aug 29 '22 16:08 handrews

Yep that definitely seems reasonable to me too. (Obviously they will ask about what license the existing ones are under, which I'd suspect would be presumed to be BSD like the documents).

Julian avatar Aug 29 '22 16:08 Julian

On Sun, 28 Aug 2022 20:46:38 -0700, Karen Etheridge wrote:

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software

How would we feel if someone took the main metaschema, modified it (say to change the semantics for a keyword they didn't like), and then published it in their implementation without changing the $id? That would cause confusion among any who used that implementation, and surely is something we would ask the author to stop doing. Can we avoid that by spelling out that the files can be redistributed but not altered?

If the license forbids modification, the software would fail any FLOSS definition, from the Debian Free Software Guidelines to OSI's Open Source Definition, etc.

For Debian that would mean that we can't include it in Debian "main" (i.e. the "proper" Debian archive), we would have to put it into the "non-free" archive area (which is not enabled by default and not available for other packages etc.).

Cheers, gregor, Debian Perl Group member

-- .''. https://info.comodo.priv.at -- Debian Developer https://www.debian.org : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D 85FA BB3A 6801 8649 AA06 . ' Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe -

gregoa avatar Oct 11 '22 08:10 gregoa