lunes, 18 de abril de 2016

The Open Source Paradigm Shift


En la actualidad, todo lo que se crea avanza y evoluciona con forme pasa el tiempo, abriendo puertas a una gran cantidad de oportunidades para el desarrollo. Un claro ejemplo de esta situación es la tecnología. Para entender un poco más de esto, hay un texto de Tim O’Reilly (The Open Source Paradigm Shift) que explica cómo funciona esto.

Antes, en el área de la computación, lo más importante era el hardware, cosa que ahora ha cambiado, puesto que hoy en día lo más importante no es el hardware, pero sí el software que corre en esta parte física. Ahora, este tipo de cambios pueden reflejarse en el área de software, tal es el caso de la empresa de IBM, empresa que indujo a un cambio en los sistemas de software, logrando que Microsoft creciera y se volviera una gran empresa. No obstante, no sólo Microsoft logró avanzar, también otras empresas lograron adaptarse al cambio de IBM y crecer fuertemente.

La comodización de software se refiere a la manera en que el software se crea, en base a otro (y en ocasiones puede ser mejor), pero que no representa algún cambio fuerte para el usuario. Un ejemplo puede verse en los navegadores, el primero en crearse fue Lynx, y en base a éste fueron apareciendo otros navegadores como Netscape u Opera, hasta llegar a los navegadores que hoy conocemos como Chrome, Safari o Netsurf. Estos sistemas sirven para lo mismo, navegar en la red, pues usan los mismos protocolos.

La colaboración habilitada por red, es una herramienta que hoy en día resulta muy útil, pues permite crear sistemas y proyectos entre muchas personas, siempre y cuando se esté conectado a la red. Un caso muy concreto de esto se puede apreciar en Github; herramienta que no solo contribuye a la creación de proyectos entre varias personas, sino que también ayuda a mantener un control de versiones entre éstos.

Finalmente, tenemos la parte de personalización de software, que ayuda a que el usuario manipule el software de acuerdo a sus gustos y necesidades, así como hacer uso de él cuando así lo requiera.

Para poder adaptarse a los cambios, es necesario tener en cuenta los aspectos anteriores. De lo contrario, puede haber errores que, si no se saben manejar, pueden llevar a un final no muy bonito.

REFERENCIAS:

·        DiBona, C., Cooper, D., & Stone, M. (2006). Open sources 2.0: The continuing evolution. Retrieved from http://proquestcombo.safaribooksonline.com/0596008023/opensources2-chp-16  

·        Timeline of web browsers. (n.d.). Retrieved April 25, 2016, from https://en.wikipedia.org/wiki/Timeline_of_web_browsers   


domingo, 3 de abril de 2016

Code-Breakers



La tecnología que utilizamos a diario en el área de informática cada vez avanza más rápido haciendo que nuestros estilos de vida sean cada vez más sencillos y cómodos. No obstante, por más raro que parezca, no siempre se puede tener acceso a todas esas comodidades. Existen comunidades en lugares como ciertas zonas de Brasil, o países africanos en los que, hablar de tener una computadora personal suena como algo imaginario. Ciertamente, hay localidades en el mundo en el que los recursos para adquirir tecnología básica o sencilla son muy débiles, y a eso, le agregamos que gran parte de esta tecnología tiene un costo un tanto elevado; entonces, estas localidades no pueden gozar de los beneficios de la tecnología.

Es por esto que muchos de estos lugares recurren al software libre. Imagínate una escuela sin computadoras, ¿Raro, no? El software libre es una medida que ha ayudado a que varias escuelas de África puedan adquirir no solo computadoras, si no también acceso a internet e incluso software para poder trabajar, lo que lleva a un mejor desarrollo académico y más actualizado.

