Monica v3 llega antes de que acabe 2026. Reconstruida desde cero. Sigue siendo de código abierto. Ver lo que viene
Monica

Blog

Notas sobre la construcción de Monica, sobre mantener privados los datos personales y sobre la pequeña mecánica de seguir en contacto.

Página 3 de 4

3 min de lectura
Monica en 2018
Regis Freyd

Cuando trabajas cada día en algo, pocas veces te tomas el tiempo de pensar en el conjunto. No quiero perder de vista lo que me gustaría que Monica lograra, así que esto es lo que me gustaría hacer en 2018. Este artículo no es una hoja de ruta propiamente dicha. Piensa en él como mi lista de deseos personal.

  • Lanzar la aplicación móvil. El trabajo ya ha empezado y estamos cerca de una v1 que debería salir en las próximas semanas. La primera versión será de solo lectura y la v2 permitirá editar datos. El código de la aplicación móvil está ya en GitHub y es, evidentemente, 100 % de código abierto.
  • Compatibilidad con GraphQL: ya tenemos una API REST que usará la v1 de la aplicación móvil. Si de verdad queremos una gran aplicación móvil, hay que asegurarse de que todas las peticiones a la API sean eficientes, y GraphQL es la mejor solución para eso.
  • Compatibilidad con CardDAV y CalDAV. Creo que es lo que hará brillar a Monica a largo plazo. Estos dos protocolos te permitirán sincronizar tus contactos y tus entradas de calendario con las aplicaciones de correo y calendario que ya usas en el móvil o en el ordenador. Monica se convertiría en la fuente central de tus datos sociales.
  • Más cariño para los recordatorios, con la posibilidad de recibir aviso antes de que ocurra un evento.
  • Ofrecer estadísticas sobre tu vida social: cuántas veces has salido en un mes, a quién ves más, dónde quedas más a menudo, etcétera. Cuantos más datos le des a Monica, más información obtendrás.
  • Una vista de calendario que muestre recordatorios, eventos futuros y demás.
  • El concepto de fichas de actividad «ricas»: por ejemplo, si indicas que fuiste a un restaurante, poder señalar dónde fue (con ubicación automática en un mapa), qué comiste, cuánto duró, etcétera. Cada tipo de actividad tendría información concreta que rellenar.
  • El diario debería convertirse en el lugar donde tu vida se documenta sola. Será estupendo cuando tengamos fichas de actividad ricas.
  • Estabilizar la plataforma, añadir muchas pruebas para asegurarnos de no romper cosas mientras avanzamos.
  • Si tengo tiempo, pero solo si lo tengo: hacer la aplicación más bonita. Aun así, creo que es más importante tener una aplicación funcional que una aplicación atractiva.
  • Y por último, aunque no menos importante: añadir más formas de importar datos. Será un verdadero suplicio porque, sorprendentemente, la mayoría de las redes sociales y sistemas no son de código abierto y no te entregan los datos que tienen sobre ti.

Espero cumplir todos los puntos anteriores este año. También sé que las cosas cambian constantemente por muchos motivos, así que tómalo con cautela.

2 min de lectura
No seas más listo que yo
Regis Freyd

Hoy en día la mayoría de los sitios aprovechan todos los datos que recopilan. Amazon me recomienda otros artículos que podrían gustarme según lo que ya he comprado o consultado. Twitter, Instagram y Facebook intentan sugerirme nuevos amigos o contenidos que podrían interesarme.

Que una tienda use todo lo que sabe de mí para ayudarme a comprar mejor tiene sentido, pero me resulta profundamente incómodo que las redes sociales lo hagan.

Todo lo social es demasiado personal para que las empresas se metan en ello. No tienen todas las cartas en la mano para determinar qué efecto tendrán esas recomendaciones en mí. Además, creen saber lo que vamos a querer y, según mi experiencia, se equivocan muy a menudo.

La tendencia actual es ayudar a los usuarios haciendo todo el trabajo por ellos, incluido el trabajo que nunca quisieron que el sitio hiciera.

En Twitter no quiero saber qué contenidos han gustado a otros usuarios.

En Facebook no quiero que me sugieran tener más amigos. Estoy bien con los amigos que ya tengo y, si no soy amigo de otras personas, probablemente sea por algo.

