Cita

Software Libre vs Software Propietario “La lucha por la independencia”

Al revisar en la red y otras publicaciones nos encontramos muchas partes donde se dice que el Software Libre y el Conocimiento Libre encajan perfectamente dentro de los conceptos del Capitalismo, por la mísma razón que el “Libre Mercado” lo hace. La libertad de los mercados nos es así “Libre” como la definen. Los mercados dependen del concepto de escasez. Cuando al Software Libre, Conocimiento Libre e Investigación Libre, se está trabajando contra el concepto de escasez y se está eliminando donde definitivamente no es necesaria. Cualquier persona puede beneficiarse del Software y del Conocimiento, puede mejorarlo y todo el mundo está autorizado a copiarlo.

Teniendo conocimiento de la cuatro libertades que debe cumplir el Software Libre, es necesario revisar el problema de la industria informática bajo el capitalismo. La forma en que funciona la industria informática de hoy es un ejemplo perfecto de todas las fallas e ineficiencias masivas del capitalismo, donde el objetivo principal no es servir a los intereses de la sociedad. Desarrollar, mejorar y distribuir el software se lleva a cabo solo cuando cuando se pueden obtener grandes beneficios. Esto está en agudo contraste con el software libre donde se utiliza el conocimiento humano y el producto del trabajo humano en beneficio de toda la sociedad.

El tema que trata de programas informáticos puede resultar un poco abstracto para algunos lectores, pero, es un tema relevante para todo aquel que utiliza una computadora. Debemos preocuparnos de la forma en que la industria de la computación nos impone severas restricciones a los que usamos sus productos, ya que es posible que algún día no se nos permita escuchar música en mp3 o leer documentos en MSWord. Se puede pensar que podemos seguir con estas tareas por siempre, porque creemos que realmente poseemos y controlamos la mayor parte de lo que está almacenado en el computador. Sin embargo, de acuerdo a las grandes empresas de software este no es el caso.

No somos dueños de esa copia de MSWord, el juego de video o incluso un reproductor mp3, de la misma manera en que las mayoría de las personas utilizan software comercial (sea pirata o pagado), no son propietarios de ninguna manera de acceso a la información. hay que entender sin embargo lo que significa un licencia de Software.

Una licencia de Software es una forma de contrato que se ha convertido en la forma más común de distribución de programas hoy en dia. Cuando se instala un nuevo programa en la computadora, debemos hacer click en un “Acepto”, un “Ok” o algo por el estilo de esta manera estamos firmando un contrato que probablemente nunca hemos leido. La mayoría de estas licencias son cerradas, es decir, que cuando compramos legalmente una copia de Windows 7 o Word, no está permitido pasarle una copia a los amigos ni podemos hacer modificaciones en el software. Cuando la gente dice “Voy comprar Photoshop” en realidad están diciendo “Voy a comprar una licencia para ejecutar una copia de Photoshop”.

El software antes mencionado es un Software Propietario. El software libre representa una ruptura fundamental con el modelo cerrado. Se necesita todavía obtener una licencia para softwar libre, pero, al mismo tiempo da más poder al usuario para hacer copias y modificarlo. El producto software en si, no es visto como un bien privado sino como un recurso público.

La verdadera importancia del modelo de software libre está lejos de ser desligada de la política. Miles de programadores en todo el mundo trabajan juntos en un proyecto común y comparten su código informático con el fin de confeccionar un buen producto que todo el mundo pueda ser capaz de utilizar. Esto demuestra que en la práctica incluso en este mundo capitalista es posible colaborar en vez de estar en competencia unos con otros y que es un mito de las personas solo van a hacer las cosas por dinero o con fines de lucro.

Las grandes empresas utilizan su control monopólico para imponer estándares de facto, en sí mismo el estánddar o normalización es positivo, de esta manera los equipos utilizan los mismos formatos para que los documentos, archivos de audio entre otros se pueden intercambiar sin problemas. El aspecto negativo de este tipo de normas utilizan estos mismos estándares propietarios para reforzar aún más su monopolio. Una parte importante de la economía mundial depende ahora de estas norma (Documentos de MSWord, es un buen ejemplo).

Aquí es donde la tecnología se convierte en política. El único poder que es capaz de promover de manera efectiva los estándares abiertos y software libre en general es un poder político. Ahora el problema es que muchos proyectos de código abiertos son más bien de voluntarios y no terminan en ninguna parte debido a la falta de financiamiento.

La solución al conflicto actual en el mundo de la informática no es convencer a todos de cambiar a los sistemas operativos linux, aunque sería un paso en la dirección correcta. El software libre debe ser un “Germen” de una nueva sociedad. Para que el nuevo concepto se situe en una posición privilegiada, la sociedad tiene que cambiar. Tenemos que cambiar el modo de producción capitalista y sustituirlo por uno soscialista.