El uso y distribución de software (libre), no sólo abarca el nivel académico, también abarca el nivel laboral. Distintas compañías han adquirido un plus en su industria, en su desarrollo y en la capacitación de empleados, gracias al software libre. Sin olvidar que, este tipo de sistema, originado por Richard Stallman, ayuda a combatir la piratería; ya que, el software libre se puede distribuir de manera legal, entre usuarios.

Hay compañías como Microsoft, que piensan que parte de la innovación se encuentra en el software libre. Y, es cierto (o por lo menos eso creo yo), ya que al momento de compartir algún software y poder contribuir a mejorarlo o simplemente para ayudar, es algo diferente, algo nuevo que nos beneficia a todos.

REFERENCIAS:

Jacobson – Gonzalez, M. (Director). (2006, May 10). The Code-Breakers (Documentary, Free/Open Source Software) [Video file]. Recuperado el 3 de marzo del 2016 de https://www.youtube.com/watch?v=1uL4-EuCq0QEuCq0Q

jueves, 24 de marzo de 2016

GNU OS & Free Software


Richard Stallman aparte de ser un programador enteramente de corazón, también puede decirse que es un activista en cuestiones de distribución de software. Ya que, desde sus inicios en este mundo de códigos y programas siempre se vio interesado en compartir sus conocimientos y creaciones, en que nadie de sus seguidores y colaboradores se quedara atrás y sin recursos.

Y bueno, podemos llegar a generar una idea de que el hecho de compartir conocimientos y avances puede verse como algo verbal que únicamente se mueve de boca en boca. No obstante, va más allá de lo verbal, puesto que, en el mundo de la informática y los sistemas, todo lo que se crea y produce se documenta; esto con el fin de evitar plagios, generar reportes y avances o simplemente por el hecho de tener los recursos como reserva.

Por otra parte, el hecho de que se genere una documentación no implica que solamente los creadores y/o autores sean los únicos en poder manipular la información. Esta situación es algo por lo que Richard Stallman siempre se ha expresado y luchado. Sí, sus proyectos y creaciones llevan su nombre, más él, como autor, no es la única persona que puede editarlos o mejorarlos; él comparte sus desarrollos al público para que todos estén al día de las cosas y creaciones, por simple satisfacción y para ver que otras aportaciones le pueden llegar.

Sí, Richard Stallman ha tenido que pelearse con derechos de autor, con leyes y con patentes, pero eso no le ha impedido transmitir y compartir sus ideas. Al contrario, ha logrado apoyarse en estos elementos para conseguir más recursos y para poder compartir sus conocimientos de una manera responsable que lejos de causar daño, genera muchos beneficios. Simplemente, ¿cuántas personas  no usan/usaron GNU?

Por parte del área de software, hay mucho que analizar en materia de seguridad al momento de compartir recursos. Uno puede ser astuto como Stallman y encontrar la manera de distribuir sus creaciones de manera responsable y sin causar daños, pero a nivel de negocios, no tan personal, ¿realmente conviene esta idea de compartir? ¿De verdad vale la pena, dejar de lado todos los asuntos legales con tal de que el mundo tenga acceso a tus cosas? No lo sé, yo creo que la respuesta a esto se encuentra en lo que quieres hacer con tus cosas, en tener una visión clara de qué quieres para ti y tus creaciones a corto, mediano y largo plazo.

REFERENCIAS


·        DiBona, C., Ockman, S., & Stone, M. (1999). Open sources: Voices from the open source revolution. Recuperado de http://www.oreilly.com/openbook/opensources/book/stallman.html   

sábado, 12 de marzo de 2016

Reflections on Trusting Trust

Al momento de realizar algún proyecto que requiera de cierto tipo de trabajo relacionado con la programación, muchas veces, ya sea por la cercanía de la fecha límite o por alguna otra razón, la parte de programación no se revisa de manera detallada o con la precaución necesaria, por lo que pueden llegar a generarse diversos errores de varios tipos; éstos pueden ser, desde errores sencillos hasta errores que tengan que ver con la seguridad de la información.

