La democracia toma las calles: Podemos y Multireferéndum

Estos últimos días se han anunciado dos proyectos ciudadanos que incluyen la plataforma agoravoting para consultar a la ciudadanía tanto por Internet como en la calle. Multireféndum instalará la versión actual del software y Podemos está colaborando en el desarrollo de la herramienta para que incluya nuevas funciones.

Multireferéndum

Una plataforma ciudadana catalana ha decidido realizar un referéndum popular al margen de las instituciones. Se trata de un ambicioso proyecto que pretende llevar las urnas a las calles el mismo día de las elecciones europeas. La votación se realizará de forma mixta, es decir, se podrá votar online con agoravoting. Han iniciado una campaña en goteo.org que incluye una partida para la instalación de la versión actual de ágora, que realizará Dario*.

Podemos

El movimiento social de Pablo Iglesias pretende presentarse como partido a las próximas elecciones y quieren realizar unas primarias abiertas a toda la ciudadanía. Este  proyecto nace haciendo I+D+i, el movimiento ciudadano Podemos, liderado por Pablo Iglesias, se ha implicado en el desarrollo de la herramienta y han propuesto  nuevas implementaciones que representan avances considerables en ágora.

Avances:

La campaña de financiación de Podemos servirá en parte para añadir nuevas funciones a la herramienta, nueva función que podría servir para mitigar un mal endémico que hemos detectado en las votaciones electrónicas, la baja participación.

Hay una ley no escrita por la cual en este tipo de votaciones electrónicas participan una décima parte de los simpatizantes y una centésima parte de los votantes potenciales. No es  necesariamente un problema técnico, pero la necesidad de escanear el DNI o utilizar un certificado electrónico son algunas de las causas técnicas a mejorar.
  • Autenticación con el móvil

David* y Eduardo* son los principales desarrolladores de Ágora y están trabajando para implementar una solución que ya aplicó el partido verde europeo en sus primarias, la autenticación mediante un mensaje en el móvil. El usuario debe verificar que el número de teléfono que ha introducido es correcto antes de votar, mediante un código que recibirá en el móvil por SMS. Los verdes recurrieron a un software privativo de Scytl y ahora, gracias a Podemos, este sistema de autenticación estará también disponible en el software libre de agoravoting.

  • Puntos de votación

Otro método para mejorar la participación y por lo tanto la legitimidad de la votación será montar puntos de votación en centros sociales y otros lugares donde la gente se pueda acercar físicamente a votar. Estos puntos contarán con un ordenador configurado para poder votar, y una persona que podrá guiar a los electores que lo requieran en el proceso de votación. Otro método innovador y que podría servir para romer la barrera digital.

Son dos innovaciones en agoravoting que seguiremos con detalle y os iremos contando. Ambos proyectos son esperanzadores, saldrán mejor o peor, pero la batalla ya está ganada,  porque estamos innovando, experimentando y explorando desde la sociedad civil hacia una democracia mejor.

 

*Dario es programador y activista político.
*David es programador y especialista en cifrado.
*Eduardo es programador y activista político

 

 

Post Mórtem

Análisis de las primarias pirata

Ya se han publicado los resultados de las primarias en la Confederación Pirata para las elecciones europeas, esta votación ha dejado muchos elementos para el análisis; se han implementado nuevas funciones y se ha producido también algún fallo importante a tener en cuenta.

En esta votación se ponían a prueba las autoridades de votación, las autoridades actúan como testigos y guardianes de la votación: mientras una autoridad no esté comprometida, no se podrá descifrar el voto ni manipular el resultado. En este caso se utilizaron dos autoridades independientes, una en Pirates de Catalunya y otra en Piratas de Madrid.  Esta función aumenta la seguridad de la votación, pero se produjo un imprevisto en los archivos de texto que generan.

Eduardo estuvo pendiente de la votación y nos relató detalladamente las incidencias (texto integro).

El primer problema que nos encontramos fue alarmante: de 191 votos, el sistema de recuento de las autoridades parece que sólo había reconocido 37 y los demás los había dado por inválidos.

 

Cero a la izquierda

Un clásico en programación, al transformar los votos, no se identificaban correctamente los ceros a la izquierda.

Al principio entramos en modo pánico. No obstante, nos pusimos a mirar los votos uno por uno y nos dimos cuenta de que el problema era claro: el sistema de recuento de las autoridades no había tenido en cuenta que los votos cifrados donde la primera opción sea de una sola cifra, el voto no aparece como “0122” sino “122”.

[…]

