Google abandona los estándares abiertos, actuando en contra de los intereses de sus usuarios.

Luego de que Google abandonara, luego de años de estar online, su servicio de RSS, anuncia ahora que mas cambios han de venir: un análisis hecho por la EFF, de título “Google abandona el apoyo de los estándares abiertos para la mensajería instantánea“, declara que los cambios no van a favor de los usuarios:

En medio de la conferencia anual I/O de Google, se hizo un desafortunado anuncio: En distintos lugares de su infraestructura, la compañía está reemplazando la plataforma “Talk” por la plataforma “Hangouts”, lo que disminuye significativamente el soporte de el protocolo de mensajería abierto conocido como XMPP (también mencionado informalmente como Jabber)

Se menciona que los cambios debieron hacerse para adaptar su nueva plataforma (Google+), pero presenta puntos a considerar, como por ejemplo el hecho de que el abandonar el estándar causa que los usuarios estén atados a utilizar Google+, y por lo tanto su única posibilidad de conectarse con los usuarios de Google+ a través del chat sería a través de el protocolo privativo de Google:

El apoyo de Google por el protocolo XMPP significó en su momento que los usuarios podrían chatear con gente en otros servicios de mensajería, o incluso con aquellos que tuvieran sus propios servidores […]

Esto es importante por muchas razones. Una de las principales es que ninguno de los clientes de Google soporta Off-the-Record (OTR) encryption, que se está convirtiendo en un componente crítico de la comunicación segura online. Si ambos participantes de una conversación usan OTR, tienen una comunicación segura de principio a fin, lo que significa que nadie excepto ellos dos — ni siquiera su proveedor de Internet — puede leer sus mensajes.

En el pasado, Google hizo otro cambio que imposibilita configurar el nivel de logging que queda guardado en los servidores. De su página de soporte:

Hemos hecho cambios a la configuracíon de historia de Google Talk y Google Chat. Todavía podes hacer que chats individuales queden “off the record”, pero no vas a tener la opción de hacerlo globalmente.

Estos cambios están llevando a cuestionar los intereses por los que se mueve Google, [1] [2] un giro interesante de eventos, porque Google tiene una larga historia apoyando la cultura Open Source y de promover los protocolos abiertos, tal como promovió XMPP en el 2005:

La misión de Google es hacer la información del mundo universalmente accesible y útil. Google talk, que le permite a los usuarios instantáneamente comunicarse con amigos, familia y colegas usando su llamadas de voz y mensajería instantánea, refleja nuestra creencia de que las comunicaciones debería de ser accesibles y también útiles.

Sin llegar a juzgar a Google por sus acciones, es evidente que su modelo de negocios (los anuncios [3], y el forzar a sus usuarios a una plataforma de la que no pueden salir, también conocido como “walled garden”) esta yendo en contra de la privacidad de los usuarios.

En sus explicaciones publicas, Google dijo que fue una decisión dificil, tomada por requerimientos técnicos. Pero incluso si este protocolo responde a necesidades técnicas, eso no debería evitar que la compañía lo haga público e interoperable. Publicar las especificaciónes de Google Hangouts sería un buen primer paso. Publicar código gratuito/libre debería suceder después de eso. Es claro que algunas funcionalidades se han implementado de manera muy específica a Google, pero eso no debería ser una razón para llevarnos a un mundo donde las únicas posibilidades prácticas son protocolos de chat privativos.

Función para generar RSS

¡Hola gente!

Los RSS son de gran utilidad para compartir información sobre nuestro sitio. El otro día me encontré en una situación en la que necesité generar uno dinámicamente. Busqué en google por el tema, pero no encontré nada… asique decidí compartir esto con ustedes.

/*
 * generates a rss feed. If an item has a key, it will be considered a tag like <$key>$value</$key>. 
 * Otherwise, $value will be placed straight in the rss
 * @author droope <pedro@worcel.com>
 * @param string $encoding the rss' encoding
 * @param array $channelProperties an array such as array('title' => 'Our cool RSS', 'link' => $site_url) 
 * @param array $items an array of arrays containing items and their properties. array(array('title' => 'Why we rule', '<enclosure url="logo.gif" type="image">'), array('title' => 'Lorem ipsum is simply dummy!'));
 * @param bool $output if set to true, headers will be set and rss will be ouptutted to the screen. Otherwise, output will be returned
*/
function rss_generate($encoding, $channelProperties, $items, $output = true) {
	
	$rss_url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
	
	if($output) {
		header("Content-type: text/xml; charset=utf-8");
	}
	$output = '<?xml version="1.0" encoding="'.$encoding.'" ?>
	<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	
	<channel>
	<atom:link href="'.$rss_url.'" rel="self" type="application/rss+xml" />
	';
	foreach($channelProperties as $property => $value) {
		if(!empty($property)) {
			preg_match("/^([\w:]+)(?:\s)?/", $property, $match);
			$closeTag = $match[1];
			$output .= "<$property>$value</$closeTag>";
		} else {
			$output .= $value;
		}
	}
	foreach($items as $item) {
		$output .= "<item>";
		foreach($item as $property => $value) {
			if(!empty($property)) {
				preg_match("/^([\w:]+)(?:\s)?/", $property, $match);
				$closeTag = $match[1];
				$output .= "<$property>$value</$closeTag>
				";
			} else {
				$output .= $value . "
				";
			}
		}
		$output .= "</item>";
	}
	$output .= "</channel></rss>";
	
	if($output) {
		echo $output;
	} else {
		return $output;
	}
	
}

Los RSS generados validan y cumplen todas las recomendaciones de el validador oficial de RSS. Este código ha sido testeado en +-70 sitios y funciona bien. En caso de que encuentre alguna anomalía, recordaré actualizar el código posteado aqui.

¡Espero que sea de utilidad! Feliz generación de RSS con php :D

Un saludo,
Pedro