21 mayo, 2009

Mozilla Jetpack


Pese a la dificultad de escribir extensiones para Firefox y que su uso aún requiere reiniciar el navegador, lo cierto es que el sistema de extensiones ha supuesto un antes y un después en la historia de los navegadores.

Google Chrome promete cambiar de golpe ambos problemas (la dificultad de creación y el engorro de reiniciar el navegador) mediante un sistema que se basa en las herramientas que ya están disponibles en el navegador: HTML, Javascript, CSS...

Lo cierto es que la idea era demasiado buena para que los responsables de Firefox se quedasen con los brazos cruzados, por lo Mozilla Labs acaba de publicar la primera preview de Jetpack.



Jetpack es un nuevo experimento que utiliza tecnologías abiertas para mejorar el navegador, con la meta de permitir que cualquiera que pueda crear una web pueda participar en hacer que la web sea un un mejor sitio para trabajar, comunicarse y jugar. En breve, Jetpack es una API para facilitar la creación de extensiones de Firefox usando tecnologías con las que ya estás familiarizado.

Los objetivos son los siguientes:

Basado en la Web

  • HTML, Javascript, y CSS serán las únicas herramientas necesarias
  • Tener toda la potencia de la Web abierta: capacidades AJAX y multimedia incluyendo <canvas>, <audio> y <video>
  • Ligero y accesibles mediante una URL, como el resto de la Web
  • Depuración en el navegador sin reiniciarlo y usando herramientas comunes de desarrollo Web como Firebug

Seguro

  • Permite acceso sólo a los privilegios necesarios, sin temas de seguridad presentados de forma social y no técnica
  • Código breve y sencillo de revisar que asegura que los potenciales problemas de seguridad sean superficiales y los tiempos de revisión breves

Robustez

  • APIs versionadas de forma que no sea necesario actualizar y revalidar el código con cada nueva versión de Firefox
  • Ligero pero lleno de características, permitiendo que aplicaciones complejas y simples se sumen a la experiencia Web, igual que las extensiones hoy día

Extensible

  • La arquitectura permitirá la inclusión de toolkits de terceros revisados y versionados (p.e. jQuery, Dojo, etc.) y de librerías API (p.e. Twitter, Delicious, Google Maps, etc.)

Ejemplo de extensión (un notificador de Gmail):
// Inicia el componente de barra de estado

jetpack.statusBar.append({
  html: '<img src="http://mail.google.com/mail/images/favicon.ico"><span id="count"></span>',

  onReady: function(doc) {
    var gmail = new GmailNotifier(doc);
  },

  width: 20
});

// Notificador de Gmail

function GmailNotifier(doc){
  $(doc).click(this.goToInbox);
  this.update(doc);
  setInterval(function() {
    this.update(doc);
  }, 60 * 1000);
}

GmailNotifier.prototype = {

  goToInbox: function() {
    jetpack.tabs.open("http://mail.google.com");
    jetpack.tabs[ jetpack.tabs.length-1 ].focus();
  },

  update: function(doc) {
    var url = "http://mail.google.com/mail/feed/atom";
    doc = $(doc);
    $.get( url, function(xml){
      var el = $(xml).find("fullcount"); // Cuenta de mensajes por leer
      if (el) {
        var count = el.get(0).textContent;
        doc.find("#count").text( count );
      } else {
        doc.find("#count").text( "Login" );
      }
    });
  }
}
Via Ajaxian.

Addendum: Elijah Gray ha recopilado la información sobre la API que no está completa en la página oficial y la ha publicado en su blog.

2 comentarios:

JuanPablo dijo...

supongo qla idea la sacaron greasemonkey.

Àl dijo...

Yo más bien me inclino a la amenaza que supone para Firefox que los plugins de Chrome sean mucho más fáciles de escribir. Recordemos que gran parte de los usuarios de Firefox se han pasado desde Internet Explorer gracias a la capacidad de personalización que el primero no tenía.

Publicar un comentario en la entrada

Últimos links en indiza.com