The sound distributed version control system

#722 License/copyright as 1st class data

Opened by taqtiqa-mark on October 23, 2022 Feature request
taqtiqa-mark on October 23, 2022

Examples are worth a 1000 words:

$ pijul init

Error license argument is required. Valid values are: None, License-File, 0BSD, ...

Where 0BSD, ... is the list of identifiers at https://spdx.org/licenses/ and License-File indicates some convention like license text in a LICENSE file in the repository.

$ pijul init None
Creating license signature key pair for this repository
Signing the license: None
License signature: nanoadidngr....
Changes to this repository are made with the change file fields:

    license = 'None'
    license_signature = '...'

If removed or altered from a change file, the above settings are reinstated.

where the change file is:

message = ''
license = 'None'
license_signature = '...'
timestamp = '...'

[[authors]]
key = '...'

# Dependencies
[2] ....

# Hunks
....

Forks/clones of the repo are distributed with the public key and pijul ..., before applying a change, checks the calculated license signature against the initial commit (or is the previous commit sufficient?)

taqtiqa-mark on November 7, 2022

Related issue is the copyright to a change. So the change file could be:

message = ''
license = 'None'
license_signature = '...'
timestamp = '...'

[[authors]]
key = '...'

[[copyright]]
holder=<author-1>
id=<author-1-id>

# Dependencies
[2] ....

# Hunks
....
pmeunier on February 23, 2023

Interesting idea. This is technically possible using the free-form metadata field in patches.

An extension of that idea could include the same kind of things I did with Libpijul’s CLA: it was introduced into the repo by a patch P dependent only on the initial patch, and a requirement to contribute to libpijul is to have P as a dependency. Because P depends only on the root, the only way to have P as a dependency is if you include it explicitly.

pmeunier added tag Feature request on February 28, 2023