Wikipedia in the Classroom

Wikipedia en el aula

(en español)

Finally I got my hands on a copy of the DVDs that educ.ar released using CDPedia, the free software project that compresses as much as possible of the Spanish Wikipedia on a disc.

Thanks to the help of Jimmy Wales and Martín Varsavsky these 8.5Gb DVDs are being distributed to each and all schools in Argentina, and it’s a great thing because they contain 100% of the articles in the Spanish Wikipedia, and all of the accompanying images (some in reduced size), and -it’s also worth noting- they also may contain any error or vandalism that may have happened in Wikipedia at the time each page was downloaded.

This post is to celebrate the project coming full circle, so I’m going to tell the story of how it was completed, and I’m going to finish with some ideas for the next stage.

The story of the project

Our CDPedia project was born around 2006 with the idea of getting the knowledge accumulated on Wikipedia to the most remote schools in the country: those where there is no Internet.

Colección Ministerio de Educación

Some members of the Python Argentina user’s group got together on a few random sprints after free software events, and worked on improving the source code. As every amateur software project that’s starting up, CDPedia was developed during the free time of every contributor, and we released a first 0.5 version in 2009, during our first PyCon Argentina conference that took place just a week after Wikimanía in Buenos Aires.

Something unusual happened by the end of 2009: I got an email from Jimmy Wales, that was coming to Buenos Aires the following month and wanted to find out more about our project. We met him, showed him the 0.6 version we were working on, and he praised it because it looked so much like the online Wikipedia. That same day I had a meeting with him and some members of educ.ar, the educational web portal of the Argentine state, which through a grant of the Varsavsky Foundation would be able to publish a dual layer DVD with a CDPedia edition.

During that meeting we talked about the things that were needed to achieve an interesting result: we had to test CDPedia on many “relatively old” computers, such as the PCs that you can find through the country; also there were many bugs to fix, and most importantly of it all: due to technical issues the Wikimedia Foundation had stopped publishing the “html dumps” that our project used as a base. The final one was from June 2008, and we all agreed that it made no sense to publish a DVD in 2010 with content that was so old.

That’s how we managed to get financing for two interns from PyAr during three months part-time to fix bugs and polish every technical detail. But after trying through several channels and in diverse ways we were not able to get an up-to-date html dump similar to the one we were using, so we ended up using the hours assigned to the interns to build a replica of the Wikipedia setup starting from the DB dumps that Wikimedia did provide at the time. This road also proved worthless, because there were many configuration and performance details that were eluding us, and that meant that our Wikipedia test setup never worked fine.

The project was delayed, we were angry and hopeless, when at the post-PyCon 2010 asado in October 2010, one of the contributors suggested making a small program to download the whole of Wikipedia, one page at a time, and directly from his home. This was an option that we had half-jokingly suggested earlier on a meeting with educ.ar, so our reaction was one of true disbelief: a lot of things could go wrong with that idea. But as it so often happens, code beats opinions. Two days later SAn had achieved through an alternate road a Spanish Wikipedia html dump, something that we had not managed to achieve in months of efforts.

From there we worked a lot on updating our code due to every detail that had changed in Wikipedia since 2008, and on optimizing the disc space because the growth in pages and images had been exponential. We managed to send the final version to educ.ar by the end of June 2011, and we worked later so the disc covers and the disc itself had some kind of legend that encouraged the copying of the disc freely, but with the license restrictions of each part: the main content from Wikipedia, the classroom material made by educ.ar and the free software from the CDPedia project.

I must now focus the spot on these guys: Diego Mascialino, Facundo Batista and Santiago Picinnini for the amount of time they put in the project during the final race to the 0.7 version that was used in the educ.ar disc, and also on all the contributors that thru the lifetime of CDPedia helped with code and ideas. Having added my grain of sand to this project together with my friends from Python Argentina makes me so much proud.

Looking forward

