Jul 23

The Open Web Foundation; Apache for the other stuff

Tech with tags: , , 3 Comments »

I am excited to see the recent talk of Open Web Foundation is now out there. I think that it is poised to become a great new corner of the Web giving us a place for the other stuff.

Let’s take an example. Imagine that you came up with a great idea, something like OAuth. That great idea gains some traction and more people want to get involved. What do you do? People ask about IP policy, and governance, and suddenly you see yourself on the path of creating a new MyApiFoundation.

Wait a minute! There are plenty of standards groups and other organizations out there, surely you don’t have to create MyApiFoundation?

Well, there is the W3C and OASIS, which are pay to play orgs. They have their place, but MyApi may not fit in there. The WHATWG has come up with fantastic work, but the punting on IP is an issue too.

MyApi has some code in there, so how about putting this in Apache? Apache is great for code, but it doesn’t deal with the other stuff, which is fine. That isn’t its mandate. Apache does things very well though, especially when it comes to governance and the incubator process. What if we had a foundation that had some of the same values around people participating (so anyone can, versus companies) and a varied community (not just a few blokes from the same company).

This is why I am hopeful for the Open Web Foundation. It is a new place to look at if you come up with something helpful for the Open Web, a place that may match your values.

But wait a minute, what about this “Open Web” thing again. As I just said on a post about defining the term, people can’t agree on what the darn thing is! There is a lot of gut feel “Flash and Silverlight are not the Open Web, but GWT is!”

I believe that the Open Web Foundation needs to be a leader in working this out. With metrics in place, the foundation can bless projects that meet the requirements. When a project starts it may not be Open Web yet (e.g. multiple browser implementations). We need a place to move forward and push the Web. Can’t wait to see what happens there.

Apr 16

Gears Future APIs: Database 2.0 API meshes with HTML5 Storage API

Gears, Tech with tags: , , 4 Comments »

Aaron Boodman wrote a fantastic post on Gears and Standards which I am very passionate about myself.

In it he talks about the HTML5 Storage API and how we are all working together to unify the database access semantics.

You can see the Database 2 API which aims too:

  • Enable Javascript developers to easily write code that works with both Gears and browser database APIs
  • Reduce developer “mind-print” by implementing the same API that is available in browsers
  • Support the proposed HTML5 database standard with an implementation available for all browsers that Gears supports
  • Implement an asynchronous API that can be called from the UI thread without freezing the UI
  • Implement a synchronous API to simplify usage inside workers
  • Implement a thread pool abstraction that can be used in other modules for asynchronous operations (bonus)
  • build a new module from scratch using the new Dispatcher model (bonus).

It would allow you to write code such as:

var dbman = goolge.gears.factory.create('beta.databasemanager');
var db = dbman.open('pages', '0.0.1.0',
  'Collection of crawled pages', 3000000);
 
function renderPageRow(row) {
  // insert page row into a table
}
 
function reportError(source, message) {
  // report an error
}
 
function renderPages() {
  db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS Pages(title TEXT, lastUpdated INTEGER)', 
      []);
    tx.executeSql('SELECT * FROM Pages', [], function(rs) {
      for(var i = 0; i < rs.rows.length; i++) {
        renderPageRow(rs.rows.item(i));
      }
    })
  })  
}
 
function insertPage(text, lastUpdated) {
  db.transaction(function(tx) {
    tx.executeSql('INSERT INTO Pages VALUES(?, ?)', [ text, lastUpdated ],
      function() {
        // no result returned, stub success callback
      },
      function(tx, error) {
        reportError('sql', error.message);
      });
  });
}

There is a full technical design, so you can get involved and take part in the open source / open community process that we have going on in Gears land.

I will again end with my visualization of the zipper :)