La definición de software libre estipula que para que un programa sea considerado libre, los usuarios deben tener cuatro libertades esenciales: la libertad de ejecutar el programa para cualquier propósito, estudiar y modificar el código, redistribuir copias, y distribuir copias de versiones modificadas. Estas libertades deben ser permanentes e irrevocables para que el software sea verdaderamente libre.