This is also a good time to start thinking on some of the things we should work on to make CDPedia 1.0 much better. Here are a few: 

  • it ought to work fine in school servers with no Internet access, or where this access is limited, since CDPedia right now only works fine for only one user at a time
  • we should facilitate local installation, for educational laptops like the “Conectar Igualdad” plan in Argentina, or the OLPCs
  • we should work on improving the current CDPedia so it can be useful for other spanish speaking countries
  • we should work -probably with the Wikimedia Foundation- so it can be used for the offline editions of Wikipedia in other languages.

Links:

Wikipedia en el Aula

Wikipedia en el aula

(in english)

Al fin llegó a mis manos una copia de los DVDs que educ.ar editó usando CDPedia, el proyecto de software libre que comprime lo máximo posible de Wikipedia en un disco.

Gracias a la gestión de Jimmy Wales y Martín Varsavsky estos DVDs de 8.5Gb están siendo distribuidos a todas y cada una de las escuelas de Argentina, y contienen el 100% de los artículos de la Wikipedia en Español y el 100% de sus imágenes respectivas (algunas en tamaño reducido), y vale la pena aclarar, tienen también cualquier error o vandalismo que pueda haber habido en Wikipedia al momento en que bajamos cada página.

Este post es para festejar que se completa el círculo, asi que voy a contar la historia de como se llevó a cabo, y voy a terminar con algunas ideas que tenemos para la próxima etapa.

Historia del proyecto

Nuestro proyecto CDPedia nació cerca del 2006, con la idea de llevar el conocimiento acumulado en Wikipedia a las escuelas más remotas del país: aquellas donde no llega Internet.

Colección Ministerio de Educación

Entre varios colaboradores del grupo de usuarios de Python de Argentina nos juntamos en varios sprints ocasionales tras algun evento de software libre, donde trabajamos para mejorar el código. Como todo proyecto amateur que arranca, CDPedia fue desarrollada en el tiempo libre de cada colaborador, y lanzamos una primera versión 0.5 en 2009, durante la primera conferencia PyCon en Argentina, que fue realizada justo una semana después de Wikimanía en Buenos Aires.

Algo muy raro sucedió a fines de 2009: recibí un mail de Jimmy Wales, que venía a Buenos Aires al mes siguiente y quería conocer más sobre nuestro proyecto. Nos reunimos con él, le mostramos la versión 0.6 en la que estabamos trabajando y nos elogió porque el resultado era muy similar a estar mirando Wikipedia conectado. Y ese mismo día tuve una reunión con él y con educ.ar, el portal educativo del estado argentino, que a través de un aporte de la Fundación Varsavsky estaba en condiciones de editar un DVD doble capa con una edición de CDPedia.

Durante la reunión charlamos las cosas que hacían falta para lograr una edición interesante: había que probar CDPedia en muchas computadoras relativamente “viejas”, tal como son las computadoras que se pueden encontrar en las escuelas del país, faltaban corregir muchos bugs, y lo más importante de todo: por problemas técnicos la Fundación Wikimedia había dejado de publicar los “dumps HTML” que nuestro proyecto aprovechaba como base. El último era de Junio de 2008 y todos acordamos que no tenía sentido editar un DVD en 2010 con contenido tan desactualizado.

Asi fue como conseguimos que se financien dos becarios de PyAr durante tres meses para corregir bugs y pulir todo los detalles técnicos. Pero por más que probamos por varios canales y de diversas maneras no conseguimos un dump HTML actualizado similar al que veníamos utilizando, por lo que se gastaron las horas asignadas a los becarios para armar una replica del software de wikimedia a partir de los dumps de bases de datos que Wikimedia si proveía en ese entonces. Este camino tampoco dio resultado, porque hay muchos detalles de configuración y de performance que se nos escapaban y nuestra instalación de prueba de Wikipedia nunca funcionaba bien.