No quiero que esto ocurra en Monica. Creo que debemos ofrecer una herramienta que haga solo lo que los usuarios quieren que haga.

Esto no significa que no debamos ofrecer funcionalidades que ayuden a los usuarios analizando sus datos. Pero esas funcionalidades nunca deberían ser una sorpresa. Y nunca deberían dar la sensación de que el sitio sabe demasiado sobre sus usuarios.

5 min de lectura
Balance del año
Regis Freyd

Soy Regis Freyd y llevo año y medio desarrollando Monica. Monica es un software de código abierto para gestionar las relaciones personales y ahora mismo es un proyecto paralelo, porque no genera ingresos suficientes para que pueda dedicarme a él a tiempo completo. El recorrido de 2017 ha sido bastante bueno y de eso quiero escribir hoy.

Cómo se hizo popular Monica

Monica se construyó originalmente en junio de 2016. Trabajé en ella a ratos durante un par de meses y luego la publiqué en Reddit. Poca gente le prestó atención, todavía menos se registró (una docena de personas), así que dejé de trabajar en ella y me centré en mi carrera. En mayo de 2017, después de cambiar de trabajo, quise volver a algo que me gusta mucho: los proyectos paralelos. Así que cada día, al salir del trabajo, dedicaba tiempo a Monica. Lo hice durante un mes, abrí el código en GitHub y volví a desanimarme. Llamé a un amigo, le conté que llevaba un año con un proyecto y que quería borrarlo porque no le importaba a nadie. Le dije que borraría el repositorio entero el lunes (era domingo). Me fui a dormir y por la mañana, antes de borrar el proyecto, quise probar una última cosa: publicarlo en Hacker News. Como ninguno de mis proyectos anteriores había despertado interés en HN, no tenía ninguna esperanza. Publiqué el enlace y me marché dos horas.

Cuando volví para comprobar que a nadie le interesaba, vi que estaba en la página 2 de Hacker News. Me quedé de piedra. Tenía unos 30 votos y algunos comentarios. No podía creerlo. A la gente parecía gustarle el proyecto y la idea que había detrás. También les encantaba su carácter de código abierto. Y entonces se disparó.

En menos de una hora, Monica llegó a la primera página de Hacker News. Unos minutos después estaba en el puesto 3, luego en el 2. Y después llegó al 1. Y se mantuvo como número 1 dos días seguidos, con casi 1100 votos y cientos de comentarios.

Pasamos de 10 usuarios a 5600 en un par de horas.

Al día siguiente llegamos a 7000 usuarios. Monica se convirtió en el repositorio más popular de GitHub y pasó de 0 a 1700 estrellas en una hora.

Y entonces empezaron a llegar los correos. Pasé los tres días siguientes respondiendo a cientos de mensajes de usuarios que decían llevar años esperando una herramienta así. Varios fondos de inversión me escribieron para hablar. En total hablé con 4 inversores de Nueva York y San Francisco. Enseguida me di cuenta de que no compartían en absoluto mi visión del producto y querían meter anuncios y otras formas «inteligentes» de alimentar Monica con datos. Aquello iba tan en contra de mis valores que la conversación terminó ahí.

Hoy Monica tiene unos 10 300 usuarios y más de 90 000 contactos. El repositorio de GitHub tiene 3788 estrellas y 409 forks. Hemos recibido cientos de pull requests y la comunidad ha abierto más de 300 incidencias. Está claro que el proyecto se ha hecho popular y que hay un interés real. Las imágenes de Docker se han descargado más de 13 000 veces; ahora mismo es casi imposible saber cuántas instancias de Monica hay funcionando por ahí, pero supongo que unos cientos. Tengo unos 45 clientes de pago aunque, siendo justos, ahora mismo casi no hay incentivo para tener una cuenta de pago: quien la contrata lo hace básicamente para apoyar el desarrollo.

Dudé mucho antes de abrir el código de Monica. Mi mayor miedo era que criticaran mi código y vieran lo malo que era. No tenía pruebas unitarias. Había tomado atajos para llegar a mis objetivos y el código distaba mucho de ser bueno. Para mi sorpresa, solo una persona mencionó la calidad del código. Nadie más habló de ello. La gente simplemente agradecía que la herramienta existiera y fuera abierta. El secreto es no tener miedo de compartir tu trabajo por temor a que te juzguen.

