jueves, 1 de diciembre de 2011

TALLER


PHP
Es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Se usa principalmente para la interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.
Es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar de facto para PHP al no haber una especificación formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre.
Puede ser desplegado en la mayoría de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en más de 20 millones de sitios web y en un millón de servidores, el número de sitios en PHP ha compartido algo de su preponderante sitio con otros nuevos lenguajes no tan poderosos desde agosto de 2005. Este mismo sitio web de Wikipedia está desarrollado en PHP. Es también el módulo Apache más popular entre las computadoras que utilizan Apache como servidor web.
El gran parecido que posee PHP con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de losprogramadores crear aplicaciones complejas con una curva de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones.
 Aunque todo en su diseño está orientado a facilitar la creación de sitios webs, es posible crear aplicaciones con una interfaz gráfica para el usuario, utilizando la extensión PHP-Qt o PHP-GTK. También puede ser usado desde la línea de órdenes, de la misma manera como Perl o Python pueden hacerlo; a esta versión de PHP se la llama PHP-CLI (Command Line Interface).

Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQLPostgreSQLOracleODBCDB2Microsoft SQL ServerFirebird y SQLite
Ventajas
Es un lenguaje multiplataforma.

Orientado al desarrollo de aplicaciones web dinámicas con acceso a información almacenada en una base de datos.

El código fuente escrito en PHP es invisible al navegador web y al cliente ya que es el servidor el que se encarga de ejecutar el código y enviar su resultado HTML al navegador.

Esto hace que la programación en PHP sea segura y confiable.

Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad conMySQL y PostgreSQL.

