Spanish

warning: Creating default object from empty value in /home/gwolf/drupal6/modules/taxonomy/taxonomy.pages.inc on line 33.

La mochila viajera — The travelling backpack

Submitted by gwolf on Sat, 07/14/2012 - 11:53
Wolf G, Bello L, Ramón E, Taleno A, Ortega J.  2012.  La mochila viajera — The travelling backpack.

During DebConf12, and thanks to Fito's kind invitation, a bunch of us were part of a radio program that's transmitted in Managua and Chinandega, «La mochila viajera». This program talks about different viewpoints and problematics about migration, seen from the eyes of Nicaraguans, which share quite a bit with us in Mexico — But at the same time, are very different.

I was invited as part of a research group in UNAM on the topic «Communication, trasmigration and emergent systems». To be honest, I'm way behind schedule with the part of the research I should be doing, but here I very roughly describe (part of) the topic I'm interested in.

The session was quite interesting. Of course, the reason I'm sending this to the blog is mainly that I want to keep it at hand, but I think some of you might find it interesting. Of course, it is in Spanish, so… YMMV ;-)

El voto electrónico en 2012: ¿Cómo vamos?

Submitted by gwolf on Tue, 05/22/2012 - 19:28
Written in...: 
2012

Over and over, in different media we are told that all automatization means progress, and is surely a positive change. Many people expect us techies to be the first enthusiasts for all technifying changes — But sometimes, our task is to bring to the public's attention the reasons as to why some processes should not be automatized.

An example for this is voting. Democratic countries have as their maximum, refoundational act the periodic renovation of the ruling class through the free, secret and universal vote. There is, of course, a recognition to the importance that voting holds, as well as the trust needed in their results' processing. Electronic voting, however, puts it at risk more strongly than any other, human-based way.

In this talk, I present a short exposition on why we think this way, and will delineate the current status of electronic voting in different aspects of our country, to be able to present what we can do in the future.

Resumen: 

Una y otra vez, en diversos medios nos insisten en que toda automatización es símbolo de progreso, es algo necesariamente positivo. Mucha gente espera que nosotros, los tecnólogos, seamos los primeros entusiastas de cualquier cambio tecnificador — Pero en algunos casos, nuestra labor es llamar la atención a por qué algunos procesos no deben pasar por la automatización.

Un ejemplo de lo anterior es el del voto. Los países democráticos tienen como el acto máximo y refundacional la renovación periódica de la clase gobernante por medio del voto libre, secreto y universal. Existe, claro, el reconocimiento a la importancia de este hecho, y de la certeza que haya en el procesamiento de sus resultados. El voto electrónico, sin embargo, pone en riesgo de una manera mucho más fuerte que cualquiera otra implementada a escala humana.

Presentaré una exposición corta respecto a por qué pensamos de esa manera, y delinearé el estado actual del voto electrónico en diversos ámbitos de nuestro país, para poder evaluar con mayor certeza lo que podamos hacer a futuro.

( categories: )

Open Access

Submitted by gwolf on Wed, 05/16/2012 - 16:14
Written in...: 
2012

And in the academic world... What is Open Access? What is the motivation for it? Does it have any relation to Open Source (that is, Free Software)?

I was invited to talk at the "Digital tools for academic publishing" forum at Instituto de Ingeniería, UNAM. This talk attempts to cover those points.

Resumen: 

Y en el mundo académico... ¿Qué es el acceso abierto (Open Access)? ¿Cuál es su motivación? ¿Tiene alguna relación con el Open Source (esto es, con el Software Libre)?

Me invitaron a presentar este tema en las "Jornadas sobre Herramientas Digitales para Publicaciones Académicas" en el Instituto de Ingeniería de la UNAM. Esta ponencia intenta cubrir estas interrogantes.

Los juegos: Clave para el desarrollo del cómputo

Submitted by gwolf on Sat, 04/14/2012 - 18:33
Wolf G.  2012.  Los juegos: Clave para el desarrollo del cómputo. Software Gurú. :50-51.

En el principio era el tiro parabólico

El desarrollo de juegos está relacionado con el desarrollo del cómputo prácticamente desde sus inicios. A pesar de que durante décadas las computadoras estaban al alcance únicamente de algunas grandes (y muy serias) instituciones militares y académicas, ya desde la década de 1940 hubo acercamientos lúdicos a diversos temas con fines de investigación: En 1947, Thomas T. Goldsmith Jr. y Estle Ray Mann diseñaron un primitivo sistema (controlado por una computadora de únicamente ocho bulbos) que mostraba en una pantalla tipo televisión la trayectoria descrita por misiles, cuyos parámetros dependían de la posición de varias perillas. Este "juego" no implementaba lógica alguna de detección de colisiones: El usuario colocaba una plantilla con su objetivo sobre la pantalla. Y podríamos imaginar las hipotéticas discusiones de los niños acerca de si dió en el blanco o se pasó apenitas (hipotéticas, claro, porque el sistema, si bien fue patentado con tal fin, nunca llegó al mercado).

Este primer juego era prácticamente un desarrollo natural, si tomamos en cuenta que las primeras computadoras electrónicas funcionales fueron creadas durante la segunda guerra mundial precisamente para hacer cálculos de trayectorias balísticas. Pero no deja de llamar la atención que uno de los juegos que más se asocia con el éxito de las aplicaciones en plataformas móviles, Angry Birds de la compañía finlandesa Rovio Mobile (comercializado en 2009 — ¡60 años más tarde!) sigue siendo básicamente un juego de tiro parabólico, aderezado con elementos gráficos y humorísticos, y con un sinfin de nuevos niveles y actualizaciones.

¡Y en Cambridge se juega así!

Pocos años más tarde, en 1952, Alexander S. Douglas escribió una versión gráfica del juego del gato (muy atinadamente llamada OXO) como proyecto para su tesis doctoral de interacción hombre-máquina en la Universidad de Cambridge, en una época en que no existían aún los dispositivos de entrada y salida (teclados y pantallas) que hoy damos tan por sentado, modo de interacción que apenas comienza a sentir presión de cambio tras cerca de 50 años.

Para 1959 aparecieron los primeros juegos gráficos en el MIT: Otra implementación del gato y el ratón en el laberinto. Estos juegos eran controlados por una pluma lumínica, con una forma de interacción, aunque salvando las distancias que más de 40 años ponen en el medio, muy similar a la táctil, que se ha puesto de moda en dispositivos móviles.

Jaque al rey: Persiguiendo la inteligencia artificial

Otro de los grandes hitos del desarrollo del cómputo que fueron marcados a través de los juegos es una gran subrama de la inteligencia artificial que llevó al diseño de incontables algoritmos de exploración de árboles de decisión con demasiados estados posibles para una búsqueda exhaustiva: A diferencia del gato, donde hay un máximo de 26,830 juegos posibles, la explosión combinatoria de posibilidades en el ajedrez, y la importancia de seguir una estrategia con un horizonte a varios movimientos. Si bien ya ha quedado demostrado que jugar ajedrez no demuestra inteligencia, buscar cómo enfrentarse a un oponente humano con cierto grado de éxito sí marcó grandes hitos en el desarrollo de esta importante disciplina.

En 1950, Claude Shannon publicó el artículo "Programming a Computer for Playing Chess" en la revista "Philosophical magazine". En 1951, Dietrich Prinz presentó un programa capaz de encontrar si era posible llegar a un mate en dos jugadas (un gran logro, dados los límites de la memoria a esas alturas). Para 1958, Alex Bernstein programó un jugador de ajedrez capaz de llevar a cabo un partido completo, aunque bastante fácil de vencer.

Y desde ahí, continuó el perfeccionamiento de los jugadores automatizados de ajedrez, hasta que en 1997 IBM alcanzó el hito de derrotar al campeón mundial en esa época, Gary Kasparov, con su computadora Deep Blue. Y cabe mencionar que, si bien el motor que animó a la exploración y desarrollo de técnicas
automatizadas para jugar ajedrez como parte del avance de la inteligencia artificial, esto no significa que Deep Blue sea más inteligente que Kasparov o, de hecho, que sea calificable de inteligente: El hito que se logró es optimizar un algoritmo de búsqueda específico a un problema dentro de un campo con un espacio de posibilidades que puede considerarse efectivamente infinito.