El proyecto estaba demorado, estabamos enojados y desesperanzados, cuando, en el asado de PyCon en Octubre de 2010, uno de nuestros colaboradores sugirió hacer un programa para descargar completamente Wikipedia, página por página, directamente desde su casa. Sobre esta opción se había bromeado en una reunión organizativa de fines de Mayo. Nuestra reacción fue de incredulidad: había muchas cosas que podían fallar con esa idea pero, como suele pasar, el código le gana a la opinión: dos días más tarde SAn había conseguido por un camino alternativo un dump en HTML de Wikipedia en Español, algo que no habíamos logrado en meses de esfuerzos.

A partir de ahí estuvimos trabajando bastante en actualizar nuestro código debido a todos los detalles que habían cambiado en Wikipedia desde 2008, y en optimizar el espacio en disco porque el crecimiento de páginas e imágenes había sido exponencial. Conseguimos enviar la versión final a educ.ar a fin de Junio de 2011 y estuvimos trabajando luego para que las carátulas y el disco tuvieran alguna leyenda que incentivara la posibilidad de copiar el disco libremente, dentro de las limitaciones de las licencias de cada parte: el contenido principal de Wikipedia, el material para el aula realizado por educ.ar y el software libre de CDPedia.

Debo mencionar en este punto a Diego Mascialino, Facundo Batista y Santiago Piccinini por la cantidad de horas que le dedicaron en la recta final para la versión 0.7 que se utilizó en el disco de educ.ar, y a todos los colaboradores que a lo largo de la vida de CDPedia aportaron código e ideas. Haber puesto mi granito de arena en este proyecto junto a mis amigos de Python Argentina me llena de orgullo.

Mirando para adelante

Y también este es un buen momento para ponernos a pensar en algunas cosas en las que tenemos que trabajar de acá al futuro para que CDPedia 1.0 sea mucho mejor:

  • que pueda ser instalada en servers escolares que no tengan acceso a Internet o donde el acceso sea limitado, ya que actualmente fuciona bien para un solo usuario
  • una version para instalaciones locales, para laptops educativas como las del plan Conectar Igualdad o las de OLPC
  • conseguir que CDPedia pueda ser utilizada en otros países hispanoparlantes
  • trabajar en conjunto con la Fundación Wikimedia para que pueda ser utilizada en ediciones offline de Wikipedia en otros idiomas.

Enlaces:

Adding Proxy support to Ubuntu One

(TL;DR: Proxy support is a complex matter. We asked our Ubuntu One users to help us with a Proxy survey to understand how proxies are used. We’re releasing the results so other developers can benefit from it.)

During the past few weeks I’ve been working on researching the intricacies of adding proxy support to the Ubuntu One client. Allowing proxies to be used is not as easy as it sounds: our codebase relies on many different libraries and frameworks to access the network, and each of those libraries has a range of support for all the various proxy protocols and the many proxy authentication schemes, that varies from “incomplete” to “non-existent”.

Also we need it to work both for the Linux client and for the new Windows client; we need to test all this with a combination of Proxy server software, protocols, authentication schemes and configurations; and we need to take into account that our file synchronization protocol is not based on the very common and well supported HTTP protocol, but instead it uses a custom protocol optimized for our file synchronization use case, and like all non-HTTP protocols it requires special handling when crossing some types of proxies.

After multiplying of all the above issues, Proxy support ends up sounding a bit complicated in fact. So we decided to run a survey with the Ubuntu One users, asking them about the Proxies that they need to use, to help us understand the most common scenarios and to focus our development efforts.

At this point I need to send a huge “THANK YOU” to our Ubuntu One users: just a day after our initial tweet we got the help of a lot of users that need Proxy support. They filled in our small survey, but they gave us a lot of insight into this matter.

Here are the summary graphs (pdf, 93kb), and since the results of this survey may be useful for other developers wanting to implement Proxy support in their own projects we decided to also release the raw survey data (csv, 43kb).