¿Y ahora qué?

  • El crecimiento inicial se ha ralentizado. Se registran entre 10 y 20 usuarios al día. Ten en cuenta que no he hecho ningún marketing salvo aquella publicación en Hacker News. Así que, aunque la cifra sea baja, me parece increíble tener tantas altas.
  • Recibo muchas peticiones de funcionalidades. Se lo agradezco de verdad, pero no puedo hacerlo todo. En parte porque es demasiado trabajo y en parte porque quiero centrarme en funcionalidades por las que la gente esté dispuesta a pagar. Es la única forma de que este proyecto sea sostenible a largo plazo. Recuerda que trabajo en esto por las noches y los fines de semana, y a 20 o 30 horas por semana cada vez será más difícil mantener ese ritmo.
  • Letterbox es una enorme fuente de inspiración para mí en cuanto al modelo de negocio, y su oferta Pro es probablemente algo que copiaré.
  • Una de las cosas que me gustaría hacer es lanzar una aplicación móvil en 2018. Creo que es lo que más quiere la gente y por eso publiqué una API hace dos meses. Tengo mucho trabajo por delante y la primera parte será aprender a desarrollar de verdad una aplicación móvil nativa.
  • Creo que Monica puede convertirse en la única fuente fiable sobre tus contactos y tu agenda. Hacia ahí vamos en 2018, además de ser un buen sitio donde guardar lo que sientes.
1 min de lectura
Añadir una fecha sin saber el año
Regis Freyd

Una fecha de nacimiento se compone de día, mes y año. Bueno, en un mundo ideal, porque en la práctica casi nunca sabes el año de nacimiento. Si se trata del cumpleaños de una amiga querida que se niega a decirte su edad, solo sabrás el día y el mes para felicitarla cada año.

Por eso hemos añadido la posibilidad de indicar una fecha sin conocer el año.

Este cambio se aplica a las fechas de nacimiento, a las fechas del primer encuentro y a las fechas de fallecimiento. Los recordatorios de esas fechas funcionan igual que antes.

imagen

Esta funcionalidad era una de las más pedidas en nuestro gestor de incidencias. Esperamos que te ayude a guardar más información sobre tus amigos y familiares.

1 min de lectura
Llegan las notas favoritas
Regis Freyd

Ahora las notas pueden marcarse como favoritas. Los favoritos son una forma estupenda de tener a mano las notas que te resultan interesantes.

imagen

Cuando una nota está marcada como favorita, aparece en una pestaña nueva del panel llamada Notas importantes.

imagen

En esta versión también hemos publicado algunos extras:

  • Algunas acciones de la interfaz muestran ahora notificaciones dinámicas al añadir, actualizar o borrar datos.
  • Ya es posible cambiar el nombre y los apellidos del propietario de la cuenta.

Estos cambios están en la versión 1.3.0, que ya está en producción y, como siempre, puedes instalarla en un servidor propio.

Que la disfrutes.

1 min de lectura
Una forma mejor de gestionar las tareas
Regis Freyd

Añadir y gestionar tareas es ahora más fácil que nunca en Monica.

Hemos aprovechado el trabajo de la v1.1 para permitir gestionar las tareas directamente desde la ficha del contacto, en lugar de abrir una pantalla nueva para escribir la tarea o de esperar a que se recargue la página al borrar una.

Además, y este es un cambio importante, las tareas usan ahora casillas de verificación. Por fin. Era algo que queríamos hacer desde hacía mucho.

imagen

Estos cambios están en la versión 1.2.0, que ya está en producción y, como siempre, puedes instalarla en un servidor propio.

Que la disfrutes.

2 min de lectura
Llegan los campos de contacto múltiples
Regis Freyd

Hay quien tiene una dirección postal y una cuenta de Twitter. Otros tienen varias direcciones, nada de Twitter y una cuenta de Quora. Es difícil contemplar todos los casos, pero queremos que cada persona organice sus contactos como prefiera.

Una dirección postal, una cuenta de Twitter... a todas esas formas de contactar con alguien las llamamos campo de contacto.

A partir de ahora puedes añadir tantos campos de contacto por contacto como quieras. Antes solo podías tener 5 campos predefinidos.

imagen

Cada campo de contacto tiene un tipo: puede ser un correo, una cuenta de Facebook, un número de fax. Cada cuenta viene con 6 tipos genéricos de campo de contacto:

  • Correo electrónico
  • Número de teléfono
  • Facebook
  • Twitter
  • Whatsapp
  • Telegram

