# Unfuck

Unfucking an already existing software (or another piece of technology) means taking said software and adjusting it to better comply with less retarded software, i.e. *fixing it*. Doing so may be an efficient way to obtain good software without having to write it from scratch, but, indeed, a few prerequisites have to be met: for example the software will likely have to be free (as in freedom) (so that we can fork it) and the energy invested into "fixing it" mustn't exceed the reinventing energy.

Unfucking software may involve for example the following:

- **Reverting to an older version.** Older software was always better, reverting to an older version of "modern" software may itself do a great deal of unfucking such as removing "privacy" bullshit, transitioning to a simpler build system and an older standard of the language. Remember, the old version is still available, at least in source form -- update addicts somehow think the old version is "gone" but of course that's not true, it may just be needed to invest a bit of time to compile it.
- **Switching to a simpler build system.** Unusable build systems such as CMake plague every single modern project -- these have to be removed and replaced with something usable such as simple Makefiles or a plain shell script.
- **Removing political bullshit and other crap (COC, lesbian flags, Furry mascots, Ukraine flags, anime autism etc.).** For some reason zoomers insert fascist symbolism and childish autist drawings into everything, these have to be removed.
- **Rewriting in a better language.** This may be more work so it won't happen often, but rewriting C++ to C or C11 to C99 may be not that hard.
- **Removing other kinds of bloat.** This just means generally improving the software: remove bullshit features, remove dependencies on docker, systemd and similar cancer, remove/replace bullshit libraries etc.
- **Improving it in other ways.** I.e. for example cleaning the code, documenting it, rewriting it a bit to be more portable, debugging it etc.
- **Porting**. Old software may have been good but will no longer run on "modern" systems simply because the interfaces have changed, i.e. some porting may be needed -- this will probably mean writing a new frontend, switching to some I/O library like SDL etc.
- **Liberating**. It may happen the software is only partially free -- for example old games may nowadays have their engine freed but assets will still remain proprietary. It may be therefore needed to substitute the assets with free ones. (See e.g. Freedoom.) 
- ...

## See Also

- unretard