Es el software (programa) cuyo código fuente puede ser estudiado, modificado, y utilizado libremente con cualquier finalidad y redistribuido con cambios o mejoras sobre él.
El software libre es un software que le brinda al usuario la libertad de compartirlo, estudiarlo y modificarlo. A esto lo llamamos software libre porque el usuario es libre.
Free Software Foundation
El software libre suele estar disponible gratuitamente en Internet, o a precio del coste de la distribución a través de otros medios; sin embargo no es obligatorio que sea así y, aunque conserve su carácter de libre, puede ser vendido comercialmente.
Entre los años 1960 y 1970, el software no se consideraba un producto. En los años 70, cuando la informática todavía no disfrutaba de su gran auge, las personas que hacían uso de ella, en ámbitos universitarios y empresariales, creaban y compartían el software sin ningún tipo de restricciones.
Con la llegada de los años 1980 la situación empezó a cambiar. Las computadoras más modernas comenzaban a utilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedían intercambiar, compartir o realizar modificaciones a dicho software.
En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer era darlo a conocer a la empresa desarrolladora para que esta lo solucionara, si lo consideraba procedente. Aunque el programador estuviese capacitado para solucionar el problema y lo desease hacer sin pedir nada a cambio, el contrato le impedía que modificase el software.
Richard Stallman en aquel entonces era un programador en el Laboratorio de Inteligencia Artificial del MIT en la década de 1970 y principios de la de 1980. Durante ese tiempo, notó un cambio en la cultura del software. Las empresas comenzaron a limitar la accesibilidad al código fuente y a imponer restricciones en el uso del software.
Stallman se sintió frustrado por estas restricciones, que consideraba una violación de la libertad de los usuarios de computadoras. Por ejemplo, no podía modificar el software o compartirlo con otros colegas.
Richard Stallman - Facultad de Informática UNLP 2011
En 1983, Stallman anunció públicamente su intención de iniciar un proyecto de desarrollo de software que respetara las libertades de los usuarios. Este anuncio incluyó la publicación del "Manifiesto de GNU" donde estableció sus objetivos y principios para el Proyecto GNU.
Stallman fundó el Proyecto GNU, cuyo nombre es un acrónimo de "GNU's Not Unix," con el objetivo de crear un sistema operativo completo y totalmente libre basado en Unix.
Además, creó la GPL*, una licencia de software libre que garantiza que el software basado en código fuente de GNU siga siendo libre y abierto para siempre. La GPL se convirtió en un modelo para otras licencias de código abierto. También creó el término copyleft para garantizar que se mantengan las libertades del usuario en obras derivadas.
En 1985, Stallman cofundó la FSF, una organización sin fines de lucro que promueve y defiende el software libre y las libertades de los usuarios. La FSF define a las cuatro libertades del software libre:
| Característica | Software Libre | Software privativo |
|---|---|---|
| Acceso al Código Fuente | Código fuente abierto y accesible | Código fuente cerrado y no accesible |
| Libertades de Usuario | Cuatro libertades | Restricciones en el uso, copia, modificación y distribución. |
| Costo | Gratuito o pago | A menudo requiere licencia y/o pago |
| Restricciones de Uso | Generalmente sin restricciones. | Sujeto a términos de licencia y uso. |
| Comunidad | Fomenta la colaboración y participación de la comunidad. | Desarrollo controlado por una entidad. |
| Actualizaciones | Pueden ser desarrolladas por múltiples colaboradores. | Las actualizaciones dependen de la empresa propietaria |
| Transparencia | Generalmente es transparente y auditable | La transparencia depende de la voluntad de la empresa |
| Licencia | Descripción | Ejemplos |
|---|---|---|
| Pública General de GNU (GPL) | Protege las libertades del usuario y garantiza que las modificaciones del software también sean de código abierto. Exige que las obras derivadas se licencien bajo la GPL. | Linux, GNU Core Utilities. |
| Licencia MIT | Permite un uso muy flexible, incluyendo uso en proyectos propietarios. Solo requiere la inclusión del aviso de derechos de autor. | Node.js, Ruby on Rails, |
| Licencia Apache | Permite un uso flexible y favorece la colaboración en proyectos de código abierto. Requiere la atribución y la inclusión de avisos de cambios. | Node.js, Ruby on Rails, Android |
| Licencia Creative Commons | Ampliamente utilizada para contenido no software (como imágenes y música). Ofrece una variedad de licencias que permiten diferentes grados de flexibilidad en el uso y la atribución. | Fotografías de Flickr, música en SoundCloud. |
Existen muchas licencias similares a las listadas. Estas son solo algunas de las mas populares.
¿No sabés con qué licencia publicar tu software? choosealicense.com
Las licencias, por lo general, deben incluir un archivo LICENSE que contenga la licencia con la cual está publicado.
Richard Stallman comenzó el movimiento del software libre en respuesta a la creciente restricción en el uso del software y la pérdida de las libertades de los usuarios. Su compromiso con las "Cuatro Libertades" y su trabajo en el Proyecto GNU sentaron las bases para la comunidad de software libre tal como la conocemos hoy.
El software libre se basa en la idea de que los usuarios deben tener la libertad de controlar el software que utilizan, en lugar de que el software los controle. Esto promueve la colaboración, la innovación y la transparencia, y a menudo se asocia con proyectos y comunidades de desarrollo de código abierto donde las personas trabajan juntas para crear y mejorar software de manera colectiva.
El software libre y el software privativo representan dos enfoques distintos en la industria del software, y la elección entre uno y otro a menudo depende de las necesidades y valores del usuario o la organización.
Es importante tener en cuenta que estas licencias varían en términos de restricciones y permisos. La elección de una licencia dependerá de los objetivos del proyecto, la filosofía del autor y cómo desea que otros utilicen su trabajo. Es esencial leer y comprender la licencia específica antes de utilizar cualquier software o contenido con licencia.
Las librerías de software, también conocidas como bibliotecas de software o bibliotecas de código, son conjuntos de código reutilizable que se crean para realizar tareas comunes o específicas en el desarrollo de software.
Estas librerías contienen funciones, clases y rutinas que pueden ser utilizadas por otros programas o aplicaciones para llevar a cabo tareas específicas sin tener que escribir todo el código desde cero.
Las librerías pueden incluir funcionalidades como procesamiento de datos, gráficos, comunicación en red, cifrado, entre otros.
En Python, entre las librerías mas populares encontramos:
MódulosUn módulo en Python es un archivo individual que contiene código Python. Puede incluir funciones, clases y variables que pueden ser reutilizadas en otros programas. Los módulos se utilizan para organizar y dividir el código en componentes más pequeños y manejables.
Paquete Un paquete es una forma de organizar múltiples módulos relacionados en un directorio. Los paquetes contienen un archivo especial llamado __init__.py, que indica que el directorio es un paquete. Los paquetes permiten estructurar y jerarquizar el código de manera lógica y organizada.
LibreríaUna librería (o biblioteca) en Python es un conjunto de módulos, paquetes y funciones que proporcionan funcionalidades específicas o herramientas útiles para realizar tareas comunes. Las librerías se utilizan para extender las capacidades de Python y facilitar la reutilización de código.
Los módulos son los componentes más pequeños y básicos en Python, los paquetes son grupos de módulos relacionados organizados en directorios, y las librerías son colecciones más grandes que pueden incluir múltiples módulos y paquetes relacionados.
Hemos visto que es posible extender nuestro programa importando código externo. Este código externo suele ser un módulo, paquete o librería.
# Importamos las funciones de random
import random
# Importamos Faker
from faker import Faker
Algunos paquetes o librerías pueden requerir instalarlo antes de usarlo. Eso lo veremos en un lab en las próximas clases.
Faker es un paquete de Python que genera datos falsos. Ya sea que necesitemos iniciar una base de datos con datos, realizar pruebas de estrés o anonimizar datos tomados de un servicio, entre otras cosas. Faker nos puede generar ese tipo de información. Fue publicado con licencia MIT.
En 2022, los alumnos del curso de programación del Centro de Formación Profesional 410 a modo de trabajo final, colaboraron junto con su instructor en el proyecto de Software Libre Faker. La colaboración se basó en estudiar el código y agregar el código necesario para que sea posible generar datos falsos de Argentina.
Changelog donde se registra el cambio
Primero se debe instalar Faker
pip install faker
Luego podemos probar este código
from faker import Faker
fake = Faker('es_AR')
for _ in range(5):
print(f"Nombre: {fake.name()}")
print(f"Domicilio: {fake.address()}")
print(f"Patente: {fake.license_plate()}\n")
El código puede producir datos como los siguientes:
Nombre: Alma Ponce
Domicilio: Avenida Santa Rosa N° 33
Santa Rosa 6300, La Pampa
Matrícula: AO008HR
Nombre: Benjamin Figueroa
Domicilio: Av. Pte. Perón N° 550
Rawson 9103, Chubut
Patente: ESX308
Nombre: Emma Quiroga
Domicilio: Calle 187 Bis N° 42 Dto. 2
San Salvador de Jujuy 4600, Jujuy
Matrícula: AD545PZ