SW libre en ciencia e ingeniería Del software al hardware libre Luis Piñuel Moreno Dep. Arquitectura de Computadores y Automática Universidad Complutense de Madrid Terminología • Software libre, código abierto, tipos de licencias SW libre e ingeniería de computadores • Diseño de computadores mediante software libre • Extensión del concepto al hardware Iniciativas de hardware libre • OpenSPARC, Arduino, BeagleBoard, OpenMoko, etc. Terminología Definición de software libre Según la es aquel SW que garantiza 4 libertades: Libertad 0 • Ejecutar el SW con cualquier propósito Libertad 1 • Estudiar y modificar el programa Libertad 2 • Copiar el programa de manera a ayudar al prójimo Libertad 3 • Mejorar el programa y hacer públicas las mejoras para beneficio de la comunidad Licencias y software libre ¿Qué es una licencia SW? Autorización formal con carácter contractual que un autor de un SW da a un interesado para ejercer “actos de explotación legales” ¿Restricción o garantía de libertades? Las licencias es el medio por el cual se garantizan las libertades del SW SW libre es aquel que está sujeto a una licencia que garantice las 4 libertades anteriores Copyleft ¿Qué es? Regla/cláusula de las licencias SW que garantiza que las libertades que se ofrecen al usuario se preservan ¿Qué implica? El SW se puede modificar/distribuir siempre que esté sujeto a un licencia equivalente Copyleft estricto vs. relajado Carácter restrictivo de la cláusula La versión relajada permite “enlazar” código y distribuir el programa con una licencia distinta Controversia SW libre/código abierto Software libre (Free Software) Puede considerarse un movimiento social Imperativo ético = garantizar la libertad del usuario Código abierto (Open Source) Término nacido para el marketing del SW libre “Free” es ambiguo, puede traducirse por “libre” o “gratis” Se considera una metodología de desarrollo (modelo Bazar) Controversia SW libre/código abierto Consideraciones filosóficas aparte son equivalentes Las licencias SW son las mismas Términos equivalentes FOSS (Free/Open Source SW) FLOSS (Free/Libre Open Source Software) Extensión a otros ámbitos Otros conocimientos a compartir … Documentos, publicaciones Imágenes, audio, multimedia … otras licencias GNU Free Documentation License Licencias situadas en un amplio espectro Combinan diversos atributos: Autoría (Attribution – by) Uso no comercial (Non Commercial – nc) Distribución inalterada (NonDerivativeWorks – nd) Mantenimiento de licencia (Share-Alike – sa) Principales licencias Copyright ✔ Libertad0 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Libertad1 ✔ ✔ ✔ ✔ ✔ ✔ Libertad2 ✔ ✔ ✔ ✔ ✔ ✔ Libertad3 ✔ ✔ ✔ ✔ ✔ Copyleft STRICTO STRICTO RELAJADO STRICTO Principales licencias Copyright ✔ Libertad0 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Libertad1 ✔ ✔ ✔ Libertad2 ✔ ✔ ✔ ✔ FREE/OPEN ✔ ✔ Libertad3 ✔ ✔ ✔ Copyleft STRICTO STRICTO RELAJADO STRICTO ✔ ✔ SW libre e ingeniería de computadores Ingeniería de Computadores Área de la informática que se situada en la frontera del hardware y el software No cubre los niveles próximos a la tecnología (electrónica/física) Diseño de circuitos Desarrollo de software Interacción HW-SW Desarrollo de firmware Diseño a nivel de sistema Desarrollo de SW Interfaz SW-HW Tipo de software: Compiladores Sistemas operativos Herramientas de análisis y mejora de rendimiento En su mayoría, es inherente al SW libre El objetivo del proyecto GNU, origen del SW libre, era crear un sistema operativo libre (GNU is not UNIX) SW abundante, quizás en exceso Desarrollo de SW Independencia HW vs. rendimiento La excesiva ligazón a un determinada plataforma es contraria al FOSS (restringe la Libertad2) Sin embargo, no tener en cuenta las características del hardware subyacente suele penalizar el rendimiento Importancia información HW Cuanta más información se disponga, mejor código y menor esfuerzo de desarrollo Problema: no siempre está disponible Algunos ejemplos representativos Compiladores, depuradores y otras herramientas GNU Compiler Collection (GCC) GNU Debugger (GDB) Sistemas Operativos GNU/Linux, OpenBSD, OpenSolaris, Darwin, Minix, … Diseño de circuitos y sistemas Software libre escaso y poco eficiente Fuerte dependencia con el HW y el proceso de fabricación Escasa penetración del concepto “open” Herramientas CAD: Captura de esquemáticos Simulación de circuitos Lenguajes de descripción hardware (HDL) Herramientas de síntesis Algunos ejemplos representativos Conjuntos de herramientas CAD gEDA (GPL’d suite of Electronic Design Automation tools) Lenguajes de descripción HW y simuladores MyHDL, GHDL, System-C, Icarus-Verilog, VeriWell, etc. Herramientas de síntesis y manipulación de máscaras RASP (FPGA/CPLD), Magic (ASIC), etc. Desarrollo firmware ¿Qué es? Código de bajo nivel almacenado en memoria no volátil (ROM, Flash, etc.) SW libre escaso Fuerte dependencia del HW Falta información por parte de los fabricantes Iniciativas más destacables: OpenBoot (SUN), OpenBIOS, Coreboot, etc. Necesidad de hardware libre Problema: falta de información HW propietario • Supone un freno al SW libre en este ámbito Solución: hacer públicas las especificaciones ¿Por qué no ir más lejos? • Compartir el hardware de un modo análogo al software • “Open hardware” Hardware libre/abierto Idea: Los diseños (circuito/sistema) son documentos Por lo tanto, se pueden compartir mediante licencias Creative Commons o similares Se trata de una tendencia muy reciente (2000-02) aunque gana adeptos rápidamente Iniciativas de hardware libre Tipos de hardware Procesadores Se comparte el código HDL Son necesarias herramientas propietarias para su implementación Placas, Computadores, Teléfonos Móviles, Consolas de juegos, dispositivos de electrónica de consumo Suelen depender de un procesador propietario Se comparte el diseño del PCB, especificaciones mecánicas, librerías, entornos de desarrollo, etc. Se pueden usar SW libre para su implementación Procesadores OpenSparc (SUN) UltraSparc-T2 Procesador SPARC de 64 bits Multiples cores/threads Servidores LEON (Gaisler) Procesador SPARC de 32 bits Sistemas empotrados Sector aeroespacial Prototipo LEON3-FT Placas Arduino Pequeños dispositivos electrónicos Bajo consumo, flexible, fácil de programar (wiring/processing) Microcontrolador Atmel AVR 8-bits Arduino-DB Ejemplos Robot Placas Beagleboard BeagleBoard Electrónica de consumo, incluso computadores Bajo coste y consumo energía, elevadas prestaciones Procesador Texas Instruments OMAP3530 HDTV Computadores VIA OpenBook Via mini-Note Ficheros CAD disponibles Procesador VIA C7 1,6GHZ Chipset VIA VX800 WiFi, Webcam, etc. Soporte Linux y Windows Imagen CAD Teléfonos móviles OpenMoko SW libre (Linux) HW casi libre Neo FreeRunner (FIC) Samsung 2442 SoC GSM, GPRS, WiFi, USB, etc. Neo FreeRunner Consolas de juegos Sólo el firmware es libre GP2X y GP2X Wiz portátil y reproductor multimedia Procesadores ARM9 GP2X Consola Pandora Consola altas prestaciones y PDA Procesador TI OMAP3530 GP2X Wiz Pandora ¿Qué importancia tendrá el HW libre? Es difícil predecir ¿Quién adivinó que Linux, Apache, Google o la Wikipedia serían hoy lo que son? La electrónica de consumo puede ser área dónde mayor impacto tenga SW libre en ciencia e ingeniería Del software al hardware libre Luis Piñuel Moreno Dep. Arquitectura de Computadores y Automática Universidad Complutense de Madrid