Subject: | protect users from changes of GitHub terms |
Date: | Thu, 14 Nov 2019 02:58:55 +0000 |
To: | bug-Net-GitHub [...] rt.cpan.org |
From: | Zefram <zefram [...] fysh.org> |
GitHub's terms of service say that they can change the terms at any time,
and that users are bound to new terms immediately upon "continued use
of the Website". There's something similar for the privacy statement.
(They say something about some changes getting 30 days' notice, but
they're quite clear that that doesn't apply to all changes that would
be legally significant.) It would be a useful feature for Net::GitHub
to protect users against surprise changes to the terms of service,
by automating the process of checking whether any changes have happened.
The basic idea is that Net::GitHub should keep track of what versions of
the terms and privacy statement the user has agreed to, and immediately
before making any API request (if it's more than a few seconds since
the previous check) it should download the current terms and privacy
statement from GitHub and check whether they are versions that the user
has agreed to. If the user has agreed, the API request goes ahead, safe
in the knowledge that (apart from a few seconds' race condition) the user
is comfortable with the terms they'll be bound to by that API request.
If either legal document has content that the user has not agreed to,
then the API request does not happen, and the module signals an error.
I imagine that the list of documents to which the user has agreed would
be a text file listing document hashes, by default as a dot-file in the
user's home directory. One would want to be able to specify a non-default
location for this file when initialising Net::GitHub. There should
be some utility program to facilitate the process of reviewing a new
legal document and acquiring its hash for potential addition to the
approved list. It's important to protect the user from the mistake of
reading and agreeing to one version of a document and then storing the
hash of a newer version that ey hasn't read.
-zefram