Website-Redesign/content/posts/TOSDRmatters.md

121 lines
22 KiB
Markdown
Raw Permalink Normal View History

2023-07-10 16:31:40 -05:00
---
title: "The Reason ToS;DR Matters"
date: 2023-07-10T14:55:11-05:00
tags:
- TOSDR
- FreeSoftware
image:
comments: true
draft: false
---
## What is Tos;DR
The Terms of Service: Didn't read project ( Which I'm referring to as ToS;DR) was started in June 2012. This project was introduced to me a long time ago, on of the sites rated 'C' by ToS;DR, of course on YouTube. This projects aims to 'to help fix the biggest lie on the web', which by their own [website](https://www.tosdr.org/en/about) is that 'almost no one really reads the terms of service we agree to all the time'.
## Reason 1: ToS's are just really along
This is kind of a joke answer, but this ties into the whole reason ToS; Didn't Read exists. Human-Readable ToS's are so far in between. That we ultimately give up, and just give in. This is Ground-zero for all the other reasons. We as humans just want to access what we need to get a task done, ignoring the ToS and just pressing 'I agree'.
## Reason 2: It helps people realize what services are actually doing.
Looking at Discord's ToS, for example, is very eye opening to some people. The ToS [here](https://www.tosdr.org/en/service/536). Includes a provision where you the service (discord) can read any of your private messages, and that is entirely legally
```
Information we collect may include but not be limited to username, email address, and any messages, images, transient VOIP data (to enable communication delivery only) or other content you send via the chat feature.
```
Looking at this specific [section](https://edit.tosdr.org/points/9070), this also means that all images are also included. The transient VOIP data is a bit of a weird provision, but seems to only be intended to enable delivery only, and I have no idea what that actually means.
This is only one example of this, but show this to many of the users of the service, and they'll be shocked.
## Reason 3: Just convenience
You could always just read the entire privacy policy and ToS. But that is ultimately not practical, and ultimately a lot of people live in a world where they can not read through the entirety of each Terms Of Service they agree to. Further so, many people don't bring their lawyer to verify each service they use. Ultimately this really ties into the ultimate reason this service exists. What it's meant to do. But again, an easy to read summary of what is in the ToS and Privacy Policy, is just really a great service. This is even more relevant where things like TikTok seems to be basically shortening the attention span of many people.
## Reason 4: A central database for this information.
This database is amazing it even has a really extensive API documented [here](https://developers.tosdr.org/dev/). Which with this API you can query a bunch of information from this database. This database is of course centralized, but the work is funded by many people, through [an open collective](https://opencollective.com/tosdr). Which is a pretty small annual budget of 1.5 thousand dollars. But despite that, there are very liberal in what they spend it on (as they have to be), and since this is on the OpenCollective, every expense is posted on the budget with a description of what it is. This database really is what alot of people need to see what these services can actually do to you, with almost minimal consequences.
### Some fun with the API
Let's say I don't know the exact id of the service I'm looking for to query with the [Service API](https://developers.tosdr.org/dev/get-service-v2). No fear I can simply search for the ID with another query. Which let's go the ['search api'](https://developers.tosdr.org/dev/search-api) (it's got search in it's name, so it must be what I'm looking for). Looking at it, I have to send a GET request to 'https://api.tosdr.org/search/v4/' with the parameter of 'query' being what I want to search with.
So forming that into a simple [curl](https://curl.se/) request is pretty easy.
```
curl --request GET "https://api.tosdr.org/search/v4/?query=discord"
```
We get
```
{"error":256,"message":"discord","parameters":{"services":[{"id":536,"is_comprehensively_reviewed":true,"urls":["discord.com","discord.gg","discordapp.com","discordapp.net","dis.gd","discord.gift","discordstatus.com"],"name":"Discord","status":null,"updated_at":"2023-07-04T12:58:38.964Z","created_at":"2018-06-20T10:22:06.538Z","slug":"discord","wikipedia":"https:\/\/en.wikipedia.org\/wiki\/Discord_(software)","rating":{"hex":4,"human":"Grade C","letter":"C"},"links":{"phoenix":{"service":"https:\/\/edit.tosdr.org\/services\/536","documents":"https:\/\/edit.tosdr.org\/services\/536\/annotate","new_comment":"https:\/\/edit.tosdr.org\/services\/536\/service_comments\/new","edit":"https:\/\/edit.tosdr.org\/services\/536\/edit"},"crisp":{"api":"https:\/\/api.tosdr.org\/rest-service\/v3\/536.json","service":"https:\/\/tosdr.org\/en\/service\/536","badge":{"svg":"https:\/\/shields.tosdr.org\/536.svg","png":"https:\/\/shields.tosdr.org\/536.png"}}}},{"id":585,"is_comprehensively_reviewed":false,"urls":["reswitched.tech"],"name":"Reswitched discord","status":null,"updated_at":"2021-03-25T02:19:35.838Z","created_at":"2018-07-03T18:20:30.955Z","slug":"reswitched_discord","wikipedia":"","rating":{"hex":32,"human":"Grade N\/A","letter":"N\/A"},"links":{"phoenix":{"service":"https:\/\/edit.tosdr.org\/services\/585","documents":"https:\/\/edit.tosdr.org\/services\/585\/annotate","new_comment":"https:\/\/edit.tosdr.org\/services\/585\/service_comments\/new","edit":"https:\/\/edit.tosdr.org\/services\/585\/edit"},"crisp":{"api":"https:\/\/api.tosdr.org\/rest-service\/v3\/585.json","service":"https:\/\/tosdr.org\/en\/service\/585","badge":{"svg":"https:\/\/shields.tosdr.org\/585.svg","png":"https:\/\/shields.tosdr.org\/585.png"}}}},{"id":603,"is_comprehensively_reviewed":true,"urls":["discogs.com","comicogs.com","filmo.gs","gearogs.com","vinylhub.com","bookogs.com","posterogs.com"],"name":"Discogs","status":null,"updated_at":"2023-07-04T12:56:51.917Z","created_at":"2018-07-16T06:33:15.286Z","slug":"discogs","wikipedia":"https:\/\/en.wikipedia.org\/wiki\/Discogs","rating":{"hex":4,"human":"Grade C","letter":"C"},"links":{"phoenix":{"service":"https:\/\/edit.tosdr.org\/services\/603","documents":"https:\/\/edit.tosdr.org\/services\/603\/annotate","new_comment":"https:\/\/edit.tosdr.org\/services\/603\/service_comments\/new","edit":"https:\/\/edit.tosdr.org\/services\/603\/edit"},"crisp":{"api":"https:\/\/api.tosdr.org\/rest-service\/v3\/603.json","service":"https:\/\/tosdr.org\/en\/service\/603","badge":{"svg":"https:\/\/shields.tosdr.org\/603.svg","png":"https:\/\/shields.tosdr.org\/603.png"}}}},{"id":2513,"is_comprehensively_reviewed":false,"urls":["discordlist.io"],"name":"DiscordList","status":null,"updated_at":"2021-03-25T02:19:49.250Z","created_at":"2021-01-09T14:20:03.377Z","slug":"discordlist","wikipedia":"","rating":{"hex":32,"human":"Grade N\/A","letter":"N\/A"},"links":{"phoenix":{"service":"https:\/\/edit.tosdr.org\/services\/2513","documents":"https:\/\/edit.tosdr.org\/services\/2513\/annotate","new_comment":"https:\/\/edit.tosdr.org\/services\/2513\/service_comments\/new","edit":"https:\/\/edit.tosdr.org\/services\/2513\/edit"},"crisp":{"api":"https:\/\/api.tosdr.org\/rest-service\/v3\/2513.json","service":"https:\/\/tosdr.org\/en\/service\/2513","badge":{"svg":"https:\/\/shields.tosdr.org\/2513.svg","png":"https:\/\/shields.tosdr.org\/2513.png"}}}},{"id":2859,"is_comprehensively_reviewed":false,"urls":["discoelysium.com"],"name":"Disco Elysium","status":null,"updated_at":"2023-07-04T12:57:37.608Z","created_at":"2021-03-24T16:24:28.000Z","slug":"disco_elysium","wikipedia":"https:\/\/en.wikipedia.org\/wiki\/Disco_Elysium","rating":{"hex":4,"human":"Grade C","letter":"C"},"links":{"phoenix":{"service":"https:\/\/edit.tosdr.org\/services\/2859","documents":"https:\/\/edit.tosdr.org\/services\/2859\/annotate","new_comment":"https:\/\/edit.tosdr.org\/services\/2859\/service_comments\/new","edit":"https:\/\/edit.tosdr.org\/services\/2859\/edit"},"crisp":{"api":"https:\/\/api.tosdr.org\/rest-service\/v3\/2859.json","service":"https:
```
Which isnt' very human readable, so lets parase that into [JQ](https://jqlang.github.io/jq/), which is a command-line JSON processor.
Just like so...
```
curl --request GET "https://api.tosdr.org/search/v4/?query=discord" | jq
```
We get
```
"error": 256,
"message": "discord",
"parameters": {
"services": [
{
"id": 536,
"is_comprehensively_reviewed": true,
"urls": [
"discord.com",
"discord.gg",
"discordapp.com",
"discordapp.net",
"dis.gd",
"discord.gift",
"discordstatus.com"
],
"name": "Discord",
"status": null,
"updated_at": "2023-07-04T12:58:38.964Z",
"created_at": "2018-06-20T10:22:06.538Z",
"slug": "discord",
"wikipedia": "https://en.wikipedia.org/wiki/Discord_(software)",
"rating": {
"hex": 4,
"human": "Grade C",
"letter": "C"
},
"links": {
"phoenix": {
"service": "https://edit.tosdr.org/services/536",
"documents": "https://edit.tosdr.org/services/536/annotate",
"new_comment": "https://edit.tosdr.org/services/536/service_comments/new",
"edit": "https://edit.tosdr.org/services/536/edit"
},
"crisp": {
"api": "https://api.tosdr.org/rest-service/v3/536.json",
"service": "https://tosdr.org/en/service/536",
"badge": {
"svg": "https://shields.tosdr.org/536.svg",
"png": "https://shields.tosdr.org/536.png"
}
}
}
},
```
This is shortened to only the first service, which looking at the urls is what we want, including the discord.com domain, and discord.gg. But this would actually show the full output, to get the ID we want automatically, we can look at the first one and get the parameter with JQ, to get what we did above, we can do. To see how this actually works, I would recommend reading up on how JQ works, but this out of the scope of this here.
```
curl --request GET "https://api.tosdr.org/search/v4/?query=discord" | jq '.parameters.services | .[0]'
```
Then to get the ID we can use
```
curl --request GET "https://api.tosdr.org/search/v4/?query=discord" | jq '.parameters.services | .[0].id'
```
That would output **536**, which is the ID of the service
Then to get the service full details we can use
```
curl --request GET "https://api.tosdr.org/service/v2?id=536" | jq
```
To get the full service details, and that is really a short guide to how use API's by hand.
## Reason 4.1 It's Free Software
Had to end it like this. Despite them having an Official Discord Server, they are free software. Their repositories are [here](https://github.com/orgs/tosdr/repositories?type=all) (on GitHub BTW, just a notice to anyone who doesn't want to interact with GitHub). While it seems to be clear that self-hosting your own instance isn't a priority to this project. I think a lot of benefits come from people being able to see the data and writeups on TOS's. Plus the data is released as Open Data.
I really wish the best for this project going forward, and hope them the absolute best.