El software es el conjunto de componentes lógicos de un sistema informático que interactúan con los componentes físicos (llamado hardware) para realizar tareas. El software son las diferentes aplicaciones que utilizamos a diario y pueden ejecutarse en diferentes dispositivos. Por ejemplo, muchas aplicaciones se usan desde un teléfono celular, una notebook o un smart-TV. Cualquiera de esas aplicaciones es ejemplo de software.
El software libre es aquel que respeta las libertades de los usuarios permitiéndoles copiar, distribuir, estudiar, modificar y mejorar el software. Un software que por diferentes circunstancias no tiene en cuenta estas libertades del usario, es un software no libre.
Todo software para poder encajar en la definición de ser software libre tiene que regirse bajo la norma de las siguientes libertades.
Ejecutar un programa como se desee, bajo cualquier propósito.
En esta libertad se hace mucho hincapié en que cualquier usuario puede utilizar un programa bajo cualquier circunstancia y sin tener que informar sobre su uso. Es una libertad de uso sobre el software.
La libertad de estudiar cómo funciona el software y cambiarlo para que haga lo que el usario quiera. El acceso al código fuente (es decir, el programa escrito en un lenguaje de programación) es una condición necesaria para ello.
En esta libertad se requiere el acceso al código fuente de la aplicación, para pdoder ver cómo está construido el programa en sí, estudiarlo y aprender gracias a esta libertad. Se podría pensar que quizás estamos ante un problema de seguridad, ya que sabiendo cómo está construido podría haber algunos problemas si alguien se aprovecha de ello. En realidad, no es tan así, porque al poder ver el cógido fuente, todo usuario podría estar seguro de que la aplicación hará lo que dicen que hace y no otra cosa.
Hay aplicaciones que prohíben ver cómo está construido su código fuente. Y es en esas aplicaciones en las cuales si uno quisiera investigar sobre cómo están programadas se incurrirá en una violación de derechos sobre la aplicación. Esto ocurre por el tipo de licencia que el programador adopta con respecto a sus programas.
Esta libertad también permite, entre otras cosas, colaborar en la corrección de posibles errores en la aplicación. Al contar con el código fuente, si un usuario/programador detecta un error puede informar sobre el mismo o directamente corregirlo.
La libertad de redistribuir copias.
Esta libertad permite la distribución de copias del software sin poner un límite por copias, ni ninguna otra restricción. Es sabido que el software no libre (o privativo) se suele comercializar en base a no permitir que un software se encuentre instalado en varios equipos. Generalmente, se vende una licencia por equipo en donde se instala el mismo. En cambio, al trabajar sobre software libre estamos viendo que una de las libertades nos permite realizar una distribución de copias de dicho software sin ningún inconveniente.
La libertad de distribuir copias de sus versiones modificadas a terceros.
Esto le permite ofrecer a toda la comunidad la oportunidad de beneficiarse de las modificaciones. Nuevamente, el acceso al código fuente es una condición necesaria para ello.
En esta libertad podemos realizar modificaciones al software y distribuir copias del mismo. Y, obviamente, distribuirla de cualquier forma sin tener ninguna limitación. En esta libertad hablamos de la posibilidad de mejorar un software libre, ya que el tener a mano el código fuente nos permite realizar correcciones o agregados de funcionalidad. Estas modificaciones pueden ser para uso personal o incluso se puede generar un producto comercial a partir de las modificaciones a dicho software libre. Desde luego respetando las libertades del software original (libertades del software libre).
Ahora que conocemos más de cerca las libertades del software libre podemos ver algunas ventajas destacables.
El software privativo suele trabajar en círculo con la necesidad de ir modernizando el hardware en donde se ejecuta. Provocando que a medida que cambian las versiones de los programas haya una necesidad de modernizar el hardware porque el mismo ya no es compatible. Esto está pensado desde la idea básica que promueve el modelo de la obsolescencia programada. Cuando hablamos de software libre esta idea es totalmente diferente, en estos ámbitos la idea es que las aplicaciones funcionen en cualquier hardware y que funcione bien. Se intenta evitar el cambio de hardware solo porque una aplicación cambie en su versión.
El software libre tiene una apoyo muy importante en la comunidad que está detrás de él. Por una parte, son los colaboradores quienes aportan tanto programando como cumpliendo diferentes roles en comunidad para aportar al software libre. Entre esos roles está obviamente el soporte técnico a otros usuarios, y esto evita la dependencia que existe en el software privativo, ya que al ser parte de una empresa dicho software siempre genera una supeditación hacia dicha empresa en cuanto al soporte técnico.
En este punto, contar con el código fuente de una aplicación es una gran ventaja que por supuesto aquellas aplicaciones que no permiten acceder a dicho código fuente no pueden brindar. El software privativo muestra este inconveniente ya que protege su código fuente para que nadie pueda acceder. Generando un gran problema de seguridad. No solo porque no hay forma de saber qué es lo que va a hacer la aplicación, sino porque dependemos de la respuesta de la empresa en casos de encontrarnos con algún error en la aplicación.
Como mencionamos en el punto sobre la seguridad, acá también se existe una ventaja en cuanto a la corrección de errores. Al encontrar un error en una aplicación de software privativo, el usuario no puede hacer más que enviar un reporte de dicho error y ahí queda toda la situación. Ya que por más que quiera no tiene acceso al código fuente. En el ámbito del software libre eso es totalmente diferente, se dispone del código fuente. Y más allá de la capacidad de solucionar un error o no si se dispone del código fuente se puede llegar a reportar un error, e incluso se podría llegar a aportar una solución al mismo.
Las libertades que promueve el software libre no limitan el accionar sobre la comercialización del mismo. Una aplicación es libre al cumplir con las cuatro libertades, pero eso no quita la opción de que dicho software libre no pueda ser comercializado. Mucho software libre es comercial y aun así coexisten respetando las normas y libertades del software libre.