Comento lo que hice, por las dudas que sirva:
- Los datos se toman de un dump desde dumps.wikimedia.org, y se procesan hasta tener un archivo bz2 con el contenido (en formato wiki) de las páginas seleccionadas. Este proceso se hacia anteriormente con una mezcla de scripts y programas escritos en shell, perl, ruby, python y c. Ahora es todo python excepto un programa en c para leer bloques de un bzip2.
- Bzip2 te permite leer un bloque determinado sin tener que leer todo el resto. Para poder aprovechar esto tenes que tener una tabla que te diga en que bloque esta la informacion que necesitas. Antes teniamos codigo propio para hacer esto, ahora estoy usando seek-bzip2 [1]. Menos código para mantener.
- Para desplegar las ecuaciones matematicas,usabamos blahtexml. Ahora estoy usando MathJax [2], que es una solucion Javascript, que funciona bien en distintos navegadores, te permite seleccionar la ecuacion como un texto ampliarla y ver el fuente en latex. No es perfecta, es lenta en navegadores viejos y hay codigos latex que no son interpretados, pero es un proyecto con mucho movimiento y creo que se van a ir solucionando. Menos codigo para mantener, menos binarios tambien.
- Para las busquedas usabamos una version del locate de freebsd modificado para que compilara en linux. Ahora estamos usando whoosh. Menos codigo para mantener, menos binarios tambien.
- La conversion de wiki a html se sigue haciendo con una version vieja de mwlib. Espero en una próxima release poder actualizarla o reemplazarla por algo que solo haga: substitucion de templates y conversion de wiki a html.
Ya tengo versiones de test de actividades con la wikipedia en español y en polaco [5], y estoy preparando las versiones en ingles, francés y quechua.
[1] https://bitbucket.org/james_
[2] http://www.mathjax.org/
[3] http://dev.laptop.org/git/
[4] http://wiki.sugarlabs.org/go/
[5] http://dev.laptop.org/~