Si les interesa leer específicamente acerca del desarrollo del ajedrez como disciplina computacional, les sugiero visitar http://chessprogramming.wikispaces.com/.

Para cerrar este apartado: Otra razón que da especial importancia al ajedrez dentro del listado que estoy presentando es que, de entre los juegos primigenios, éste es el primero en el que la computadora asume un rol activo: No se limita a presentar el tablero, llevar el estado del juego o asegurarse de que los jugadores efectúen movidas legales, sino que es el primer intento que se hace de sobrepasar competitivamente al humano, colocándolo en el lugar del contrincante.

Gráficas, redes... ¡A matar marcianitos!

En la década de 1960, las computadoras proliferaron en las universidades, y cada vez más, ya no eran sólo los profesores quienes podían utilizarlas, sino que los alumnos comenzaron a tener acceso y, obviamente, llegó un gran influjo de nuevas ideas. Para 1961, los alumnos del MIT Martin Graetz, Steve Russell y Wayne Witanen crearon el primer juego con uno de los temas más recurrentes de esta categoría: La guerra en el espacio, precisamente con el juego «Spacewar!» — Y en este caso, a diferencia de los mencionados anteriormente, lo hicieron puramente por diversión, para aprender a programar la unidad gráfica vectorial de la computadora DEC PDP-1 recién adquirida por su universidad.

Spacewar! era un juego hecho para dos jugadores que se enfrentaban en un duelo espacial, con interacción en tiempo real, aunque necesariamente frente a la misma consola. Este juego llegó a ser tan popular que se convirtió en uno de los programas empleados como demostración por el personal de DEC.

Paralelamente, eran cada vez más comunes los sistemas de tiempo compartido, donde varios usuarios podían sentarse cada uno frente a su propia terminal y usar la misma computadora. Estas computadoras además ofrecían normalmente la capacidad de comunicarse entre sesiones. No tardaron en aparecer los primeros juegos multijugador, en los que cada uno de los participantes asumía un rol distinto. En 1971 fueron desarrollados juegos como Star Trek o Baseball, en que los participantes tenían que actuar como equpios.

Los primeros juegos de acción multijugador con perspectiva 3D en primera persona (First-person Shooters) llegaron en 1974: Spasim (Space Simulator), en los sistemas PLATO de la Universidad de Illinois, y Maze War, en el centro AMES de Investigación de NASA en California.

Y hacia mediados de los 1970, ya con Internet floreciendo entre las principales universidades de Estados Unidos, comenzaron a aparecer varios MUDs, mundos en línea de aventuras interactivas, verdaderamente multijugador, presentando prácticamente todos los elementos que esperaríamos hoy de los juegos en plataformas de interacción social — Cierto, acorde a la tecnología disponible, pero con niveles de interacción social muy cercanos a los que conocemos hoy.

El BBS: Las redes para el resto de nosotros

Ya en los 1980, tras la explosión de la revolución de las computadoras personales, pero mucho antes de la masificación del acceso a Internet, grupos de aficionados de todo el mundo comenzaron a conectarse entre sí con los medios que la tecnología ofrecía: Comenzaron a aparecer Sistemas de Boletín Electrónico (Bulletin Board Systems o BBSes), computadoras personales de entusiastas conectadas a una línea telefónica, programadas para recibir llamadas de quien quisiera pasar un rato por ahí, para platicar en los foros, intercambiar archivos — O participar de los juegos multijugador, aunque en este caso, dado que las conexiones eran telefónicas, casi todos eran con una interacción basada en turnos.

No puedo dejar de mencionar a los BBSes dado que, hacia principios de los 1990, fui operador de uno de los aproximadamente 20 BBSes que hubo en la Ciudad de México por aquellos días. Llegamos a tener comunidades vibrantes, de aproximadamente mil usuarios, que poco a poco fuimos migrando a Internet. Algunos de los juegos BBSeros, como el TradeWars 2002, reaparecieron años más tarde en Internet, aunque manteniendo en su formato original basado en texto en una terminal de 80×25 caracteres.

Como en tantos otros casos, en el campo de los juegos por computadora el verdadero desarrollo e inovación se dio cuando no había aún referentes, en las primeras décadas. Y aunque el mundo de los juegos parece compeltamente distinto hoy de lo que era hace 5, 10 o 20 años, la principal diferencia es el uso de gráficos y sonido, o la capacidad de almacenamiento (y por tanto, de interacción) a disposición del usuario, no las ideas principales.

Hemos, a últimos años, visto muy interesantes cambios en la forma de interacción, con los controles basados en acelerómetros (Nintendo Wii) o en reconocimiento de imágenes (Kinect). Queda mucho por explorar, por inventar. Y dado cómo han ido de la mano el avance del cómputo y de los juegos, espero que los lectores de esta revista inyecten nueva vida y nuevas ideas en este campo. Estas ideas indudablemente terminarán alcanzando a nuestra disciplina completa.

( categories: )

Programación funcional: Enfrenta a la concurrencia

Submitted by gwolf on Wed, 03/14/2012 - 19:06
Wolf G.  2012.  Programación funcional: Enfrenta a la concurrencia. Software Gurú. :48-49.

El tema eje de el presente número de Software Gurú es el manejo de datos a muy gran escala (y disculparán que no use la frase más de moda en la industria, Big Data, habiendo otras igual de descriptivas en nuestro idioma). Al hablar de muy gran escala tenemos que entender que pueden ser juegos de datos mucho mayores de lo que acostumbramos — Estamos hablando de un aumento de por lo tres a seis órdenes de magnitud en la escala de los datos a analizar: Según las definiciones más comunes hoy en día, en el rango entre decenas de terabytes y petabytes.

Dar un salto tan grande nos presenta retos en muy diversas esferas. Para muchas de las necesidades que enfrentamos, tenemos que adecuar nuestros procesos de desarrollo, las herramientas que empleamos, el modelo con el cual almacenamos, solicitamos y procesamos la información, e incluso el hardware mismo. Enfocaré este texto a un paradigma de programación que permite enfrentar a la concurrencia de una forma más natural y menos traumática de lo que acostumbramos.

Una de las razones por las que este tema ha armado tanto alboroto en el campo del desarrollo de software es que, si bien la capacidad de cómputo a nuestro alcance ha crecido de forma francamente bestial desde casi cualquier métrica en el tiempo que nos ha tocado vivir como profesionales, nuestra formación sigue estando basada en un modelo de desarrollo muy difícil de escalar. Vamos, el problema no lo tienen las computadoras, sino nosotros los programadores: No sólo tenemos que explicar a la computadora lo que requerimos que haga, sino que además de ello tenemos que cuidar que no se tropiece –cual si fuera un ciempiés– con su propia marcha. Siempre que hablemos de muy gran escala debemos hablar, sí o sí, de un alto grado de paralelismo en nuestras aplicaciones. Y por muchos años, el paralelismo fue precisamente algo de lo que buena parte de los programadores buscaban escapar, por las complicaciones que conlleva ante una programación imperativa, necesariamente secuencial.

Las alarmas comenzaron a sonar fuertemente hacia el año 2005, en que los fabricantes de hardware tuvieron que cambiar su estrategia (y lograron, sorprendentemente, inyectarle algunos años más de vida a la ley de Moore, la cual indica que el número de transistores que componen a un chip se duplica aproximadamente cada dos años, ritmo que se ha mantenido por 40 años ya): Al migrar el desarrollo de procesadores una estrategia de multiprocesamiento (CPUs múltiples empaquetados como una sóla unidad), dejando de lado la carrera de los megahertz, aventaron la papa caliente hacia el lado de los desarrolladores: Tendríamos que adecuarnos a una realidad de concurrencia verdadera y ya no simulada.

Los sistemas multiprocesador no son, claro está, tan recientes. El gran cambio es que ahora prácticamente todas las computadoras de rango medio (incluso ya algunos teléfonos celulares) tienen esta tecnología disponible. Claro está, todo el software de infraestructura, desde los sistemas operativos, compiladores y bibliotecas tuvieron que irse adecuando gradualmente para poder administrar y ofrecer al usuario estos recursos.

