/** * 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'); Cómo abrir el Parlamento - SesiónDeControl.comSesiónDeControl.com
Arrow

Cómo abrir el Parlamento


0
Miguel Ángel Gonzalo

Archivero-Bibliotecario de las Cortes Generales de España. Webmaster de www.congreso.es


Escrito el 18 de febrero de 2014 a las 12:47 | Clasificado en Libros

Este libro gratuito recoge las aportaciones realizadas en una jornada organizada por la Fundación Ideas y la Fundación Friedrich Ubert que reunió a organizaciones de la sociedad civil dedicadas a la fiscalización y la monitorización de la actividad parlamentaria y política.

Portada del libro editado por la Fundación Ideas y la Fundación Friedrich Ebert
Portada del libro editado por la Fundación Ideas y la Fundación Friedrich Ebert

El pasado 4 de julio tuvo lugar la jornada ‘Parlamentos abiertos a la sociedad: participación y monitorización’ organizada por la Fundación Ideas y la Fundación Friedrich Ebert en Madrid el pasado 4 de julio. La idea central del encuentro fue reunir a representantes de las principales organizaciones que tienen entre sus objetivos el seguimiento de la actividad parlamentaria con un propósito de incrementar el necesario control y fiscalización sobre el trabajo de los diputados. Fruto de esa jornada es el ebook de idéntico título ‘Parlamentos abiertos a la sociedad’, en el que tuve la suerte de participar en su coordinación conjuntamente con Irene Ramos y Eva Campos.

Frente a los frecuentes ‘tics’ de antipolítica que pretenden crear un estado de opinión contrario al parlamentarismo difundiendo la idea de que el diputado apenas trabaja, es absentista, no pisa las Cámaras, sólo consume gin-tonics y otras  especies similares que habría que aclarar alguna vez qué finalidad persiguen. En la jornada y en el libro que se comenta aquí, se pretende mostrar que el trabajo de estas organizaciones tiene una vista de oportunidad para el Parlamento para generar confianza y recuperar credibilidad.

La información tiene efectos sobre el resultado, como gusta explicar Ignacio Escolar y, en ese sentido, el trabajo a partir de los datos que realizan estas organizaciones, aún con sus limitaciones, no es un trabajo ‘anti-sistema’ sino precisamente para restaurar aquel viejo principio de la democracia liberal americana de los ‘checks and balance’, de frenos y contrapesos entre los poderes.

Como señala Ignacio Sánchez Cuenca en su reciente libro ‘La impotencia democrática‘ la gente  rechaza la política tradicional por los malos resultados económicos e, igualmente, rechaza la manera insatisfactoria en la que el poder político aborda el problema lo que acaba generando una crisis de legitimidad del sistema. Posiblemente, mientras en la población no se perciba un cambio radical del reparto de los esfuerzos en la superación de la crisis, es decir, un cambio en la percepción de que el resultado de la crisis está agrandando la desigualdad entre los habitantes, no se resolverá el problema de fondo de legitimidad y confianza de las instituciones.

El tema de los desahucios como metáfora  sirve para ilustrar una percepción en la ciudadanía de que los poderes públicos y las instituciones no están tratando por igual a las personas ante un problema. Se rescata a los bancos porque se consideran claves para la estabilidad del país y se persigue a las personas cuando lo que intentan es, llamamente, subsistir.

Este contexto es el que impacta directamente sobre el Parlamento. Desde el parlamentarismo más clásico, incluso kelseniano, se ha entendido que el parlamento defendía el “interés general” dando sentido y coherencia a la acción del Estado frente a la fragmentación inherente a los planteamientos inconexos de múltiples individuos. Cuando amplios sectores de la ciudadanía creen ver que en el Parlamento no se defiende el interés general se abre la vía a alternativas de todo tipo, soluciones populistas o soluciones que plantean la disolución del sistema representativo.

Un problema que no es español

Esta situación que se describe hasta ahora no es particular de España. Si se ponen las luces largas, como le gusta decir a Antoni Gutiérrez-Rubí, y se ven los debates que sobre los problemas de legitimidad de otros Parlamentos en todo el mundo, se puede comprobar que la situación española representada por el tristemente famoso ‘Rodea el Congreso’ no es una particularidad de la idiosincracia española fruto de nuestro “provincianismo” sino que Parlamentos de todo el mundo están pensando también cambios que afectan a la transparencia, a la apertura de sus datos a la ciudadanía a la mejora de la interacción y la participación de los ciudadanos en el procedimiento parlamentario.

En un nivel no tan global sino eminentemente técnico, en las reuniones en el ámbito europeo en las que participamos funcionarios de Parlamentos agrupados alrededor del ECPRD, también se pueden ver en las presentaciones realizadas en Londres, Madrid o Bruselas como se van dando respuestas en términos de apertura del parlamento a esta problemática. Una conclusión es que estos proyectos de “Parlamento abierto” son condición necesaria pero no suficiente para cerrar la brecha de confianza en los Parlamentos pero han de ser observados en su valor.  En ocasiones, en términos pedagógicos, resulta provechoso poner el acento en los avances, aunque sean pequeños, que estar todo el tiempo machacando al alumno sobre todo lo que hace mal y todo lo que le falta por resolver o implantar.

En el libro, Antoni Gutierrez-Rubí señala en el prólogo cómo en el ebook se pueden encontrar ejemplos y referencias internacionales que no son “quimeras, desafíos irrealizables o experimentos de laboratorio político” sino que nos “muestran una gama completa y compleja de escenarios donde la tecnología cambia las ecuaciones y las relaciones y como mejora,  modifica y evoluciona las prácticas legislativas, parlamentarias y representativas”. La vigilancia que realizan las organizaciones incluidas en el ebook “no es desconfianza sistemática y organizada, es salud democrática”.

El contenido del libro

En el primer capítulo, Alejandro Peral desarrolla la idea de la legitimación del Parlamento con la ayuda de la participación ciudadana y la rendición de cuentas, contestando a las críticas que esta idea recibe de algunos sectores que ven en la apertura a la participación un vuelco hacia los valores individualistas de la sociedad, la poca cultura participativa existente así como su difícil implementación. Para Peral la apertura parlamentaria solo potencia las característica ideas que David Beetham fijaba para un Parlamento: representativo, transparencia, accesible, responsable y eficaz.

Eva Campos nos ayuda a realizar el recorrido desde lo académico a la acción cívica pasando por un análisis de los principales documentos internacionales sobre el concepto de “transparencia parlamentaria” tales como la propia ‘Declaración sobre la transparencia parlamentaria’, el Informe Mundial sobre el parlamento Electrónico auspiciado por el Global Center for ICT in Parliaments o las directrices para los sitios web parlamentarios que ha ido aprobando la Unión Interparlamentaria. Como señala Eva Campos, “en el Parlamento de la Gobernanza abierta los usuarios disfrutan de un acceso sin precedentes a la información y al conocimiento. Esto impulsa la inteligencia colectiva y se abren las posibilidades para la provisión de servicios públicos, personalizados y a tiempo real”.

Enlazando con lo anterior, en su capítulo Andrew Maldelbaum y Dan Swislow, impulsores de la citada Declaración sobre Transparencia Parlamentaria, cuenta en su capítulo como el interés de los ciudadanos por hablar cada vez más sobre política y de políticas públicas es un fenómeno mundial, desde Brasil a la India. La ventaja competitiva para los parlamentos que suscriban los principios de la declaración está en que demostrarán liderazgo y fortalecerán su voz a la hora de instar a los gobiernos a tener en cuenta sus propios compromisos con la transparencia.

A nivel mundial un estudio del National Democratic institute identificó, ya en el año 2011, más de 190 0rganizaciones de la sociedad civil en todo el mundo dedicadas a monitorizar el funcionamiento parlamentario. En su capítulo se hace una excelente panorámica de organizaciones como Theyworkforyou.com, Misociety.org, GovTrack.us, Congreso Visible, Al Bawsala en Túnez, Kohovolit  en la República Checa y muchas más.  La declaración, como explican Andrew y Dan, supone una hoja de ruta hacia una cultura de apertura parlamentaria en un mundo basado en la tecnología.

Para el libro se tuvo la fortuna de poder incorporar a Cristiano Ferri Soares que es el responsable del interesante proyecto e-Democracia de la Cámara de Diputados de Brasil. El proyecto es un ejemplo real y en funcionamiento de cómo poder en marcha con el respaldo institucional de la Cámara una plataforma de participación digital, un foro deliberativo en suma, que busca facilitar la discusión virtual entre ciudadanos y parlamentarios durante el proceso legislativo.

Resulta significativo cómo describe cuáles son los factores que llevaron al fracaso de unos primeros foros participativos y cuáles son los elementos de éxito de otros, tales como adecuar el foro con flexibilidad para que sirve, según el caso, para la discusión de principios generales de políticas públicas así como para la aportación, en otro caso o momento, de aportaciones concretas en forma de enmiendas a los textos. Una variante sugerente del proyecto es el establecimiento, en paralelo al propio foro de aportaciones, de “comunidades virtuales legislativas” como otra forma de discusión.

Hay que destacar que estas formas de participación requieren que las cámaras destinen no pocos recursos humanos y materiales para el mantenimiento de los foros, la elaboración de resúmenes e infografías útiles de las discusiones… Entre los problemas que destaca Cristiano Ferri para la participación de los diputados se señalan algunos que pueden ser comunes con el caso español como es la falta de tiempo y la dificultad para utilizar herramientas digitales de interacción.

David Cabo, en  representación de la Fundación Civio, describe en su capítulo la situación de la apertura de datos en España y señala principios y directrices acerca de cómo abordarla de manera adecuada y útil para los ciudadanos y para las organizaciones de la sociedad civil.

Si estamos hablando de seguimiento de la actividad de Congreso y Senado el gran experto es David Álvarez, que en su capítulo describe el ecosistema digital político en España dentro del cual los proyectos ciudadanos de monitorización comparten características tales como el uso intensivo de las redes sociales, la inteligencia colectiva y la co-creación y las prácticas de financiación novedosas como el crowdfunding. En sus líneas se pueden encontrar, además de datos sobre la presencia en redes de Congreso y Senado, algunas sugerencias de mejora a considerar.

Pasando ya a las experiencias ciudadanas de monitorización parlamentaria, Alba Gutierrez en representación del Proyecto Avizor describe su objetivo como el de “contribuir a facilitar el control ciudadano y la exigencia de responsabilidades a los representantes políticos aportando transparencia e información sobre el trabajo que desempeñan como paso previo y necesario para la acción y el activismo ciudadano”.  El enfoque principal de Proyecto Avizor está en la monitorización de los temas relacionados con la pobreza. Una de sus actividades principales es la elaboración de un informe anual sobre los actos parlamentarios en materia de desarrollo.

Pablo Martín Muñoz, en representación del Colectivo Openkratio, describe en su capítulo como su actividad gira en torno al mismo principio: el derecho de acceso a la información. El Proyecto Colibrí proporciona un ecosistema de consulta de la actividad parlamentaria en el Congreso de los Diputados ofreciendo una API para que los programadores puedan construir aplicaciones de forma rápida y sencilla basada en dichos datos.

Para cerrar el ebook Irene Ramos, Loredana Stan y Álvaro Maldonado hacen un resumen de los logros y retos pendientes para la apertura del Parlamento. Entre los logros de la Declaración de Transparencia Parlamentaria están aumento de las posibilidades de comunicación y participación ciudadana, inclusión en la agenda política, la Declaración de Transparencia como acuerdo y referencia global, contribución a hacer factible la intervención ciudadana en el debate público, impulso de la actividad asociativa en el espacio político desde la sociedad civil  y una mayor capacidad y exigencia para el ejercicio de la rendición de cuentas.

Entre los retos están la implementación e intensificación de canales de comunicación bidireccionales, la mayor colaboración horizontal entre las PMO, la búsqueda de sinergias entre asociaciones e instituciones implicadas, la implicación efectiva por parte de todos los actores afectados, la promoción del interés de la sociedad civil para que participe en la vida política y regeneración democrática y mejora de los mecanismos representativos.

Por último sólo queda agradecer muy sinceramente a todos los autores del ebook y a todos los participantes en la jornada inicial su entusiasmo y su generosidad para impulsar el proceso hacia un parlamento abierto.

El ebook puede encontrarse, de forma gratuita y con licencia CC en formato PDF en Scribd y en formato epub en las plataformas Bubok y en Kobo

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>