And a few of my thoughts on the survey:

  • I expected most users to use a Proxy at work or at an educational institution, but did not expect so many people using proxies at home. From the “other” descriptions, they are mostly used for VPNs and for anonymizing proxies.
  • Most people don’t know the proxy brand, nor type of authentication that they need to use. I expected this, and it’s just fine! All proxy enabled software should just work.
  • Authentication schemes are more important than the small number of replies, since they are needed to support the big percentage of users that need to use credentials.
  • Site filtering may prove a big issue for some users: many proxy servers are configured to disallow access to video sites, likely on the basis of conserving network bandwidth, and those network admins may be reluctant to allow file synchronization services like Ubuntu One.
  • Protocol filtering will be a challenge for us: a significant number of proxy installations do not allow network traffic other than HTTP and HTTPS, so we’ll need to tunnel our synchronization protocol thru some of the allowed protocols, probably using the CONNECT HTTP method of some proxy servers. And there’s no easy solution for proxy servers that allow only HTTP or HTTPS but not CONNECT.
  • I didn’t expect so many answers in so short a time. Ubuntu One users rule!

Cómo funciona un PyCamp

(Alfonso de la Guarda me contó que están organizando un PyCamp en Lima, y me preguntó como hacemos en PyAr para organizar un PyCamp. Como esto puede que le interese a más gente, respondo por acá).

Que buena idea hacer un PyCamp en Lima! Me encantaría poder asistir. Mientras tanto, les cuento como lo organizamos por acá:

Primero, anunciamos un lugar y fecha, e invitamos a toda la gente que tiene ganas de ir a anotar ideas y proyectos en una página del wiki. Por ejemplo, esta es la lista de temas propuestos en PyCamp 2011. La gente va viendo la lista de asistentes y temas y juntando ganas de ir. Todos tienen que hacer el depósito para pagar alojamiento, comida y conectividad cuanto antes, pero siempre hay alguno que termina asistiendo a último momento.

Una vez en el evento, durante el primer día hacemos la presentación de gente (donde cada asistente tiene 30-60 segundos para contar quién es) y la presentación de proyectos (donde cada persona que propuso un proyecto puede contar un poquito sobre el mismo). Luego medimos cuanta gente hay interesada en cada proyecto, levantando manos, y según la cantidad de interesados repartimos los proyectos en una grilla, para que los proyectos con más interesados comiencen “antes”. Esta es una foto de la grilla:

IMG16948.JPG

Nos resulta importante este paso, porque en la wiki no suelen anotarse todos los proyectos, y también para animar a los asistentes nuevos a que propongan o se enganchen en alguna actividad.

La idea de que los proyectos comiencen a distintas horas es para que si una persona está interesada en varios proyectos, que pueda asistir a la explicación detallada de cada uno que se suele hacer al principio del mismo, para enterarse más del estado del proyecto y poder participar tras el PyCamp.

Uno de los espacios se reserva para una reunión de PyAr (generalmente el sábado a la noche, junto con el asado), donde se charlan cuestiones administrativas del grupo. Y además alguna tarde/noche suele haber alguna actividad, tal como una excursión o algo similar. Y por las noches suelen haber juegos de mesa, de rol y torneos de metegol o Armagetron.

IMG16983.JPG

Pero más allá de la grilla, el PyCamp es “caótico”, en el buen sentido del término. Cada participante tiene libertad de sumarse o restarse de algún proyecto en el momento en que le interese o aburra. Hay proyectos que terminan ocupando la mayor parte del tiempo, por el entusiasmo que los asistentes le ponen al mismo, y hay algunos propuestos que no llegan a tener quorum. Hay participantes que terminan trabajando solos (y eso está bien) y hay otros que terminan descubriendo afinidad y arman un grupo que persiste luego del PyCamp (y eso es lo mejor).

En resumen, el mayor esfuerzo para hacer un PyCamp es conseguir el lugar, asegurarse que tenga una conexión a internet razonable y gestionar las reservas; esta es la infraestructura para que entre todos los participantes vayan organizando las actividades de la manera que les resulte más intersante.

PD: acá hay muchos posts con fotos y más info: http://python.org.ar/pyar/PyCamp