Por muchos años, vivimos sabiéndolo en un mundo de falsa concurrencia: Una computadora sólo podía hacer una cosa a la vez, dado que contaba con un sólo procesador. Por la velocidad de su operación, y por el empeño que se puso en que los cambios de contexto fueran tan ágiles como fuese posible, nos daba la impresión de que varias cosas ocurrían al mismo tiempo. Esto, claro, no debe sorprender a ninguno de ustedes — El gran reto introducido por el paralelismo real es manejar correctamente escenarios mucho más complejos de condiciones de carrera que antes no se presentaban tan fácilmente. Antes del paralelismo, podíamos indicar al sistema operativo que nuestro programa estaba por entrar a una sección crítica, con lo cual éste podía decidir retirar el control a nuestro programa para entregarlo a otro si estaba cercano a finalizar su tiempo, o darle una prórroga hasta que saliera de dicha sección.

Cuando hay más de un procesador (un CPU multicore o multinúcleo alberga a varios procesadores, en ocasiones compartiendo elementos como uno de los niveles de memoria cache), la situación se complica: El sistema operativo puede, sí, mantener en ejecución a uno de los programas para reducir la probabilidad de conflictos, pero se hizo indispensable hacer la colaboración entre procesos algo explícito.

Claro, esto no fue un desarrollo repentino ni algo fundamentalmente novedoso. Los mutexes nos han acompañado por muy largos años, y la programación multihilos nos ha regalado dolores de cabeza desde hace muchos años. Sin embargo, en sistemas uniprocesador, la incidencia de condiciones de carrera era suficientemente baja como para que muchos las ignoraran.

Una de las razones por las que la concurrencia nos provoca esos dolores de cabeza es porque nos hemos acostumbrada a enfrentarnos a ella con las herramientas equivocadas. Un tornillo puede clavarse a martillazos, y no dudo que haya quien use destornilladores para meter clavos, pero tendremos mucho mayor éxito (y un tiempo de entrega mucho más aceptable) si usamos la herramienta correcta.

Los lenguajes basados en programación funcional resuelven en buena medida los problemas relacionados con la concurrencia, y pueden de manera natural desplegarse en un entorno masivamente paralelo. Sin embargo, requieren un cambio más profundo en la manera de pensar que, por ejemplo, cuando adoptamos la adopción de la programación orientada a objetos.

¿Cuál es la diferencia? Aprendimos a programar de forma imperativa, con el símil de la lista de instrucciones para una receta de cocina — Los lenguajes puramente funcionales son mucho más parecidos a una definición matemática, en que no hay una secuencia clara de resolución, sino que una definición de cómo se ve el problema una vez resuelto, y los datos se encargan de ir marcando el camino de ejecución. Los lenguajes puramente funcionales tienen una larga historia (Lisp fue creado en 1958), pero en la industria nunca han tenido la adopción de los lenguajes imperativos. Hay una tendencia en los últimos 20 años, sin embargo, de incorporar muchas de sus características en lenguajes mayormente imperativos.

La principal característica que diferencía a los lenguajes funcionales que nos hacen pensar en definiciones matemáticas es que la llamada a una función no tiene efectos secundarios — ¿Han depurado alguna vez código multihilos para darse cuenta que el problema venía de una variable que no había sido declarada como exclusiva? Con la programación funcional, este problema simplemente no se presentaría. Esto lleva a que podamos definir (en AliceML) el cálculo de la serie de Fibonacci como:

      fun fib 0 = 0
        | fib 1 = 1
        | fib n  if (n > 1) = spawn fib(n-1) + fib(n-2);
        | fib _ = raise Domain
    

A diferencia de una definición imperativa, la función es definida dependiendo de la entrada recibida, y la última línea nos muestra el comportamiento en caso de no estar contemplado por ninguna de las condiciones. Y el puro hecho de indicar la palabra «spawn» indica al intérprete que realice este cálculo en un hilo independiente (que podría ser enviado a otro procesador, o incluso a otro nodo, para su cálculo).

Otra de las propiedades de estos lenguajes, las funciones de órden superior (funciones que toman como argumentos a otras funciones). Por ejemplo, en Haskell:

      squareList = map (^2) list
    

Al darle una lista de números a la función squareList, nos entrega otra lista, con el cuadrado de cada uno de los elementos de la lista original. Y, obviamente, esto se puede generalizar a cualquier transformación que se aplicar iterativamente a cada uno de los elementos de la lista.

Hay varios tipos de funciones de órden superior, pero en líneas generales, pueden generalizarse al mapeo (repetir la misma función sobre los elementos de una lista, entregando otra lista como resultado) y la reducción (obtener un resultado único por aplicar la función en cuestión a todos los elementos de la lista). Y es, de hecho, basándose en juegos de mapeo/reducción que se ejecutan la mayor parte de las tareas intensivas en datos en Google.

Podemos encontrar frecuentemente otros dos patrones en estos lenguajes, aunque por simplicidad no los incluyo en estos ejemplos: Por un lado, al no tener efectos secundarios, tenemos la garantía de que toda llamada a una función con los mismos argumentos tendrá los mismos resultados, por lo que un cálculo ya realizado no tiene que recalcularse, y podemos guardar los resultados de las funciones (especialmente en casos altamente recursivos, como éste). En segundo, la evaluación postergada: Podemos indicar al intérprete que guarde un apuntador a un resultado, pero que no lo calcule hasta que éste sea requerido para una operación inmediata (por ejemplo, para desplegar un resultado, o para asignarlo a un cálculo no postergable).

Una de las grandes desventajas que enfrentó la programación funcional es que los lenguajes funcionales puros crecieron dentro de la burbuja académica, resultando imprácticos para su aplicación en la industria del desarrollo. Esto ha cambiado fuertemente. Hoy en día podemos ver lenguajes que gozan de gran popularidad y han adoptado muchas construcciones derivadas de la programación funcional, como Python, Ruby o Perl. Hay lenguajes funcionales que operan sobre las máquinas virtuales de Java (Clojure) y .NET (F#). Por otro lado, lenguajes como Erlang, OCaml y Scheme se mantienen más claramente adheridos a los principios funcionales, pero con bibliotecas estándar y construcciones más completas para el desarrollo de aplicaciones.

El manejo de cantidades masivas de datos están llevando a un pico de interés en la programación funcional. No dejen pasar a esta interesante manera de ver al mundo - Puede costar algo de trabajo ajustar nuestra mente para pensar en términos de este paradigma, pero los resultados seguramente valdrán la pena.

Monitoreo de PostgreSQL con Munin

Submitted by gwolf on Thu, 02/02/2012 - 14:54
Wolf G.  2011.  Monitoreo de PostgreSQL con Munin. Revista Cubana de Ciencias Informáticas. 5:1-8.

Producir y reproducir el conocimiento

Submitted by gwolf on Thu, 01/12/2012 - 17:19
Wolf G.  2011.  Producir y reproducir el conocimiento. Horizontes: Los nuevos saberes.

Las culturas del denominado mundo occidental han transitado por grandes etapas claramente diferenciadas — Si bien no hay un criterio único, en líneas generales podríamos hablar de cinco: Prehistoria, antigüedad, edad media, edad moderna y era contemporánea. Uno de los principales factores de quiebre que marca el salto de una a otra es la forma que tiene la humanidad de difundir el conocimiento — Historia, cultura, nuevas ideas. Y hoy estamos sin duda alguna a las puertas de un nuevo cambio, que con toda seguridad replanteará el mismo funcionamiento de la sociedad.

La antigüedad, primer etapa de la civilización inicia con la invención de la escritura — Ya no es indispensable que el sabio en turno reúna todos los conocimientos de su cultura; al dejarlos por escrito, puede aumentarse el total de conocimiento sin que sea a la vez propiedad y responsabilidad de una persona o un reducido grupo. Además, la muerte del viejo sabio no significa volver al punto de partida.

La edad media inició con la caída del imperio romano: Al colapsar la red de caminos, al surgir bandas de ladrones que imposibilitaban el tránsito, y al no haber ya un idioma oficial para todas las comunicaciones del mundo conocido, el desarrollo del conocimiento sufrió un fuerte freno.

No podemos concebir que inicie la era moderna sin la invención de la imprenta: Durante siglos, el conocimiento fue patrimonio de muy pocos, principalmente de ecleciásticos, en una institución altamente conservadora. Al volverse posible la reproducción masiva de los documentos (en contraposición a esperar meses o años a que un copista reproduzca un único ejemplar), la explosión en el saber y en el contacto entre culturas sencillamente destruyó el órden establecido, y sólo a través de éste cambio llegamos a una sociedad que comienza a ser comparable con la actual.

Pero tardó aún varios siglos la formación de una masa crítica de gente capaz de leer y escribir. En un principio, los libros circulaban sólo entre científicos y religiosos. Poco a poco, más gente obtuvo acceso al conocimiento — y no es casual que en todo el mundo occidental inicie con pocos años de diferencia la era de las revoluciones, y con ella la era contemporánea: El tener acceso a debates, a ideas, el plantearse siquiera la existencia de derechos fundamentales, dieron inicio a la revolución francesa, la independencia de los Estados Unidos, seguidas por las de Latinoamérica, y continuaron con la mezcla de debates y guerras en que se convirtieron los siguientes dos siglos. Más enfocado a la temática que busco abordar: En 1710 apareció el Estatuto de la Reina Ana, el antecedente directo de las actuales leyes de derechos de autor, estableciendo un periodo de 14 a 28 años durante el cual tendría efecto un monopolio legal del autor sobre las reproducciones que pudieran hacerse de su obra, pasado el cual ésta pasaría a convertirse en dominio público.

Me atrevo a apuntar que un cambio tan grande como el que supuso la imprenta lo supuso también el mimeógrafo, inventado en los 1880: Montar un taller tradicional de imprenta, de tipos de plomo fundido, si bien es más fácil que copiar libros a mano y uno a uno, sigue requiriendo una gran inversión económica y de tiempo para cada obra. Un mimeógrafo es muy económico y portátil, y un original puede prepararse en minutos. Los mimeógrafos fueron un agente fundamental para las revoluciones ideológicas de inicios y mediados del siglo XX. En México, la época de la revolución vio el nacimiento de una gran cantidad de publicaciones, mini-periódicos, que reproducían caricaturas y corridos –la forma más fácil de llevar las noticias y la ideología a un abundante público– precisamente gracias al bajo costo y facilidad de operación de los mimeógrafos.

Claro está, estoy seguro de que al leer ustedes los elogios que hago al mimeógrafo, les resultará obvio hacia dónde es que quiero dirigirme: El punto de quiebre que estamos cruzando hoy está representado por el acceso prácticamente universal a Internet. Y este cambio se presenta por varios factores: Como nunca antes en la historia, hoy podemos reproducir y diseminar el conocimiento: 1) sin que importen límites o distancias geográficas; 2) con un costo de reproducción casi cero; 3) es posible publicar de inmediato, sin necesidad de un proceso editorial; 4) todo mundo puede publicar sus obras sin la intervención de intermediarios, sin controles impuestos, sin censura, y sin responder a criterios de mercado.

