The Codeberg e.V. presidium recently talked about a new approach to new user accounts on Codeberg. This has some history.
Let's reiterate the problems:
- spam waves (accounts are easily created)
- creating thousands of issues
- deleting user accounts takes much more resources on the server than creating them (performance problem, DoS)
- emails are sent out → bad email reputation
- users are annoyed and project workflows disturbed
- we receive copyright complaints when linking to infringing material → legal issue
- captcha is inaccessible, also see #479, #483
- interaction quality on Codeberg is low (if it is "too easy" to create an account, you have more people who don't care about free software and simply drop a comment and never show up again; or that actually have a very demanding / rude tone)
- performance issues lead to repeated requests to slow down new user accounts, see #908 and #1130 for examples
- introducing a singup workflow that better tells users that Codeberg is about Free Software might reduce the amount of proprietary / private repositories abusing our service
The following options have been discussed and have been found not to tackle the problems in a sufficient way:
- manual account approval: increased effort on our side, potential delay might turn off contributors ("I just want to report a small bug to project X")
- it works well for e.g. Mastodon instances, but if you just want to participate quickly, you have federated instances at hand which is not yet the case with Codeberg
- other captcha options are either not accessible, not privacy friendly, not well tested or have other difficulties; and the setup at Codeberg stalled
- removing spam does not seem to reduce its creation
We reconsidered the pros and cons for manual account approval and came to the conclusion that:
- reading a short text is less effort than writing it (DoS ratio is balanced again)
- the review workflow might easily be offloaded
- increasing the barrier might increase the quality of interactions on Codeberg
So we open up the possibility for someone to implement a service that could look like this (or similar):
- Forgejo-native signups are disabled, the sign-up route redirects to an external service instead
- the service explains what Codeberg is and asks one or a few questions
- the necessary information for the registration is asked in the form (e.g. username, email etc)
- based on the responses, someone has the possibility to approve the registration
- confirming the correctness of the mail address still makes a lot of sense
- we could regularly ask long-term Codeberg users (e.g. older than a year) to sign in via OAuth and give them the possibility to review a few accounts and do us a favour
- the accounts can finally be created via API
(The technical implementation can vary a lot, an implementation within Forgejo might also be an option)
If someone wants to work on this, please let us know, ideally by creating a team in Codeberg/Contributing. We will not currently dedicate any power of ours to it, but we welcome contributions, because we think that this might be a more healthy way to join Codeberg.
Feedback about the idea itself is also very welcome.
Thank you for understanding.
### Comment
The Codeberg e.V. presidium recently talked about a new approach to new user accounts on Codeberg. This has some history.
Let's reiterate the problems:
- spam waves (accounts are easily created)
- creating thousands of issues
- deleting user accounts takes much more resources on the server than creating them (performance problem, DoS)
- emails are sent out → bad email reputation
- users are annoyed and project workflows disturbed
- we receive copyright complaints when linking to infringing material → legal issue
- captcha is inaccessible, also see #479, #483
- interaction quality on Codeberg is low (if it is "too easy" to create an account, you have more people who don't care about free software and simply drop a comment and never show up again; or that actually have a very demanding / rude tone)
- performance issues lead to repeated requests to slow down new user accounts, see #908 and #1130 for examples
- introducing a singup workflow that better tells users that Codeberg is about Free Software might reduce the amount of proprietary / private repositories abusing our service
The following options have been discussed and have been found not to tackle the problems in a sufficient way:
- manual account approval: increased effort on our side, potential delay might turn off contributors ("I just want to report a small bug to project X")
- it works well for e.g. Mastodon instances, but if you just want to participate quickly, you have federated instances at hand which is not yet the case with Codeberg
- other captcha options are either not accessible, not privacy friendly, not well tested or have other difficulties; and the setup at Codeberg stalled
- removing spam does not seem to reduce its creation
We reconsidered the pros and cons for manual account approval and came to the conclusion that:
- reading a short text is less effort than writing it (DoS ratio is balanced again)
- the review workflow might easily be offloaded
- increasing the barrier might increase the quality of interactions on Codeberg
So we open up the possibility for someone to implement a service that could look like this (or similar):
- Forgejo-native signups are disabled, the sign-up route redirects to an external service instead
- the service explains what Codeberg is and asks one or a few questions
- the necessary information for the registration is asked in the form (e.g. username, email etc)
- based on the responses, someone has the possibility to approve the registration
- confirming the correctness of the mail address still makes a lot of sense
- we could regularly ask long-term Codeberg users (e.g. older than a year) to sign in via OAuth and give them the possibility to review a few accounts and do us a favour
- the accounts can finally be created via API
(The technical implementation can vary a lot, an implementation within Forgejo might also be an option)
If someone wants to work on this, please let us know, ideally by creating a team in [Codeberg/Contributing](https://codeberg.org/Codeberg/Contributing/issues/). We will not currently dedicate any power of ours to it, but we welcome contributions, because we think that this might be a more healthy way to join Codeberg.
Feedback about the idea itself is also very welcome.
Thank you for understanding.