En el discurso de Ken Thompson “Reflections of Trusting Trust”, de 1983, se muestra una visión de cómo los programadores y/o escritores de código realmente no revisan sus trabajos como debería, puesto que revisan la parte del código, pero dejan de lado la parte de la compilación, elemento muy importante al trabajar con programas, ya que muchas cosas maliciosas pueden ser introducidas mediante errores y detalles no verificados de la compilación.

Para demostrar de una mejor manera esta situación, Ken Thompson muestra y explica un ejemplo en el que toma un código que lee y, posteriormente, se imprime a sí mismo, pero con ciertos errores, en otras palabras, se dice que el código se recompila con algunas fallas incluidas, de manera intencional. En este ejemplo se ve como la acción se realiza con el lenguaje C, pero Thompson afirma que puede ser con cualquier otro lenguaje o sistema.

Si nos ponemos a pensar un poquito, si esta acción “maliciosa” la pudo hacer el propio autor del código, eso significa que las personas malvadas, hackers, o como quieran llamarles, que se encuentran allá afuera, también pueden realizar estas acciones y pueden llegar a causar bastante daño. Es por eso que siempre es recomendable, no solo confiar en nuestro código, sino que también se debe revisar su compilación y todos aquellos detalles que puedan darle acceso a todas esas personas cuyas intenciones no son del todo buenas.

REFERENCIAS:


·        Thompson, K. (1983). Reflections on trusting trust. ACM Turing Award Lectures, 1-3. Retrieved March 12, 2016, from http://webcem01.cem.itesm.mx:8005/s201611/tc2025/trusting_trust.pdf   

domingo, 6 de marzo de 2016

Code Rush



El documental Code Rush, nos relata cómo fueron las vidas de los integrantes de la compañía Netscape alrededor de 1998 en Silicon Valley. En esta proyección claramente se ve puede apreciar el proceso realizado para sacar el código de Mozilla para los usuarios antes de una fecha dada (31 de marzo de 1998 a las 10:00 horas).   ..

Los ingenieros de Netscape, realmente sufren un gran impacto en sus vidas con el lanzamiento del código de Mozilla, ¿y quién no?, puesto que lanzar un código tan importante y de tal magnitud e impacto no es tarea fácil. Muchos de nosotros, como programadores, entramos en pánico cuando nuestros programas muestran algún error o “bug”, por lo que el caos en el que se encontraban en Netscape ha de haber sido desgastante al saber que el código contenía muchos de estos errores. A esto, agreguemos que la fecha de entrega estaba muy próxima; es admirable el trabajo que hicieron estas personas.

A lo largo del documental, se muestra mucho contenido acerca del proceso técnico del proyecto; no obstante, en mi opinión, siento que muestran muy poco acerca de lo que hay detrás del trabajo, la vida personal de cada uno de los integrantes; ya que, no todo es felicidad y trabajo, pues varios de los ingenieros tienen una familia, una casa, una vida, cosas que tuvieron que dejar de lado a consecuencia de su trabajo. De acuerdo a los testimonios, muchos de ellos no llegaban a sus casas a dormir, o llegaban y no disfrutaban tiempo con sus esposas e hijos, todo giraba alrededor de su trabajo.

Si reflexionamos un poco, podemos darnos cuenta de que hoy en día existen muchos proyectos de software de los que hacemos uso y que cada cierto periodo de tiempo, salen nuevas versiones y actualizaciones, pero muchas veces no apreciamos lo que hay detrás de estos, solo vemos la parte que nos corresponde como usuarios, más no nos ponemos a pensar en los sucesos que ocurrieron para que dicho producto llegara a nuestras manos.

Yo creo que, aparte de mostrarnos el proceso del lanzamiento el código de Mozilla, este documental, de cierta forma, también nos enseña a apreciar más los productos que salen al mercado, puesto que no sabemos que sucedió durante su elaboración y que problemas hubo.

REFERENCIAS:

