Mashup the Browser with Ubiquity and Jetpack

107
mitcho Michael Yoshitaka Erlewine TechMaine 17th Annual Conference Portland, Maine, December 10, 2009 mashup the browser with ubiquity and Jetpack

description

Ubiquity and Jetpack are two experiments at Mozilla Labs which are revolutionizing the ways users can interact with and customize their browsing experience. Both projects directly tackle the disconnected nature of the web by introducing user-generated mashups at the browser level, making our increasingly web-centric experiences more productive and "humane." Users and developers can now easily extend the Firefox browser with little more than the JavaScript language already used on the web.In this presentation, you'll see how Ubiquity and Jetpack can transform your browsing experience and learn the basics of writing JavaScript code for Ubiquity and Jetpack. The presentation will also include discussion of the user-interface philosophy underlying Ubiquity and its multilingual natural language interface.

Transcript of Mashup the Browser with Ubiquity and Jetpack

Page 1: Mashup the Browser with Ubiquity and Jetpack

mitchoMichael Yoshitaka Erlewine

TechMaine 17th Annual Conference

Portland, Maine, December 10, 2009

mashup the browser withubiquity and Jetpack

Page 2: Mashup the Browser with Ubiquity and Jetpack

mitcholinguist, coder, teacher

Mozilla Labs, MIT

CC-BY-NC-SA: flickr.com/photos/jimgris/3538639095/

?mitcho.com @mitchoyoshitaka

Page 3: Mashup the Browser with Ubiquity and Jetpack

envisioning the future of the web

Page 4: Mashup the Browser with Ubiquity and Jetpack

envisioning the future of the web

• the you-centric web:

• social identity

• interacting with the web

• hackability

Page 5: Mashup the Browser with Ubiquity and Jetpack

envisioning the future of the web

• the you-centric web:

• social identity

• interacting with the web

• hackability

Page 6: Mashup the Browser with Ubiquity and Jetpack

envisioning the future of the web

• the you-centric web:

• social identity

• interacting with the web

• hackability

Page 7: Mashup the Browser with Ubiquity and Jetpack

envisioning the future of the web

• the you-centric web:

• social identity

• interacting with the web

• hackabilitytoday

Page 8: Mashup the Browser with Ubiquity and Jetpack

envisioning the future of the web

• the you-centric web:

• social identity

• interacting with the web

• hackability

Page 9: Mashup the Browser with Ubiquity and Jetpack

you live your life online

Page 10: Mashup the Browser with Ubiquity and Jetpack
Page 11: Mashup the Browser with Ubiquity and Jetpack
Page 12: Mashup the Browser with Ubiquity and Jetpack
Page 13: Mashup the Browser with Ubiquity and Jetpack
Page 14: Mashup the Browser with Ubiquity and Jetpack

your social graph is online

Page 15: Mashup the Browser with Ubiquity and Jetpack
Page 16: Mashup the Browser with Ubiquity and Jetpack
Page 17: Mashup the Browser with Ubiquity and Jetpack

aza = window.people.find({name:“Aza Raskin”});

aza.send(“Greetings from TechMaine!”);

Page 18: Mashup the Browser with Ubiquity and Jetpack

your browser should be yours

Page 19: Mashup the Browser with Ubiquity and Jetpack
Page 20: Mashup the Browser with Ubiquity and Jetpack
Page 21: Mashup the Browser with Ubiquity and Jetpack
Page 22: Mashup the Browser with Ubiquity and Jetpack
Page 23: Mashup the Browser with Ubiquity and Jetpack

envisioning the future of the web

• the you-centric web:

• social identity

• interacting with the web

• hackability

Page 24: Mashup the Browser with Ubiquity and Jetpack

mashup the browser withubiquity and Jetpack

three problems:

1. interaction

2. language

3. hackability

Page 25: Mashup the Browser with Ubiquity and Jetpack

how do we interact with the web?

Page 26: Mashup the Browser with Ubiquity and Jetpack

how do we interact with the computer?

Page 27: Mashup the Browser with Ubiquity and Jetpack

CC-BY-NC-SA: flickr.com/photos/pixcat/2324175139/

Page 28: Mashup the Browser with Ubiquity and Jetpack

1984