Y fueron los ceros de la izquierda la razón principal por la que la inmensa mayoría de los votos habían sido invalidados en el recuento. Hemos también de indicar que el fallo era en el recuento de las autoridades (software election-orchestra) únicamente: en el servidor web de ágora (agora-ciudadana) se hace el recuento con una copia del mismo software que SÍ que había tenido en cuenta que faltaban los ceros a la izquierda y donde el recuento no iba a generar este problema. No obstante, como el servidor de ágora había recibido el recuento pero no lo había publicado (se acordó publicarlo al ída siguiente), este detalle tardamos un tiempo en recordarlo.

Este fallo se pudo solucionar satisfactoriamente, pero quedaron algunos intentos de voto fallidos. La situación fue preocupante en su momento y tuvimos que analizar con mayor profundidad la razón de ser de 3 votos que no se pudieron identificar y otros 2 votos perdidos por un fallo del programa.

Los 5 votos nulos

En el recuento de la votación, 3 votos emitieron un identificador no válido, en un principio no pudimos descubrir si se trataba de intentos maliciosos de sabotear la votación o de incompatibilidad con algún navegador.

No, no tengo aun respuesta para saber qué significan esos votos. Además debemos decir que como los votos los recibimos cifrados, no podemos bloquear aquellos votos que no sean válidos. Pero eso a nosotros no nos importa: el voto inválido, como meter un chorizo en el sobre, es legítimo. El problema es que te llegas a preguntar si es un error de nuestro software o si a lo mejor ha sido alguien que quiere jugar con nosotros y ha modificado su cabina de votación en su navegador para generar votos inválidos para él, su padre y su hermana a mano, por ejemplo. Es algo que no podemos verificar.

La única otra opción que barajamos que sea posible es que simplemente haya algún tipo de error que afecte a cómo se codifica el voto de esa curiosa manera en algún navegador. Nosotros hemos probado a votar en múltiples navegadores incluso tablets y móviles IOS/Android, pero no en todos (¿de veras crees que lo hemos probado en Internet Explorer 7.5 para Mac OS 10.2.3? lo siento pero no).

Más adelante David resolvió el misterio de los tres votos, se debió a una incompatibilidad con Internet Explorer 6 ó 7. Este descubrimiento ha permitido descifrar los votos, que no afectan a los resultados de las elecciones.

Recordad que una de las funciones que comenté que usábamos para codificar el voto era parseInt(). Resulta que no le especificamos la base (10), y que aunque en el standard [1] ECMAscript 3 se desaconseja y en ECMAscript 5 se prohibe, algunos navegadores si especificas un cero a la izquierda del número a parsear interpreta que la base es 8, correspondiente a numeros octales. Concretamente en IE6, IE7, IE8, o IE9 puede pasar esto.

Aquí se pueden consultar las aclaraciones más detalladas. Los tres votos son nulos por la incompatibilidad.

Esos 3 votos los sigo considerando inválidos porque no sabemos qué ocurrió, puede que alguien malicioso los escribiese a mano (poco probable) o probablemente fue con un Internet Explorer haciendo clic, en cualquier caso como digo no afectan al resultado.

Otros dos votos no se pudieron contar como votos en blanco, debido a que la opción de voto en blanco coincidía con una combinación de voto. Este error es propio de la herramienta, afortunadamente es de fácil solución.

Como error sí que hemos detectado que los votos en blanco se codificaban como “2424”. Que si lo traduces, le restamos uno y se queda en “2423” que significa “opción 24, opción 23”

En definitiva, estos cinco votos, dieron tema de debate para la aprobación de los resultados, cuando se analizaron detalladamente se pudo establecer que no afectaban a los resultados y que su origen era fácilmente identificable y verificable, gracias a las autoridades.

Pecata Minuta

Hubo más problemas en la votación, por un lado, algunos votantes no recibieron email de confirmación de su voto. Esta incidencia no afecta a la seguridad de la votación, ya que el votante siempre puede comprobar si su voto ha sido registrado. Sin embargo está ya en la lista de asuntos pendientes.

También he de decir que esta vez hemos tenido un número de incidencias muy bajo durante la votación: la puesta a punto que supusieron las dos experiencias de congresotransparente lo dejaron bastante fino en ese sentido. Sólo ha habido algún problema puntual de envío de emails notificando que el voto ha sido recibido correctamente.

También hubo problemas con la configuración de idioma de algunos navegadores, que impedía acceder correctamente según el idioma de algunos navegadores. Otro error con solución relativamente fácil.

Medidas para el futuro

