Todos sabemos lo que ha crecido la web en los últimos años (de hecho, no existía hace 20 años). Hoy en día sigue creciendo exponencialmente, lo que significa que hoy hay más usuarios nuevos de los que hubo ayer. ¿Qué se hizo para que esto sea posible? ¿Cuál es la receta?
En los últimos años, surgió una segunda generación de desarrollo y diseño web, conocida como web 2.0, en la que se incorporaron nuevos "ingredientes" en la forma de hacer la web. Pero hoy siguen apareciendo nuevas tendencias para desarrollar y pensar la web distintas incluso a las más recientes. Es decir que probablemente estemos viviendo la muerte de la web 2.0. Por lo tanto, más que preguntarse qué es la web 2.0, sería bueno plantearse qué fue la web 2.0 y cuáles son las nuevas formas de desarrollo web que están surgiendo.
Se podrían decir muchas cosas acerca de la web 2.0. Pero esta presentación se centra en 12 "ingredientes" de la receta que, en términos de ingeniería del software, serían 12 patrones.
- Information sharing
- Web 1.0 (odio todo lo que sea "n.0" pero llamemos así al viejo paradigma de la web): "La web es una enorme fuente de información."
- Web 2.0: "La web es una buena fuente de información en la medida que sea un buen sumidero de información." Los usuarios no sólo consumen sino que generan la información.
- Web 3.0: Aparece una nueva dimensión: Siguen estando los usuarios y los sitios, aplicaciones y servicios web como los conocemos, pero algunos de estos servicios pertenecen a la "web semántica", una dimensión que se encarga de analizar y agregar valor a la información que fluye entre usuarios y computadoras (incluso entre sí).
- User-centered design
- Web 1.0: Está centrada en servir recursos.
- Web 2.0: Está centrada en los usuarios.
- Ejemplos típicos: Flickr (no es una simple galería de fotos, sino que su poder está en el contenido generado por usuarios), YouTube (ídem con videos).
- ¿Qué nos ofrece Python para desarrollar este tipo de aplicaciones web?
- Python 3.0 = "Batteries included" (su biblioteca estándar ya provee una base muy completa para cualquier tipo de funcionalidad)
- Python Modules = "Swiss Army Knife" (hay una gran variedad de frameworks y herramientas para todo tipo de desarrollos)
- Model-View-Controller Architecture
- Web 1.0: Un sitio web es un repositorio de páginas estáticas.
- Web 2.0: Un sitio web es una verdadera aplicación multi-capa, con estado. Un cliente (típicamente un navegador) hace un pedido a un servidor, que a través de un "route dispatcher" lo deriva a un controlador. Dicho controlador resuelve con consultas a los objetos del modelo de la aplicación (persistentes en alguna base de datos) y determina qué vista usar para mostrar los resultados que devuelve en la respuesta al cliente.
- Python Web Frameworks: Django, Pylons, TurboGears, Google App Engine, Zope, Plone (CMS), MoinMoin (wiki), Python Paste, CherryPy
- Algunas nuevas tendencias: La separación de las capas (especialmente vista y modelo/datos) se puede dar entre distintos servicios web. Por razones de escalabilidad, se están abandonando los motores de base de datos relacionales (RDBMS) en favor de otros orientados al almacenamiento por clave-valor, con menores posibilidades de consulta (sin joins, no transaccionales, etc.), pero más eficientes para grandes volúmenes de información, escalables y tolerantes a fallas.
- Participation & collaboration
- Web 1.0: Publicación individual. "Yo pongo mi homepage personal y me ocupo de mantenerla."
- Web 2.0: Edición colaborativa. Ventajas de varios editando el mismo documento (ejemplos: Wikipedia, blogs, Google docs).
- Social networking
- Web 1.0: La web es una red de computadoras.
- Web 2.0: La web es una red de amigos.
- Esta idea tan simple es la que le dio grandes resultados a Facebook y Twitter.
- Una tendencia importante en esto es el paso a la "real-time web", basada en actualizaciones instantáneas de lo que le pasa a la gente.
- Search & recommendation engines
- Web 1.0: Navegar para descubrir
- Web 2.0: Descubrir automáticamente con motores de búsqueda y de recomendación (sólo se ve el 10% del iceberg). Ejemplo: Last.fm
- Este es un punto clave en el que seguramente trabajará la web semántica en los próximos años.
- ¿Qué hace una web semántica? 4 cosas:
- Integración o aggregation (recolectar datos de otros servicios)
- Definición de ontologías (determinar un modelo de entidades y relaciones dentro de un dominio)
- Análisis semántico (determinar qué significa la información procesada)
- Agregado de valor (filtrado, recomendación, asociación, etc.)
- Preguntas que surgen en el análisis semántico:
- ¿De qué habla (cuál es el significado) de un determinado documento HTML?
- ¿Cuál es el contenido relevante de un determinado documento HTML?
- ¿En qué idioma está texto determinado?
- ¿Qué palabras son equivalentes entre sí? (stemming, misma raíz)
- ¿Se pueden inferir tags automáticamente a partir de un texto?
- ¿Cómo se pueden eliminar palabras comunes como artículos y preposiciones? (stop words)
- ¿Cuál es la estructura sintáctica de una oración o proposición? (part of speech)
- ¿Cómo se puede eliminar la ambigüedad entre los distintos significados de una misma palabra?
- ¿Es posible agregar información de contexto eficientemente?
- ¿Cómo se puede mejorar la relación señal-ruido (signal to noise ratio) de la información que consume un usuario?
- ¿Cómo ser pueden identificar digramas en un texto?
- ¿Cuántas y cuáles son las categorías apropiadas para clasificar contenidos en una determinada ontología?
- Demo de Meaningtool
- Folksonomy
- Web 1.0: Taxonomy (clasificación jerárquica, conocida a priori)
- Web 2.0: Folksonomy (clasificación por etiquetas, colaborativa, los elementos pueden pertenecer a distintos lugares a la vez, las colecciones emergen solas)
- En cuanto a la web 3.0, ya se mencionaron varias consideraciones de clasificación de información en el punto anterior.
- Community & collective intelligence
- Importancia de construir una comunidad que contribuya a la calidad del servicio. "Wisdom of crowds" (la inteligencia colectiva es mejor que la individual)
- Ejemplo: Ratings, rankings o recomendaciones en Digg y StumbleUpon.
- Inter-operability & data-portability
- Web 1.0: La única forma de consumir información de otros sitios es por HTML scraping a través de web crawlers o spiders (bots).
- Web 2.0: Web syndication (feeds RSS, Atom, RDF, etc.), widgets, open APIs, integración de datos (aggregation). Todo servicio web 2.0 que se precie dedica gran parte de su esfuerzo a proveer una buena API.
- Ejemplos de consumo de APIs y HTML scraping con herramientas de Python.
- Nombres que se escuchan para la web 3.0: Microformats, RDF, OWL, SPARQL (ejemplo: DBpedia), patrón Publisher-Subscriber (ejemplo: Google Wave)
- Rich User Experience
- Web 1.0: La interacción usuario-servicio se da a través de formularios, cargando nuevas páginas con cada envío.
- Web 2.0: La interacción se da asincrónicamente (sin cargar otra página), actualizando la vista por eventos con client-side scripting (Javascript).
- Web 3.0: Web OS? (¿Hacia una web cada vez más cercana a un sistema operativo?)
- Separation of content and presentation
- Web 1.0: Cluttered HTML
- Web 2.0: Estructura y contenido separados de la vista. Permite independencia, modularización, versatilidad, etc.
- Web as a Platform (Ubiquity)
- Web 1.0: Especificaciones "propietarias", dependencia de plataforma, "browser wars"
- Web 2.0: Estándares web, independencia de dispositivo, diseño multi-plataforma
- Web 3.0: Está en cualquier dispositivo (computadoras con cualquier sistema operativo y cualquier navegador, cualquier teléfono celular o dispositivo "de mano", TV, auto, consolas de juegos, teléfono, etc.): Omnipresencia (ubiquity). Estos dispositivos son las ventanas o portales de acceso a la web.
- Podríamos comparar a la web con un gran robot:
- No es exactamente electro-mecánico
- Entorno: El mundo (la web puede representar cualquier cosa: fotos, videos, eventos, amigos, música, lecturas, lugares, artículos de compras, etc.)
- Sensores: Las interfaces humano-máquina, que permiten a la web captar lo que pasa en su entorno
- Actuadores: Las interfaces humano máquina, que permiten modificar el entorno al menos indirectamente
- Inteligencia Artificial: Mayor a medida que aparecen más y mejores aplicaciones y servicios web. A mejorar en la era de la web semántica.
- La web, como un robot, procesa datos y responde a estímulos
- ¿Es un sistema autónomo? ¿Es consciente de sí mismo?
- Es tolerante a fallas
- Es inteligente
- Aprende
- Evoluciona
- Suena ilusorio, pero:
- ¿Podríamos imaginar hace 20 años una web como la que hoy conocemos?
- Además, ya existen aplicaciones... como Wolfram Alpha.
Conclusiones:
- Podemos pensar la web como una gran inteligencia artificial, similar a un robot
- La misión de la web semántica en los próximos años va a ser agregar valor a la información de la web
- Las tecnologías no fueron lo más determinante en la evolución de la web, sino la aplicación de patrones de diseño y desarrollo web.
¡Gracias por presenciar la presentación, leer este resumen o comentar este post! :)