Page 29: Mashup the Browser with Ubiquity and Jetpack

1997

Page 30: Mashup the Browser with Ubiquity and Jetpack

2001

Page 31: Mashup the Browser with Ubiquity and Jetpack

can you spot the difference?

Page 32: Mashup the Browser with Ubiquity and Jetpack

• Following the GUI paradigm...

• add more buttons?

• add more menus?

The web is offering more and morefunctionality and API’s...

...but how do you use them?

Page 33: Mashup the Browser with Ubiquity and Jetpack

CC-BY-SA: flickr.com/photos/daveduarte/2678853923/

Page 34: Mashup the Browser with Ubiquity and Jetpack

from http://tecfa.unige.ch/~nova/img/lopez1.png

Page 35: Mashup the Browser with Ubiquity and Jetpack
Page 36: Mashup the Browser with Ubiquity and Jetpack

Aza RaskinCC-BY-NC: flickr.com/photos/santheo/2360961001/

Page 37: Mashup the Browser with Ubiquity and Jetpack

ACM interactions 2008

Page 38: Mashup the Browser with Ubiquity and Jetpack

CC-BY-SA: flickr.com/photos/seanosh/3307290530/

“Standard GUIs, with their drop-down menus, check buttons, and tree-lists, cannot compare to the range of options that a text interface effortlessly provides. With just five alphanumeric characters, we can choose one out of 100,000,000 possible sequences... It’s difficult to come up with a non-text-based interface that can perform as well.”

Aza Raskin on

text-based interfaces

Page 39: Mashup the Browser with Ubiquity and Jetpack

CC-BY: flickr.com/photos/striatic/1629254/

Page 40: Mashup the Browser with Ubiquity and Jetpack

?

Page 41: Mashup the Browser with Ubiquity and Jetpack
Page 42: Mashup the Browser with Ubiquity and Jetpack

CC-BY-SA: flickr.com/photos/seanosh/3307290530/

Aza Raskin on

text-based interfaces

“...maybe this confusion isn’t the fault of command-line interfaces in general; maybe it’s just the command lines we’re used to. If commands were memorable, and their syntax forgiving, perhaps we wouldn’t be so scared to reconsider these interface paradigms.”

Page 43: Mashup the Browser with Ubiquity and Jetpack

CC-BY-SA: flickr.com/photos/seanosh/3307290530/

Aza Raskin on

text-based interfaces

“...maybe this confusion isn’t the fault of command-line interfaces in general; maybe it’s just the command lines we’re used to. If commands were memorable, and their syntax forgiving, perhaps we wouldn’t be so scared to reconsider these interface paradigms.”

Page 44: Mashup the Browser with Ubiquity and Jetpack

a natural language interface

Page 45: Mashup the Browser with Ubiquity and Jetpack

ubiquityubiquity.mozilla.com

Page 46: Mashup the Browser with Ubiquity and Jetpack

DEMO

ubiquity

Page 47: Mashup the Browser with Ubiquity and Jetpack

ubiquity

goal:accomplish more on the web

how?connect the web with language

Page 48: Mashup the Browser with Ubiquity and Jetpack

ubiquity

verbs**JavaScript

Page 49: Mashup the Browser with Ubiquity and Jetpack

ubiquityubiquity.mozilla.com

Page 50: Mashup the Browser with Ubiquity and Jetpack

mashup the browser withubiquity and Jetpack

three problems:

1. interaction

2. language

3. hackability

Page 51: Mashup the Browser with Ubiquity and Jetpack
Page 52: Mashup the Browser with Ubiquity and Jetpack

The multilingual internet:1. The web is disconnected by language.

Page 53: Mashup the Browser with Ubiquity and Jetpack

The Internet, 2005CC-BY: commons.wikimedia.org/wiki/File:Internet_map_4096.png

Page 54: Mashup the Browser with Ubiquity and Jetpack

The Internet, 2005: jp, cn, tw, au, deCC-BY: commons.wikimedia.org/wiki/File:Internet_map_4096.png

Page 55: Mashup the Browser with Ubiquity and Jetpack

The Internet, 2005CC-BY: commons.wikimedia.org/wiki/File:Internet_map_4096.png

Page 56: Mashup the Browser with Ubiquity and Jetpack