Dado que nuestra colaboración con los piratas fue desinteresada y de los pocos recursos con que contamos, hicimos pruebas pero no se detectaron errores en las pruebas. En futuras ocasiones intentaremos que las pruebas sean más amplias, con más gente votando.

Además, dado que ha habido algún fallo de codificación previo al cifrado, vamos a implementar tests automáticos de comprobación de codificación y descodificación del voto en la propia cabina de votación para detectar si hay algún problema en el navegador al codificar el voto, y notificar el problema en tal caso.

– implementaremos también en javascript decodificación del voto, y comprobaremos antes de votar que si codificas y decodificas tu voto, sale lo mismo que tenías al principio. Es difícil que si hay algún fallo ese fallo sea exactamente inverso en la decodificación por lo que es un test interesante.

– implementaremos varios tests unitarios aleatorios que se ejecutarán también automáticamente en la cabina de votación antes de votar, donde se generarán votos aleatorios y se les pasará por el proceso de codificación y el de descodificación.

– implementaremos varios tests unitarios con ejemplos de codificación que podría fallar, donde comprobaremos que el resultado de la codificación es el esperado.

Veredicto: Los piratas ya tienen sus 3 primeros candidatos

El resultado de las votaciones fue aprobado unánimemente (8 votos a favor y 1 abstención) por la confederación pirata y ya han notificado los resultados, que enlazamos nuevamente aquí. La experiencia ha sido muy positiva, se han presentado problemas que han sido corregidos por la seguridad del sistema, sin embargo, es también un recordatorio de que el software nunca se acaba y que nadie es perfecto :)

Mi conclusión es que es cierto que ha sido un poco arriesgado usar esta versión “beta” para las primarias, pero que por otra parte el sistema incluye una serie de medidas de seguridad como es la distribución de confianza en autoridades que lo hacen medianamente robusto. Sin quererlo, hemos demostrado la utilidad del sistema de autoridades para que no se tenga que confiar sólo en nosotros. Además el secreto del voto se ha preservado, y el recuento es verificable.

¡Gracias!

Gracias a todos los que han ayudado a sacar este proyecto adelante, quedan muchos retos por delante, no solo técnicos, la participación por ejemplo es un desafío constante. Pero como diría Gimli: “Muerte segura, victoria incierta… ¿¡A qué esperamos?!”.

 

 

El reto de la accesibilidad

Acumulamos tareas pendientes en Ágora, DiseñoSocial nos presentó algunos bocetos de identidad visual y unos meses antes recibimos también un informe de usabilidad. En este caso la fundación ONCE nos ha ayudado con un informe de accesibilidad para personas con discapacidades. El informe se puede descargar aquí. El reto que supone corregir los fallos de usabilidad nos parece prioritario porque Ágora pretende ser un software accesible para todos y hacemos un llamamiento a programadores para que nos ayuden a implementarlo. A continuación os resumimos el informe a grandes rasgos:

Informe de accesibilidad de la fundación ONCE

El propio informe nos resume cuáles son los problemas principales, hay una de cal…

Imágenes sin descripción o con descripción incorrecta, estructura inadecuada de encabezados y listas. Contraste insuficiente del color, formularios sin una relación explicita clara, vínculos con textos no descriptivos y contenidos a los que no pueden acceder usuarios de dispositivos de ayuda.
y una de arena:
No obstante, y pese a que alguna de estas disconformidades puede considerarse de carácter grave, no se ha encontrado ningún contenido o elemento que no pueda ser corregido para eliminar las barreras relacionadas.
Necesitamos ayuda de gente especializada o experimentada en este ámbito, esta es la lista de deberes:
  • Alternativas textuales inadecuadas
  • Marcado incorrecto de estructura
  • Contraste insuficiente de color
  • Foco no visible en algunos elementos
  • Asociación incorrecta entre etiqueta y control de formulario
  • Títulos inadecuados en páginas
  • Enlaces con textos no adecuados
  • Ausencia del marcado del idioma principal del sitio
  • Contenidos en inglés sin marcado de cambio de idioma
  • Notificación de errores en formularios de forma no adecuada
  • Ausencia de instrucciones y sugerencias
  • Ventanas emergentes no detectadas correctamente por los productos de apoyo
  • Aparición de nuevo contenido no detectado por el producto de apoyo
  • Texto con funcionalidad no identificado con el rol correspondiente
  • A pesar de que algunas de estas disconformidades pueden considerarse severas, no se han encontrado
  • contenidos o elementos que no puedan ser corregidos con la intención de eliminar las barreras de
  • accesibilidad que implican.