Luis Arguello

Software Libre vs Softwar…

Clasificación de Licencias de Software Libre

En Wikipedia se puede encontrar que todas estas licencias de Software Libre también tienen una clasificación.

1.- Según los derechos del autor, se encuentran las siguientes:

A.- Licencias de Código Abierto Permisivas: Se caracterizan por permitir crear una derivación de una obra de Software Libre sin que esta derivación tenga la obligación de protección alguna. Algunas de las que entran en esta clasificación son:

BSD License.

W3C Software Notice and License.

Open LDAP License v.2.7

Perl License.

Python License v.2.1

PHP License v.3.0

B.- Licencias de Código Abierto Robustas: Establece algunas restricciones sobre las obras derivadas. Y a su vez se divide en dos subconjuntos:

B.1.- Fuertes: Conocidas como Copyleft Fuertes. Establecen que toda derivación o modificación del software original que posea estas licencias debe licenciarse bajo los mismos términos y condiciones de la licencia original. Algunas de estas son:

GNU General Public License v.2.0.

GNU General Public License v.3.0.

Eclipse Public License.

OpenSSL License.

B.2.- Débiles: Conocidas como Copyleft Débiles o Híbridas. Permite que las obras derivadas de modificaciones o derivaciones de un software original puede no cumplir con los términos y condiciones de la licencia original. Algunas de estas son:

GNU Lesser General Public License v.2.1.

Mozilla Public License

Open Source License.

Apple Source License v.2.0

2.- Según el destinatario, se pueden encontrar dos tipos de licencias:

A.- Licencia de Usuario Final: “… Este tipo de acuerdo expresa los usos qué se pueden dar y cuáles no al producto, ya que quien lo compra no es, legalmente, en ninguna forma dueño del producto, sino sólo de una licencia para su uso, considerándose esto último por algunas personas como una limitación a los derechos del consumidor…” Fuente

B.- Licencia de Distribuidor: “… En este tipo de contrato, se le asigna derechos restringidos a un comerciante de tipo comisionario para que venda el producto(software) dando una remesa o comisión al fabricante. La misma puede ser por primera venta o licencia de renovación de contrato…” Fuente

Configurando WAMP para Symfony2

Symfony2 es hoy en día (a opinión muy personal) el mejor framework de desarrollo web en PHP5. Te permite gran cantidad de formas de explotar tu imaginación como programador y aún diseñador, eso sí, siempre con una estructura y un patrón de diseño ordenado y definido. Sin embargo, el objetivo central de este tema es el de aprender a configurar Symfony2 en tu máquina con Sistema Operativo Windows (XP, Vista, 7…) Y no me gustaría repetir la documentación que ya es muy basta aún en lenguaje español por lo que recomiendo algunos links para ahondar más en temas de Symfony2:

Primeras Impresiones con Symfony2: El compañero Alberto Varela nos cuenta acerca de sus primeras impresiones con Symfony2. Es bueno leerlo antes que cualquier otro. A mí me sirvió mucho para enamorarme de Symfony2. (Idioma: Español).

Symfony2 Official: La página Oficial de Symfony2. La documentación Oficial (Documentation) donde encontraremos el libro de este maravilloso framework (The Book) así como muchas recetas de actividades específicas (Cookbook) que nos permite realizar Symfony2 se consiguen en esta página. Y obviamente, además el código necesario para comenzar un proyecto con Symfony2 (Downloads). (Idioma: Inglés).

Symfony2 GitHub: Un Gran Aporte a la comunidad de Habla Hispana por parte del compañero Nacho Pacheco. Esta página contiene la traducción a nuestro rico idioma el Español, de la Documentación Oficial de Symfony2. (Idioma: Español).

Symfony.es: Para mí la mejor página con respecto a noticias y tópicos nuevos así como sitio de referencia de Symfony en todas sus versiones y bueno, hoy en día de lleno con Symfony2. Esta página fué creada por un gran desarrollador y gran conocedor del framework Javier Eguiluz. (Idioma: Español)

DeSymfony: Página Oficial de “La conferencia hispana más importante sobre Symfony y la segunda a nivel mundial.” como se define ella misma. La próxima 15 y 16 de junio de 2012 en La Universidad Jaume I, Castellón (España). Venezuela estará representada por un muy buen ponente y conocedor del framework Symfony Albert Jessurum. (Idioma: Español).

Desarollo Web Ágil con Symfony2: El mejor libro de Desarrollo de Symfony2 en Español. Para mí fue un problema comprarlo, sin embargo, pude hacerlo gracias a unos amigos de amigos que viven en España. Es un libro muy barato para lo completo que es. Ah y fue escrito por, adivinen quien? Sí, ese mismo Javier Eguiluz. (Idioma: Español).

Symblog: Tutorial paso a paso de cómo hacer una aplicación sencilla (un Blog) con Symfony2 llamada Symblog. (Idioma: Inglés).

La Instalación de todo lo necesario para trabajar con Symfony2 y WAMP 2.2 o mayor

Ahora sí, vamos con el verdadero tema de este post, la configuración de WAMP para poder correr nuestros proyectos con Symfony2. Por si a las moscas, hago un paréntesis, yo uso sistema operativo es Ubuntu 10.04 y eventualmente Windows 7. En cuanto editores, recomiendo NetBeans 7.1.1 e instalar los plugins de Twig y Symfony2. Sin embargo si quieren un editor ligero y sin complicaciones les recomiendo Sublime Text 2. Todos estos editores están en plataforma Linux y Windows así como Mac OS.

1.- Bueno, lo primero que demos hacer es Descargar WAMP 2.2. Lo instalamos en nuestra máquina con Windows.

2.- Descargar Symfony 2.0 (Edición Standard) y descomprimir los archivos en la carpeta raíz de nuestro sitio web, regularmente C:\wamp\www Al tener el WampServer levantado y al abrir el navegador e ir a http://localhost/Symfony/web/config.php Debemos ver algo asi:

3.- Nos recomendará que habilitemos las librerías de internacionalización “INTL” (php_intl.dll). En esta versión de Wamp solo nos toca activar esta librería ya sea por el menú de Wamp o descomentando (quitando el ;) al inicio de la línea de las extensiones donde se encuentre extension = php_intl.dll de los archivos php.ini ubicados enC:\wamp\bin\php\php5.3.8\ y en C:\wamp\bin\apache\Apache2.2.21\bin. Esto no tiene mayor problema.

4.- Por otra parte, nos exige el instalar y habilitar la librería de manejo y aceleración de carga y cache para PHP “APC” (php_apc.dll). Para esto debes primero descargar esta librería desde este link php_apc-3.1.5-5.3-vc9-x86.zip

4.1.- Debemos descomprimir el archivo  “php_apc-3.1.5-5.3-vc9-x86.zip” en el directorio de ext de PHP de tu instalación de WAMP en mi caso el directorio donde está es este: “C:\wamp\bin\php\php5.3.8\ext”.

4.2.- Luego en los archivos php.ini ubicados en C:\wamp\bin\php\php5.3.8\ y en C:\wamp\bin\apache\Apache2.2.21\bin agregar la siguiente línea de código “extension=php_apc.dll”.

Los archivos php.ini deben quedar de esta forma:

extension=php_apc.dll
...
extension=php_intl.dll
...
extension=php_mysql.dll
extension=php_mysqli.dll
...
extension=php_pdo_sqlite.dll
...
extension=php_sqlite3.dll
...
Nashville Symfony

Nashville Symfony (Photo credit: stephenyeargin)

5.- Lo que nos queda es reiniciar el WampServer y listo, tendremos nuestro Wamp configurado para correr nuestra aplicaciones con Symfony2. Entramos de nuevo a la dirección URL http://localhost/Symfony/web/config.php para verificar esto y debemos obtener esta página:



6.- Una vez instalado para poder ejecutar comando por la consola de Windows, necesitamos añadir php a los registros del sistema operativo o pueden hacer como yo,  crear un archivo llamado php.bat colocarlo en C:/windows/system32 para poder ejecutar por consola los comando de Symfony2. No deben olvidar de modificar los archivos php.ini que están en el directorio bin de php (C:\wamp\bin\php\php5.3.8) que aunque wamp no los utiliza estos comandos de symfony2 si los utilizarán. Este archivo php.bat debe tener lo siguiente en su interior

@echo off

rem *************************************************************
rem ** php CLI for Windows based systems (based on phing.bat)
rem *************************************************************

rem This script will do the following:
rem - check for PHP_COMMAND env, if found, use it.
rem - if not found detect php, if found use it, otherwise err and terminate

if "%OS%"=="Windows_NT" @setlocal

rem %~dp0 is expanded pathname of the current script under NT
set SCRIPT_DIR=C:\wamp\bin\php\php5.3.8\
set PHP_COMMAND=C:\wamp\bin\php\php5.3.8\

goto init

:init

IF EXIST ".\php.exe" (
%PHP_COMMAND% ".\php.exe" %*
) ELSE (
"%SCRIPT_DIR%\php.exe" %*
)
goto cleanup:cleanup
if "%OS%"=="Windows_NT" @endlocal
rem pause

Podemos también agregar a “php” a nuestras variables de entorno y así utilizarlo fácilmente desde la linea de comandos ejecutando el siguienete comando en nuestra terminal de Windows:

