Disclaimer, This is only for Lemmy.world.
I actually read the privacy policy. There are basically 3 segments of data:
- The one time when you signed up.
- All times you log in, after you’ve signed up.
- User generated data
For part one: They store your username and the IP address used when you create the account. They store a hashed version of your password, not the actual password. They’ll store that info for as long as you have an account with lemmy.world (although they reserve the right to keep it for up to 12 months after you’ve deleted your account). They store the hashed password so you can log into your account.
For part two: They keep a log of the times you sign in, the device you signed in from (iOS, Android, web) and the IP address you do it from. They delete this data on a rolling basis, every 90 days from the date the login data was created (from the time you logged in).
For part three: These are your posts, comments, upvotes, downvotes, etc. This is stored this until you delete your comment/post or undo your upvote/downvote. When you delete your account, if you haven’t deleted your data, the connection (the association) between your account and the data itself is severed. This means that the comment will remain but the
username
value will benull
.tl;dr: I’m no expert but I think they keep a very small amount data. They probably do this to keep their costs as low as possible (but that is just my speculation).
If you’re really worried about data mining and data logging, you can always go back to reddit /s
If you’re really worried about data mining and data logging, you can always go back to reddit /s
Or just run your own lemmy instance.
I installed Jerboa and noticed that it grayed the titles of posts that I had already viewed even though I had viewed them on the web. That told me (unless I am somehow confused) that the server side tracks what posts you have read.
From my perspective that seems like a terrible invasion. I can understand some benefit to showing the post status in the UI, but if it is stored at all, the storage should be exclusively on the client side. I mentioned this also in the “issues” thread and got no reaction, so maybe I’m missing something or in error.
Reddit tracked posts viewed as well.
Thanks, that is good to know, but that is a type of evil where I would hope Lemmy doesn’t follow Reddit. I sometimes posted to Reddit but I more often read passively without logging in, partly to avoid some of the tracking.
Sure. I think it’s good to be aware of for sure and I agree that it would be nice if Lemmy isn’t tracking as much. I also recognize that I’ve accepted a certain amount of tracking in my life over the years at this point.
Tracking posts is understandable. Tracking up and down votes is iffy. Tracking reading is inappropriate and invasive.
I don’t disagree really… Just pointing out that as long as you’re logged in Reddit has always tracked posts viewed as far as I’m aware… Facebook similarly tracks all activities and always has.
These are obviously not models to aspire to but I think that it’s helpful to be aware of what we’ve dealt with up until this point.
Facebook was notoriously evil and I actuallly have all their domains that I know of blocked from my computer at the DNS level in order to avoid their spying. That Reddit tracks posts viewed is new to me but I guess not that surprising. Usenet never tracked posts viewed and basically couldn’t. Wikipedia emphatically doesn’t track that, though it doesn’t track view counts. Arxiv.org doesn’t track (or at least publish) view counts for individual papers (see here) though they do publish stats about the entire site. A real privacy focused site would avoid publishing any about what viewers are doing. There is a whole topic in cryptography called private information retrieval about how to run a server in which the clients can verify that the server can’t know what they are reading. This is what Lemmy should aspire to, imho. (Aspirations aren’t meant to be achieved literally, but only to provide guidance).
I may open a thread in /c/privacy@lemmy.ml asking about this, but the answer might be to launch my own Lemmy instance and retrieve all of the Lemmy posts so I can browse the ones that interest me without leaking any info. I’m sort of in a position to do that, but most people unfortunately aren’t.
What do you mean with “tracking” exactly? The way I understand it, tracking is analysing and using user data, for example for marketing purposes.
Posts and content need to be saved on the instance as far as I understand, I don’t see any other way. And posts and comments are essentially public information, anyone can see the posts that your username posts and comments, that’s kinda the entire point of posting and commenting.
Up and down votes too, otherwise I don’t see how the concept of up and down votes could work. The server needs to know which comments or posts you upvote, otherwise it doesn’t register it. And theoretically, the server admin could track that information and make statistics based on it, although this is potentially where legal issues come in if it’s not properly explained what is done with your data.
Same with metadata stuff and data such as which posts you access/read. The server has to know that information, when you click on a post you want to read, you are essentially asking the server to provide you with that post, so the server has to know which post you want to read and this is generally logged on the server for a certain time.
The question is does the server keep and archive this information and/or is this information used and analysed by somebody.
According to the admin, data is not sold or used for marketing purposes.
Tracking of reads = when you read someone’s post, there is a permanent record made, e.g. in a db row associated with the user, that @aski3252 read that post. That is somewhat different from normal httpd access logs that associate only with IP addresses and which typically get distilled down to aggregate data, and prefeferably discarded after a short period. Where I worked, we kept logs around for 30 days for stuff like abuse investigations but deleted them after that. In fact with a little careful design of the log data, or if the query is sent by HTTP POST instead of GET, the parameters that identify what you were reading will usually not be logged at all.
It’s not mostly an issue of selling data for marketing purposes. The data could also be extracted by cyber attackers, seized by law enforcement, subpoenad in a lawsuit, or whatever. The only way to stop that from happening is to not retain the data in the first place. “Marketing purposes” is a smoke screen anyway. E.g. if you are a regular lurker on a community about workplace organizing or job hunting, that info will be more valuable to your boss than it will be to some advertiser or marketer. So the real customers of internet usage data (and phone records etc.) are far less benign than “marketing” organizations.
It is not necessary to record voting data except to prevent you from voting twice on a particular topic. So if voting closes (say on a poll), all the data about who voted in it can be deleted. There is also no need to remember HOW anyone voted. It’s enough to remember that you voted on a particular topic, and increment the relevant vote counter. That is also how real-world elections work. See also the topic of “receipt-free voting” in cryptography.
I agree with you that if you actually publish something on the site, there is a certain amount of disclosure unavoidably associated with that.
First of all, just to be clear, I’m not at all an expert on this topic for those who haven’t noticed. My questions are mostly because I want to learn how it works, not because I want to tell you that you are wrong or anything like that. You seem to know a lot more than me anyway.
Tracking of reads = when you read someone’s post, there is a permanent log record made
When you read someone’s post, you first need to access that information from the server. In order to do that, your client tells the server which post you want to see and the server sends you that post. Those interactions are most likely logged on the server as well as which IP address has requested that information, etc. There is no absolute sure way to make sure that the admin does not use those logs to extract that information, at the end of the day, it comes down if you trust the admin.
But there is also a “show read posts” option which seems to hide read posts overall, which does indeed suggest that read posts are saved and used and which seems to work independent of client.
It’s not mostly an issue of selling data for marketing purposes. The data could also be extracted by cyber attackers, seized by law enforcement, subpoenad in a lawsuit, or whatever.
Sure, I do get the issue to some extend, but I don’t see how it is quite as bad as you seem to imply. For example, I worry more about personal data, such as my e-mail address being leaked, which is why I generally use a throw away email. I don’t really see why I, or some attacker, should care about which posts I have “read”, but maybe I don’t understand the full implications getting this information means.
“Marketing purposes” is a smoke screen anyway.
Of course it is, but I don’t think there are any lemmy instances that use lemmy data for marketing purposes. Data seems to be used only to improve the user experience, at least that’s how it’s intended.
It is not necessary to record voting data except to prevent you from voting twice on a particular topic.
If it wasn’t logged or only logged client side you could upvote/downvote infinitely, no?
There is also no need to remember HOW anyone voted. It’s enough to remember that you voted on a particular topic, and increment the relevant vote counter. That is also how real-world elections work. See also the topic of “receipt-free voting” in cryptography.
That does seem to be a good point.
Isn’t that a browser thing, not a lemmy thing? Iirc, your jerboa history shows up in your default browser
I browsed and posted on Lemmy for a while through a desktop browser on my laptop, then installed Jerboa on my phone and started playing with it, and immediately noticed that posts I had previously read through the browser were marked in Jerboa. The only ways Jerboa could have gotten that info are: 1) the server recorded the info from the browser and relayed it to Jerboa, or 2) I was confused somehow and had also read those posts through Jerboa.
#2 above is something of a possibility but that leaves #1 as still not dispelled suspicion. I was hoping that someone familiar with the implementation would comment.
I can’t say that the backends don’t track that for sure because I haven’t looked at the source or anything. But keeping a history is something very commonly done in the client. Just like Web browsers.
Right, what I saw (unless I’m mistaken which is possible) was reading posts on one client (Firefox browser on my laptop computer) and then seeing the read posts marked on a completely different client (Jerboa on my phone). That means the info must have somehow been communicated between the two clients. Suspicion points to the server. I will ask on /c/privacy@lemmy.ml about this and/or look at the code base.
All I gave them are a private relay email address. So I am assuming there isn’t much else in terms of private data.
I am sure your ip address is logged somewhere for security. But beyond that I am not sure what else is there to store.
There’s tons more data than that that can be picked up. To start with, what posts you interact with and how. I’m sure there’s loads of other data points that can be tracked.
Thankfully the code is open source so a good answer can be had. Unfortunately not familiar with the code base
Ofc instances themselves may modify the code to track certain things. However this highlights the importance of using instances you trust.
I wonder if there is a checksum or something to verify what version of code an instance is using
The unfortunate thing is that eventually, like how it happens in mobile apps, owners of popular lemmy instances will be contacted by marketers/data harvesters with offers like “hey, we’ll give you $50,000 to install this data harvesting code on your site”, which is difficult to turn down for many people.
DB schema for user info:
Just what you’d expect really (settings, profile data, posts/comments), not even user agent (what browser you use) is stored. But keep in mind any instance you sign up to could be using a forked version that inserts Google analytics or FB pixel or any other sort of tracking tech.
deleted -> Bool,
:(
this indicates the user aint gonna be deleted, just marked as “deleted” but still actually exist ?
this is common practise, at least.
im a bit too lazy to look through all the code. maybe deleted users arent show, and their comments “content” is still there?
though technically my comments could be considered personal data and thus break gdpr
Data should never be actually deleted from the database, that breaks all the best practices. It can be overwritten with garbage though. But it should always be present.
For example, if you create a new account with email, username and password and get assigned some id like 42. Then after a while you want to delete your account. The account should stay intact, id number 42 should still be occupied, but your email, username and password should be replaced by null values.
Reference avro schema changes
I have yet to go through it all myself but from what I’ve seen of the Lemmy code it seems pretty straight forward. I doubt anything is being tracked other than what is required. Obviously your IP has to be taken down so they can route traffic to you. Username and all info you put on your profile or post. List of liked/disliked posts, subscribed or blocked communities and people, perhaps metadata of any photos or videos you upload, the package name for whatever mobile app you use, etc.
All the code is available on GitHub for you to check out if you’d like, 80% of it is written in Rust. But I am looking through it myself to see what kind of privacy I can expect from Lemmy. It’s already ahead of Reddit though, where I couldn’t view the source code and just had to trust what the company said.