The Internet, 2005: ut, it, pl, frCC-BY: commons.wikimedia.org/wiki/File:Internet_map_4096.png

Page 57: Mashup the Browser with Ubiquity and Jetpack

The multilingual internet:2. The tools of the future must be multilingual.

Page 58: Mashup the Browser with Ubiquity and Jetpack

AfrikaansShqipعربيঅসমীয়াEuskaraБеларускаяবাংলা (ভারত)Българскиcatalà中文 (简体)

正體中文 (繁體)

HrvatskiČe�štinaDanskNederlandsEnglish (British)

English (US)EsperantoEesti keelsuomiFrançaisFryskGalegoქართულიDeutschΕλληνικάગ"જરાતીעברית!ह#दी (भारत)

MagyaríslenskaBahasa Indonesia

GaeilgeItaliano日本語Kannada한국어KurdîLatvie�šulietuvių kalbaМакедонскиमराठी

Norsk bokmålNorsk nynorskoccitan (lengadocian)فارسیPolskiPortuguês (do Brasil)

Português (Europeu)ਪ"ਜਾਬੀromânăРусскийсрпскиසිංහලslovenčinaslovenskoEspañol (de Argentina)Español (de España)SvenskaTeluguไทยУкраїнськаTiếng ViệtCymraeg

Page 59: Mashup the Browser with Ubiquity and Jetpack

• Writing a parser is hard

• Principles and Parameters approach

• a universal parser + individual language settings

localizing ubiquity

Page 60: Mashup the Browser with Ubiquity and Jetpack

parser

花子にケーキを送って

Page 61: Mashup the Browser with Ubiquity and Jetpack

花子に 送ってケーキをVNN

goal object

V ( goal, object )

parser

Page 62: Mashup the Browser with Ubiquity and Jetpack

Argument identification via semantic role