Estos cuatro puntos sacuden –nuevamente– los cimientos de grupos políticos y económicos muy poderosos en nuestra sociedad. Al cambiar la realidad, debe cambiar la normatividad. Específicamente, hoy nos encontramos con que las leyes de derecho de autor no se ajustan ya a la realidad actual — Si bien los legisladores han intentado actualizar las leyes que reglamentan a la propiedad intangible, los supuestos de la producción y la reproducción del conocimiento han cambiado de forma fundamental. En las últimas tres décadas han ido apareciendo grupos –desde los diferentes ámbitos de la creación cultural– que cuestionan la pertinencia de leyes ya obsoletas, definitivamente no adecuadas a la realidad actual.

La industria editorial es de gran importancia económica, pero se enfrenta a una irremediable obsolescencia. A lo largo de los últimos 80 años, el término de protección de derechos de autor se ha sextuplicado, protegiendo los primeros ejemplos de propiedad intangible masivos de la historia (los primeros personajes animados de Walt Disney — ¡Resulta triste descubrir que Mickey Mouse dirija las políticas públicas en materia de creación cultural!). Al mismo tiempo, sin embargo, han nacido grupos de creadores que defienden la libertad del conocimiento y de las artes — Organizaciones de todo tipo, como Free Software Foundation, Creative Commons, Wikipedia o Public Library of Science nos muestran una gran diversidad de conocimiento, de la más alta calidad, creado y distribuído sin pasar a través de los filtros de la industria editorial.

El momento histórico en el que nos ubicamos nos presenta grandes retos, grandes oportunidades, a la mayor escala posible. Está en juego el que podamos aprovechar la tecnología para crear una verdadera nueva etapa en el desarrollo de la humanidad toda. No podemos permitirnos desaprovecharlo.

( categories: )

Repensando las certificaciones

Submitted by gwolf on Wed, 11/23/2011 - 19:43
Wolf G.  2011.  Repensando las certificaciones. Software Gurú. :50-51.

Diversas personas me han preguntado qué certificaciones deberían buscar para afianzar su carrera o posición, o por otro lado, cuál conviene a una empresa buscar en un prospecto de contratación. Me llama la atención principalmente el que asuman la respuesta a un cuestionamiento previo y condicionante a éste: ¿Vale la pena buscar certificaciones? Esta pregunta me puso a pensar en lo relativo a quién las pide (tanto desde el punto de vista del individuo que las persigue como del contratante que las valúa); dado el público alcanzado por esta revista, creo que puede ser de interés enfocar la columna hacia este tema.

¿Qué es una certificación?

Para el presente análisis me centro en las certificaciones como un documento emitido por una entidad comercial no dedicada principalmente a la educación superior, validando que el sustentante posee el dominio de un conjunto específico de herramientas o tecnologías (típicamente, aunque no necesariamente, limitadas a las generadas por la organización certificadora).

Las certificaciones difieren de otros métodos de cualificación en que normalmente son otorgadas ante la presentación y aprobación de un examen; típicamente no requieren que el sustentante siga un curso.

Además de lo anterior, las certificaciones típicamente tienen –a diferencia de prácticamente cualquier programa académico– una validez determinada, ya sea por un tiempo preestablecido, o por estar atadas a tecnologías específicas, con un ciclo de vida y obsolescencia planificado.

Y un punto adicional: Las certificaciones, si bien se presentan a sus clientes potenciales como una oportunidad de obtener mejores cualificaciones para aumentar sus evaluaciones (redundando directamente en beneficios económicos), en ningún momento buscan ocultar que son para sus promotores un negocio antes que ninguna otra cosa. Lo cual, claro, no es ningún pecado — Pero sí es un punto a considerar al evaluarlas.

Consideremos dos perfiles en particular — Los dos antiperfiles donde, a mi forma de ver, las certificaciones juegan en contra de la mayor parte tanto de individuos como de empresas.

Antiperfil 1: El recién egresado

El argumento para buscar certificaciones es simple: Si cuando un postulante es evaluado para un puesto laboral, el entrevistador de primer contacto no tiene un perfil técnico, sino que busca descartar a quien no cumpla con las características básicas que busca la empresa, en realidad la primer entrevista "real" se presenta una vez pasado ese filtro. El Can Cerbero corporativo no permitirá el paso del postulante si no cuenta con el altero completo de papeles.

Este punto de vista apunta a un postulante novato, probablemente recién egresado de la universidad, sin experiencia laboral en el mundo real, que no ha tejido aún redes profesionales y no encuentra una mejor vía de acceso. Este punto crece especialmente cuando estos nuevos integrantes de la fuerza laboral buscan emplearse en una de las relativamente pocas grandes empresas consultoras de desarrollo que hay en nuestro país.

Las certificaciones que están al alcance de un recién egresado, sin experiencia en el campo, son relativamente pocas — Y el peso económico de perseguirlas resulta relativamente elevado. Muchas universidades han incorporado a los servicios que ofrecen a los alumnos el prepararlos para alguna certificación básica y reducir el precio a pagar por ella. Esto, a mi modo de ver, equivale a que dicha universidad se reconozca incapaz de ofrecer una formación suficiente para que sus egresados encuentren un puesto de trabajo adecuado, y –al impulsar una tecnología específica– demerita la universalidad de la formación que dio nombre a las universidades desde un principio.

Antiperfil 2: El experto en certificaciones

