La Computación voluntaria (en inglés un saludo goya) es un tipo de computación distribuida en la cual los usuarios donan, usualmente de manera anónima, parte de su potencia computacional sin utilizar a distintos proyectos e iniciativas, especialmente a proyectos académicos o de investigación. La idea se basa en el aprovechamiento de los recursos disponibles en los computadores comunes, debido a la infrautilización de estos por parte de los usuarios durante lo que se considera un uso corriente de los sistemas.

La principal ventaja de la computación voluntaria es la capacidad de hacer disponible una gran cantidad de potencia de computación a múltiples proyectos de investigación con un coste mínimo para los investigadores de estos. Debido a la gran cantidad de ordenadores personales disponibles a día de hoy en el mundo, la computación voluntaria puede proveer una mayor capacidad de procesamiento que cualquier otro tipo de computación. Además, el hecho de que los usuarios sean los que proveen esta potencia, supone una participación activa de la población en los proyectos de investigación académica, aumentando el interés general en el desarrollo científico y dictando la dirección de las distintas investigaciones hacia lo que el público considere de mayor interés.

Historia El primer proyecto de computación voluntaria data de enero de 1996, denominado como el Great Internet Mersenne Prime Search. Durante los años venideros, la computación voluntaria se extendió a otras áreas, especialmente relacionadas con el ámbito académico. Una de las iniciativas a destacar es distributed.net, un proyecto basado en la utilización de la potencia de la CPU y la GPU para resolver diferentes problemas a gran escala. Además, aparecieron múltiples proyectos basados en Java más cercanos a la investigación como Bayanihan, Popcorn, Superweb o Charlotte.

En 1999, los proyectos SETI@home y Folding@home fueron lanzados. Ambos proyectos recibieron en su momento un gran interés por parte de los medios de comunicación, manteniéndose hasta la actualidad como dos de los proyectos de computación voluntaria con un mayor número de participantes de forma habitual. En consecuencia, múltiples empresas como Popular Power, Parabon, Entropia o United Devices aparecieron al comienzo de la década de los 2000, con una visión de negocio y una participación en proyectos relacionados con distintos aspectos de la computación voluntaria.

En el año 2002, el sistema de middleware denominado como el Berkeley Open Infraestructure for Network Computing, comúnmente conocido como BOINC, fue lanzado como un soporte para el proyecto SETI@home. Fue desarrollado en la universidad de California, más concretamente en el Laboratorio de Ciencias Espaciales. BOINC provee a los voluntarios de un sistema de middleware completo que aprovecha distintos recursos tanto de la CPU como de la GPU para realizar las distintas tareas que se requieren. El primer proyecto que utilizó BOINC fue Predictor@home, en el año 2004. El uso del software se extendió hasta alcanzar los proyectos de mayor envergadura como SETI@home o Climateprediction.net. Desde entonces, su uso se estandarizó entre empresas e instituciones que participan en distintas iniciativas relacionadas con la computación voluntaria, incluyendo proyectos como Einstein@Home, AQUA@home o PrimeGrid.

En la actualidad, el proyecto SETI@home se encuentra en un estado de hibernación indefinida, por lo que muchos de sus usuarios se han trasladado a otros proyectos. Muchos de estos proyectos, además de BOINC, se han adaptado a las nuevas tecnologías, pudiendo utilizar otros tipos de hardware y arquitecturas más allá de computadores personales para el procesamiento y cálculo de operaciones. Algunas de las alternativas surgidas en los últimos años han sido las consolas PlayStation 3 o los teléfonos Android.

Recientemente, IBM abandonó y transfirió el proyecto World Community Grid al Instituto de Investigación Krembil. Desde 2004, esta había sido una de sus principales iniciativas filantrópicas, basada en la búsqueda de soluciones para problemas relacionados con el medio ambiente. Características La computación voluntaria es la práctica de utilizar las computadoras personales comerciales de personas ordinarias (ordenadores, portátiles, tabletas, teléfonos inteligentes, etc.) para realizar computaciones y cálculos científicos de alto rendimiento y capacidad (high-throughput computing). Los voluntarios participantes deben instalar un programa cliente encargado de descargar y ejecutar trabajos (pequeños programas o procesos) provenientes de los servidores pertenecientes a los proyectos científicos a los cuales se desea contribuir. Los costos de la computación voluntaria se dividen entre los voluntarios que prestan sus computadoras y los investigadores que hacen uso de ellos. Los voluntarios cubren la compra y el mantenimiento de los dispositivos, la electricidad que los alimenta y la conexión a internet que les permite solicitar trabajos e intercambiar resultados. Los investigadores pagan por los servidores, los administradores de sistemas, los programadores y los desarrolladores de aplicaciones web requeridos para el proyecto. La computación voluntaria es óptima para computaciones de alta capacidad y rendimiento en las que existen grandes grupos o flujos de trabajos, lo cual conduce a la necesidad de una alta tasa terminación de trabajos (high rate of completion). Cuando se requiere de tamaños de memoria considerables o tiempos de finalización pequeños la computación voluntaria no suele ser la mejor opción. La computación voluntaria difiere de otras formas de computación de alta capacidad y rendimiento en seis maneras principales: Las computadoras son anónimas y no siempre confiables. Existe una gran heterogeneidad en los dispositivos participantes. Los tiempos de terminación son difíciles de predecirdebido a las variaciones de disponibilidad de las computadoras voluntarias. Los dispositivos participantes cambian confrecuencia: se unen y dejan el proyecto impredeciblemente. Se requiere de reclutamiento y retención de participantes para crear la red de dispositivos, así como del desarrollo de software cliente fácilmente instalable y operable para los voluntarios. Tiene la posibilidad de ser mucho más grande: millones computadoras completando millones de trabajos por día.

Middleware miniaturadeimagen|Vista de BOINC, mostrando la UI simplificada y el funcionamiento en el proyecto SETI@home. El middleware es una capa software que abstraerá los problemas del sistema distribuido. Los primeros proyectos de computación voluntaria consistían en un solo programa que combinaba el cálculo y la computación científica con la infraestructura de la computación distribuida. Este tipo de arquitectura monolítica resultaba inflexible y problemática a largo plazo, ya que dificultaba las actualizaciones y mejoras periódicas del software. La computación voluntaria ha avanzado hacia una serie de sistemas de middleware que proveen esta infraestructura de forma autónoma, acorde a la calidad y las posibilidades ofrecidas por el diseño de software actual.

Algunos de los ejemplos de middleware más utilizados: Berkeley Open Infrastructure for Network Computing (BOINC) es el más utilizado. Funciona como una plataforma de uso generalizado para otras áreas de la computación distribuida, además de ser el software habitual utilizado por los voluntarios en la mayoría de proyectos y sistemas operativos. XtremWeb que es una plataforma experimental para computación relacionada con la investigación. Xgrid está desarrollado por el Grupo de Computación Avanzada de Apple, y es exclusivo para sistemas MacOS. GridMP es un middleware de carácter comercial desarrollado por United Devices utilizado, especialmente en el pasado, en múltiples y grandes iniciativas de computación voluntaria como la World Community Grid. Cosm es una familia de protocolos y software de computación distribuida que ha sido utilizado en proyectos como Folding@home o Genome@Home.

Estos sistemas se basan en un cliente instalado y en funcionamiento situado en un ordenador personal o servidor proporcionado por los voluntarios. Utilizan principalmente un modelo "pull", donde se contacta de manera periódica a unos servidores centralizados que son controlados por los investigadores del proyecto. Este contacto supone una petición de trabajo y para reportar los resultados generados a partir de las operaciones realizadas. En la mayor parte de las ocasiones, existe un sistema de "créditos" por usuario que registra la cantidad de trabajo (potencia proporcionada y operaciones realizadas) que dicho usuario ha realizado sobre el proyecto en cuestión.

Voluntarios Los voluntarios de los proyectos de computación voluntaria proporcionan de manera altruista la potencia de sus dispositivos para que esta sea utilizada por las distintas iniciativas. Esta potencia será utilizada para el cálculo y reporte de datos y operaciones en distintos ámbitos e investigaciones. Ventajas Existe un gran abanico de razones por los que los usuarios participan en proyectos de esta índole, destacando la satisfacción de ayudar a proyectos de investigación relevantes para la sociedad, o el entusiasmo de contribuir y trabajar en equipo (socializando a través de foros y proponiendo sugerencias y mejoras) para obtener un fin común. Además, existe un entusiasmo asociado a la publicación de resultados y el seguimiento de los créditos obtenidos por participar en los proyectos, por lo que las iniciativas de computación voluntaria y el middleware intentan impulsar el reconocimiento de los voluntarios una vez se realizan descubrimientos relevantes para la sociedad en general y los medios de comunicación. Desventajas Existen una serie de desventajas intrínsecas en la utilización del hardware de los usuarios para la computación voluntaria. En primer lugar, existe un mayor consumo de energía asociado a la constante utilización de recursos del ordenador (CPU y GPU), independientemente de si el usuario se encuentra realizando otras tareas o no este. Además, cabe la posibilidad de detectar un menor rendimiento durante el uso del ordenador por parte del usuario, debido a la redirección de recursos a las tareas del cliente. Algunos middleware permiten limitar la cantidad de recursos proporcionados por usuario para paliar los efectos que el software pueda provocar sobre el rendimiento. Por último, el uso continuado del software supone un desgaste extra sobre los componentes del ordenador, que a largo plazo puede alcanzar una cierta notoriedad.

Investigadores Para los investigadores, la computación voluntaria supone una alternativa a otros tipos de tecnologías que pueden ser utilizadas en investigaciones de todo tipo de campos. Si un proyecto o iniciativa de investigación aprovecha los recursos proporcionados por los voluntarios, obtendrá una gran cantidad de potencia de computación, además del conocimiento y seguimiento activo de dicho proyecto por estos mismos voluntarios. Ventajas La mayor ventaja para los investigadores es el acceso a una potencia de computación inalcanzable de cualquier otra forma. Los proyectos de computación voluntaria con el mayor número de participantes, como Folding@home, alcanzan cifras similares e incluso superiores a las de los mayores supercomputadores del mundo. El conocimiento e interés entre el público en la computación voluntaria se incrementó durante la pandemia del COVID-19, alcanzando cifras nunca vistas de computación que ayudaron de forma considerable en las investigaciones asociadas con el virus. Desventajas