Change 9 for Assembly 2024: Add draft for privacy policy #54
Assembly24-Change9-PrivacyPolicy into main @ -25,0 +47,4 @@
- The executive board can process all membership details & payment information in order to fulfil their tasks according to our bylaws.
- The cash auditors can access bank statements and other financial details, but must only use the data to fulfil the task of auditing the association's finances.
- Every association member must legally be able to acquire a list of contact details (e.g. email address) of all association members.
Is there a due process for this? Under what conditions? Will the other person be informed about such a request?
I think we should rephrase this to indicate that we are probably not going to send out a list of email addresses. In practice, if someone demands contact details, we'd probably try to quickly assemble a mailing list or similar approach.
Maybe we should give another example than "email addresses"?
Alternatively, we could inform Codeberg e.V. members transparently about this possibility and ask them to provide us with an alias in case they want to remove their current (potentially private) email address from the records.
I will discuss the exact requirements here with a lawyer.
Result of further investigation were two things:
- The suggestion in general was to keep the privacy policy as broad as possible, and put "how exactly we do things" into less broadly applicable documents like our association's regulation.
- The request is only valid in certain circumstances where the member wants to e.g. start a legal process he has the right to but needs the information for (like the "Minderheitsbegehren" / minority request).
@ -25,0 +56,4 @@
- Account details are stored at most until the deletion of the account.
- Membership details are stored until 3 years after the membership has ended.
- Technical metadata like IP addresses may not be stored for more than 3 days.
What other technical metadata is collected (and what purpose does the collection serve)?
From 3.1:
for the purpose of providing the platform services
The exact details are dependent on the software used - some may track user agents, usernames, IP geolocation and other info, but AFAIK usernames & IP addresses are the main PII here, anything else mostly can be inferred from the rest.
The new version now has much more details on that, it was also a recommendation from the lawyer.
@ -24,1 +28,4 @@
- Account details (username, email address, name, linked accounts), technical metadata like IP addresses, as well as other voluntarily provided details, for the purpose of providing the platform services.
- Payment information, for the purpose of processing donations.
Legal basis for processing this data is the use of our services respective the creation & continued use of an account according to our terms of service, respective a voluntary donation (§ 6.1.b DSGVO).
We should look into whether IP address processing also constitutes a legitimate interest (Art. 6.1.f GDPR). That might be more relevant for non-registered users (site/pages visitors).
I think this shouldn't be an issue, I will take a closer look into this.
I think this shouldn't be an issue, I will take a closer look into this.
We should look into whether IP address processing also constitutes a legitimate interest (Art. 6.1.f GDPR). That might be more relevant for non-registered users (site/pages visitors).
Yes, IP address collecting does fall under legitimate interest. This is a normal use case, for providing services and retaining log files in case of, e.g., a hacker attacking the website.
@ -25,0 +57,4 @@
- Account details are stored at most until the deletion of the account.
- Membership details are stored until 3 years after the membership has ended.
- Technical metadata like IP addresses may not be stored for more than 3 days.
Is there a chance that the metadata (e.g. access logs) could be retained for a longer period of time in the event of e.g. a security incident?
or supposed criminal investigations?
in the event of e.g. a security incident?
I would prefer requiring for them to be pseudonymized in that case. Access logs themselves are not PII AFAIK.
or supposed criminal investigations?
Even though there was a downvote, that's a good point! We could use a canary here. I will check with a lawyer what's possible, and mentioned in the privacy policy that this is indeed a possibility.
Information about potential lawful requests should not be part of the privacy policy, mostly as I couldn't get more information on that and a "less formal" place probably makes more sense here.
Regarding the logging duration, it was extended to 7 days now.
@ -25,0 +54,4 @@
## 5 Data Retention
- Account details are stored at most until the deletion of the account.
Backups
How do we deal with the theoretical case of:
- an account is deleted
- our database crashes
- restore a backup from when the account still exists
?
I've added that. We need a list of removed PII (theoretically that's just data retention rules & a list of people who requested GDPR-conform data removal, but we can/should include deleted users as well) for when we restore a backup. We should have a script for that.
@ -25,0 +56,4 @@
- Account details are stored at most until the deletion of the account.
- Membership details are stored until 3 years after the membership has ended.
- Technical metadata like IP addresses may not be stored for more than 3 days.
7 days right now
@ -25,0 +55,4 @@
## 5 Data Retention
- Account details are stored at most until the deletion of the account.
- Membership details are stored until 3 years after the membership has ended.
storing logs of an atack for post-mortum analysis longer?
3 years ... are you sure this is not longer? I expected that it would be more like 7 or 10 years (which seems to be the case for most tax-relevant documents? Don't we need to proove that someone was a member to mark certain transactions as tax-deductible or something?)
I was also wandering about this, but my quick search only showed information about businesses and not non profits. If we exceed the limits of simplified tax regulations, then it would be 6 or 10 years (differs for different categories of documents).
I will discuss this with a lawyer.
It is indeed 10 years and changed now. Logs are now stored for 7 days, for post-mortum analysis we would have to completely anonymize IP addresses anyways.
@ -25,0 +45,4 @@
Personal data may only be processed by the association bodies which are responsible for the respective tasks. This specifically means that:
- The executive board can process all membership details & payment information in order to fulfil their tasks according to our bylaws.
s/their/its?
our bylaws -> Codeberg's Bylaws
@ -25,0 +50,4 @@
- Every association member must legally be able to acquire a list of contact details (e.g. email address) of all association members.
- The infrastructure team can access all resources stored on our servers, as required for maintaining our infrastructure neccessary to provide Codeberg's services, as well as to provide tooling to support association members in their association work.
Some third parties might be involved with processing personal data under a specific data processing agreement, for example the Deutsche Skatbank, Hetzner Online GmbH or IN Berlin. The full & updated list can be requested through the presidium.
Where's the data stored? -> Germany, physical servers owned by us
We can't really guarantee that as e.g. Stripe processes personal data for us (albeit by the user's choice) and is not an EU entity. I think this is more something for an infrastructure review than for the privacy policy if we can't guarantee it for all personal data we process. I can try to add it to the list of third parties in the end though in some way.
I have added "All servers of Codeberg e. V. are physically located in Germany." under §4, before the third-party processing clause.
@ -4,2 +3,3 @@
## 1 General Information
### User contributions
As a non-profit organization, we don't gain much from collecting your data: we just use it for what we need to be a great platform and community for the FOSS world. This document outlines our responsibilities and duties regarding the processing of your personal data and inform you about your rights according to § 13 DSGVO.
I think we should really find a cool wording here which differentiates from general introductions from most companies ...
I like it. A bit like the GPL preamble that explains the spirit, rather than the legal specifics.
Here's another suggestion:
We don't want to need your data. We therefore want to be fully transparent about how we use it, and are always open to viable suggestions on how to reduce your data footprint on our servers. We try to use privacy-friendly open source software and not rely on third parties whenever possible in our modern world, both as a provider of our public FOSS forge and as a German non-profit organization.
@ -25,0 +48,4 @@
- The executive board can process all membership details & payment information in order to fulfil their tasks according to our bylaws.
- The cash auditors can access bank statements and other financial details, but must only use the data to fulfil the task of auditing the association's finances.
- Every association member must legally be able to acquire a list of contact details (e.g. email address) of all association members.
- The infrastructure team can access all resources stored on our servers, as required for maintaining our infrastructure neccessary to provide Codeberg's services, as well as to provide tooling to support association members in their association work.
There isn't "one infrastructure team", but rather a lot of individuals teams right now. Some might be able to access all data, others only a subset. But I think we should reflect that there might be a lot of people who have certain access privileges on data, even if it is "just" access logs of a random unimportant service.
"according to their position"
@ -25,0 +50,4 @@
- Every association member must legally be able to acquire a list of contact details (e.g. email address) of all association members.
- The infrastructure team can access all resources stored on our servers, as required for maintaining our infrastructure neccessary to provide Codeberg's services, as well as to provide tooling to support association members in their association work.
Some third parties might be involved with processing personal data under a specific data processing agreement, for example the Deutsche Skatbank, Hetzner Online GmbH or IN Berlin. The full & updated list can be requested through the presidium.
maybe have a full list as an appendix (without the need to update the privacy policy)?
@ -25,0 +43,4 @@
## 4 Data Handling by Association Bodies & Third Parties
Personal data may only be processed by the association bodies which are responsible for the respective tasks. This specifically means that:
Moderation Team, private repositories, etc.
@ -23,2 +28,3 @@
The pre-announcement subscription list was intended for single use only and has been deleted after the announcement of the Codeberg.org launch. Accounts on pre-announcement testing services have been migrated to Codeberg.org, where possible. These accounts and the connected data can be deleted using the "Delete Account" button on your personal account page. All unused data from testing servers has been deleted after launch.
When using Codeberg as a platform, we need to process the following data for the respective reasons:
- Account details (username, email address, name, linked accounts), technical metadata like IP addresses, as well as other voluntarily provided details, for the purpose of providing the platform services.
Something like "Repository contents, including issues, comments and contents of private repositories, are not treated as personal data. It is your responsibility to not store any personal data here, or obey the GDPR when specifically using it to store personal data of other persons." might make sense 🤔
@ -25,0 +59,4 @@
## 5 Data Retention
- Account details are stored at most until the deletion of the account.
- Membership details are stored at most until 3 years after the membership has ended.
Must be checked, it's more like 6-10y.
Technically it's still January somewhere, but here is the new basically final draft version. 😉
I have incoporated many suggested changes from the comments and the legal review, there are still two questions left which need to be solved in the next days, but nothing really changes the meaning there.
@ -25,0 +95,4 @@
> ***TODO:*** Check whether the form is okay. Feedback der Anwältin: "Die Rechte der Betroffenen müssen ausgeschrieben werden", ggf. noch mal nachfragen.
<!--
why is the appendix commented out?
We should keep this internal and only provide it on request.
This is a considerable improvement. Most of the comments here are about typos and nitpicks and should be quick to fix - I don't want to scare you.
The first two comments are lengthy, as they involve the General information section. I feel like we make a series of ambiguities and promises (negated by those ambiguities). Given that this would be hard to update later, is there any way to separate this from the legally binding section?
I also commented on the use of DSGVO, as I presume that letting people look up the law (or a translation of it) is in line with your work's goals.
@ -4,2 +3,3 @@
## 1 General Information
### User contributions
**We don't want to need your data.** We therefore want to be fully transparent about how we use it, and are always open to viable suggestions on how to reduce your data footprint on our servers. We try to use privacy-friendly open source software and not rely on third parties whenever possible in our modern world, both as a provider of our public FOSS forge and as a German non-profit organization.
- We do not instead of We do not.
wherever possible in our modern worldis not appropriate for a legal document. What does modern mean?We try to use privacy-friendly open source software: Do we publish our member management tools? What do we classify as privacy-friendly? I find this too ambiguous and in contradiction to how we present ourselves on the homepage.
I rewrote the same content in three sentences:
We strive to minimize the amount of data on Codeberg e.V. members and Codeberg.org users.: This removes the ambiguity behind you, and removes the need for the last sentence. It is also more clear thanpublic FOSS forge, as we host more than Forgejo.As such, we strive to be transparent about how we use your data, and are open to suggestions for reducing your data footprint on our servers.We share your personal information only when strictly necessary.:whenever possibleis way too ambiguous and not in line with how we currently do things.
We strive to minimize the amount of data on Codeberg e.V. members and Codeberg.org users.
Is data on Codeberg e.V. members and Codeberg.org users made more concrete later on? e.g. it doesn't indicate where data is stored (e.g. on hardware owned/operated by whom?) and is still a bit vague, but that would be okay if it is specified later.
Additional note: We do not just host software.
We strive to minimize the amount of data on Codeberg e.V. members and Codeberg.org users. As such, we strive to be transparent about how we use your data, and are open to suggestions for reducing your data footprint on our servers. We share your personal information only when strictly necessary.
This unfortunately sounds like every company's privacy policy ever to me - I think we should be creative with this first paragraph.
It is the introduction of the privacy policy, everything in there is made more concrete later on.
We do not just host software.
I don't see where that is implied in the original sentence.
I agree with the point you've raised.
Marking as resolved.
@ -6,2 +5,3 @@
**We don't want to need your data.** We therefore want to be fully transparent about how we use it, and are always open to viable suggestions on how to reduce your data footprint on our servers. We try to use privacy-friendly open source software and not rely on third parties whenever possible in our modern world, both as a provider of our public FOSS forge and as a German non-profit organization.
For all data you contribute (for example code, content, repositories, account details and settings), you have full responsibility and control to add, modify, create this data. If some data cannot be modified by users, this is considered a technical bug that needs urgent fixing. Please report all issues to the Codeberg.org Community Issue Tracker.
This document helps to achieve that goal by outlining our responsibilities and duties regarding the processing of your personal data and inform you about your rights according to § 13 DSGVO.
This documents helps to achieve that goal: Could be simplified or removed - it feels like an opinion. I think that describing it as a goal, then following up withDSGVO("legal obligation") is a bit contradictory.DSGVO->GDPR(or use both); not everyone speaks German.
Alternative suggestion:
This document outlines our responsibilities and duties regarding the processing of your personal data, as defined by Article 13 of the European Union's General Data Protection Regulation (GDPR). It also provides information on the rights that you have as a data subject.
@ -25,0 +30,4 @@
When using Codeberg as a platform, we need to process the following data for the respective reasons:
1. Account details (username, email address, name, linked accounts), for the purpose of providing you with an account on our platform.
- Data is recorded during registration at <https://codeberg.org/user/cbrgp/CpxzumI>.
Wrong link? Nitpick: account registration
@ -25,0 +37,4 @@
2. Voluntarily provided author details (name & email address) when using e.g. the third-party software "Git" (<https://git-scm.com/>) to create/upload "commits" to Codeberg, for the purpose of being able to reconstruct the original authorship of uploaded code for copyright & licensing reasons.
- Data is provided voluntarily by the user, usually during setup, and is then automatically included in newly created commits.
- Legal basis for processing this data is the Open Source license of the project as a legal contract (§ 6.1.b DSGVO).
- Attention: Open Source licenses are non-revokable and not time-limited! The author details will never have to be deleted, as keeping them is required by most Open Source licenses as a legal contract. Also, users of the software may have a legitimate interest in keeping the authorship records to prove who granted them the license.
non-revokable -> irrevocable (typo, vocabulary)
time-limited -> apply indefinitely (time-limited is vague)
The author details will never have to be deleted, as: ->Commit author records cannot be deleted, as...
Also, users of the software may have a legitimate interest in keeping the authorship records to prove who granted them the license.
may?
Apparently, nonrevokable, nonrevocable and irrevocable are equivalent words you can find in a dictionary. Although I prefer irrevocable, the dash should probably be dropped.
@ -25,0 +39,4 @@
- Legal basis for processing this data is the Open Source license of the project as a legal contract (§ 6.1.b DSGVO).
- Attention: Open Source licenses are non-revokable and not time-limited! The author details will never have to be deleted, as keeping them is required by most Open Source licenses as a legal contract. Also, users of the software may have a legitimate interest in keeping the authorship records to prove who granted them the license.
3. Payment information (name as well as the provider-specific identifier like IBAN or email address), for the purpose of processing donations.
- Data is recorded upon donation by the corresponding third party chosen as a payment method during donation at <https://donate.codeberg.org/> or for the payment of membership fees, e.g. during membership application at <https://join.codeberg.org>.
during donation -> when donating
during membership application -> when a member application is sent
"during" can mean that we collect data before the information is sent.
@ -25,0 +40,4 @@
- Attention: Open Source licenses are non-revokable and not time-limited! The author details will never have to be deleted, as keeping them is required by most Open Source licenses as a legal contract. Also, users of the software may have a legitimate interest in keeping the authorship records to prove who granted them the license.
3. Payment information (name as well as the provider-specific identifier like IBAN or email address), for the purpose of processing donations.
- Data is recorded upon donation by the corresponding third party chosen as a payment method during donation at <https://donate.codeberg.org/> or for the payment of membership fees, e.g. during membership application at <https://join.codeberg.org>.
- Legal basis for processing this data is to fulfil legal obligations for processing the donation (§ 6.1.c DSGVO).
fulfil -> fulfill
British vs. American english - seems like we're mostly using American english, but I'm sure we have similar mistakes elsewhere ;)
@ -25,0 +49,4 @@
### 3.2 Data of Association Members
When you're a member of Codeberg e. V., we need to process the following data for the respective reasons:
When you're a... -> As a member of Codeberg e.V., we process the following information
you're is informal. We keep a copy of the said data. need can be dropped. respective -> following
@ -25,0 +69,4 @@
2. The *cash auditors* can access bank statements and other financial details, but must only use the data to fulfil the task of auditing the association's finances.
3. The *moderation team* can access private repositories & additional metadata required to investigate potential violations of our terms.
4. The appointed *infrastructure admins* can potentially access all resources stored on our servers, as required for maintaining our infrastructure neccessary to provide Codeberg's services, as well as to provide tooling to support association members in their association work.
5. Every *association member* could in some cases have a legitimate interest to contact other members (e.g. due to § 37 BGB), and then must legally be given a list of members including a way of contacting them (e.g. through their email address).
In some cases, every: Moving In some cases to the beginning of the sentence makes the sentence much easier to read.
@ -25,0 +72,4 @@
5. Every *association member* could in some cases have a legitimate interest to contact other members (e.g. due to § 37 BGB), and then must legally be given a list of members including a way of contacting them (e.g. through their email address).
6. Tasks involving processing personal data may be delegated to other people within the association by the responsible person.
Third parties may be involved with processing personal data under a specific data processing agreement. We limit this to internet services providers (who will only have access to encrypted data streams) and payment processors, a full list can be provided upon request.
typo: internet services providers -> internet service providers
a full list of what?
@ -25,0 +80,4 @@
2. Membership details & payment data are stored for 10 years after the membership has ended.
3. Technical metadata like IP addresses may not be stored for more than 7 days.
4. Personal data may exist in encrypted backups for up to 1 year, but will be purged upon the restoration of the backup if the data retention period is exceeded.
5. In general, all personal data is stored as long as required according to German law.
typo: as required according to -> as required by
@ -25,0 +79,4 @@
1. Account details are stored until the deletion of the account.
2. Membership details & payment data are stored for 10 years after the membership has ended.
3. Technical metadata like IP addresses may not be stored for more than 7 days.
4. Personal data may exist in encrypted backups for up to 1 year, but will be purged upon the restoration of the backup if the data retention period is exceeded.
This sounds challenging. If we need to restore a backup, how do we know the data was purged?
Also, is one year really how long we want to store a backup?
AFAIK, the best way is to keep a list of UUIDs that were deleted at a certain point in time, and keep that alongside our backup. I can't find the page where I read that though, but that said I haven't found any other suggested solution yet, just sites saying "it's complicated".
At least I don't think we want to store backups for longer than 1 year.
We should stay grounded and work with what we know and what we have. The two past replies raise the following questions:
- What do we seek to protect ourselves from with a retention period of over a year? Say, some supposed corruption caused over the longer-term that might require reverting the database state to over a year ago?
- Is the list of UUIDs actually technically feasible right now?
I think something like 90 days is more reasonable. I imagine the following use for less frequent backup pruning:
- We might want to check historical things, e.g."When was this (issue) introduced?".
- Backup pruning takes resources and running it not too might be a good thing. For instance, I run the backup machine for our mail server at home, which does less frequent backup and even less frequent pruning.
- Technical issues: Back when we had backups running on a Raspberry Pi, there was a time when it was unable to compact the backup due to RAM constraints. Giving some time to detect and fix issues with backups is good.
But one year is rally long, I do agree.
@ -25,0 +45,4 @@
- Data is processed during regular use of our website, and includes the IP address of the requesting computer, the browser and operating system you are using, the date and time of access, the Uniform Resource Locators (URL) requested on our website, as well as the previously visited website (referrer URL). This information is stored anonymously and is not associated with your personal data.
- Further metadata includes technically necessary cookies to identify the session of a logged-in user or to protect users from so-called CSRF attacks. Codeberg does NOT use cookies or other techniques for user-targeted analytics or advertisements, which is the reason why you do not see a cookie banner on our platform.
- Legal basis for processing this data is a legitimate interest of the platform operator (§ 6.1.f DSGVO).
5. Repository contents, including issues, comments and contents of private repositories, are NOT directly treated as personal data processed by Codeberg. It is the responsibility of a repository's owner to not store any personal data here, or to obey the GDPR when specifically using it to store personal data, especially of other persons.
here -> Codeberg's services
inconsistent use of GDPR and DSGVO
it -> what?
repository's owner? (not comments, contents, private repositories)
Actually, I will remove this point - it is better suited for the Terms of Service, and we can not just escape from the DSGVO by saying where it doesn't apply.
I think this part should stay in some form (albeit it might be fine to shorten it a bit), it should at least be mentioned.
Seconded, I think it is best to actively disclose this to set an expectation in the event of a highly hypothetical security vulnerability that might expose the contents of private repositories.
Not that we want this to happen and should not work towards preventing something like that from happening (i.e. internal team conversations), but still. If a person hosts closed-source NDA-bound patented software - it might be best not to have to have to answer to them if they were breaking the rules in the first place.
Another suggestion that might make it clear that it is more of an obligation to users and not primarily a limitation of our liability:
- When projects hosted on Codeberg process personal data using Codeberg's resources (e.g. within our CI, by using repos as storage, or through a website hosted on Codeberg Pages), the project owner is primarily responsible for the data processing and must make sure to adhere to the GDPR independently from these terms.
Concerning the CI and that sort of stuff: Does that mean that there is a "Shared Responsibility" (Art. 26 GDPR; § 62 BDSG) or do we have a "Processor"-"Controller"Relationship (Art. 28 GDPR). If it's the latter one, a data processing agreement needs to be made. Also, one may need to have a formal data protection officer (see § 38 BDSG). Whatever the case, the clear relationship should be stated.
Saying this for the record: I sent a revised version in private (because of this Git flow not being 100% perfect for collaboration) as requested that addresses many of the points raised here. It might need some further editing.
Many thanks for proposing these much-needed improvements. I have added a few comments to help improve the text based on my understanding of the matters at hand.
I'd be glad if we could bring these changes to a vote soon.
I have a few more general remarks:
- The General Data Protection Regulation is called GDPR in English, not DSGVO. To avoid any confusion, since law differs around the world, I would recommend writing it out verbatim at least once. The GDRP consists of Articles (Art.), not paragraphs (§).
- The following kinds of processing are not yet reflected in the policy:
- E-mail contact / mail inbox data
- Employees, volunteers (of which additional data might be collected for payment reasons, or when signing a confidentiality agreement due to processing member's data with a non-member volunteer if such ever happens?)
- For the board, additional data are processed and published (name, date of birth, place of residence, nationality)
- Re. line 82, which I somehow can't open an additional thread on: Membership details can be deleted some time sooner. Business letters (contract that constitutes the membership, i.e. submitted membership form) may be deleted after 6 years. Booking receipts may be deleted after 8 years. But the booking itself must be stored for 10 years. (All of this on the basis of § 147 (3) AO.) So in conclusion, there is no reason to store a former member's postal address for 10 years and I would split the two kinds of data in the policy.
- It is not clear to me whether a comment on an issue is "account data" or repository data. What about repository data that is not covered by a proper license, e.g. because it is a private repository? Does Codeberg become a party to license that is applied to a private repository? Likewise, it is not clear to me when repository data is removed.
@ -12,2 +16,3 @@
Germany
### IP logging
**Data Protection Officer:** [privacy@codeberg.org](mailto:privacy@codeberg.org)
Is there actually a data protection officer now, re. Codeberg-e.V./Discussion#110? Per Art. 13 (1) (c) GDPR, the contact details of a data protection officer only need to be specified "where applicable".
Yes, @phrogg volunteered to be one - we don't strictly need one yet, but having one is better than not and doesn't really have any disadvantages. We can appoint him together with the privacy policy.
Доброго, но а мне это зачем и кто сказал что, Я не против, а не оборот
@ -24,0 +31,4 @@
- Data is recorded during account registration on Codeberg.org at <https://codeberg.org> (under "Register").
- Data can be changed on the user account page at <https://codeberg.org/user/settings>.
- Pseudonyms can be used in the public profile, there is no requirement to use real personal information besides a reachable e-mail address.
- Legal basis for processing this data is the user's consent to either share the data on our platform or to receive notifications (§ 6.1.a DSGVO).
I would expect the processing of this data to be constituted through our usage agreement, wouldn't it? We are not momentarily asking for consent when users sign up. It also wouldn't make sense, since singing up is not possible without certain data.
Would it be a sufficient fix if the Register page provided a link to a Privacy Policy?
I am not lawyer:
I would expect the processing of this data to be constituted through our usage agreement, wouldn't it?
We are not momentarily asking for consent when users sign up.
By law, you seem to be required to have a dedicated privacy policy.
It may? be part of the Terms of Use,
but the privacy policy has to be linked from every page,
and the link basically has to state,
that it is a link to the privacy policy.
The terms of use are not linked in the registration form as well.
It also wouldn't make sense, since singing up is not possible without certain data.
Depends, what is done with the users' data, which is not only the registration data.
but the privacy policy has to be linked from every page,
and the link basically has to state,
technically linked in the footer already - but I offered something actionable with a yes/no that concerns the registration form, so I don't see the relevance with the substance of my question here.
I would expect the processing of this data to be constituted through our usage agreement, wouldn't it? We are not momentarily asking for consent when users sign up. It also wouldn't make sense, since singing up is not possible without certain data.
The user voluntarily shares data during registration under the conditions of the terms of use, and then the data is processed according to the privacy policy. We as Codeberg do not have contractual obligations (which would be point b) from the terms of use.
Agree that this needs to be reflected in the signup process a bit more.
We are not momentarily asking for consent when users sign up
Addressed here: Codeberg-Infrastructure/forgejo#108
@ -24,0 +36,4 @@
- Data is provided voluntarily by the user, usually during setup, and is then automatically included in newly created commits.
- Legal basis for processing this data is the license of the project as a legal contract (§ 6.1.b DSGVO).
- Attention: Most licenses approved by Codeberg are irrevocable and apply indefinitely, to the extent permitted by copyright law. Such licenses are considered to be legal contracts. As a distributor of open-source content, Codeberg e. V. reserves the right to maintain a copy of commit authorship records indefinitely. Additionally, Codeberg e. V. reserves the right to distribute such authorship records to all parties that wish to download, view or otherwise inspect content published using an allowed license. Such parties possess a legitimate interest to this information, as commit authorship records are necessary for adhering to the legal terms stipulated by the project license.
3. Payment information (IBAN, legal name, e-mail address), for the purpose of processing donations and membership fees.
I'm confused why membership fees are brought up here, as we are talking about "Platform users". Members can certainly be Platform users, but not every Platform user donates or pays membership fees. Thus I would add both as separate sections.
or just (when applicable)
@ -24,0 +42,4 @@
- Codeberg e. V. records identifiers provided by the third-party payment processor. Such identifiers can include an IBAN, legal name, e-mail address or other data.
- Legal basis for processing this data is to fulfill legal obligations for processing donations and membership fees (§ 6.1.c DSGVO).
4. Technical metadata for the purpose of providing the platform services and avoiding misuse of our resources.
- Data is processed during regular use of our website, and includes the IP address of the requesting computer, the browser and operating system you are using, the date and time of access, the Uniform Resource Locators (URL) requested on our website, as well as the previously visited website (referrer URL). This information is stored anonymously and is not associated with your personal data.
It is contradictory to say that the IP address (which is personal data) is stored "anonymously" and separately from itself. The URL might also contain personal information, e.g. if a repository can only be accessed by one person, then nobody else would know the links to its contents and it is thus easily identifiable who accessed the site.
Maybe it makes more sense like this:
When stored in logs, the IP address is truncated so that this data is not associated with your personal data.
@ -24,0 +50,4 @@
Codeberg e. V. processes and stores the following information of its association members for the reasons outlined below:
1. Membership details (name, e-mail addresses, postal address), for the purpose of managing the association and pursuing our association purposes.
"pursuing our association purposes" does not sound like a well-defined purpose to me. The purposes could change with time, thus it would seem to me to be too vague.
We need to specify that it is not possible to enter into a membership contract without providing this data, and that not providing the data can prevent members from exercising the membership rights (Art. 13 (2) (e) GDPR).
The "association purposes" are clearly defined in our bylaws (§2, https://codeberg.org/Codeberg/org/src/branch/main/en/bylaws.md#2-purpose-and-tasks), I will add a reference to that so it's clear that this exact section is referenced.
@ -24,0 +51,4 @@
Codeberg e. V. processes and stores the following information of its association members for the reasons outlined below:
1. Membership details (name, e-mail addresses, postal address), for the purpose of managing the association and pursuing our association purposes.
- Data is recorded during registration at <https://join.codeberg.org>.
Per §5 (1) of the statute, one can theoretically also become a member "in writing".
Is this point really needed at all?
Yes, we must list all locations (URLs etc.) where data is collected according to the lawyer I talked with, or at least it is strongly recommended.
All URLs? I personally have never seen that one.
If this is the case, why does this not include the user's settings page?
@ -24,0 +52,4 @@
1. Membership details (name, e-mail addresses, postal address), for the purpose of managing the association and pursuing our association purposes.
- Data is recorded during registration at <https://join.codeberg.org>.
- Legal basis for processing this data is to fulfill contractual obligations arising from the association membership (§ 6.1.b-c DSGVO).
Two letters are listed here. So it would seem like there are two different legal grounds, but only one is mentioned in the text. I would distinguish "archiving" (per legal requirements) and "active use" (for membership management) as separate purposes. Same in line 58, except there it also sounds strange to talk about collecting membership fees as our contractual obligation, when it is much rather our contractual right.
Thanks, good point, I'll change this.
Regarding your point "it also sounds strange to talk about collecting membership fees as our contractual obligation" - obligations is the wording used in DSGVO, and the contract obligates us to various things like e.g. send invitations for the general assembly, keeping records of our members, collecting the membership fee (it is our right to receive the membership fee, but our obligation to collect it when a SEPA mandate is given), etc.
@ -24,0 +73,4 @@
All servers of Codeberg e. V. are physically located in Germany.
Third parties may be involved with processing personal data under a specific data processing agreement. A full list of third-parties can be provided upon request.
Why only upon request? It is okay to make this a separate document but I don't see why it couldn't be public. It will need to be prepared anyhow.
For context: A previous revision of the commit contained such a list - I can only theorize as to why it was removed.
To my knowledge in Germany,
this info is required to be available when the data processing is being done,
and therefore should be available without any request.
What does this info mean here? The third parties here, as listed by the commit, were, for instance, the Individual Network Berlin e.V. - aka. our colocation provider. I don't think I've seen anybody say that they host their servers on Hetzner, for example.
Like, I agree it would be cool and I'm 200% for documenting this somewhere, but there's a difference between cool and obligations - like, if in-berlin were to hypothetically burn down, it'd be great if we didn't, hypothetically (I'm not sure if this is the case), have to send everyone a new version with 30 days to opt out with a new hosting provider + an urgent member assembly.
I think we need more information about the problem before we try finding a solution for the problem.
I don't know, what was listed in the list beforehand,
so I assumed third party in the sense of DSGVO.
Third party has a specific meaning.
Third party is not someone like the colocation provider.
A third party is, when personal information is given to someone else,
so it can be processed with permission by the third party.
The content of the server is not allowed to be processed colocation provider,
as you probably have not given any permission regarding this.
A third party could be an advertiser, that uses/buys personal data, or
a SaaS storage provider, that writes in its EULA,
that data is sent to third countries for not backup or similar reasons.
The list of third parties should actually be very short, or even zero for Codeberg.
PS: Some are actually stating, that the server is hosted at Hetzner.
PPS: A variant I have also seen is, to just state, that data is being processed by the hoster for hosting purposes without stating the hoster exactly: https://www.flyeralarm.com/de/i/datenschutzerklaerung?hide-cookie-banner
Not including a full list was recommended by the lawyer I contacted because the list may change often and "better safe than sorry" as the privacy policy is a binding legal document and shouldn't contain much more than neccessary.
I would love to have a full public list, but that is something for our documentation or a separate file.
AFAIK for Codeberg, the list mainly contains payment processors (PayPal & Stripe) and hosters (Hetzner & NetCup, both are only used for specific stuff like email as well as as an emergency fall-back solution when there are issues with our physical infrastructure). Also in the future possibly stuff like payroll management etc.
@ -24,0 +80,4 @@
1. Account details are stored until the deletion of the account.
2. Membership details & payment records are stored for 10 years after the membership has ended.
3. Technical metadata like IP addresses may not be stored for more than 7 days or as required by German law.
"may not be" → "are not"?
@ -24,0 +81,4 @@
1. Account details are stored until the deletion of the account.
2. Membership details & payment records are stored for 10 years after the membership has ended.
3. Technical metadata like IP addresses may not be stored for more than 7 days or as required by German law.
4. Personal data may exist in encrypted backups for up to 1 year. If the data retention period is exceeded at the time of restoration of a backup, affected personal data will be purged.
This sounds like a new kind of processing not reflected above, that needs its own justification and should be contained in one of the above sections.
Storing encrypted backups are not deemed processing of personal data, as long as the data is purged upon restoration.
See e.g. https://blog.quantum.com/2018/01/26/backup-administrators-the-1-advice-to-deal-with-gdpr-and-the-right-of-erasure/, I think there was also a German ruling regarding this but can't find it right now.
CNIL confirmed that you’ll have one month to answer to a removal request, and that you don’t need to delete a backup set in order to remove an individual from it. Organizations will have to clearly explain to the data subject (using clear and plain language) that his or her personal data has been removed from production systems, but a backup copy may remain, but will expire after a certain amount of time (indicate the retention time in your communication with the data subject). Backups should only be used for restoring a technical environment, and data subject personal data should not be processed again after restore (and deleted again). While this adds some complexity, it allows organizations to have some time to re-engineer their data protection processes.
@ -24,0 +82,4 @@
2. Membership details & payment records are stored for 10 years after the membership has ended.
3. Technical metadata like IP addresses may not be stored for more than 7 days or as required by German law.
4. Personal data may exist in encrypted backups for up to 1 year. If the data retention period is exceeded at the time of restoration of a backup, affected personal data will be purged.
5. Personal data is stored in accordance with the statutory archiving obligations in Germany.
This is not very specific. As a reader I do not know more after reading this paragraph than I did before. What kinds of data are subject to what kinds of regulations?
Here as well, the lawyer recommended against stating this more closely in the privacy policy, as the obligations may change, there are some we miss or there are other requirements only affecting us in some circumstances.
Note that this should probably say either "the German Legislature" or "German legislation"
@ -24,0 +84,4 @@
4. Personal data may exist in encrypted backups for up to 1 year. If the data retention period is exceeded at the time of restoration of a backup, affected personal data will be purged.
5. Personal data is stored in accordance with the statutory archiving obligations in Germany.
## 6 Data Subject Rights
This section is quite standard nowadays, but reads very boilerplate. I think it would be much better to indicate on which areas the rights can be employed exactly, instead of just referring to "certain conditions", and if technical measures allow users to employ those rights, then to indicate which. I feel this would underline the fact that we actually care as we claim in the first section.
We are not allowed to change much here, the section is required by DSGVO and must just plainly list the legal rights. We also do not really have an automated process we could link to for most of the rights right now. I'll change the "certain conditions" to the correct DSGVO paragraph though.
@ -24,0 +90,4 @@
1. **Right to access:** You can request copies of your personal data.
2. **Right to rectification:** you can request that Codeberg e. V. corrects any information you believe is inaccurate, or completes any information you believe is incomplete.
3. **Right to erasure:** you can request that Codeberg e. V. erases your personal data, under the condition that the retention and processing of the information is not required by law and is not neccessary due to the reasons outlined in § 6 GDPR.
As I understand it, the reasons in Art. 6 GDPR are required for legality of processing, but not sufficient for processing to be necessary. A better reason to cite is Art. 17 (3) GDPR.
3a7bda2399
to 2bad44ef35
Thanks everyone for the valuable feedback and sorry that it again took me that long to work through it! I think I have updated everything now according to the discussion and would push this for voting soonTM.
The General Data Protection Regulation is called GDPR in English, not DSGVO. To avoid any confusion, since law differs around the world, I would recommend writing it out verbatim at least once. The GDRP consists of Articles (Art.), not paragraphs (§).
I'll change all occurences to GDPR as well as § to Art. - I guess it's correct that the DSGVO counts as just a translation of the GDPR?
The following kinds of processing are not yet reflected in the policy: E-mail contact / mail inbox data
I've asked the lawyer about that; it is treated the same as letters - by contacting us, consent to process the data is implied (6.1.a), as well as us treating it according to archiving obligations & limits.
The following kinds of processing are not yet reflected in the policy: Employees, volunteers (of which additional data might be collected for payment reasons, or when signing a confidentiality agreement due to processing member's data with a non-member volunteer if such ever happens?)
Good point, but for us this can be specified separately in the work contracts, and is in most cases implied due to German legislature. We can at some point add a "3.3 Data of employees, contractors and paid volunteers (Ehrenamtspauschale)", but I'd really like to postpone this point.
The following kinds of processing are not yet reflected in the policy: For the board, additional data are processed and published (name, date of birth, place of residence, nationality)
Only date of birth was missing, the nationality as far as I know is not required (just the postal address). I have added a point 4.7 to reflect that executive board data is public.
Re. line 82, which I somehow can't open an additional thread on: Membership details can be deleted some time sooner. Business letters (contract that constitutes the membership, i.e. submitted membership form) may be deleted after 6 years. Booking receipts may be deleted after 8 years. But the booking itself must be stored for 10 years. (All of this on the basis of § 147 (3) AO.) So in conclusion, there is no reason to store a former member's postal address for 10 years and I would split the two kinds of data in the policy.
I 'll change the line to "Membership details & payment records are stored for up to 10 years after the membership has ended due to legal obligations.".
It is not clear to me whether a comment on an issue is "account data" or repository data. What about repository data that is not covered by a proper license, e.g. because it is a private repository? Does Codeberg become a party to license that is applied to a private repository? Likewise, it is not clear to me when repository data is removed.
The licensing & removal of repository contents is part of our terms of use, not the privacy policy; any processing of personal data in a structured way should already be reflected here. If you have a suggestion go ahead but I don't really know where that would belong here, I'd probably rather have a section in the documentation regarding legal/technical details around account deletion.
Note: Before merging this, let's ensure that we inform users about the changes a few weeks before (as stipulated by some law, I believe).
Let's remember to add a Last updated: on October 2nd, other than that it's good to go
This reverts commit 23887a4819.
:)
🎊
This issue or pull request already exists
Feature concerning the Privacy Policy
New feature
Feature concerning the Bylaws
Feature concerning the ToS
Need some help
Something is wrong
More information is needed
Proposal was reviewed and will be considered
This won't be fixed
No due date set.
No dependencies set.
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?