·        Winton, D. (Director). (2000). Code Rush [Motion picture]. Estados Unidos. Recuperado de https://www.youtube.com/watch?v=4Q7FTjhvZ7Y

domingo, 28 de febrero de 2016

The Cathedral and the Bazaar



El ensayo The Cathedral and the Bazaar es un documento escrito por Eric Raymond que expone y analiza métodos y procesos empleados durante la implementación del sistema operativo Linux; así como las experiencias obtenidas y lecciones aprendidas.

Este ensayo muestra un análisis para demostrar la diferencia entre los modelos de producción Cathedral y Bazaar, modelos que son utilizados durante el desarrollo del software libre. El modelo Cathedral, está enfocado en lo básico, pues es para un entorno cerrado y es para un grupo pequeño de desarrolladores, tal es el caso de GNU Emacs. Por otro lado, el modelo Bazaar es el modelo generado por Linus Torvalds, es un modelo abierto, puesto que casi cualquier persona puede ser partícipe de él y no tiene un límite respecto al número de desarrolladores que incluye, un ejemplo claro de este modelo es el sistema operativo Linux.

A lo largo del ensayo, Eric Raymond va mostrando 19 lecciones que aprendió durante el desarrollo de su software. Estas lecciones son:

1.    Every good work of software starts by scratching a developer's personal itch.
Esto quiere decir que un desarrollador puede pasar mucho de su tiempo en programas que realmente no necesitan; pero, en su caso, esa parte del proceso benefició la calidad que tienen el sistema Linux.

2.    Good programmers know what to write. Great ones know what to rewrite (and reuse).
Al momento de crear Linux, la creación no empezó desde cero, sino que Linus Torvalds tuvo como base a Minix y empezó a reescribir código para generar un sistema nuevo.

         3. Plan to throw one [version] away; you will, anyhow.
Siempre va a haber problemas al momento de la implementación, por lo que uno como desarrollador siempre debe estar preparado para volver a iniciar las cosas desde cero cuantas veces sea necesario.

4.    If you have the right attitude, interesting problems will find you.
Hay oportunidades que llegan a ti, pero que no son del todo perfectas ni como lo esperabas.

5.    When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
Si se piensa abandonar algún proyecto, se debe buscar a alguien que se encargue de continuar su desarrollo en un futuro. No se debe dejar el proyecto incompleto y al aire. Aunque en el mundo de sistemas, seguramente alguien lo encontrará y le dará continuación.

6.    Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
Ya que varios usuarios pueden resultar ser hackers, el proceso de debugging, así como el de arreglos y mejoras puede ser más eficiente con ayuda de tus compañeros.

7.    Release early. Releasy often. And listen to your customers.
El estar activo de manera continua, motiva a los desarrolladores a realizar su trabajo de manera correcta, pues así se pueden apreciar mejor sus logros y su trabajo.

8.    Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
Cuando alguien encuentra alguna falla o problema, esa persona se lo pasa a otra persona para que lo intente comprender y lo pueda solucionar.

9.    Smart data structures and dumb code works a lot better than the other way around.
Al momento de leer código escrito por alguien más, el hecho de que sea simple y sencillo puede ayudar a la otra persona, la lectora, a comprenderlo mejor y más rápido.

10. If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.
Incluir a todo el personal, escuchar sus inquietudes e ideas hará que trabajen de la misma manera en que tú los has apoyado.

11. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
Escuchar a los usuarios siempre es bueno, pues puedes encontrarte con ideas y puntos de vista muy interesantes e importantes.

12. Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
Hay veces en que uno se encuentra con un problema, pero no encuentra su solución debido a que el problema está mal identificado y realmente el problema es otro.

13. Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
Entre más sencillo y simple sean las cosas, ahí es cuando se puede decir que las cosas están bien, están en su punto.

14. Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
Hay herramientas que tienen cierta función y la cumplen a la perfección, pero también pueden satisfacer otras necesidades diferentes (multi-drop fetchmail).