set PATH=%PATH%;C:\wamp\bin\php\php5.3.8

Sustituyendo obviamente la dirección por la ubicación donde ustedes tengan php instalado y con las modificaciones que hemos hecho en el php.ini ya realizadas. Por otra parte, si vamos a desarrollar con Symfony2 es necesario para cualquier versión que tengamos instalado el manejador de versiones git, por cierto una vez que lo hayamos instalado también podemos añadirlo a nuestras variables de entorno para que se pueda ejecutar desde nuestra línea de comandos de windows sin problemas ejecutando el mismo comando en la terminal colocando a la variable de entorno PATH la dirección del directorio /bin de nuestra instalación de git, por ejemplo sería algo así:

set PATH=%PATH%;C:\Program Files\Git\bin

Espero esto pueda ayudarnos a todos los que queramos usar Wamp para nuestras pruebas con aplicaciones web php con el framework Symfony2.

Referencias:

http://www.leccionespracticas.com/php/instalacion-de-symfony2-en-wamp-con-php5-3-extension-intl-y-acelerador-acp-resuelto/

MVC

Este blog lo empecé con la idea de estudiar Symfony 2 con todos en la web. Y posteriormente ir aprendiendo junto a ustedes acerca de buenas prácticas de programación y otras tecnologías, lenguajes y otros frameworks de desarrollo, bueno, y tenerlo como mi memoria a largo plazo, porque de verdad tengo muy mala memoria XD jejeje… Bueno, comencemos por la base de toda buena práctica de desarrollo de aplicaciones, el Patrón de Diseño MVC.

¿Qué es MVC?

MVC viene de Model, View, Controller, o bien: Modelo, Vista y Controlador. Es un patrón de diseño que empecé a utilizar hace algún tiempo y la verdad es que me dió muy buenos resultados en los sistemas donde lo pude aplicar. La idea básica de éste patrón es separar nuestros sistemas en 3 capas, El Modelo, La Vista y el Controlador. El Modelo se encarga de todo lo que tiene que ver con la persistencia de datos. Guarda y recupera la información del medio persistente que utilicemos, ya sea una base de datos, ficheros de texto, XML, etc. La Vista presenta la información obtenida con el modelo de manera que el usuario la pueda visualizar. El Controlador, dependiendo de la acción solicitada por el usuario, es el que pide al modelo la información necesaria e invoca a la plantilla(de la vista) que corresponda para que la información sea presentada.

¿Cuáles son los origenes del Modelo Vista Controlador?

Buscando un poco de información historica, podemos decir que este fue descrito por primera vez en 1979 por Trygve Reenskaug (hace ya basante tiempo, para el sector que tratamos), trabajador de Smalltalk, en unos laboratorios de gran investigación de Xerox. La implementación del modelo fue descrita en este documento. Frameworks MVC Los MVC cumplen perfectamente el fin particular de cualquier frameworks, (una estructura bien definida que da soporte a un proyecto web también nos ayuda a que nuestro proyecto sea organizado y bien desarrollado).

Diagrama de Flujo de un framework MVC

Modelo Vista Controlador

Funcionamiento del Patrón Modelo Vista Controlador

1. El “index.php” en este caso simboliza el recurso que ha requerido un cliente, en el servidor este archivo, debería inicializar el nucleo de nuestra aplicación. 2. Al iniciarce la app, la petición del usuario, descrita por una url, debe ser pasada al enrutador quien examina la petición HTTP y nos ayuda a determinar quién debe atender dicha petición. 3. Si existe, la cache nos devuelve nuestro el recurso que ha requerido el cliente sin necesidad de pasar por el sistema, ahorrandos la carga que esto nos conlleva. 4. Si no existe el recurso previamente cargado en la cache, la petición debe pasar por el filtro de Seguridad, parte de las tareas implicitas de un controlador es filtrar los datos enviados (si el usuario ha enviado algún formulario mediante método “POST” o algún dato mediante método “GET” a través de la URL) para que estos puedan resultar fiables y además de esto se verifica si el usuario tiene acceso y permisos al recurso al que pretende acceder. 5. El controlador se apoya en el modelo, librerias, helpers, plugins y todos los demás recursos necesarios para satisfacer nuestra petición, luego de procesar la información este generá una vista. 6. Finalmente, cuando la Vista está renderizada, esta es enviada al cliente en respuesta a su petición, entonces si la cache se encuentra habilitada, se almacena el resultado para la próxima ocación que el recurso sea servido de forma más rápida.

Colaboradores:

http://www.neleste.com/modelo-vista-controlador/

http://www.jourmoly.com.ar/introduccion-a-mvc-con-php-primera-parte/

http://www.symfony.com