open-slopware/HOW_TO_SLOP_FREE_FORK.md
vleermuis-admin c0cebd337c add how to slop free fork doc (#629)
- closes #627

Co-authored-by: @Pixelo789
Reviewed-on: https://codeberg.org/small-hack/open-slopware/pulls/629
2026-05-04 12:18:57 +02:00

14 KiB

How to create a slop free fork

So you found out something you love is tainted with slop and now you want to do something about it?

First off, congrats and thank you! That's a huge step and we're excited for the community you build! 💙

How to fork a repo from a last untainted commit/version

Should you see a project you'd really like to fork on this list, here's how you would go about that.

Warning

Before you fork, make sure to check the licensing! It's important that you understand the license of whatever you fork, and never remove the old LICENSE. Safe to fork licenses include, but are not limited to: MIT, GPL, AGPL, Apache 2.0, CCv4, BSD. You can learn more about licensing in Codeberg's documentation on licensing.

Let's take tldr-pages as an example, as that was something the community recently hard forked into ethical-tldr. Here's how it was done.

  1. Setup a new home for your fork. We recommend using codeberg.org! Codeberg has great docs on setting up your first repo. We recommend not adding a .gitignore, LICENSE, or README to start with, because your clone will likely already have those and so you want to make sure you don't run into any git merge conflicts :) Do make sure to note that your repo is a fork of the repo you're forking at first though, just to make sure no one gets confused.

  2. Since we're using tldr as an example, we'll assume the project you want to fork is already in this repo. Go to the table where the software you want to fork is (for instance the Cheat Sheets and Documentation section), which looked like this:

Name Last Untainted Version or Commit ID Tags and Evidence Alternative(s)
tldr-pages v2.3 Permissive AI policy (1, 2) Request for Help
  1. Go to the source repo and find the clone URL. In this case, you would go to tldr-pages. Since it's on GitHub, you should see a green button that says "<> Code". Click the green button, then click "HTTPS" and you should be able to copy that URL.

    a screenshot of the https://github.com/tldr-pages/tldr page where someone has clicked the code button. The green code button is circled in orange with an orange arrow pointing to it. The HTTPS tab and the web URL to clone also have an orange square around them with an orange arrow pointing to the url

    Tip

    In the above case, the tldr repo was linked in the first column of the table, but in cases where it's not you can just click the lasted untainted version link and chop off everything after the name of the project, so https://github.com/tldr-pages/tldr/releases/tag/v2.3 becomes https://github.com/tldr-pages/tldr

  2. Open up a terminal and find a directory where you'd like to keep this project. Then clone the repo there. Here is an example where we keep things in the projects directory within your home directory:

    # creates a directory called projects in your ~, which is your home directory
    mkdir -p ~/Projects
    
    # change your current directory into the new projects directory
    cd ~/Projects
    
    # clones the repo in your projects directory
    git clone https://github.com/tldr-pages/tldr.git
    
    # changes directory to your recently cloned project (in this example, it's the tldr repo)
    cd tldr
    
  3. Grab the new location of your new repo :) If you're using codeberg, you want to grab the SSH url for cloning, which you can find just below the repo stats. We've highlighted it and also we show you the button you can click to copy it easily here:

    Screenshot of the top of the page for https://codeberg.org/small-hack/ethical-tldr where we've highlighted the clone url and drawn orange arrows pointing to the word SSH, the URL, and the copy button. They exist just below the repo states, but before the repo's code search bar and repo files
  4. Change the upstream origin of your repo to be your new fork's SSH URL. There are two ways to do this. The first way is to use the git command:

    git remote set-url origin ssh://git@codeberg.org/small-hack/ethical-tldr.git
    

    Another way is to edit the .git/config file Use your editor of choice to open the following file:

    # We're using neovim here, but you can use any editor you're comfortable with.
    # If you're new, nano is always a safe bet as it has tips at the bottom of the screen.
    neovim .git/config
    

    The file will look like this:

    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
    [remote "origin"]
        url = https://github.com/tldr-pages/tldr.git
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "main"]
        remote = origin
        merge = refs/heads/main
    

    You want to change your the value of "url" to your new SSH URL. In this case, it would look like this, since the new repo is ethical-tldr:

    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
    [remote "origin"]
        url = ssh://git@codeberg.org/small-hack/ethical-tldr.git
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "main"]
        remote = origin
        merge = refs/heads/main
    
  5. Here comes the part where you check out the last known untainted commit or version. In this case, the last version of v2.3. You can do a hard reset of your fork to that exact version. This drops all the commits after that. To do that, run the following:

    # hard reset your branch to the old commit or version
    git reset --hard v2.3
    
    # force push up your now untainted repo
    git push --force
    
  6. The initial steps are now done and your new forked repo's history starts at the exact last known good version. Advanced git users can now cherry pick LLM commits out of the repo, but we recommend not doing that unless you're very confident with git. Instead, we think it's best that you create new commits to remove the AI and LLM generated code, because then this also keeps a cleaner history. In your "No AI Policy" or in your README, you can self disclose that the repo contains old commits from an LLM, but that you're working on replacing them or that you will not replace old commits, but all new commits will be done by humans. Either is fine. When it comes to AI Functionality, you'll also want to disclose that immediately and perhaps create an issue that says "Remove AI Functionality" to show users that you intend to remove that. You could also ask for help that that time.