Capacidad de expandir su potencial utilizando módulos (llamados ext's o extensiones).

Posee una amplia documentación en su sitio web oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda.

Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.

Permite aplicar técnicas de programación orientada a objetos.

Biblioteca nativa de funciones sumamente amplia e incluida.

No requiere definición de tipos de variables aunque sus variables se pueden evaluar también 
por el tipo que estén manejando en tiempo de ejecución.

Tiene manejo de excepciones (desde PHP5).

Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a la hora de 
programar (muchos otros lenguajes tampoco lo hacen), aun haciéndolo, el programador 
puede aplicar en su trabajo cualquier técnica de programación o de desarrollo que le permita 
escribir código ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos 
que en PHP se han hecho delpatrón de diseño Modelo Vista Controlador (MVC), que 
permiten separar el tratamiento y acceso a los datos, la lógica de control y la interfaz de 
usuario en tres componentes independientes.

Inconvenientes

Como es un lenguaje que se interpreta en ejecución, para ciertos usos puede resultar un inconveniente que el código fuente no pueda ser ocultado. La ofuscación es una técnica que puede dificultar la lectura del código pero no la impide y, en ciertos casos, representa un costo en tiempos de ejecución.

Instalación de PHP

 

Como todo lenguaje de lado servidor, PHP, requiere de la instalación de un servidor en nuestro PC para poder trabajar en local. Este modo de trabajo resulta a todas luces más práctico que colgar los archivos por FTP en el servidor y ejecutarlos desde Internet.
Así pues, antes comenzar a crear nuestros programas en PHP, es necesario:

- Convertir nuestro ordenador en un servidor. Esto se hace instalando uno de los varios servidores disponibles para el sistema operativo de nuestra máquina.

- Introducir en nuestro servidor los archivos que le permitirán la comprensión del PHP. Estos archivos pueden ser descargados, en su versión más actual, de la página oficial de PHP.


 
APACHE

El proyecto Apache HTTP Server es un esfuerzo para desarrollar y mantener un servidor HTTP de código abierto para sistemas operativos modernos, incluyendo UNIX y Windows NT. El objetivo de este proyecto es proporcionar un servidor seguro, eficiente y extensible que proporciona servicios de HTTP en sincronía con los estándares HTTP actuales.
Servidor web Apache es el servidor web más popular en Internet desde abril de 1996, y celebró su cumpleaños número 15 como un proyecto de este mes de febrero.
El Apache HTTP Server ("httpd") es un proyecto de la Apache Software Foundation.

Historia de Apache
La primera versión del servidor web Apache fue desarrollada por Robert McCool, quien desarrollaba el servidor web NCSA HTTPd (National Center for Supercomputing Applications). Cuando Robert dejó el NCSA a mediados de 1994, el desarrollo de httpd se detuvo.

Robert McCool buscó otros desarrolladores para que lo ayudaran, formando el Apache Group. Algunos miembros del grupo original fueron Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson, Eric Hagberg, Frank Peters y Nicolas Pioch.
La versión 2 del  servidor. Apache fue una reescritura sustancial de la mayor parte del código de Apache 1.x, enfocándose en una mayor modularización y el desarrollo de una capa de portabilidad, el Apache Portable Runtime.

Apache 2.x incluyó multitarea en UNIX, mejor soporte para plataformas no UNIX (como Windows), una nueva API Apache y soporte para IPv6.

La versión 2 estable de Apache, fue lanzada el 6 de abril de 2002.

Características de Apache

·         Soporte para los lenguajes perl, python, tcl y PHP.

·         Módulos de autenticación: mod_access, mod_auth y mod_digest.

·         Soporte para SSL y TLS.

·         Permite la configuración de mensajes de errores personalizados y negociación de contenido.
 
·         Permite autenticación de base de datos basada en SGBD.

Uso de Apache

Apache es principalmente usado para servir páginas web estáticas y dinámicas en la WWW. Apache es el servido web del popular sistema XAMP, junto con MySQL y los lenguajes de programación PHP/Perl/Python. La "X" puede ser la inicial de cualquier sistema operativo, si es Windows: WAMP, si es el Linux: LAMP, etc.

MySQL

MySQL es un sistema de gestión de bases de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones.MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual.
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.
Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y los derechos de autor del código están en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código.
Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.
 MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas
(Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores
como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece
en combinación con MySQL. MySQL es una base de datos muy rápida en la lectura cuando utiliza el
motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta
concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de
datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este
tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante
monitorizar de antemano el rendimiento para detectar y corregir errores tanto de SQL como de
programación.

 Características
Usa GNU Automake, Autoconf, y Libtool para portabilidad
Uso de multihilos mediante hilos del kernel.
Usa tablas en disco b-tree para búsquedas rápidas con compresión de índice
Tablas hash en memoria temporales
El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una herramienta GPL.
Completo soporte para operadores y funciones en cláusulas select y where.
Completo soporte para cláusulas group by y order by, soporte de funciones de agrupación
Seguridad: ofrece un sistema de contraseñas y privilegios seguro mediante verificación basada en el host y el tráfico de contraseñas está cifrado al conectarse a un servidor.
Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50 millones de registros.
Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede consistir desde 1 hasta 16 columnas o partes de columnas. El máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).
Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas Windows se pueden conectar usando named pipes y en sistemas Unix usando ficheros socket Unix.
En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando memoria compartida.
MySQL contiene su propio paquete de pruebas de rendimiento proporcionado con el código fuente de la distribución de MySQL.

Otras funcionalidades de las listas de correo

  • Anuncios: informan sobre nuevas versiones de MySQL y programas relacionados.
  • MySQL: lista principal de discusión de MySQL y sql.
  • Bugs: permite a la gente buscar y arreglar bugs.
  • Temas internos: para gente que trabaja con el código de MySQL. Es el fórum para discutir sobre el desarrollo de MySQL.
  • MySQLdoc: para gente que trabaja en documentación.
  • Pruebas de rendimiento: para gente interesada en temas de rendimiento no sólo de MySQL, sino de otros motores de bases de datos.
  • Empaquetadores: para discusiones sobre empaquetamiento y distribución de MySQL.
  • Java: discusiones sobre MySQL Server y Java.
Otras listas de correo son: MyODBC, Herramientas GUI, Cluster, Dotnet, PlusPlus y Perl.


 PHPMyAdmin

PhpMyAdmin es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 62 idiomas. Se encuentra disponible bajo la licencia GPL.
Este proyecto se encuentra vigente desde el año 1998, siendo el mejor evaluado en la comunidad de descargas de SourceForge.net como la descarga del mes de diciembre del 2002. Como esta herramienta corre en máquinas con Servidores Webs y Soporte de PHP y MySQL, la tecnología utilizada ha ido variando durante su desarrollo.

Instalando phpMyAdmin 

Una vez descargada la última versión la tenemos que descomprimir, con lo que obtendremos los 

ficheros PHP que conforman la herramienta y colocarlos dentro del directorio de publicación de nuestro 

servidor web. 


Lo primero que podemos leer es el archivo de la documentación, que encontramos junto con los 

archivos de phpMyAdmin. Explica datos generales del programa, como sus requerimientos, 

instrucciones de instalación, configuración, preguntas frecuentes, etc. 

Posteriormente, tal como explica la documentación, hay que editar el archivo config.inc.php para 
cambiar los valores de host de la base de datos (ordenador que tiene instalado el MySQL) y el usuario 
y password con el que nos conectamos. Se pueden configurar muchos aspectos en la herramienta, 
aunque ahora solo comentaré los que he encontrado esenciales para hacerla funcionar, en la 
documentación tenemos un apartado dedicado por completo a especificar el sentido de cada variable. 

 
$cfgPmaAbsoluteUri 
 
Debemos asignarlo a la ruta completa necesaria para acceder a phpMyAdmin. Podría ser algo como http://localhost/phpMyAdmin o http://www.midominio.com/phpMyAdmin 

 
$cfgServers[$i]['host'] string 
 
El nombre del host de la base de datos. Por ejemplo localhost, si es que es el mismo ordenador donde estamos instalandos phpMyAdmin y la base de datos. También podría ser la dirección IP del ordenador al que nos conectamos. 

 
$cfgServers[$i]['user'] string 
$cfgServers[$i]['password'] string 

 
El par usuario/contraseña que debe utilizar phpMyAdmin para conectarse con el servidor MySQL. 
 
Con estas sencillas configuraciones ya podemos acceder a phpMyAdmin y trabajar con nuestra base 
de datos a golpe de ratón, que resulta muy de agradecer teniendo en cuenta que, en caso de no 
tener esta herramienta u otra parecida, la otra opción consistiría en utilizar el lenguaje SQL, y, en caso 
de que la base de datos esté alojada remotamente en Internet, no podríamos hacerlo sino es con 
acceso por TELNET al servidor de la base de datos.

 UNIX SO
 
Unix se trata de un sistema operativo de los mas utilizados y con mas futuro debido a que son muchos organismos oficiales y particulares los que defienden su utilización, así como muchas firmas de fabricación y comercialización de computadoras que lo incorporan en sus productos. Podemos citar el ejemplo de la Comunidad Económica Europea, que impone el sistema operativo UNIX en todas las aplicaciones que se desarrollan bajo sus auspicios.

Unix es un sistema operativo de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los usuarios correr sus programas. Controla los dispositivos de periféricos conectados a la máquina. Además es un sistema multiusuario, en el que existe la portabilidad para la implementación de distintas computadoras.

Esta formado por una serie de elementos que pueden representarse en forma de capas concéntricas donde, en primer lugar, alrededor del hardware, aislando a este de los usuarios, además de adaptar el resto del sistema operativo a la maquina debido a la portabilidad que existe en el mismo.

Características Generales:

  Es un sistema operativo de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los usuarios correr sus programas. Controla los dispositivos de periféricos conectados a la máquina.

  Posee las siguientes características:

- Es un sistema operativo multiusuario, con capacidad de simular multiprocesamiento y procesamiento no interactivo.

- Está escrito en un lenguaje de alto nivel: C.

- Dispone de un lenguaje de control programable llamado SHELL.

- Ofrece facilidades para la creación de programas y sistemas y el ambiente adecuado para las tareas de diseños de software.

- Emplea manejo dinámico de memoria por intercambio o paginación.

- Tiene capacidad de interconexión de procesos.

- Permite comunicación entre procesos.

- Emplea un sistema jerárquico de archivos, con facilidades de protección de archivos, cuentas y procesos.

- Tiene facilidad para redireccionamiento de Entradas/Salidas.

- Garantiza un alto grado de portabilidad.
 
Filosofía de UNIX
Las ideas principales de UNIX fueron derivadas del proyecto MULTICS (Multiplexed Information and Computing Service) del MIT y de General Electric. Estas ideas son:

- Todo se maneja como cadena de bytes: Los dispositivos periféricos, los archivos y los comandos pueden verse como secuencias de bytes o como entes que las producen. Por ejemplo, para usar una terminal en UNIX se hace a través de un archivo (generalmente en el directorio /dev y con nombre ttyX).

- Manejo de tres descriptores estándares: Todo comando posee tres descriptores por omisión llamados 'stdin', 'stdout' y 'stderr', los cuales son los lugares de donde se leen los datos de trabajo, donde se envían los resultados y en donde se envían los errores, respectivamente. El 'stdin' es el teclado, el 'stdout' y el 'stderr' son la pantalla por omisión (default).


- Capacidades de 'entubar' y 'redireccionar': El 'stdin', 'stdout' y el 'stderr' pueden usarse para cambiar el lugar de donde se leen los datos, donde se envían los resultados y donde se envían los errores, respectivamente. A nivel comandos, el símbolo de 'mayor que' (>) sirve para enviar los resultados de un comando a un archivo. Por ejemplo, en UNIX el comando 'ls' lista los archivos del directorio actual (es lo mismo que 'dir' en DOS). Si en vez de ver los nombres de archivos en la pantalla se quieren guardar en el archivo 'listado', el redireccionamiento es útil y el comando para hacer la tarea anterior es 'ls > listado'. Si lo que se desea es enviar a imprimir esos nombres, el 'entubamiento' es útil y el comando sería 'ls | lpr', donde el símbolo "|" ( pipe) es el entubamiento y 'lpr' es el comando para imprimir en UNIX BSD.

- Crear sistemas grandes a partir de módulos: Cada instrucción en UNIX está diseñada para poderse usar con 'pipes' o 'redireccionamiento', de manera que se pueden crear sistemas complejos a través del uso de comandos simples y elegantes. Un ejemplo sencillo de esto es el siguiente. Suponga que se tienen cuatro comandos separados A,B,C y D cuyas funcionalidades son:

A: lee matrices checando tipos de datos y formato.
B: recibe matrices, las invierte y arroja el resultado en forma matricial.
C: recibe una matriz y le pone encabezados 'bonitos'
D: manda a la impresora una matriz cuidando el salto de página, etc.

LINUX
Linux es un núcleo de sistema operativo libre tipo Unix. Es uno de los principales ejemplos de software libre. Linux está licenciado bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la Linux Kernel Mailing List Archive.

El núcleo Linux fue concebido por el entonces estudiante de ciencias de la computación finlandés, Linus Torvalds, en 1991. Linux consiguió rápidamente desarrolladores y usuarios que adoptaron códigos de otros proyectos de software libre para su uso en el nuevo sistema operativo. El núcleo Linux ha recibido contribuciones de miles de programadores.

Arquitectura

Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. También, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden ser prevolcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simétrico.

El hecho de que Linux no fuera desarrollado siguiendo el diseño de un micronúcleo (diseño que, en aquella época, era considerado el más apropiado para un núcleo por muchos teóricos informáticos) fue asunto de una famosa y acalorada discusión entre Linus Torvalds y Andrew S. Tanenbaum.

Lenguajes de programación

Linux está escrito en el lenguaje de programación C, en la variante utilizada por el compilador GCC (que ha introducido un número de extensiones y cambios al C estándar), junto a unas pequeñas secciones de código escritas con el lenguaje ensamblador. Por el uso de sus extensiones al lenguaje, GCC fue durante mucho tiempo el único compilador capaz de construir correctamente Linux. Sin embargo, Intel afirmó haber modificado su compilador C de forma que permitiera compilarlo correctamente.
Asimismo se usan muchos otros lenguajes en alguna forma, básicamente en la conexión con el proceso de construcción del núcleo (el método a través del cual las imágenes arrancables son creadas desde el código fuente). Estos incluyen a Perl, Python y varios lenguajes shell scripting. Algunos drivers también pueden ser escritos en C++, Fortran, u otros lenguajes, pero esto no es aconsejable. El sistema de construcción de Linux oficialmente solo soporta GCC como núcleo y compilador de controlador.

El nombre GNU, GNU's Not Unix (GNU no es Unix), viene de las herramientas básicas de sistema operativo creadas por el proyecto GNU, iniciado por Richard Stallman en 1983 y mantenido por la FSF. El nombre Linux viene del núcleo Linux, inicialmente escrito por Linus Torvalds en 1991.

La contribución de GNU es la razón por la que existe controversia a la hora de utilizar Linux o GNU/Linux para referirse al sistema operativo formado por las herramientas de GNU y el núcleo Linux en su conjunto


 UBUNTU


Ubuntu, es ni mas ni menos, que un sistema operativo libre, en el mundo existen miles de sistemas operativos, pero por desgracia la mayor parte de la población solo conoce los de la empresa Microsoft con sus distintas versiones de Windows, decir que windows es una ínfima porción de las posibilidades que existen en cuanto a sistemas operativos. Seguro que si os hablo de Linux, os suena mas esta palabra, muchos pensarán que Linux es un sistema operativo, no del todo correcto, Linux como tal es simplemente el kernel (núcleo) libre de sus distintas distribuciones. Distribución es la palabra clave, ya que Ubuntu es una distribución de Linux, y distribuciones existen cientos como Debian, Red Hat, Fedora, Suse, Mandriva, Kubuntu... y por supuesto Ubuntu.

Ubuntu, es una palabra africana que significa "ser humanitario con los demás", lo cual es una definición que le viene muy bien a la idea de este sistema operativo.

Ubuntu es una distribución GNU/Linux basada en Debian, que es otra distribución de Linux. Ubuntu proporciona un sistema operativo actualizado y estable para el usuario medio. Al igual que otras distribuciones se compone de múltiples paquetes de software normalmente distribuidos bajo una licencia libre o de código abierto, los cuales son muy fáciles de descargar e instalar, esta es una ventaja muy interesante para este sistema operativo, ya que desde el "Centro de Software" se puede instalar casi cualquier programa en cuestión de minutos.

La filosofía de Ubuntu se basa en los siguientes principios:
  • Ubuntu siempre será gratuito, y no habrá un coste adicional para la «edición profesional»; queremos que lo mejor de nuestro trabajo esté libremente disponible para todos.
  • Para hacer que Ubuntu pueda ser usado por el mayor número de personas posible, Ubuntu emplea las mejores herramientas de traducción y accesibilidad que la comunidad del Software Libre es capaz de ofrecer.
  • Ubuntu publica de manera regular y predecible, una nueva versión cada seis meses. Puede usar la versión estable o probar y ayudar a mejorar la versión en desarrollo.
  • Ubuntu está totalmente comprometido con los principios de desarrollo del software de código abierto, animamos a la gente a utilizarlo, mejorarlo y compartirlo.

Soporte a largo plazo

Cada versión de Ubuntu está soportada al menos durante 18 meses con actualizaciones genéricas y de seguridad. Ubuntu 8.04 LTS es una versión especial preparada para un uso empresarial, y está soportada durante 3 años para el escritorio y durante 5 años para el servidor. El proceso de desarrollo de Ubuntu 8.04 LTS fue ligeramente más largo de lo normal para concentrarse en una serie de áreas:
  • Garantía de calidad
  • Localización
  • Certificación
Como resultado, es posible configurar en Ubuntu 8.04 LTS durante un periodo de tiempo mayor de lo normal. Por tanto, esta versión de Ubuntu se identifica como «LTS» o «Long-Term Support» (Soporte a Largo Plazo).
La última versión LTS de Ubuntu es la 10.04 "Lucid Lynx" lanzada el 29 de abril de 2010.

DISTRIBUIDORES DE SOFTWARE LIBRE


LICENCIA GPL

La Licencia Pública General (inglés: General Public License o GPL) otorga al usuario la libertad de compartir el software licenciado bajo ella, así como realizar cambios en él. Es decir, el usuario tiene derecho a usar un programa licenciado bajo GPL, modificarlo y distribuir las versiones modificadas de éste.

La licencia GPL adopta el principio de la no ocultación, respaldando el concepto moral que establece que todo software desarrollado con el uso de material licenciado bajo GPL debe estar disponible para ser compartido con el resto de la humanidad.

GPL fue creada para mantener la libertad del software y evitar que alguien quisiera apropiarse de la autoría intelectual de un determinado programa. La licencia advierte que el software debe ser gratuito y que el paquete final, también debe ser gratuito, asegurándose siempre de mantener los nombres y créditos de los autores originales.

Como aspecto curioso, se debe considerar que si se reutiliza un programa "A", licenciado bajo GPL, y se reutiliza un programa "B", bajo otro tipo de licencia libre, el programa final "C", debe de estar bajo la licencia GPL. Este concepto se introduce con el denominado copyleft a fin de garantizar que cualquier aprovechamiento de un programa bajo licencia GPL redunde sobre la comunidad.

Ventajas de GPL
  • Cualquier código fuente licenciado bajo GPL, debe estar disponible y accesible, para copias ilimitadas y a cualquier persona que lo solicite.
  • De cara al usuario final, el software licenciado bajo GPL es totalmente gratuito, pudiendo pagar únicamente por gastos de copiado y distribución.
  • Se ha establecido la idea global que GPL contribuye al mejoramiento y evolución del software, ya que la disponibilidad y acceso global de los programas permite la expansión del conocimiento depositado en cada pieza de software.
Desventajas de GPL
  • Si el desarrollador incluye código fuente bajo GPL en otro programa, todo el programa final está obligado a seguir las condiciones y términos de la licencia GPL.
  • El software licenciado bajo GPL carece de garantía. El autor del software no se hace responsable por el malfuncionamiento del mismo.
  • De cara al desarrollador, no se puede establecer ningún cobro por las modificaciones realizadas. Únicamente se pueden establecer cobros asociados a copiado y distribución.
  • Aunque GPL posibilita la modificación y redistribución del software, obliga a que se haga únicamente bajo esa misma licencia.

LICENCIA LGPL

La Licencia Pública General Menor (inglés: Lesser General Public License o LGPL) es una modificación de la licencia GPL descrita anteriormente. La LGPL reconoce que muchos desarrolladores de software no utilizarán el código fuente que se distribuya bajo la licencia GPL, debido a su principal desventaja que determina que todos los derivados tendrán que seguir los dictámenes de esa licencia. La LGPL permite que los desarrolladores utilicen programas bajo la GPL o LGPL sin estar obligados a someter el programa final bajo dichas licencias.

La licencia LGPL permite entonces la utilización simultánea de software con este tipo de licencia tanto en desarrollos libres como en desarrollos privativos. Entonces, LGPL es una licencia de software libre que no tiene un copyleft fuerte, porque permite que el software se enlace con módulos no libres.

Ventajas de LGPL
  • Si en el desarrollo de un producto se utiliza código fuente licenciado bajo GPL o LGPL, no es obligatorio licenciar dicho producto final bajo dichas licencias.
  • LGPL es menos restrictiva que la licencia GPL, ya que sólo se ocupa en impedir el realizar versiones comerciales del producto licenciado bajo LGPL.
  • Ahora bien, LGPL permite realizar versiones comerciales de un producto final que contenga como herramienta adicional un programa LGPL. Por lo tanto, LGPL puede ser utilizada o enlazada con software propietario.
  • LGPL exige registrar todos los cambios realizados por terceros, a manera de no afectar la reputación del autor original del software.
Desventajas de LGPL
  • Otras actividades que no sean copia, distribución o modificación no están cubiertas en esta licencia y están fuera de su alcance

LICENCIA BSD

La Licencia de Distribución de Software de Berkeley (inglés: Berkeley Software Distribution ó BSD) no impone ninguna restricción a los desarrolladores de software en lo referente a la utilización posterior del código en derivados y licencias de estos programas. Este tipo de licencia permite a los programadores utilizar, modificar y distribuir a terceros el código fuente y el código binario del programa de software original con o sin modificaciones. Los trabajos derivados pueden optar a licencias de código abierto o comercial.

La licencia BSD es un buen ejemplo de una licencia permisiva, que casi no impone condiciones sobre lo que un usuario puede hacer con el software. La licencia BSD permite la redistribución, uso y modificación del software.

Esta licencia permite el uso del código fuente en software no libre, con lo que es muy similar a la LGPL descrita anteriormente. La diferencia consiste en que en la licencia BSD no es obligatorio mencionar a los autores ni proporcionar el código fuente.

El autor, bajo esta licencia, mantiene la protección de copyright únicamente para la renuncia de garantía y para requerir la adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución y modificación.

Ventajas de BSD
  • La licencia BSD permite el uso de código fuente en software propietario.
  • Una aplicación licenciada con BSD permite que otras versiones puedan tener otros tipos de licencias, tanto propietarias como libres.
  • BSD permite que los redistribuidores puedan hacer casi cualquier cosa con el software, incluyendo usarlo para productos propietarios.
  • De cara al desarrollador, BSD permite el cobro por la distribución de objetos binarios. Así mismo, el desarrollador no está en la obligación de incluir el código fuente.
  • Se argumenta que la licencia BSD asegura el verdadero software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre.
  • La utilización de las licencias BSD ha contribuido al mantenimiento de un ecosistema de software sano, ya que ha permitido la investigación con fondos públicos y su posterior comercialización, con lo cual se mejora al sector privado del software.
Desventajas de BSD
  • Las distribuciones del software bajo licencia BSD deben incluir copias literales de la licencia, anuncio de copyright y una "negación de responsabilidad" (inglés: disclaimer).
  • Debe incluirse reconocimiento del origen del software (la Universidad de California) en cualquier anuncio, con el aviso publicitario de BSD, más no es obligatorio la inclusión de los autores.
  • BSD no incluye ninguna restricción orientada a garantizar que los trabajos derivados sigan siendo libres.
  • De cara al usuario final, BSD permite establecer el pago por la distribución de objetos binarios. Así mismo, el usuario puede no recibir el código fuente.
  • Aunque se argumenta que BSD segura el software libre, existen tendencias que destacan que BSD no contribuye al desarrollo de nuevo software libre, ya que el mismo puede ser utilizado en desarrollos propietarios o de distribución no libre.

LICENCIA MPL

La Licencia Pública de Mozilla (inglés: Mozilla Public License ó MPL) es una licencia de código abierto y sofware libre utilizada por el navegador de Internet Mozilla y sus productos derivados. Cumple completamente con los postulados del open source y del software libre. Sin embargo, la MPL deja abierto el camino a una posible reutilización comercial y no libre del software, si el usuario así lo desea, sin restringir la reutilización del código ni el relicenciamiento bajo la misma licencia.

Aunque el uso principal de la MPL es servir como licencia de control para el navegador Mozilla y el software relacionado con él, esta licencia es ampliamente utilizada por desarrolladores y programadores que quieren liberar su código.

Ventajas de MPL
  • MPL es una licencia de código abierto y software libre utilizada por desarrolladores y programadores para la liberación de código fuente.
Desventajas de MPL
  • No se puede, legalmente, enlazar un módulo cubierto por la licencia GPL con un módulo cubierto por la licencia MPL.

LICENCIA NPL

La Licencia Pública de Netscape (inglés: Netscape Public License ó NPL), es una licencia de software libre sin un copyleft fuerte. NPL está basada en la Licencia Pública de Mozilla revisada anteriormente.
NPL agrega una cláusula que permite a Netscape utilizar el código que un desarrollador agregue a un programa con bajo licencia NPL. Netscape podrá utilizar este código fuente sin importar si el desarrollador lo estableció de tipo privativo. En contrapartida, la licencia NPL no permite al desarrollador hacer uso del código fuente Netscape.

Ventajas de NPL
  • NPL presenta como ventaja básica que se trata de una licencia de software libre.
Desventajas de NPL
  • LPN no otorga derechos iguales a Netscape y al resto de los desarrolladores, ya que permite utilizar el código de Netscape sólo como se especifica en la licencia, pero Netscape puede utilizar los cambios realizados por los desarrolladores en cualquier forma posible, incluso en versiones del software bajo licencia propietaria.
  • LPN no se esfuerza en asegurar que las modificaciones hechas por los usuarios queden disponibles como software libre.
  • Aunque todas las modificaciones hechas por los desarrolladores se deben liberar bajo la licencia LPN, esto sólo aplica a las modificaciones realizadas al código existente, no a subrutinas añadidas colocadas en archivos diferentes.

OTRAS LICENCIAS RECONOCIDAS

Licencia Apache

Es una descendiente de la licencia BSD. Permite al desarrollador hacer lo que desee con el código fuent, incluso productos propietarios, sin entregar el código fuente. La única restricción es que se reconozcas el trabajo del desarrollador.

Licencia de JAVA

Es una licencia particular con características muy especiales dirigidas a la protección del lenguaje de programación JAVA de SUN Microsystems. Pone énfasis en evitar que aparezcan extensiones incompatibles con el lenguaje JAVA.

Licencia de Distribución y Desarrollo Común (CDDL)

Recientemente publicada por SUN Microsystems, tiene por objeto liberar parte del software de esta compañía y que sea integrado con otras herramientas open source. Su objetivo principal apunta a permitir la integración de Java con las diferentes distribuciones de Linux del mercado. La licencia CDDL está basada en la MPL, y por tanto es muy similar en sus términos a la LGPL, permitiendo compartir el código utilizado por el programa con otros de diferente procedencia y guardarse para el autor la libertad de publicar o no los resultados. Permite la inclusión de cualquier otro tipo de código, sea cual sea la licencia del mismo, en la solución completa.

Licencia Creative Commons

Es una licencia de reciente creación, dirigida básicamente para trabajos multimedia. No permite la alteración del producto original, ni tampoco su comercialización. Sólo permite su reproducción tal cual, mencionando al autor.

Licencia de Guile

Basada en la licencia GPL más una declaración especial que permite enlazar con software no libre. Por tanto, no tiene un copyleft fuerte, pero es compatible con la GPL.


Joomla

Joomla! es un potente gestor de contenidos web (CMS o Content Management System) que permite crear sitios web elegantes, dinámicos e interactivos. Por su diseño, potencia, flexibilidad y por sus enormes posibilidades de ampliación se está convirtiendo en el sistema de publicación preferido por muchos centros educativos y por millones de webmasters en todo el mundo para desarrollar su portal web. Con Joomla! podemos crear en poco tiempo un completo portal para un centro escolar o una web docente en la que publicar noticias, blogs, directorios de enlaces o documentos para descargar sin necesidad de conocimientos técnicos especiales o de complejos lenguajes de programación.

A partir de una plantilla y de unos contenidos de ejemplo iniciales podemos desarrollar un vistoso y completo portal añadiendo los contenidos, menús y elementos visuales deseados a través de un entorno web y sin necesidad de programas auxiliares ni de conocimientos especiales de diseño o de programación ya que todas estas operaciones de edición y administración se realizan a través de cualquier navegador.

La introducción y edición de contenidos resultan así una tarea cómoda y sencilla y ello nos permite mantener nuestro sitio permanentemente actualizado.

Joomla! es Open Source

Joomla! es una aplicación Open Source o de código abierto programada en lenguaje PHP bajo una licencia GPL y que utiliza una base de datos MySQL para almacenar el contenido y los parámentros de configuración del sitio. Además de libre, Joomla! es gratuito y no tendrás que pagar nada por usar este CMS para construir tu web.

Joomla! se basa en Mambo, otro CMS iniciado por la empresa australiana Miro, que tenía además la propiedad de la marca. El proyecto Joomla surge en 2005 cuando Miro decidió crear una Fundación que, a jucio de una buena parte de los desarrolladores de Mambo, se apartaba bastante de la filosofía del software libre. Estos desarroladores se agruparon en torno al movimiento Open Source Matters que poco después daría lugar a Joomla!, una denominación que procede de una palabra de la lengua swahili que significa "todos juntos".

La nueva versión de Joomla -la 1.5- fue liberada en enero de 2008 incorporando interesantes novedades y está escrita en un código completamente nuevo con el que se ha independizado ya completamente de su predecesor. No obstante, el equipo de desarrollo de Joomla sigue manteniendo actualizada la serie anterior, la 1.0.x, ya que muchos sitios web funcionan aún con esa versión inicial.

Características de Joomla!

Joomla! ofrece, en general, las mismas ventajas que otros gestores de contenidos web (CMS o Content Management System) en la medida en que hace posible convertir una web estática tradicional en un completo portal con diferentes funcionalidades y características dinámicas e interactivas que hacen de nuestro sitio algo más que una página web informativa a la vez que se facilita la introducción y actualización de contenidos.

Al igual que otros CMS, Joomla! es un sistema "administrado". El administrador o administradores acceden con su clave desde cualquier ordenador conectado a Internet a un panel de control desde el que realizan todas las operaciones, incluidas las relacionadas con la instalación de nuevos componentes y módulos en el sistema.

Al igual que otros gestores de contenidos, Joomla! permite la participación de varios autores en el desarrollo y mantenimiento del sistema gracias a la posibilidad de asignar diferentes niveles de uso y administración a diferentes usuarios. Con ello se puede hacer una gestión colaborativa a la vez que controlada del sitio web y conseguir un mejor reparto de funciones y responsabilidades que estimule la participación. El sistema de gestión de usuarios de Joomla! nos permite también restringir al acceso a determinados contenidos a usuarios con permisos especiales.
La facilidad para editar y organizar los contenidos es otra de las grandes virtudes de los sistmas CMS como Joomla!. Además de páginas de contenido estático para la información que sea más estable y permanente podemos añadir artículos agrupados en secciones y categorías temáticas que permiten su clasificación y que ofrecen diferentes opciones para su presentación: en forma de lista o índice, en forma de blog, en una o más columnas, etc.

Para facilitar la edición de artículos o páginas de contenido, Joomla! dispone de un editor visual con una barra de herramientas semejante a la de los procesadores de textos con las que se puede dar formato al contenido, añadir imágenes, insertar hipervínculos, etc. Los administradores disponen también de un Gestor Multimedia con el que pueden subir fácilmente imágenes, archivos y otros elementos multimedia al servidor para luego insertarlos en las páginas y artículos de contenido.

Otra característica importante de los gestores de contenido como Joomla! es que con ellos diseño y contenido se manejan de forma independiente. La estética del portal se basa en plantillas o templates prediseñadas que nos permiten modificar en cualquier momento el aspecto visual del sitio sin tener que dar de nuevo formato al contenido. Basta con seleccionar una plantilla diferente en el Gestor de plantillas para variar con un solo clic de ratón los colores, tipografías, fondos o la distribución de las zonas de contenido en la página. Además podemos personalizar fácilmente las plantillas disponibles para adaptar su diseño a nuestros gustos y necesidades o podemos también instalar nuevas plantillas eligiendo entre las más de mil que podemos encontrar listas para su descarga gratuita en Internet.