Un perfil que nace como consecuencia lógica del anterior es el del experto en certificaciones. Si por cada examen que presento crece mi elegibilidad laboral, ¿por qué no acumularlos? Aprender el material necesario para presentar un examen es, a fin de cuentas, una habilidad que puede ser aprendida y dominada. Si bien muchas certificaciones incluyen la resolución de problemas prácticos, siguen presentándose en un entorno donde, hasta cierto punto, las situaciones presentadas son muy distintas a las de la vida real.

Por otro lado, una persona altamente calificada no necesariamente sabrá presentar un examen, cosa que a ninguno de ustedes debe sorprender — Los ejemplos abundan; traigo ante ustedes a uno en particular, aunque sea sólo como evidencia anecdótica: He tenido oportunidad de trabajar con algunas personas veraderamente talentosas, referencia en el campo de la seguridad y administración de sistemas, que frecuentemente asesoran a los técnicos de empresas transnacionales. Uno de ellos intentó certificarse en uno de los temas en que es pionero en nuestro país, y no logró aprobarlo.

¿Significa esto acaso que su conocimiento de la tecnología, las herramientas y los procesos es menor que el de quien sí aprobó el curso? Definitivamente, no. Sólamente significa que los procesos mentales que ésta persona sigue no se alínean con los que la empresa certificadora sugiere. Y es precisamente esto lo que le ha permitido convertirse en su asesor: El seguir procesos creativos, no buscar dentro de lo predecible, y tener un verdadero conocimiento profundo del sistema como un todo.

Alternativas

Y pasando de la crítica a la propuesta, ¿qué puedo aportar tras mi crítica a este modelo?

Para un recién egresado, enfrentarse al mounstro corporativo sin experiencia real previa, cierto, no da espacio a la negociación. Mientras las empresas sigan imponiendo estos filtros previos a la entrevista real, ¿qué puede hacer quien inicia su carrera profesional?

Ser recién egresado no significa no tener experiencia real. Entrar a estudiar una carrera relacionada con la computación debería indicar una genuina afición al pensamiento analítico. En nuestro campo, tenemos la gran fortuna de que un aficionado puede –sin estudios, sin equipo profesional, sin cualificaciones formales– desarrollar proyectos en casi cualquier ámbito del campo. En el cómputo, todos ustedes podrán citar numerosos ejemplos que han contribuído al campo de forma decisiva, sin formación profesional.

Claro, sería iluso pensar que todos coordináramos proyectos de gran envergadura siendo aún adolescentes o que impulsar una idea exitosa nos lleve a abandonar los estudios profesionales y saltar a la fama como estrellas de la programación. Sí podemos, sin embargo, ir haciendo públicos los pequeños proyectitos que hacemos, los retos interesantes que vamos resolviendo, los programas que escribimos por gusto. Publicar código, especialmente como software libre, es una muy buena manera de demostrar capacidad profesional, compromiso, capacidad de documentar y de brindar soporte a los usuarios. Es más, si nuestro proyecto juguete fue adoptado por una distribución de Linux, esto resulta clara muestra de que otros expertos juzgan nuestro trabajo digno de ser promovido.

Respecto al segundo antiperfil, el caso presentado ilustra que las competencias laborales de un profesional con trayectoria no pueden ser juzgadas de manera meramente cuantitativa — Los diversos campos relacionados con el cómputo requieren de una gran creatividad, y no pueden ser juzgados como una materia de la escuela, en que el desarrollo del resultado debe ser idéntico al que nos fue impartido en clase.

Quien busca contratar a un profesional con trayectoria no puede limitarse a evaluar en base a los certificados presentados. En mi experiencia, las veces que mi recomendación ha sido requerida para un proceso de selección de personal, coloco en último lugar todos los currículos que presentan certificaciones de forma destacada. Nunca me he arrepentido de hacerlo — Estos tienden a ser los que menos conocimiento real tienen del campo.

El que una entrevista laboral para un puesto que requiere conocimientos especializados –sean de un estudiante recién graduado o de un experto– tenga que pasar por un filtro no conocedor de la materia es síntoma de un problema estructural: La tercerización a los corporativos de desarrollo de software ha crecido en detrimento de la capacidad de las entidades que las contratan. No con esto digo que deban desaparecer — Si bien debe ampliarse la capacidad de respuesta de los departamentos de sistemas de quienes típicamente contratan a estas empresas (entiéndase: Ampliarse su tamaño, sus áreas de especialización, y la seguridad laboral brindada a sus integrantes), muchos de los proyectos podrían perfectamente ser encargados ya sea a empresas de escala más humana (PyMEs), o contratar a grandes empresas verdaderamente especializadas en un ramo específico. Esto, claro, reduciría el tamaño de las consultoras — Pero aumentaría su calidad, y aumentaría las oportunidades laborales con una justa comparación basada en méritos reales, más cerca de quien verdaeramente requiera del servicio.

Por otro lado, no todos los proyectos en que participamos –por hobby o por encargo– puede ser publicado. Sin embargo, permítanme insistir en que la mejor carta de presentación es el trabajo realizado. En otras áreas laborales es común –incluso en algunos países, obligatoria– la pertenencia a colegios de profesionales — Cuerpos que establecen las normas mínimas de operación, calidad y cobro en el campo, y guardan registro de la actividad de sus agremiados. De tal suerte, en vez de requerir un certificado emitido por una empresamente claramente parcial y con innegables intereses económicos en el área, habría una entidad a la cual preguntar acerca de la experiencia comprobable de un postulante.

Los colegios citados nacieron dada la necesidad de una entidad que validara –y asumiera responsabilidad ante dicha validación– de profesiones en las que puede haber amplia responsabiliad civil, como la medicina o la arquitectura. La importancia que van adquiriendo los desarrollos hoy en día nos lleva a plantear si no es momento de una reglamentación similar en nuestra área.

Hay, sí, lugar para las certificaciones. Hay trabajos en que hace falta contratar a alguien que domine una tecnología específica, aún sin ser un –probablemente sobrecalificado– experto en el ramo entero. La distorsión, a mi opinión, está más en la escala que han adquirido. No pueden ser requeridas como carta de presentación, no puede dárselas un peso comparable al de un estudio prolongado y general (como un título universitario) o al de las capacidades demostradas con trabajo.

( categories: )

Ciencia, Tecnología, Sustentabilidad, y... ¿Software libre?

Submitted by gwolf on Wed, 10/12/2011 - 06:15
Written in...: 
2011

Free Software is a social movement which brings back knowledge production to how it has worked since the beginning of human history. We go through some examples of how information has been shared, along with specialization in the ways of doing so, to see why code is basically speech.

Resumen: 

El Software Libre es un movimiento social que trae de vuelta a la producción de conocimiento a la forma en que ha venido funcionando desde el inicio de la historia de la humanidad. Repasaremos algunos ejemplos de cómo se comparte la información, así como de esquemas que se han empleado una vez que la especialización del conocimiento lo requirió, mostrando cómo el código es sencillamente una forma más de expresión.

Interoperabilidad: ¿A qué aspiramos cuando hablamos de ella?

Submitted by gwolf on Thu, 08/25/2011 - 16:32
Wolf G.  2011.  Interoperabilidad: ¿A qué aspiramos cuando hablamos de ella? Software Gurú. :50-51.

El pasado 2 de junio, participé en el foro «Software Libre en México, reflexiones y oportunidades», organizado por la Comisión de Ciencia y Tecnología del Senado de la República. En este foro tocamos cuatro temas principales (Educación, gobierno, industria y sociedad).

Si bien el objetivo explícito central del foro fue presentar ante los legisladores y medios interesados tanto los puntos de vista que tenemos los activistas del software libre como las historias de éxito, los avances y problemas con que nos hemos encontrado en los ya más de quince años que llevamos de existencia en nuestro país, posiblemente lo más importante que nos llevamos los participantes fue la reactivación de un grupo de discusión para tratar temas políticos relacionados con la tecnología, y con el factor cohesivo de estar interesados en la difusión del software libre.

Este grupo, coordinándose a través de una lista de correo pública1, está actualmente en proceso de definir los puntos de la agenda digital a presentar; el primero de ellos es el de la interoperabilidad.

