/** * 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'); ¿Prosperidad sin crecimiento? - SesiónDeControl.comSesiónDeControl.com
Arrow

¿Prosperidad sin crecimiento?


1
Juan Moscoso del Prado

Nacido en 1966, Doctor en Ciencias Económicas y Empresariales. Portavoz de Economía del PSOE en el Congreso


Escrito el 10 de julio de 2014 a las 9:53 | Clasificado en PSOE

La consecución y el soporte de la actividad económica alimentando el consumo contra endeudamiento no implica crecimiento sino un adelantamiento de consumo del futuro al presente.

Nuestro país y el mundo han cambiado tanto que desde la izquierda no nos debe asustar buscar y exigir respuestas distintas a los problemas de nuestra democracia. Respuestas que se replanteen casi todo.

Y, probablemente, lo prioritario sea formular una alternativa sólida y consistente de crecimiento sostenible, de desarrollo frente al crecimiento estadístico sin matices, que tome note de los errores y fracasos del último ciclo y que garantice un futuro mejor para las siguientes generaciones.

Desde la crisis económica de la década de los ’70 con frecuencia se acusa a la izquierda de no tener un modelo alternativo de crecimiento, de saber distribuir pero no producir, lo cual no es verdad. Con todo, esa afirmación encuentra eco fácil en la memoria histórica de oposición de los movimientos obreros al capitalismo industrial y a sus consecuencias sociales, o a su manera de comportarse explotando trabajadores, a la naturaleza y en ocasiones a naciones enteras. La historia ha demostrado que las crisis no han desaparecido y que la mejor manera de crecer sosteniblemente es distribuir la riqueza y reforzar la igualdad de oportunidades para garantizar el ejercicio de la libertad en todas sus variantes, también la económica y el emprendimiento. Crecer hoy exige dos elementos irrenunciables: capital humano –conocimiento-, y buenas instituciones.

Un buen ejemplo y definición del nuevo tipo de crecimiento económico que debemos perseguir y que responde mejor a la definición de “desarrollo económico” es la utilizada en la ponencia de la Conferencia Política celebrada por el PSOE en noviembre de 2013:

“Pero para ello es necesario un cambio de rumbo en las políticas públicas para que propicien lo antes posible el desarrollo económico y que dicho crecimiento sea sostenido y duradero, que permita planificar el futuro y crear la confianza necesaria para las generaciones futuras. Que sea equilibrado, tanto con el entorno y el medio ambiente, como en la distribución de la renta, presente y futura, y que palie los desajustes de los ciclos económicos. Que sea integrador, que refuerce la igualdad de oportunidades en todos los ámbitos (educativo, laboral, social…) y a lo largo de todo el ciclo vital -de la infancia a la vejez-; que garantice el acceso de todos y todas en condiciones de igualdad a los servicios esenciales; a favor de la igualdad entre hombres y mujeres, comprometidos con las personas con discapacidad y quienes sufren pobreza y riesgo de exclusión; en definitiva, comprometido con la diversidad, la igualdad y la pluralidad”.

En definitiva un “desarrollo económico equilibrado y sostenible”, porque “las evidencias empíricas demuestran que las sociedades más cohesionadas son las más prósperas y eficaces”.

Es cierto que las pesimistas teorías de los ’70 y ’80 sobre el límite del crecimiento que dieron lugar a interesantes debates y conceptos como el del “crecimiento cero” acuñado por el Club de Roma, han quedado hoy en segundo plano, aunque autores como Tim Jackson han reabierto la cuestión.

Aunque el concepto de crecimiento cero del Club de Roma haya quedado cuando menos aparcado por el intenso crecimiento de las últimas décadas y el avance tecnológico y energético que parecía garantizar una sociedad de rentas altas prácticamente global, la crisis ha vuelto a poner de manifiesto los evidentes límites que existen.

Por ello merece la pena repasar las ideas de Tim Jackson recogidas en su trabajo ‘Prosperidad sin crecimiento’ sobre el dilema del crecimiento.

Jackson sostiene que el crecimiento económico registrado en las últimas décadas es insostenible, tanto porque vivimos en un planeta finito como por el modelo económico dominante. No sólo por razones ecológicas. Así, los recursos pudieron ser reemplazados por tecnología hasta el final del siglo XX, pero ya no es posible seguir haciéndolo. Esta tendencia ha cambiado y las commodities –materias primas- suben de precio. En su opinión en el siglo XXI comprobaremos que las commodities baratas se han acabado para siempre.

Su planteamiento continúa con la afirmación de que el crecimiento ya se había parado antes de la crisis financiera de occidente. La combinación de crisis de crecimiento, inestabilidad financiera, aspiración insostenible a acumular más y más bienes contra deuda y crédito, habría llevado a una situación insostenible, sistémicamente imposible.

Es innegable que el crecimiento aporta infinidad de elementos positivo a la sociedad. El crecimiento es la principal variable explicativa de la mejora de las variables relevantes en los países pobres hasta que alcanzan los 5.000 dólares de renta per cápita, en los que la renta sí marca la pauta del bienestar humano de esas sociedades. Sin embargo, a partir 10.000-15.000 dólares per cápita la correlación se debilita o incluso se invierte en algunos indicadores clave, por ejemplo la esperanza de vida al nacer en el Reino Unido es menor que en Costa Rica.

Jacskon cree en la inestabilidad intrínseca del modelo económico imperante, hecho que oculta el verdadero y profundo dilema, porque el decrecimiento y la crisis son inestables. Así, perseguimos el crecimiento porque no hay nada mejor, porque el decrecimiento es inestable, porque no existe otra alternativa.

Jackson denomina economía del colapso a la búsqueda desenfrenada del aumento de la productividad del trabajo, que si se alcanza provoca efectos sobre todas las demás variables -nivel de empleo, recaudación fiscal, gasto público…-, provocando consecuencias que con cada vez mayor frecuencia son negativas como la deslocalización o el aumento de la desigualdad. Sin embargo, buscamos el crecimiento porque el estancamiento o pérdida de renta es todavía una alternativa peor.

En mi opinión es evidente que la consecución y el soporte de la actividad económica alimentando el consumo contra endeudamiento no implica crecimiento sino un adelantamiento de consumo del futuro al presente. Cuando la carga financiera se vuelve insostenible se acaba produciendo una crisis de endeudamiento como la actual, de la que se tarda en salir porque exige el desapalancamiento de los agentes económicos. Sin embargo, a pesar de las limitaciones físicas y espaciales de nuestro planeta, y de las evidentes debilidades del marco regulatorio y normativo global, de los fallos en gobernanza económica que no han sido corregidos desde que estallara la crisis en 2008, tengo dudas sobre los límites al crecimiento porque soy básicamente optimista respecto a los avances que puedan obtenerse en el futuro como resultado de la evolución tecnológica en todo tipo de ámbitos, campos como el energético, y los que puedan garantizar la mejora constante de la calidad de vida sin extenuar los recursos naturales y el espacio, los dos recursos indiscutiblemente finitos. En este sentido, en cuanto al avance de la tecnología y la disponibilidad futura de ella, quizás soy más optimista.

Crecer es distinto que adelantar consumo contra deuda. Es evidente que el consumo material infinito es insostenible, sin duda una estrategia suicida si se hace contra crédito, como auspició el sistema financiero en el anterior ciclo, y sin que regulador alguno advirtiera a tiempo sobre lo que estaba pasando. Hoy la de deuda acumulada sobre consumo pasado es inmensa, inmobiliaria pero también de otro tipo.

Entre los progresistas, el presidente Bill Clinton se caracterizó por lograr mejorar claramente los indicadores económicos de su país utilizando ese recurso, el crédito para consumo y compra de vivienda, un error. Después, se volvió a demostrar que endeudarse para generar más y mejor capacidad productiva no tiene nada que ve con endeudarse para consumir bienes duraderos como se hizo durante el mandato de Bill Clinton.

Volviendo a Jackson, concluye que para garantizar una economía estable y mejor, y un bienestar humano real sostenido en lo que él llama prosperidad sostenible, hacen falta alcanzar tres grandes objetivos.

En primer lugar es necesario referirse a la idea de prosperidad mejor que a la de crecimiento. Prosperidad es calidad de vida, no sólo es crecimiento material; consumo, es más que ello, es salud social y psicológica, participación en la sociedad, es el arte de vivir bien en un planeta finito. El reto es construir una economía que sirva a ello: empresas, inversión y recursos deben trabajar para lograr ese fin de prosperidad. Así, con empresas que sirvan a la gente, en salud, educación, rehabilitación de vivienda, servicios de mejora vida -ocio, cultura, prestaciones sociales como la dependencia u otros-.

En segundo lugar, entonces, una economía de la prosperidad debe orientar la actividad económica hacia los sectores que no implican acumulación material, que no aumentan el impacto material sobre naturaleza, en general también sectores ricos en empleo como el que antes citaba, el de la dependencia o los servicios entre personas. Sectores con mucho empleo y bajas emisiones perjudiciales para la naturaleza. Ello conduce a invertir con la lógica de inversión sobre un modelo de futuro distinto en los sectores verdes, en energías renovables, transporte público, naturaleza, servicios en empresas dedicadas a la prosperidad.

En tercer lugar, quizás lo mas difícil de conseguir, lo que choca más con la inercia en la que vivimos, Jackson considera imprescindible transformar también la naturaleza del sistema bancario y financiero, y del sistema monetario y financiero por el que se genera el dinero, la oferta monetaria. Jackson considera que la naturaleza del dinero es compleja e inestable -el 90% se genera vía crédito-. Es evidente que el campo de la banca ética, de los otros tipos de créditos, de la inversión cívica, constituyen todavía un campo sin explorar en el que la izquierda debe adentrarse con valentía. No hay que olvidar que John Maynard Keynes (en su obra ‘The general theory of employment, interest and money’) alertó sobre la inestabilidad intrínseca de la economía de mercado hace más de 80 años.

Es interesante detenerse en un último elemento, el que podríamos denominar  macroeconomía sostenible, y en lo que implicaría en materia de oferta de dinero, de crédito y endeudamiento, de fiscalidad. Enfoque de sostenibilidad que puede también utilizarse para analizar otros ámbitos como, por ejemplo, el comercio internacional. Porque, ¿ha existido alguna vez un verdadero comercio justo?

Las conclusiones de Jackson son claras: no cree que exista ni vaya a hacerlo tecnología para garantizar un crecimiento exponencial, considera que no es posible alcanzar los niveles de bienestar occidental en todo el mundo, y que la inestabilidad del sistema económico actual, de la economía, lo hacen inalcanzable.

Esta reflexión, auque genere algunas dudas, sirve para destacar las debilidades estructurales de la economía presente y las consecuencias para el crecimiento y la sostenibilidad a medio plazo de algunas decisiones muy recientes. Por ejemplo, de la austeridad, en un momento en el que la inversión productiva, en innovación o educativa, sufre sus consecuencias mientras se
desvían recursos, que podían ser muy valiosos para converger hacia esa prosperidad a instituciones financieras quizás insostenibles. Todo ello mientras las empresas no consiguen recursos para salir adelante, de ninguna manera, ni sostenible ni insosteniblemente, realidades que demuestran la necesidad de reforzar el papel del Estado, del sector público, y de regular bien.

El crecimiento permite redistribuir renta y distribuir bienes y servicios, satisface necesidades humanas crecientes y mejora calidad vida, creatividad y ocio. El crecimiento facilita la reducción de  las desigualdades y de la pobreza. El desafío del siglo XXI es convertir ese crecimiento en lo que la idea de “desarrollo económico” implica para alinear el desarrollo económico global con los valores y principios de una sociedad democrática con verdadera justicia social.

Los votantes dicen...
  1. Información Bitacoras.com

    Valora en Bitacoras.com: Nuestro país y el mundo han cambiado tanto que desde la izquierda no nos debe asustar buscar y exigir respuestas distintas a los problemas de nuestra democracia. Respuestas que se replanteen casi todo. Y, probablemente, lo p…

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>