Puedes añadir o quitar tipos de campo de contacto en tu cuenta cuando quieras, y ponerles el nombre que prefieras, en la nueva pestaña Personalización dentro de Ajustes.

Cada tipo de campo de contacto puede tener además un protocolo asociado. Un protocolo indica qué debe hacer el navegador cuando haces clic en un campo de contacto. Por ejemplo, para un número de teléfono, el protocolo tel: le dirá al navegador que abra el programa que usas en tu ordenador para llamar.

imagen

La API se ha actualizado para admitir esos dos conceptos nuevos (campos de contacto y tipos de campo de contacto).

También hemos reordenado un poco la barra lateral de la ficha de contacto. La información sobre parejas e hijos está ahora arriba, porque creo que es mucho más importante que saber la dirección del contacto, por ejemplo.

Estos cambios están en la versión 1.1.0, que ya está en producción y, como siempre, puedes instalarla en un servidor propio.

Que la disfrutes.

4 min de lectura
Monica 1.0.0 con API, presentaciones y contactos fallecidos
Regis Freyd

Monica por fin está lista para la v1.0.0.

En Monica intentamos seguir el enfoque SemVer. Cambiar el número de versión mayor indica cambios importantes en la API. Por eso me hace mucha ilusión anunciar el lanzamiento de la v1.0.0. Añade muchas funcionalidades y servirá de base para todas las cosas estupendas que pienso publicar en los próximos meses. Hablemos primero de las funcionalidades y después de los cambios técnicos que trae esta versión.

La API

Monica por fin tiene API. Todavía no está todo disponible a través de ella, pero sí la mayor parte de los datos de los contactos. Una versión futura traerá también los ajustes y los datos de la cuenta. Mi objetivo es que todo esté disponible mediante la API. Admitimos OAuth 2.0 y tokens personales. Por dentro, Laravel Passport se encarga de todo lo relacionado con OAuth.

Nada ayuda tanto a los desarrolladores a meterse en un proyecto como una buena documentación. Por eso también hemos publicado un nuevo portal de documentación que intenta ser lo más exhaustivo posible. En cada página indicamos además la fecha de la última actualización, para que sepas cómo de reciente es.

API

Ahora les toca a los desarrolladores ser creativos con los datos de Monica y hacer cosas estupendas con ellos. Por nuestra parte, estamos trabajando en la primera aplicación móvil oficial de Monica, tanto para Apple como para Android, pero tendrás más detalles a finales de año.

Cómo conociste a alguien

El propósito de Monica es ayudarte a recordar información importante sobre las personas que te importan, en privado y solo para tus ojos. Cuando tienes muchos contactos, a veces cuesta recordar cómo y dónde los conociste. Por eso ahora puedes indicar cómo conociste a alguien o si te presentó otro contacto. Incluso puedes pedir que te recordemos el aniversario de ese encuentro.

presentaciones

Marcar un contacto como fallecido

A veces la vida es injusta y la gente muere. Hemos añadido la posibilidad de marcar un contacto como fallecido e indicar una fecha opcional para ese triste suceso. Además, puedes pedir que te lo recordemos si así lo prefieres. Cuando un contacto está marcado como fallecido, aparece un pequeño ⚰ junto a su nombre en toda la aplicación.

marcar un contacto como fallecido

Una pantalla de alta de contactos más rápida

Nuestro objetivo es ayudarte a conseguir lo que quieres lo antes posible. Por eso hemos añadido un pequeño botón en la pantalla de alta de contactos que guarda el contacto actual y te permite añadir otro justo después. Te ahorrará segundos valiosos.

Grandes cambios internos

Para la v1.0.0 hemos actualizado el código a Laravel 5.5, con el fin de aprovechar para nuestra API la estupenda funcionalidad de Resources introducida en esa versión.

Gracias a @mauricew también hemos sustituido el antiguo sistema de compilación del front-end basado en Gulp y Bower por mix, el sistema que Laravel incluye ahora por defecto. Hemos podido eliminar muchas dependencias, limpiar el código y, sobre todo, asegurarnos de que en el futuro no haya conflictos en los archivos CSS y JS de nuestras pull requests.

Para terminar

La versión 1.0.0 ya está en producción y, como siempre, puedes instalarla en un servidor propio.

La v1.0.0 tiene literalmente miles de líneas de código nuevas. Es el producto de una comunidad sana. En lo personal, me siento muy afortunado de que Monica ayude a tanta gente. Vuestros comentarios continuos me ayudan enormemente a seguir trabajando todo lo que puedo en este producto. Los próximos meses serán muy intensos: muchas funcionalidades nuevas, una aplicación móvil y otras sorpresas. El futuro será brillante para nuestra comunidad.

Que la disfrutes.

2 min de lectura
Estado del proyecto, septiembre de 2017
Regis Freyd

He estado algo menos activo en la comunicación durante los últimos 40 días. También tardo más en responder incidencias y en integrar pull requests. No es una situación que me guste, pero me será difícil cambiarla en el próximo mes. Después irá mejor.

¿Qué demonios estoy haciendo ahora mismo?

Trabajo en el proyecto todo lo que puedo. Cada hora libre que tengo la invierto en Monica. Para tranquilizar a toda la gente que me escribe sobre mi compromiso con el proyecto y sobre el temor de que lo deje morir: sigo tan motivado como antes y esto sigue siendo una prioridad para mí.

Sin embargo, ahora mismo estoy trabajando en la API y asegurándome de que funciona como debe. También estoy construyendo su documentación, porque la documentación tiene que ser excelente para que la gente use la API. Por esas razones, y también porque esto sigue siendo un proyecto paralelo hasta que encuentre la manera de convertirlo en mi trabajo a tiempo completo, no quiero distraerme ahora con comentarios, errores o funcionalidades nuevas. En cuanto esté lista la API, volveré a atender a la comunidad. Por desgracia, sencillamente no tengo tiempo material para hacer todo lo que me gustaría, y necesito concentrarme de forma muy estricta si quiero terminar las cosas.

Qué viene después

En los próximos días se publicará un primer borrador de la API, con más métodos añadidos después.

Una vez terminada la API, tenemos que dar cariño a la noción de actividades compartidas con tus contactos. También deberíamos hacer el panel más útil y cambiar el diario para que sea algo realmente aprovechable. Además, hay que implementar el protocolo CardDAV, aunque a estas alturas no sé hasta qué punto encajará bien en la pila actual.

Estoy convencido de que este proyecto tiene un potencial enorme. Si ya eres usuario, sigo buscando comentarios y testimonios. Gracias por tu ayuda.

2 min de lectura
Monica 0.6.3 con mejor gestión de contactos y Markdown
Regis Freyd

La funcionalidad más pedida en Monica (desde la anterior) era poder designar a un contacto existente como pareja o como hijo. Con la 0.6.3 ya es posible.

Cómo funciona

Cuando añades una pareja o un hijo, tienes acceso a dos cosas nuevas:

  • Puedes crear un contacto parcial o un contacto real al añadir a esa persona. Un contacto parcial es la forma antigua de hacerlo: esos contactos no aparecen en la lista de contactos y no puedes añadirles recordatorios ni notas propias. Un contacto «real» crea de verdad una ficha nueva para esa persona, a la que podrás añadir sus propios hijos o parejas.

crear contacto completo

  • En lugar de crear un contacto nuevo, puedes simplemente vincular un contacto existente como hijo o pareja de este contacto.

crear contacto completo

Este cambio ha sido el mayor del código hasta la fecha y el que más tiempo ha llevado. Quienes alojáis Monica por vuestra cuenta, tened cuidado al actualizar la instancia: haced una copia de seguridad de la base de datos antes de actualizar.

Otros cambios importantes de esta versión

  • Para quienes gusten de la poligamia, cada contacto puede tener más de una pareja.
  • Nuevas traducciones: italiano y alemán. Gracias a la comunidad.
  • Compatibilidad con Markdown en las notas y en las llamadas registradas. Así puedes usar listas, por ejemplo.
  • Ahora admitimos todas las monedas del mundo.
  • Muchas correcciones de errores, incluidas algunas de seguridad.
  • Hemos empezado a usar Tachyons como nuevo framework CSS. Sustituirá poco a poco a Bootstrap.

Para terminar

La versión 0.6.3 ya está en producción y, como siempre, puedes instalarla en un servidor propio.

Que la disfrutes.