El tema coincide con la presentación de la versión preliminar de un acuerdo de la Secretaría de la Función Pública (SFP), a ser discutido y –esperamos– aprobado en las próximas semanas o meses. Nos resulta de gran importancia no sólo analizar y proponer en lo relativo a esta temática hacia el interior de nuestro grupo (y de las instancias gubernamentales involucradas), sino que hacia los demás profesionales en el tema — Como lo son los lectores de esta revista. Dada la imposibilidad de proporcionar referencias a un documento aún inexistente y motivado por el interés que seguramente ésto causará a más de uno de ustedes, coloqué a su disposición una copia de una versión preliminar de este texto en mi sitio Web2.

Definición

¿A qué nos referimos con interoperabilidad?

Al enfrentar un desarrollo, un punto fundamental a considerar desde muy temprano es cuál será su límite o interfaz — Sea un sistema, un API sobre la nube, un servicio, un componente o una biblioteca, debemos delimitar por qué mecanismo recibiremos las solicitudes de los usuarios y por cuál le entregaremos los resultados. Del mismo modo, nuestro sistema parte de un contrato con diversos elementos (nuevamente, de cualquiera de los niveles antes descritos) que le brindarán facilidades, por ejemplo, de conectividad a red o de manejo de bases de datos. Hablar de interoperabilidad significa que en cada uno de dichos puntos, en cada una de las interfaces, el intercambio de datos se realice de forma tal que evite imponer dependencia en algún paquete específico, en los designios de algún producto que a futuro pudiera –de cierto modo– mantener como rehén sea al usuario final, al desarrollador, o a la entidad que requirió del desarrollo en cuestión.

En palabras del Grupo de Trabajo para la Interoperabilidad, de la Asociación Francófona de Usuarios de Software Libre3:

La interoperabilidad es la capacidad que tiene un producto o un sistema, cuyas interfaces son totalmente conocidas, para funcionar con otros productos o sistemas existentes o futuros y eso sin restricción de acceso o de implementación.

El borrador de la SFP divide la definición de interoperabilidad en cinco sub-definiciones:

Interoperabilidad
Definición del concepto global
Interoperabilidad organizacional
Homologar criterios y procedimientos entre distintas dependencias
Interoperabilidad semántica
Un manejo estandarizado del significado de los diversos conceptos
Interoperabilidad técnica
A las especificaciones técnicas que garantizan que los componentes tecnológicos de los sistemas de información están preparados para interactuar de manera conjunta
Neutralidad tecnológica
Busca que cada dependencia pueda elegir los programas y mecanismos más adecuados para su desarrollo sin que se favorezca o penalice a ninguno por criterios más allá de los puramente técnicos.

Del dicho al hecho

Quien pegue una etiqueta que diga "esta página Web se ve mejor con el navegador X" en una página Web es un nostálgico por los días viejos y malos, antes de la Web, cuando tenías muy pocas probabilidades de leer un documento escrito en otra computadora, otro procesador de textos u otra red.
— Tim Berners-Lee, Technology Review, julio 1996

El documento presentado por la SFP nos parece muy esperanzador, está escrito de forma clara y bastante exhaustiva. El cuidado que debemos ahora poner va principalmente hacia que el acuerdo no quede en letra muerta — Debe ser del conocimiento de las diversas dependencias y ser tomado en serio para beneficio no sólo de la población toda, sino que de cada una de dichas dependencias. Además, debe ser conocido y comprendido por la industria nacional de desarrolladores de software, dado que interoperar sin restricciones no únicamente beneficia al sector público, sino que –a fin de cuentas– a todos los implicados. Escribir software que no dependa de implementaciones específicas es sencillamente escribir mejor software.

Al día de hoy, como usuarios, tristemente nos resulta muy común encontrar, una y otra vez, ejemplos de cosas que podrían trivialmente ser interoperables, pero resultan no serlo — Y lo que es peor, sin razón alguna.

Ejemplos de lo que digo son demasiado comunes. Desde la aplicación desarrollada por el SAT para presentar la declaración de impuestos (desarrollada en Java, plataforma que se popularizó al ser la primera en impulsar explícitamente la interoperabilidad como su principal promesa), que sencillamente se niega a operar al ser llamada con cualquier navegador que no sea Internet Explorer, hasta el SUA del IMSS, única manera en que una empresa puede dar de alta y administrar a su plantilla de trabajadores ante IMSS e INFONAVIT, que requiere ser ejecutada en computadoras corriendo Windows. Y al igual que estos dos casos de altísima visibiliad, seguramente ustedes podrán citar a ejemplos adicionales que obligan a sus usuarios a emplear tecnologías específicas, sin justificación técnica alguna para hacerlo.

El pretexto más frecuente que encontramos ante cualquier solicitud de que algún sistema sea utilizable desde una plataforma distinta es el consabido eso es lo que hay y no podemos hacer nada al respecto; modificar la base de software ya desarrollado e instalado significaría una tarea titánica. Sin embargo, los servicios fundamentales que deben estar disponibles para toda la población deben ser priorizados — Resulta inaceptable que a la población en general se le imponga el requisito de emplear una tecnología específica (independientemente del papel dominante que ésta tenga actualmente en el mercado), especialmente dado el desarrollo y rápida adopción de estándares como HTML5, que permiten un despliegue extensivo de interfaces de usuario ricas y completamente multiplataforma.

Las múltiples facetas de la interoperabilidad

Pero hablar de interoperabilidad no se limita a permitir que usuarios con configuraciones diversas puedan usar los sistemas de gobierno — Como lo mencionamos en el primer apartado, parte importante de la interoperabilidad se refiere a cómo facilitar el intercambio de información entre entidades del mismo gobierno, a la creación de modelos estandarizados (la ya citada interoperabilidad semántica) con los que puedan representarse e intercambiarse datos acerca de las estructuras más comunmente encontradas y repetidas — Y que posiblemente facilite que paulatinamente se vaya creando, en vez de una colección de sistemas que conforman al e-gobierno, una nube de información con un mínimo de duplicación de información.

¿Y cómo elegir entre tantos estándares disponibles? ¿Qué formatos, protocolos y lenguajes son los más adecuados? ¿Cómo podemos determinar cuál es un estándar abierto? Este es un tema que da para largas discusiones, y motivo de los diferentes foros referidos. Cito lo que marca el Proyecto de Acuerdo al respecto:

Los estándares abiertos deberán tener, como mínimo, las características siguientes:

  1. Disponibilidad;
  2. Que los derechos de autor estén disponibles, libres de
    regalías y condiciones;
  3. Maduros;
  4. Internacionalmente aceptados;
  5. De fácil distribución, y
  6. Con amplio soporte en el mercado;

El sólo hecho de reducir la cantidad de datos redundantes (y por consiguiente avanzar en la larga lucha contra los peregrinares a mil ventanillas para cualquier trámite trivial) ya por sí sólo lo valdría. Agreguemos a esto que reducirá fuertemente la dependencia de proveedores únicos y de la permanencia en el mercado de productos específicos, fomentando el crecimiento de una verdadera industria de desarrollo de software.

Sigamos, pues, la discusión que se presentará sobre estos temas en los próximos meses. Este es un tema que indudablemente impactará el trabajo de todos nosotros, y en el que todos tendremos algo que aportar.

Referencias

1 Archivo público de la lista de correo
«discusion-softlibre-senado»

2 Proyecto del Acuerdo por el que se establece el Esquema de Interoperabilidad y de Datos Abiertos de la Administración Pública Federal
3 Grupo de Trabajo para la Interoperabilidad, AFUL

( categories: )

Software libre, cultura libre

Submitted by gwolf on Sat, 07/09/2011 - 20:37
Wolf G.  2011.  Software libre, cultura libre. Revista Zocalo. XI:42-43.

Software libre

Cada vez es más común escuchar el concepto software libre en medios destinados a la sociedad en general, y ya no sólo ante quienes nos dedicamos al cómputo. Pero no teman — En el presente texto, abordaré el tema enfatizando en él en tanto movimiento social, enfocándome en cómo ha comenzado a influir en la sociedad toda.
Desde un punto de vista meramente técnico, puede llamarse software libre a todo programa que no imponga un licenciamiento restrictivo a sus usuarios — Todo programa que nos permita utilizarlo con cualquier fin, comprender cómo está hecho (tener acceso a su código fuente), adecuarlo a nuestras necesidades, y compartirlo con otras personas. Entre los programas más conocidos que califican como software libre encontramos al sistema operativo Linux en sus muchas variantes, la herramienta ofimática OpenOffice, el navegador Web Firefox, una gran variedad de programas de rango servidor, y un larguísimo etcétera.