15. When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
Si estás trabajando para alguien, acepta sugerencias y no te resistas al cambio. Puede no gustarte pero esos cambios son importantes y más cuando son altamente demandados.

16. When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
Hay cambios que pueden verse como necesarios, pero realmente no lo son.

17. A security system is only as secure as its secret. Beware of pseudo-secrets.
El hecho de que un cambio sea altamente demandado no significa que sea la opción correcta. Siempre hay que analizar que se pide y si realmente valen la pena esos cambios.

18. To solve an interesting problem, start by finding a problem that is interesting to you.
Hay muchas maneras de ver los problemas y errores, pero si los ves como un reto, como algo divertido, la solución puede llegar a ser interesante y no preocupante.

19. Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.
Siempre es bueno compartir tus ideas al mundo y darlas a conocer, pues la parte colaborativa siempre será buena.

Las lecciones que da Eric Raymond, si uno las analiza detenidamente, no sirven únicamente para el desarrollo de software, sino que también sirven para proyectos personales que involucren a varias personas. Cabe mencionar que, mediante estos consejos, se puede ver el desarrollo de software, sea libre o no, trae muchos aspectos a considerar, desde identificación y solución de problemas hasta la interacción con los usuarios y el equipo de trabajo, elementos que muchas veces no tomamos en cuenta.


·        Raymond, E. S. (1998). The cathedral and the bazaar. Retrieved from http://webcem01.cem.itesm.mx:8005/s201611/tc2025/the_cathedral_and_the_bazar.pdf  

domingo, 14 de febrero de 2016

Revolution OS

El documental “Revolution OS”, del director J.T.S. Moore, habla acera del sistema operativo Linux, el software libre y el código abierto (también conocido como Open Source). Este documental relata la historia de Linux, GNU y el software libre, mediante entrevistas a sus creadores y a personas involucradas en su desarrollo.

Hablando un poco más enfocados a conceptos, se tiene que el software libre es una forma de software que garantiza libertad a la persona que lo utiliza; es decir, el usuario puede copiar, usar, modificar y distribuir el software de manera libre. No obstante, esto no quiere decir que el software siempre sea gratis, éste puede estar a la venta o puede ser gratuito, todo depende de los creadores iniciales.

En la proyección se puede ver a Richard Stallman, fundador de GNU (cuyo significado es GNU is Not Unix), explicar el por qué decidió crear un sistema operativo libre basado en Unix. Básicamente, su idea se basa en que Microsoft, el "creador" (por así decirlo) del software propietario, no es compatible con el espíritu libre de los usuarios, pues para poder usarlo se tiene comprar, tiene copyright y su código es cerrado. Es por eso, que genera GNU, un sistema que puede ser distribuido y modificado por los mismos usuarios sin problema alguno.

Por otra parte, se observa a Linus Torvalds, el creador de Linux (sistema operativo escrito en lenguaje C con pequeños extractos de lenguaje ensamblador) hablar de cómo se unió con el proyecto GNU para generar un sistema operativo nuevo y libre.

Finalmente, el documental muestra estadísticas y hechos que ayudaron a que Linux creciera en el mercado. se muestra como grandes compañías de bases de datos adaptaron sus productos al sistema de Linux de manera qué, para todos, desde usuarios hasta dueños de los sistemas, tuvieran mejores resultados. También, en la parte de navegadores e Internet, Linux tuvo un papel bastante importante, pues era más barato y eficiente montar ciertos servidores como Apache, en Linux que en algún sistema de Microsoft.

Finalmente, de manera personal, puedo decir que aprendí bastante de este documental, pues yo no sabía la mayoría de las cosas y situaciones que había pasado el sistema operativo Linux durante su creación. Sabía que es libre y útil para muchos servicios, más nunca imaginé que tantas personas hayan contribuido a su formación y que, en su época de auge, haya ocasionado tanto furor.


REFERENCIAS: