/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); El café para todos funcionaSesiónDeControl.com
Arrow

El café para todos funciona


0
Materia

Este artículo ha sido escrito en Materia, web de noticias de ciencia, tecnología, salud y medio ambiente, que comparte su contenido para ser republicado.


Escrito el 7 de julio de 2013 a las 18:40 | Clasificado en Ciencia

Un artículo sugiere que financiar muchos proyectos de calidad media da mejores resultados que concentrar el dinero en unos pocos excelentes

El buque oceanográfico Hespérides (Fuente: Ministerio de Economía y Competitividad)
El buque oceanográfico Hespérides (Fuente: Ministerio de Economía y Competitividad)

“A todo el que tiene le será dado, y tendrá en abundancia; pero al que no tiene, aun lo que tiene le será quitado”, escribía el evangelista Mateo en su parábola de los talentos. Y también se encuentran frases similares en los textos bíblicos de Lucas y Marcos. Estos tres influyentes escritores son una muestra de que la idea de apostar por la excelencia no es nueva. Más recientemente, Carmen Vela, secretaria de Estado de I+D+i, transmitía en un artículo de Nature una idea similar: “Queremos apoyar solo los proyectos realmente competitivos que están dando fruto o que muestran el potencial para hacerlo a través de resultados recientes, y que aspiran a mejorar la vida diaria de nuestros ciudadanos”. Un Premio Nacional de Investigación, como Jordi Bascompte, o un Príncipe de Asturias de Investigación, como José María Bermúdez de Castro, también han arremetido contra el ‘café para todos’.

Pese a lo intutitivo y lo extendido de la idea es posible que apostar por los mejores y abandonar a los no tan buenos sea un planteamiento erróneo. Eso es lo que afirman en un reciente artículo publicado en la revista PLoS Jean-Michel Fortin y David Currie, dos investigadores de la Universidad de Ottawa. “Sugerimos que es probable que las estrategias de financiación que se enfocan en la diversidad más que en la excelencia sean más productivas”, señalan.

Para llegar a esta conclusión, los autores tomaron como referencia cuatro formas de medir el impacto científico de un trabajo: el número de artículos publicados, el numero de citas que tuvieron esos artículos, el artículo más citado y el número de artículos citados con mucha frecuencia, todo durante un periodo de cuatro años y centrándose en tres disciplinas: biología animal integradora, química orgánica e inorgánica y evolución y ecología. Después, cruzaron esa información con la cantidad de dinero que recibieron de la NSERC, una agencia que financia la investigación en Canadá.

La guerra contra el cáncer muestra la dificultad de dirigir la financiación en ciencia para lograr objetivos concretos

Sus resultados muestran que los investigadores que recibieron fondos adicionales de una segunda agencia, el CIHR, no fueron más productivos de media que los que solo fueron financiados por el primer organismo. El impacto por dólar fue inferior para los que obtuvieron subvenciones grandes, algo que, indican, “es inconsistente con la hipótesis de que las ayudas mayores producirán descubrimientos más grandes”. “Además, el impacto de los investigadores que vieron su financiación incrementada no aumentaron como sería previsible”, añaden.

Lo que hay detrás de los resultados de los científicos canadienses es la dificultad para predecir de dónde llegará un gran descubrimiento o cómo dirigir la financiación para que dé unos resultados concretos. Un ejemplo claro es la guerra contra el cáncer lanzada en EEUU hace ya cuarenta años. Pese a la concentración de financiación y esfuerzos, la capacidad para mejorar la efectividad de las terapias contra la enfermedad ha sido muy limitada.

“El ‘café para todos’ ha sido una manera para intentar romper la oligarquía científica en algunas disciplinas”

El impacto se incrementa con la financiación, y los autores calcularon que el mejor artículo del científico con mayores ayudas atraerá un 58% más de citas. Sin embargo, explican los autores, como la relación entre financiación y publicaciones de alto impacto es muy variable, si se toman al azar dos investigadores con el mismo nivel de financiación, es muy probable que uno tenga publicaciones de mucho más impacto que el otro y eso hace que con frecuencia los investigadores con una financiación menor tengan mejores resultados que los ricos.

Según los cálculos que exponen en su artículo, uno de los investigadores con más fondos recibirá, de media, un 14% menos de citas que el mejor artículo de cualquier par de investigadores tomados al azar que entre los dos sumen la misma financiación que el anterior. Además, continúan, “dos ayudas pequeñas produjeron un 20% más de artículos de elevado impacto que una ayuda grande”. Por lo tanto, concluyen, si se trata de maximizar el impacto, como predecir si una investigación llegará o no a lograr sus objetivos tiene algo de lotería, sería más eficiente repartir las ayudas entre más grupos para que existan más posibilidades de que uno de ellos consiga un gran descubrimiento.

Diversificar para salvar a los jóvenes

“Este tipo de estudios es interesante porque uno de los problemas en muchos sistemas de financiación de la ciencia es que no hay un seguimientos para ver qué tipo de política ha tenido más éxito”, afirma Peter Klatt, investigador del CSIC con experiencia de gestión en el Gobierno y el CNIO. “El enfoque de los autores, que ven los resultados de la investigación como fruto del azar, es un poco extremo, porque yo confío en que grupos que tienen un cierto nivel de producción tienden a mantenerlo, al menos hasta que el grupo se desgasta o se pierde movilidad”, apunta. “Pero es verdad que para los gestores del Plan Nacional [que financia la ciencia en España] es difícil identificar talento y tratar de maximizar el número de grupos que puedes financiar para que haya más posibilidades de tener un gran éxito es un sistema que en España ha dado buen resultado” afirma Klatt. Sin embargo, reconoce, “para el siguiente salto hacen falta cantidades de dinero mayores, porque la investigación en biomedicina, por ejemplo, se ha vuelto tan cara que si no tienes financiación no puedes competir”, añade.

Si se reduce el número de grupos que se financian, se puede dejar fuera a jóvenes con potencial

Para Klatt, que puntualiza que ninguno de los dos extremos es bueno, en una situación de escasez de fondos como la actual, es peligroso optar por concentrar la financiación en los grupos que ya tienen éxito. “Igual es verdad que hasta ahora ha habido demasiados grupos, pero si reduces mucho el número de grupos que financias, va a haber gente joven que no tiene antecedentes y no va a tener posibilidades de investigar”, asevera. “A largo plazo, si no tienes una base amplia de gente preparada que además trabaje en temas variados, no vas a poder sustituir a los consolidados dentro de cinco o diez años cuando la gente se empiece a retirar”, agrega. “Además, los mejores grupos se financian sobre todo con proyectos internacionales. Si les quitas un 5% de lo que tengan de proyectos nacionales, les dolerá, pero podrán sobrevivir, algo que no pasará con los más jóvenes”.

“El sistema actual de medir la ciencia se está cayendo”

Alberto Corsín, investigador del CSIC y director de la comisión de Humanidades y Ciencias Sociales de la ANEP (Agencia Nacional de Evaluación y Prospectiva), afirma que “casi por defecto” siente “adhesión por el argumento central del artículo” respecto a la diversificación de la inversión en ciencia. Sin embargo, considera que la investigación “metodológicamente, hace aguas”. Por un lado “medir el impacto en cuatro años es insuficiente, porque en materias como las matemáticas el tiempo medio en que una publicación hace visible su calado son doce años, y en humanidades, aún más”, asegura.

También considera errónea la asunción de que una evaluación se basa solo en el nivel de impacto de las publicaciones que se puedan esperar de un trabajo. “Un panel no se basa ni remotamente solo en el nivel de impacto, se discuten muchos otros factores como la interdisciplinariedad, cuántos jóvenes y cuántos mayores hay en un grupo, la internacionalización o la relevancia de la propuesta”, explica. “En las ciencias sociales, por ejemplo, al hilo del 15-M y las revoluciones digitales se puede considerar que es un tema candente que sería interesante que alguien estudiase ahora”, ejemplifica.

El mayor desafío al que se enfrenta la ciencia en los próximos años es el del ‘open science’

Sobre el debate en torno a la distribución de la inversión o la apuesta por la excelencia, Corsín afirma que cada país tiene su propia historia que explica distintas decisiones. “En España la estructura social de la comunidad científica tiene una serie de herencias y vicios del pasado que hay que corregir de a poco”, apunta. “En algunas disciplinas, el control está centralizado en muy pocos grupos de investigación; es una oligarquía que hace muy difícil la entrada de jóvenes con nuevas ideas y el ‘café para todos’ ha sido una manera para intentar romper esa oligarquía”, añade. “Pero ni el café para todos ni el café para tres funciona, porque hay que analizar dónde están las capacidades en cada disciplina y las capacidades del sistema”, concluye.

Retornando al valor del artículo de los investigadores canadienses, Corsín cree que tiene un problema de enfoque. “El mayor desafío al que se enfrenta la ciencia en los próximos años es el del open science: el conocimiento abierto”, explica. “En los próximos años vamos a ver que las métricas y la forma de la valorar la ciencia va a cambiar. Los grandes grupos industriales editoriales están siendo desplazados por otras publicaciones comoPLoS ONE que están diseñando nuevas formas de valorar la ciencia, nuevos sistemas de circulación de la información, nuevos protocolos de generación de confianza, credibilidad y evidencias”, afirma. “En definitiva, estos investigadores, incluso aunque no tengamos en cuenta los errores del artículo, están dando una solución a un problema antiguo. Están dando ideas a los gestores con base en un sistema que se está cayendo”, concluye.

“Los grandes proyectos limitan la creatividad”

“Hay una deriva en la política científica en Europa de dar financiación a pocos proyectos muy grandes, que se ha copiado en España, y que ha sido muy negativa”, opina Luis Santamaría, investigador del CSIC y presidente de la Asociación para el Avance de la Ciencia y la Tecnología en España. Esas políticas, han reducido, según Santamaría, “la creatividad y el impacto a base de concentrar la financiación en proyectos que tienen mucha burocracia y en los que los evaluadores pueden no ser más creativos que los que proponen los proyectos”.

Lo mejor sería buscar un umbral mínimo y a partir de ahí diversificar la inversión

Desde el punto de vista del investigador, no obstante, también habría que evitar el café para todos porque hay un número muy elevado de profesores de universidad que no hacen ningún tipo de investigación. Lo ideal sería según él buscar un umbral mínimo y a partir de ahí diversificar la inversión. En este sentido, recuerda que el artículo de PLoS menciona el límite de 25.000 euros anuales como un límite inferior para poder obtener resultados y en los últimos tiempos hay programas del Plan Nacional de I+D que pueden no alcanzar ese mínimo.

Por último, Santamaría enfatiza la necesidad de hacer este tipo de estudios, “comparados en el tiempo y entre países y regiones con distintas filosofías” para poder valorar. “En el mundo de la gestión hay una resistencia a aceptar que las políticas son también un experimento y que no se puede predecir qué va a pasar. Se toma una decisión, influenciada por la ideología y luego se adaptan los datos a esa decisión”, concluye.

“Ya no es el momento del café para todos”

Carlos Muñoz, director del Instituto de Física Teórica, un centro galardonado con el distintivo de excelencia Severo Ochoa, plantea que “quizás estos estudios sirvan para países con larga tradición científica, que una vez establecida se estén centrando en optimizar los fondos, pero creo que el caso de España no encaja ahí”. España, continúa, “ha conseguido con mucho esfuerzo un razonable nivel científico, pero le falta dar un salto de calidad, la verdad es que no solo en ciencia sino en todo”. “Le faltan centros y proyectos de excelencia, como se pone de manifiesto en todas las estadísticas que se hacen por ejemplo de universidades, y le falta saber quienes son los mejores científicos y en que áreas están situados y a partir de ahí apoyarlos”, añade.

Respecto a la conclusión del artículo afirma que “ya no es el momento del café para todos. Eso estaba bien para alcanzar un nivel razonable científico, pero para pasar a otra etapa hace falta algo más”. No obstante, puntualiza que no se debe “descuidar la otra ciencia, porque no puede haber centros o investigadores muy buenos si no hay una masa crítica de científicos que los originen”.

En áreas como la secuenciación o las altas energías, la secuenciación no funcionaría

Por su parte, Emilio Muñoz, expresidente del CSIC y uno de los diseñadores de las políticas científicas de los primeros años de la democracia, considera que este tipo de estudios son muy necesarios, aunque cree que, en parte, los dos investigadores “han analizado los datos de manera que defienden la inversión diversificada en sus áreas, y ahí tiene pleno sentido”. Sin embargo, “en áreas como la secuenciación o las altas energías esto no funcionaría”. Sobre la forma de equilibrar el apoyo a la investigación diversa y a la excelencia, Muñoz recuerda que en los ochenta ya dividieron la financiación con dos grandes objetivos, uno el apoyo a la investigación fundamental, más amplio, y otro centrado en cumplir objetivos estratégicos.

Aunque las opiniones son muy diversas, se alcanza un cierto consenso sobre la necesidad de estudios que traten de valorar qué estrategias de financiación funcionan mejor. El elevado coste de las evaluaciones de los resultados de las investigaciones una vez que se han finalizado hace que muchas veces los encargados de realizar la política científica actúen, en buena medida, a ciegas. La falta de financiación, agravada por los últimos años de recortes, dificultará aún más el objetivo de aplicar, como dicen los investigadores canadienses, el método científico al propio trabajo de los profesionales de la ciencia.

FuenteEl ‘café para todos’ en ciencia puede ser más eficaz que dar el dinero a los mejores

Autor: Daniel Mediavilla

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>