Pero el software libre va mucho más allá de un producto técnico: Es un movimiento social en toda forma. A mediados de los 1980, Richard Stallman acuñó el concepto, formalizó los requisitos arriba descritos, y creó a la Free Software Foundation y al Proyecto GNU, que habría de convertirse en el sistema operativo completo; es a partir de esto que consideramos que una forma de desarrollar y compartir se convierte en movimiento. Su planteamiento partió de una fuerte base ideológica, de la necesidad del libre acceso al conocimiento. Por años, la FSF se enfrentó a las críticas y escepticismo respecto a la viabilidad del proyecto. Específicamente, ¿Por qué miles de programadores donarían de su esfuerzo de desarrollo de software en beneficio de la humanidad?
El proyecto GNU sobrevivió lo suficiente para crear una base mínima utilizable, y obtuvo una masa crítica suficiente para impulsar con cada vez más fuerza su desarrollo hasta el día de hoy. Pero lo fundamental es que el fenómeno trascendió a la comunidad original, y creó a todo un abanico de ideologías, en lo técnico y en lo social. Al día de hoy, habemos decenas de miles de desarrolladores trabajando de manera completamente descentralizada, cada quién persiguiendo sus propios incentivos (que si bien en algunos casos son económicos, directos o indirectos, en otros son por afición, por diversión, incluso de inspiración artística).

¿Por qué funciona?

Ahora, ¿por qué éste cambio cultural se presentó antes que en ningún otro lado en el desarrollo de software?
El proceso natural humano de construcción de conocimiento (la forma en que aprendemos, pensamos y reelaboramos los avances) atraviesa necesariamente por la socialización — Por compartir los avances, los pensamientos, por que un experto corrija al otro. El software libre no puede explicarse sin Internet, sin comunicación ágil y directa entre los participantes.
Internet no es un fenómeno nuevo. Tiene ya más de 40 años de edad — Obviamente, en primer término se difundió en los círculos militares y académicos. Y naturalmente, la convocatoria del proyecto GNU se difundió inicialmente dentro de Internet, cayendo y difundiéndose en un campo fértil.

Hacia la cultura libre

El movimiento del software libre ha encontrado grandes puntos de coincidencia con diversos grupos sociales y culturales, y conforme van encontrando puntos de coincidencia, se arma un movimiento que promete ser mucho mayor, e incluso cambiar la forma en que opera la creación del conocimiento en el mundo entero: La cultura libre. Y es aquí donde comienza el engranaje hacia lo que sostengo que es la evolución natural del movimiento.
Podemos ya encontrar varios ejemplos de éxito. Posiblemente el más notorio hoy en día sea Wikipedia, un proyecto de construcción de un cuerpo de conocimiento libre y carente de la noción tradicional de autoría: Una enciclopedia escrita por todos, corregida por todos, mejorada con todos. No está exenta, claro, de problemas de control de calidad, pero va encontrando mecanismos que cada vez más aumentan su confiabilidad.
Wikipedia tiene, por cierto, un antecedente que muestra la importancia de la participación abierta en un proyecto colaborativo: La Nupedia. El proyecto Nupedia fue lanzado en el año 2000 (un año antes del de Wikipedia), buscando crear una enciclopedia de libre acceso y redistribución que garantizaba la calidad de sus contenidos por medio de la revisión por pares. Sin embargo, pese a las buenas intenciones, en los primeros 18 meses sólo se publicaron 20 artículos. Buscando de nuevas fórmulas para involucrar a más personas en la producción de contenidos, se pensó que los usuarios de crearan los contenidos que luego los editores y expertos revisarían. Mientras tanto, nació el proyecto Wikipedia, y en tan sólo su primer mes de existencia llegó a los 1000 artículos — Cierto, algunos de no muy buena calidad, pero todos constituyeron una semilla a partir de la cual cualquiera podía participar para mejorarla. Y el resultado es lo que hoy ya conocemos: Una enciclopedia verdaderamente universal, con más de 3 millones de artículos, y con más de 30 lenguajes cuya versión local supera los 100,000.
La iniciativa Creative Commons es otra digna de nota: Toda creación intelectual o artística recibe protección automática de derechos de autor. Muchos queremos que nuestras creaciones sean libremente redistribuibles, pero puede desmotivarnos el obstáculo del lenguaje legal que implica elegir una licencia adecuada. En 2001, el abogado estadounidence Larry Lessig creó a Creative Commons. Esta organización ofrece un marco legal para que gente no experta en estos temas pueda elegir los términos de licenciamiento que juzgue más adecuados para su creación, sin tener que ahondar de más en las áridas estepas legales, y se mantiene asesorada y liderada por un grupo de abogados, cuya principal labor es traducir y adecuar sus licencias base para cada una de las jurisdicciones en que sean aplicables.
Han nacido también una gran cantidad de servicios en línea que buscan ser centro de contacto para que creadores independientes puedan distribuir su material sin depender de casas editoriales. Jamendo es una comunidad en línea dedicada a promover a artistas que publiquen música bajo licencias Creative Commons. Cualquiera puede entrar y bajar una gran cantidad de música de muy buena calidad, hacer donativos directos a los grupos de intérpretes y promover nuevo material.
Y no sólo las formas de compartir y colaborar que a lo largo de 30 años han dominado al desarrollo de Software Libre están permeando a las diversas áreas creativas de la humanidad: El conjunto de valores que impulsaron a Stallman a iniciar el movimiento resultan compartidos por estos creadores, y su ideología de a pocos va convirtiéndose en parte del fundamento cultural de la sociedad.

¿Y en qué radica el cambio?

No quiero cerrar este texto sin puntualizar algunos factores principales que determinan el sentido que está tomando esta revolución:
A diferencia de lo que ocurría hace pocos años (con las fotocopias o con los cassettes), los contenidos pueden reproducirse de manera fiel, sin pérdida alguna de calidad, y con costo casi-cero — Los contenidos se han liberado de sus soportes.
Además, distancia entre el creador y el consumidor se reduce fuertemente. Cualquiera puede hoy en día publicitar su material a través de su propia página Web (o de servicios de terceros), facilitándose la distribución de material y la retribución directa a los titulares.
El marco jurídico que norma a los diversos aspectos de la propiedad intangible tiene casi tres siglos, y requiere –por puntos como los aquí expuestos, y por muchos más que no sería a abordar en un texto como éste– de grandes adecuaciones y replanteamientos. Y sin lugar a dudas, el tema aquí abordado representa un cambio social imparable.
El avance de la humanidad ha sido históricamente determinado por la facilidad de comunicación — Estamos en un punto de quiebre, en un momento que determina un cambio fenomenal en nuestro desarrollo. Y éste movimiento, que nació en una esfera aparentemente muy aislada del resto de la sociedad, se ha configurado en una avalancha imparable que modificará muchos de los supuestos básicos alrededor de los cuales se estructura el sistema.

Referencias

Free Software Foundation
http://www.fsf.org/
Proyecto GNU
http://www.gnu.org/
GNU Manifesto
http://www.gnu.org/gnu/manifesto.html
Definición de licencias de cultura libre
http://freedomdefined.org/Definition/Es
Creative Commons
http://creativecommons.org/
Jamendo
http://www.jamendo.com/

Transitando del Software Libre a la Cultura Libre

Submitted by gwolf on Thu, 06/09/2011 - 12:22
Written in...: 
2011

On June 2011, we were invited to the Free Software in Mexico: Reflections and Opportunities in Mexico's Senate. This is the presentation I used.

Some photos from the panel: 1, 2, 3, 4.

Resumen: 

En junio de 2011 fuimos invitados al foro Software Libre en México: Reflexiones y oportunidades. Esta es la presentación que utilicé.

Algunas fotos del panel: 1, 2, 3, 4.

Georeferenciación a nuestras espaldas

Submitted by gwolf on Tue, 05/17/2011 - 18:01
Wolf G.  2011.  Georeferenciación a nuestras espaldas. Software Gurú. 32:46-47.

