Skip to content

Tracks and makes visible changes to the Terms Of Service of the main online service providers.

License

Notifications You must be signed in to change notification settings

AdrienFines/CGUs

 
 

Repository files navigation

CGUs

Services have terms that can change over time. CGUs enables users rights advocates, regulatory bodies and any interested citizen to follow the changes to these terms by being notified whenever a new version is published, and exploring their entire history.

Les services ont des conditions générales qui évoluent dans le temps. CGUs permet aux défenseurs des droits des utilisateurs, aux régulateurs et à toute personne intéressée de suivre les évolutions de ces conditions générales en étant notifiée à chaque publication d'une nouvelle version, et en explorant leur historique.

How it works

Note: Words in bold are business domain names.

Services are declared within CGUs with a declaration file listing all the documents that, together, constitute the terms under which this service can be used. These documents all have a type, such as “terms and conditions”, “privacy policy”, “developer agreement”…

In order to track their changes, documents are periodically obtained by fetching a web location and selecting content within the web page to remove the noise (ads, navigation menu, login fields…). Beyond selecting a subset of a page, some documents have additional noise (hashes in links, CSRF tokens…) that would be false positives for changes. CGUs thus supports specific filters for each document.

However, the shape of that noise can change over time. In order to recover in case of information loss during the noise filtering step, a snapshot is recorded every time there is a change. After the noise is filtered out from the snapshot, if there are changes in the resulting document, a new version of the document is recorded.

Anyone can run their own private instance and track changes on their own. However, we also publish each version on a public instance that makes it easy to explore the entire history and enables notifying over email whenever a new version is recorded. Users can subscribe to notifications through a web interface.

Note: For now, when multiple versions coexist, terms are only tracked in their English version and for the European jurisdiction.

Installing

This module is built with Node. You will need to install Node to run it.

Clone the repository and install dependencies:

git clone https://github.com/ambanum/CGUs.git
cd CGUs
npm install

Setting up the database

Initialize the database:

npm run setup

Configuration

The default configuration can be read and changed in config/default.json:

{
  "serviceDeclarationsPath": "Directory containing services declarations and associated filters.",
  "history": {
    "dataPath": "Database directory path, relative to the root of this project",
    "publish": "Boolean. Set to true to publish changes to the shared, global database. Should be true only in production.",
    "author": {
      "name": "Name to which changes in tracked documents will be credited",
      "email": "Email to which changes in tracked documents will be credited"
    }
  },
  "notifier": {
    "sendInBlue": {
      "administratorsListId": "SendInBlue contacts list ID of administrators",
      "updatesListId": "SendInBlue contacts list ID of persons to notify on document updates",
      "updateTemplateId": "SendInBlue email template ID used for updates notifications",
      "errorTemplateId": "SendInBlue email template ID used for error notifications",
    }
  }
}

Usage

To get the latest versions of all services' terms:

npm start

The latest version of a document will be available in /data/sanitized/$service_provider_name/$document_type.md.

To hourly update documents:

npm run start:scheduler

To get the latest version of a specific service's terms:

npm start $service_id

The service id is the case sensitive name of the service declaration file without the extension. For example, for Twitter.json, the service id is Twitter.

Contributing

You want to add a new service?

See CONTRIBUTING.

Deploying

See Ops Readme.


License

The code for this software is distributed under the European Union Public Licence (EUPL) v1.2. Contact the author if you have any specific need or question regarding licensing.

About

Tracks and makes visible changes to the Terms Of Service of the main online service providers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%