Magicicada: the evolution of file sync

I spent my first years in at Canonical working in the Ubuntu One project, particularly in what we always called "filesync": the pure file synchronization server (which was proprietary at that time), the client, and the protocol (both always open source).

Then, the company didn't push the project anymore, I started to work on other areas, and eventually the project was cancelled. When they cancelled it, they made the promise of opensourcing the server, which will allow to anyone put the full stack to work and have their own personal filesync cloud.

Time passed by, and at some point I got instructions to put daily time on that opensourcing work. I've been working the whole day on this for several weeks, and even more weeks part time, massaging all the code and dependencies for the project to be public. Then the project was released.

Was the project easily usable for anyone to start syncing files? Not really, my goals when working in the project to make it available for everybody were:

  • use only dependencies and libraries from a standard Ubuntu Precise environment and from freely available code from Launchpad

  • make test to pass ok, which means that further development can be easily started

  • make start-oauth to start and work ok, which means that the server actually works and sync files

However, there's a lot to do for the service to be really used in a production environment where we can put our files and trust it, including but not limited to:

  • keep cleaning the project, lot of quirks and small weirdness to fix

  • make it to store files not in AWS but in the local filesystem

  • (after last item because some internal working reasons involving "resumable upload" that won't explain here) make it work in Trusty, or even in any modern (Ubuntu or not Ubuntu) environment

  • make it work nicely in a production environment (currently, for example, everytime it starts it uses a fresh database!)

  • simplify it: the server will not longer be used to hold a million users so features like use PostgreSQL in several shards are not worth it anymore

  • and several etceteras

Note that part of this work already started!! Naty Bidart and myself are working actively in some of those points.

Where? Well, with Natalia we already had the Magicicada Project, which was a GUI to interact with the client. So we forked the rest of the projects and naturally put them under that namespace.

So, the whole solution stack currently is:

  • Magicicada Server: the one that "lives in the cloud" and holds the files so all your clients can access them.

  • Magicicada Client: the application that runs in background in each of your computers, uploading/downloading new/changed files from/to the server.

  • Magicicada Protocol: a project with common code between client and server, particularly all the protocol implementation that allows them to talk each other.

  • Magicicada GUI: a small graphical utility that lets you interact and supervise what the client is doing in your computer.

Magicicada

All further work will be done in those projects. If you want to participate please suscribe to the mailing list or say hi in the IRC channel (#magicicada in Freenode). Also, you can file issues for any bug you find or new features/changes you want (be sure to choose the right project: server, client, protocol or gui).

If you're a bzr impaired developer, we have mirrors in GitHub (currently, only for the server, others will be added in the following weeks, ping us if you want any of these to happen sooner).

In any case, you may want to follow the Magicicada twitter account, where will be posting all kind of progress notifications.

Comentarios Imprimir

Hostería sede del PyCamp

Entre las fotos que saqué del PyCamp de hace un par de semanas está esta, que me gustó tanto que la pongo acá aparte, un poco más grande...

Hostería sede del PyCamp 2015 en La Serranita

Es la hostería donde fue sede el evento (donde dormíamos y trabajábamos... las comidas fueron en otro lugar). Una construcción en múltiples niveles muy muy linda.

Más fotos del PyCamp acá.

Comentarios Imprimir

PyCamp 2015, en La Serranita, Córdoba

Como casi siempre a Córdoba, fuí y volví en micro (porque en el colectivo en general duermo pasablemente bien, entonces aprovecho la noche, y no pierdo medio día "para viajar"). Esta vez, por otro lado, fuí un día antes, porque tenía que hacer un trámite en Córdoba Capital, así que estuve el jueves hospedado en la casa de Nati y Matías, trabajando durante el día, jugando juegos de mesa durante la noche.

El viernes a la mañana hicimos el viaje hasta La Serranita con los chicos. Llegamos a media mañana, y ahí se dió la situación de siempre, que es muchas veces esperada: saludar y abrazar a viejos amigos que uno no puede ver tan seguido (y a cuatro o cinco nuevos que uno todavía no conoce :) ).

El grupo recién reunido, charlando sobre las propuestasComo quedaron planeadas las actividades

El lugar estuvo muy bueno. Quizás me podría quejar que el salón principal era demasiado ajustado, y que las comidas eran en una hostería a cuatro cuadras de distancia, pero el resto estuvo más que bien. No sólo las instalaciones (habitaciones, parque, quincho, etc, etc), sino la atención humana. Un lujo.

Hasta buena internet tuvimos en este PyCamp, ya que estábamos en la red vecinal abierta que Nico Echaniz y amigos montaron en La Quintana y ciudades aledañas. Eso sí, notamos que cuando teníamos problemas con lo que era comunicaciones el tema estaba en el router que estábamos usando (y eso que terminamos poniendo uno muy bueno). Decidimos que había que invertir en hardware un poco más pro (no algo "de uso hogareño bueno" sino algo "profesional")... veremos cuanto cuesta, pero creo que vamos a gastar unos mangos ahí, ya que nos queda no sólo para el PyCamp sino para otros eventos.

Una terraza dos niveles más arriba que la sala de laburoPequeño parque en uno de los niveles

A nivel proyectos y Python: lo de siempre... se hacen mil cosas, desde laburar en proyectos estables hasta delirar con cosas nuevas, se mejoran cosas arrancadas de antes, se agregan funcionalidades, se empiezan proyectos que se terminan en esos cuatro días, se arrancan cosas que luego duran mucho tiempo, etc... pero lo más importante no pasa por ahí.

El núcleo del evento es humano. Charlar con gente que conocés de siempre, y podés delirar ideas, proyectos nuevos, o simplemente charlar. Y conocer gente nueva. Pibes que están haciendo cosas locas o no, con laburos copados o no, con vidas interesantes o no. Pero charlar, compartir tiempo, ver como las otras personas encaran un proyecto, qué aportan, como ayudarlos, como transmitirles experiencias.

El programar Python es casi una excusa para que todo lo otro suceda. Y digo "casi" porque sí, claro, lo que se programa y hace está buenísimo también :D

En el comedor, almorzandoEn la sala principal de laburo (no era grande, pero no era la única)

En ese aspecto, yo estuve principalmente con dos proyectos. Por un lado filesync server, recientemente liberado open source, con un cambio muy grande que empecé el jueves mismo estando en la casa de Nati y continué intermitentemente durante los cuatro días de PyCamp.

El otro proyecto en el que invertí mucho tiempo es fades que desarrollo principalmente con Nico. Es que se enganchó mucha gente que le gustaba lo que fades ofrece, y aportaron un montón de ideas buenísimas. ¡Y no sólo ideas! También código, branches que mergeamos o que todavía tenemos que revisar. Ya iremos metiendo todo, y queremos hacer un release en las próximas semanas. Estén atentos, porque fades ahora hace cosas que te vuela la peluca :D

Pero no sólo trabajé en eso. También porté Tritcask a que trabaje simultaneamente con Python 2 y Python 3 (arranqué sólo con esto, pero el 70% del laburo lo hicimos juntos con SAn). Y estuvimos buscando cómo hacer para detectar cuanto de un subtítulo matchea con las voces de un video, de manera de poder determinar si está bien sincronizado o no. Y estuve haciendo algo de código asincrónico usando asyncio. Y estuve charlando con SAn, DiegoM, Bruno y Nico Echaniz sobre una especie de Repositorio Federado de Contenido Educativo. Y estuve ayudando a gente a trabajar en Python mismo durante un cortito Python Bug Day (Jairo solucionó un issue y medio!!).

Camino al ríoRecorriendo la vera del río, saltando de piedra en piedraEl mejor asado de un PyCamp, ever

Y tomé sol. Y tuve en mis manos una espada de verdad por primera vez. Y caminé por el costado del río saltando de piedra en piedra. Y comí un asadazo (entre el centenar de kilos de comida que ingeríamos por día por persona). Y conocí La Serranita. Y charlé mil. Y usé un sistema de realidad virtual. Y jugué a muchos juegos de mesa.

Y abracé amigos.

Comentarios Imprimir

Se viene se viene el PyCamp 2015

La semana que viene (casi ahora ahorita) arranca una nueva edición del mejor evento de programación del mundo mundial.

Esta vez se hace en La Serranita, Córdoba.

Hay un montón de propuestas de varias personas, yo en particular propuse armar una especie de verificador de subtítulos (la idea es verificar si un subtítulo matchea con el video... o mejor dicho, con el audio... lo básico es encontrar si en el momento del subtítulo hay alguien hablando, con eso uno ya se asegura que el subtítulo está sincronizado), trabajar un poco en Encuentro y fades, y armar un Python Bug Day (para trabajar un rato en Python en sí, cerrar algún bug del lenguaje propiamente dicho... mucho código del lenguaje es en C, pero también hay mucho en Python mismo, y hay algunas cosas que son sencillas).

Aproveché y preparé/actualicé instrucciones de "cómo configurar/inicializar/arrancar con el proyecto" tanto para Encuentro como para fades. Para Python en sí no hace falta, ya que hay clarísimas instrucciones en la Python Developer's Guide :)

Ya les reportaré como fue todo :)

Comentarios Imprimir

Piedra libre

¡Juguemos a las escondidas!

Escondida

Si no recuerdo mal, esta foto la tomé en el bosque que hay atrás de un hotel en Bruselas.

Comentarios Imprimir