Note

Are you an advanced git user? Do you want to add more docs here on how to remove old LLM commits from the forked repo? Feel free to submit a PR and we'll test your instructions to make sure they're safe before merging it :)

Tips for a healthy community

To start off, we recommend you do two things:

  • Create a "Code of Conduct"
  • Create a "No AI Policy"

Code of Conduct

This may seem like it's not related to the whole "No AI" thing we're all about, but it's incredibly important to creating safe and healthy communities. There will be people who try to cross lines and it's important that from outset, you both create rules for what is not allowed, and a process for enforcing those rules. We recommend the following be added to a CODE_OF_CONDUCT.md at the root level of your repo, immediately (this is straight from our own code of conduct):

CODE_OF_CONDUCT.md example
# Code of Conduct

## No Bigotry

- No racism.
- No xenophobia.
- No colorism/featurism.
- No casteism.
- No transphobia.
- No homophobia/queerphobia.
- No sexism.
- No albeism.
- No islamophobia, antisemitism, or hatred to anyone based on their religion or lack thereof. 
- No classism.
- No fascism.

## Strike system

We're going to do a 2 strike rule here with an optional warning. You are out on your second strike. We are not doing three strikes.

1. **warning**: You made a sarcastic or aggressive comment attacking another user here or elsewhere, regardless of which side you are on. You will get a reminder that you need to be kind here and if you need a comment by another user addressed, you must tag an admin. This warning and any warnings after it are *optional* and may be skipped if you are doing something that falls into the [No Bigotry](#no-bigotry) rules, or if you are clearly operating in bad faith.

2. **Strike one**: You made a comment that was off-base, slightly rude, but was not egregious enough to be banned, yet.

3. **Strike two**: After 1 strike, you behaved the same way again.

> [WARNING]
> If you are caught being excessively rude here, especially if you're displaying a form of severe bigotry or bringing an inappropriate tone, we reserve the right to ban you from the repo with no strikes and if necessary, we will report you to codeberg.org.

# Be kind or be gone

- We don't want drive by sarcastic comments.

- No references to bodily fluids (vomit, urine, feces), this includes emojis. It's gross and unproductive.

- We don't want people talking about how they never liked a particular piece of software because they didn't like the features.

- We don't want anyone personally attacking anyone from this repo or other repos.

- We will delete off-topic comments that have rude vibes or are encouraging a generally rage-feedback atmosphere.

- This repo is not a substitute for social media. The maintainers do not have the mental health bandwidth to manage such a community.

- Please do not reach out to the maintainers or collaborators of this repo anywhere but this repo specifically (unless they have given explicit permission to do so). We do not operate our personal email or fediverse accounts as extensions of this repo and will not take feedback there. We need a proper work life balance. Please respect that.

- No complaining about purity rules, "walking on egg shells", etc. If you can't behave professionally here, then please just kindly exit. 

## Accessibility

### Alt Text

Please provide alt text descriptions for any images you post. This is so that users that are blind or low vision know what is being posted as their screenreaders can read it aloud. This is also useful for people who speak other languages so that they can translate any text from the screenshot and understand context. If you don't provide alt text after being asked to, we will count that as a warning, and if you still fail to do so, it will be a strike. We make exceptions if you yourself have a disability preventing you from doing so. Please kindly ask that someone else provide alt text for you, and when they do, please update your image's alt text. (*You do not need to disclose your disability.* It is fine to ask others to provide alt text for you for ANY reason.)

If you do not outline exactly what is and is not allowed, you will get a lot of people saying "I didn't know I couldn't do that" and it will make enforcing your boundaries difficult. People will always disagree with some decisions you and your community make, and they will want to "take it offline", so it's important that you do not allow that, or your personal social media and messaging will become bad for your mental health. If you'd like to set up a social media account/server or a chat server, we recommend keeping it separate from your personal accounts, so that you have an easy way to disconnect at the end of the day or on your weekends.

No AI Policy

This one is obvious in this repo, but in other repos, it's always important to set clear expectations. Failure to do so may cause people to test the boundaries and also land you on this list. We don't say that to be threatening, but our community takes a complete hard line stance on ALL AI/LLM usage.

Some examples of "No AI Polices" that you can take take a look at for inspiration are:

But in general you want to outline the following:

  • No AI or LLM usage is allowed in this repo for contributions in Issues, Pull Requests, or Discussions. This includes bug finding, optimizations, security passes.
    • You are not permitted to ingest this repo with AI or LLMs of any kind
    • Any AI generated PRs will be rejected.
  • We do not accept funding from AI companies.

Do your best to not leave any wiggle room for anyone testing the waters on using AI in any way, this includes "self hosted LLMs".

Advertising your new fork

We're so happy to hear you created a new slop free fork! You'll probably want some community help though. Here's what you can do to summon the open source community:

  1. Make sure your repo has all the appropriate and relevant topics, so for example, if you've forked the tldr-pages repo, tag the repo with tldr, and cheatsheets. Topics are managed the main page of your repository, directly under your repo's description.

Adding new collaborators

Codeberg also has great docs on how to add new collaborators!

Warning

Ensure you trust anyone you give access to your repo. Don't add people as collaborators whom you've never interacted with before!