CmdUtils.CreateCommand({ names: ["email", "mail"], arguments: [ {role: "object", nountype: noun_arb_text}, {role: "goal", nountype: noun_type_contact} ],...

localizing ubiquity

Page 63: Mashup the Browser with Ubiquity and Jetpack

CmdUtils.CreateCommand({ names: ["email", "mail"], arguments: [ {role: "object", nountype: noun_arb_text}, {role: "goal", nountype: noun_type_contact} ],...

Argument identification via semantic role

localizing ubiquity

Page 64: Mashup the Browser with Ubiquity and Jetpack

role English Japanese

object ø を o

goal to に ni, へ e

location at, on で de

LOCALIZING UBIQUITY

Argument identification via semantic role

Page 65: Mashup the Browser with Ubiquity and Jetpack

DEMO:ubiquity in Japanese

localizing ubiquity

Page 66: Mashup the Browser with Ubiquity and Jetpack

Minimal language descriptionsbranching: 'left',usespaces: false,joindelimiter: '',anaphora: ["これ", "それ", "あれ"],roles: [ {role: 'object', delimiter: 'を'}, {role: 'goal', delimiter: 'に'}, {role: 'source', delimiter: 'から'}, {role: 'position', delimiter: 'で'}, {role: 'position', delimiter: 'に'}, {role: 'instrument', delimiter: 'で'}, {role: 'alias', delimiter: 'として'},]

localizing ubiquity

Page 67: Mashup the Browser with Ubiquity and Jetpack

CatalàDansk

EnglishEspañolFrançais

Italiano日本語

PortuguêsSvenska中文

Languagesettings:

ubiquity 0.5

Page 68: Mashup the Browser with Ubiquity and Jetpack

CatalàDansk

EnglishPortuguês日本語

ubiquity 0.5

Page 69: Mashup the Browser with Ubiquity and Jetpack

mashup the browser withubiquity and Jetpack

three problems:

1. interaction

2. language

3. hackability

Page 70: Mashup the Browser with Ubiquity and Jetpack
Page 71: Mashup the Browser with Ubiquity and Jetpack

the web should be generative

Page 72: Mashup the Browser with Ubiquity and Jetpack

the browser should be generative

Page 73: Mashup the Browser with Ubiquity and Jetpack
Page 74: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. addons.mozilla.org (AMO)

2. over 6000 in the wild

3. HTML, JavaScript, XUL

4. Extend Firefox contest

Page 75: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. addons.mozilla.org (AMO)

2. over 6000 in the wild

3. HTML, JavaScript, XUL

4. Extend Firefox contest

Page 76: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. addons.mozilla.org (AMO)

2. over 6000 in the wild

my favorites: Tree Style Tabs, del.icio.us, AdBlock, Firebug

Page 77: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. addons.mozilla.org (AMO)

2. over 6000 in the wild

3. HTML, JavaScript, XUL

4. Extend Firefox contest

Page 78: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. addons.mozilla.org (AMO)

2. over 6000 in the wild

3. HTML, JavaScript, XUL

4. Extend Firefox contest

Page 79: Mashup the Browser with Ubiquity and Jetpack
Page 80: Mashup the Browser with Ubiquity and Jetpack
Page 81: Mashup the Browser with Ubiquity and Jetpack

DEMO

Page 82: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

+

largest extension platform ever

Page 83: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

+

1.5 million downloads

Page 84: Mashup the Browser with Ubiquity and Jetpack

but...

Page 85: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. installs need restarts

2. not trivial to develop

3. requires manual upgrades

4. not designed for quick security review

Page 86: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. installs need restarts

2. not trivial to develop

3. requires manual upgrades

4. not designed for quick security review

Page 87: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. installs need restarts

2. not trivial to develop

3. requires manual upgrades

4. not designed for quick security review

Page 88: Mashup the Browser with Ubiquity and Jetpack

Firefox Addons

1. installs need restarts

2. not trivial to develop

3. requires manual upgrades

4. not designed for quick security review

Page 89: Mashup the Browser with Ubiquity and Jetpack

© John Slabyk

Page 90: Mashup the Browser with Ubiquity and Jetpack

Jetpackjetpack.mozillalabs.com

Page 91: Mashup the Browser with Ubiquity and Jetpack

Jetpack

the future of extending Firefox

Page 92: Mashup the Browser with Ubiquity and Jetpack

Jetpack1. JavaScript, HTML, CSS

• simple, secure, modular API

2. instant install

3. automatic upgrade

Page 93: Mashup the Browser with Ubiquity and Jetpack

Jetpack1. JavaScript, HTML, CSS

• simple, secure, modular API

2. instant install

3. automatic upgrade

Page 94: Mashup the Browser with Ubiquity and Jetpack

Jetpack1. JavaScript, HTML, CSS

• simple, secure, modular API

2. instant install

3. automatic upgrade

Page 95: Mashup the Browser with Ubiquity and Jetpack

Jetpack1. JavaScript, HTML, CSS

• simple, secure, modular API

2. instant install

3. automatic upgrade

Page 96: Mashup the Browser with Ubiquity and Jetpack

Jetpack1. JavaScript, HTML, CSS

• simple, secure, modular API

2. instant install

3. automatic upgrade

Page 97: Mashup the Browser with Ubiquity and Jetpack

Jetpack

DEMO 1:Helvetica

Page 98: Mashup the Browser with Ubiquity and Jetpack

Jetpack

DEMO 2:You Are Here

Page 99: Mashup the Browser with Ubiquity and Jetpack

IP Query API (XML):ipinfodb.com/ip_query2.php?ip=techmaine.com

Page 100: Mashup the Browser with Ubiquity and Jetpack

Jetpack

DEMO 2:You Are Here

Page 101: Mashup the Browser with Ubiquity and Jetpack

© 2005 en.wikipedia.org/wiki/File:Rocket_man02_-_melbourne_show_2005.jpg

Welcome to the future.

Page 102: Mashup the Browser with Ubiquity and Jetpack

Jetpackjetpack.mozillalabs.com

Page 103: Mashup the Browser with Ubiquity and Jetpack

a more personal web

a more generative web

a more natural web

an open web

Page 104: Mashup the Browser with Ubiquity and Jetpack

join usmozillalabs.com

Page 105: Mashup the Browser with Ubiquity and Jetpack
Page 106: Mashup the Browser with Ubiquity and Jetpack

“The best way to predict the future is to invent it”

—Alan Kay

Page 107: Mashup the Browser with Ubiquity and Jetpack

mitchoMichael Yoshitaka Erlewine

by-nc-samitcho.com@mitchoyoshitaka

Thank you!Questions?