La idea para la columna de este número surgió de una plática con mi padre, comentando acerca de un texto que él presentó, como parte del espacio de la Academia de Ciencias de Morelos en el periódico La Unión de Morelos el pasado 18 de abril1. En éste, habla acerca de la disparidad de las cifras reportadas ante la manifestación dirigida por Javier Sicilia en la ciudad de Cuernavaca (ésta, el miércoles 6 de abril), y acerca de métodos que podrían utilizarse para tener una estimación más precisa. Yo, como buen consultor, le sugerí algo bonito y preciso en teoría, pero impracticable para todos los que no contamos con el poder coercitivo gubernamental: Acceder a los registros de las compañías de telefonía celular, para averiguar cuántas personas entraron durante el periodo de nuestro interés a la región por donde cruzó la marcha. A fin de cuentas, una muy alta proporcionón de la población hoy en día cuenta con teléfono celular, y podría ser una buena manera no sólo de estimar la magnitud de la marcha, sino de hacerlo a lo largo del tiempo que duró.

Ahora, dado que la información que poseen las telefónicas no es pública, dejamos la conversación a un nivel puramente especulativo — Seguros de que las autoridades de Seguridad Pública tienen acceso a estos datos, pero que a la mayor parte de nosotros nos resultan inalcanzables, como no sea a través de una órden judicial.

En los días siguientes a esta conversación, sin embargo, se presentaron varias noticias que se me hicieron interesantes, y que vinculan a esta discusión relativa a la participación ciudadana en la política nacional con temáticas más cercanas a las que toca esta revista: El cómputo ubicuo, la rastreabilidad de un dispositivo móvil, la seguridad de la información de geolocalización, y nuestro derecho a controlar quién tiene acceso a ella.

Compañías telefónicas

Me encontré con un artículo publicado por el diario alemán «Zeit Online» el 26 de marzo2, que ilustra precisamente la profundidad de esta información: Malte Spitz, del Partido Verde alemán, presentó una demanda judicial para obligar a Deutsche Telekom a entregarle todos los datos suyos que tuvieran registrados en los últimos seis meses. Los datos están disponibles en crudo — Y adicionalmente, gracias a una simple aplicación Web3 realizada para presentar esta información de una manera fácil de comprender, nos hace ver la profundidad de los patrones de comportamiento que puede construirse de cada uno de nosotros: Ubicación geográfica, llamadas y mensajes recibidos/enviados, conexión de datos...

Si bien la geolocalización es mucho menos precisa que la que arrojaría un GPS (es obtenida por triangulación entre las torres de telefonía celular, resultando en una precisión de unos cien metros), el punto más importante es que esta información se genera y almacena centralmente, en las instalaciones del proveedor de telecomunicaciones, e independientemente de las capacidades tecnológicas de nuestro teléfono.

Y si bien Malte Spitz tuvo acceso a sus datos a través de los canales legales, ¿qué tanto podemos confiar en que dichos datos estén adecuadamente protegidos de los ojos de atacantes capaces de vulnerar servidores conectados a Internet? Precisamente, el experimento de Spitz fue llevado a cabo para sustentar el peligro de la ordenanza de 2008 que obliga (y por tanto permite) a las compañías de telecomunicaciones guardar esta información por medio año — Ordenanza que en marzo de 2010 fue declarada inconstitucional. En México nos hemos topado una y otra vez con casos en que datos confidenciales han sido encontrados en el mercado negro. ¿Qué nos indica que esta información, escalofriantemente precisa acerca de nuestros hábitos no está disponible al mejor postor?

Proveedores de hardware

Otro conjunto de noticias que aparecieron en los días recientes son los relacionados a la información de ubicación que guardan diversos teléfonos inteligentes y equipos similares: Los equipos iPhone e iPad de Apple que corren el iOS versión 4 o superior, guardan un registro histórico de los puntos por los que ha pasado el usuario4,5 (al igual que lo mencionado anteriormente, mayormente basado en triangulación contra las antenas celulares, aunque de mucho mayor precisión cuando el GPS está activado). Y si bien esto no debería sorprendernos, hay tres puntos clave en lo revelado:

  • Los datos son guardados sin cifrado, y son incluídos en todo respaldo hecho al dispositivo.
  • La licencia de uso del software permite expresamente a Apple recolectar, usar y compartir información precisa respecto a la ubicación, incluyendo la ubicación geográfica en tiempo real de tu computadora o dispositivo Apple.
  • La información recopilada no se limita a una ventana de tiempo preestablecida, sino que durará la vida entera del equipo.

Para verificar (y/o jugar) con esta funcionalidad, pueden instalar en cualquier computadora con la que hayan sincronizado un iPhone o iPad el iPhoneTracker (MacOS)6 o el iPhoneTrackerWin (Windows)7. En el sitio del iPhoneTracker hay una interesante lista de preguntas muy interesantes para entender este problema.

Claro, pero el que Apple controle los dispositivos que los usuarios han comprado no es novedad. Quienes me conozcan, probablemente esperan que haga a continuación una apología de por qué el software libre es más seguro, y por qué deberían todos cambiar a un teléfono basado en el sistema Android, de Google. Sin embargo, la situación no es tan distinta ahí.

Con la salvedad de que para que éste archivo exista el usuario tiene que haber aceptado previamente que el teléfono provea servicios relacionados con los datos de geolocalización (sin duda una muy importante característica de los equipos, y que poca gente dejará desactivada), los teléfonos Android guardan también información con nivel de detalle muy similar8. Esta información además no se mantiene a largo plazo: Los dispositivos Android guardan únicamente un número limitado de ubicaciones — Hasta 50 entradas derivadas de torres celulares, y hasta 200 derivadas de redes WiFi.

Ahora, de este último punto podemos aún jalar más hilo: Si bien el contrato de licencia del software de Apple permite que reciban todos los datos de ubicación, hasta el momento han negado estar utilizándolos. Sin embargo, al autorizar a Android, explícitamente estamos autorizando que esta información sea reportada a Google9 — ¿Y qué uso directo le dan? Los dispositivos con Android notifican a Google la ubicación de cada red inalámbrica que encuentran, como lo demuestra el sitio Web desarrollado por Samy Kamkar10: Los dispositivos informan a Google de la ubicación geográfica de cada red WiFi que encuentran.

Ahora bien, sé que este texto puede ser leído como una carta escrita por un paranóico de las teorías de la conspiración. No es así, estoy consciente de que la tecnología va cambiando nuestra vida, y que lo que para muchos puede ser visto como una invasión a la privacidad, para muchos otros representa la gran conveniencia tanto de contar con una ubicación razonablemente precisa en un tiempo aceptable como de poder compartirla con nuestros contactos en un tiempo pertinente.

Mi convocatoria, claro, al tiempo que lleva a que tengamos conciencia de los insospechados ojos que pueden estar aprendiendo de nuestras vidas con cualquier tipo de fines, también lleva a que, como desarrolladores de aplicaciones, sepamos ser creativos y aprovechar la información que tenemos a nuestro alcance — ¡Porque sin duda podrán encontrar también maneras lícitas y atractivas de emplear estas fuentes de información!

Referencias

  1. ¿Cuántos miles marchamos? — http://www.launion.com.mx/images/stories/Hemeroteca%20Virtual/2011/abril-2011/18-abr.pdf (pag. 34)
  2. Betrayed by our own data — http://www.zeit.de/digital/datenschutz/2011-03/data-protection-malte-spitz
  3. Tell-all telephone — http://www.zeit.de/datenschutz/malte-spitz-data-retention
  4. Secret iPhone location tracking — http://www.theregister.co.uk/2011/04/20/secret_iphone_location_tracking/
  5. How to See the Secret tracking Data in Your iPhone — http://www.pcmag.com/article2/0,2817,2383943,00.asp
  6. iPhoneTracker — http://petewarden.github.com/iPhoneTracker/
  7. iPhoneTrackerWin — http://huseyint.com/iPhoneTrackerWin/
  8. It’s not just the iPhone, Android stores your location data too — http://thenextweb.com/google/2011/04/21/its-not-just-the-iphone-android-stores-your-location-data-too/
  9. Google Android privacy concerns — http://www.theregister.co.uk/2011/04/22/google_android_privacy_concerns/
  10. Android Map http://samy.pl/androidmap/
Syndicate content