Dojo 1.0: Great Experiences For Everyone

36
Dojo 1.0: Great Experiences... For Everyone Alex Russell Project Lead, The Dojo Toolkit

description

Slides from my talk at @Media Ajax

Transcript of Dojo 1.0: Great Experiences For Everyone

Page 1: Dojo 1.0: Great Experiences For Everyone

Dojo 1.0:Great Experiences...

For EveryoneAlex Russell

Project Lead, The Dojo Toolkit

Page 2: Dojo 1.0: Great Experiences For Everyone

http://en.wikipedia.org/wiki/Maslow's_hierarchy_of_needs

Maslow’s Hierarchy of Needs

• Deficiency needs- Physiological- Saftety- Love/Belonging- Esteem

• Growth needs- Exploration, asthetics- Self-actualization

Page 3: Dojo 1.0: Great Experiences For Everyone

The Application Hierachy Of Needs

• Deficiency needs - Platform- Security- Social Capacity- Competition

• Growth Needs- Integration- Platform capacity

Page 4: Dojo 1.0: Great Experiences For Everyone

If The Platform Isn’t Ubiquitous And Capable,

Another Will Emerge

Page 5: Dojo 1.0: Great Experiences For Everyone

Changes In Cost Are Changes In Capacity

Page 6: Dojo 1.0: Great Experiences For Everyone

Complexity Is The New Dominating Factor In Cost

Page 7: Dojo 1.0: Great Experiences For Everyone

Where Are We Fighting Complexity?

• HTML• CSS• JavaScript• Server integration

Page 8: Dojo 1.0: Great Experiences For Everyone

http://flickr.com/photos/kidisland/502242023/The Wall Of Complexity

Page 9: Dojo 1.0: Great Experiences For Everyone

Implements Of War

• Grouping + Encapsulation• Shared Context• Patterns of Practice• Separation of Concerns• Forgiveness

Page 10: Dojo 1.0: Great Experiences For Everyone

So How Are We Doing?

Page 11: Dojo 1.0: Great Experiences For Everyone

Implements Of Failure

• Grouping + Encapsulation- Server-side includes essentially state of the art

• Shared Context- HTML/CSS/JS stack wickedly hard to learn

• Patterns of Practice- Microformats, CSS as emergent semantics

• Separation of Concerns• Forgiveness

- XML pipe dreams persist, Semantic Web faffery

Page 12: Dojo 1.0: Great Experiences For Everyone

Semantic Differences

• HTML gives us:- Platform- Some security- Social capacity- Patterns of practice- Shared context (common vocabulary)

• The failure to provide sustainable platform competition leaves us arguing over the scraps

Page 13: Dojo 1.0: Great Experiences For Everyone

Good Semantics Let You Say What You Mean

And Get What You Want

Page 14: Dojo 1.0: Great Experiences For Everyone

For Applications, HTML/CSS Are Liabilities

Page 15: Dojo 1.0: Great Experiences For Everyone

Ajax: The “Get Out Of Jail Free” Card

• Within a small band of capabilities, JavaScript allows us to dig our way out- Cost is enormous

• Toolkits have exhibited competition and platform capacity behaviors

• Integration nowhere to be seen- Example: mirrored validation- REST? Something else?

Page 16: Dojo 1.0: Great Experiences For Everyone

Platform Capacity Is The Ability To Grow New

Semantics

Page 17: Dojo 1.0: Great Experiences For Everyone

How The Web Gets New Semantics(decreasing order of leverage)

1.Standardization (W3C, ECMA, etc.)• Byproduct of competition

2.Invention• JavaScript “upgrades” or “hot-patches” to pages

3.Convention• Microformats, CSS patterns of practice

Page 18: Dojo 1.0: Great Experiences For Everyone

When Are You Going To Talk About Dojo?

Page 19: Dojo 1.0: Great Experiences For Everyone

Invention vs. Completeness

• Invented semantics via JS are disadvantaged:- On the wire- In performance and integration- In access to assistive technologies- In look-and-feel cohesiveness

• Only medium/large-scale investment yeild complete results today- Product vs. project

Page 20: Dojo 1.0: Great Experiences For Everyone

A Toolkit That Invents Semantics Is Responsible For

All Of These Concerns*

* this argument is both self-serving and disingenuous, however that doesn’t make it false

Page 21: Dojo 1.0: Great Experiences For Everyone

L&F Responsibility

Page 22: Dojo 1.0: Great Experiences For Everyone

<a href="images/depot.jpg"dojoType="dojox.image.Lightbox"group="myTravels"title="Photo of a Train Depot">A Train Depot</a>

<a href="images/greenville.jpg"dojoType="dojox.image.Lightbox"group="myTravels"title="A Photo of Greeneville, TN">Greenville</a>

Developer User Experience

Page 23: Dojo 1.0: Great Experiences For Everyone

/* structured CSS allows over-rides */.dijitDialogUnderlay {

background: white;}

// template system allows complete UI reworkdojo.extend(dojox.image._LightboxDialog, {

templatePath: dojo.moduleUrl(“myApp.tmpl”, “dialog.html”)});

Customization

Page 24: Dojo 1.0: Great Experiences For Everyone

a11y & i18n Concerns

• Incredibly robust keyboard handling code• All Dijit widgets fully WAI ARIA augmented

- role="wairole:dialog"- System support for easily adding role/state info

to your own widgets• Detection/support for high-contrast mode

- separate theme applied for high-contrast- structured CSS cascade allows you to easily

provide a11y rules for custom themes and widgets

Page 25: Dojo 1.0: Great Experiences For Everyone

Performance Responsiblity

• Time on the wire• Time-to-render• Data caching, storage• Encourage usage of faster paths through better

API design• “Pay-as-you-go” performance optimization

strategies- Make each step on the path as painless as

possible

Page 26: Dojo 1.0: Great Experiences For Everyone

Performance Responsiblity

• Stragegies:- Tiny Core

- Tightly controlled, curated APIs- CDN edge-cached, gzip always enabled- The Build Process

- Completely optional, gradual adoption- Package system reduces complexity through

grouping

Page 27: Dojo 1.0: Great Experiences For Everyone

You Can’t Tack These On Later,i.e., Systemization Matters

Page 28: Dojo 1.0: Great Experiences For Everyone

Dojo Expresses Platform Capacity

Page 29: Dojo 1.0: Great Experiences For Everyone

...But We Wish We Didn’t Have To

Page 30: Dojo 1.0: Great Experiences For Everyone

Our Collective Perception Of Where We Are On The

Hierarchy Is Wrong

Page 31: Dojo 1.0: Great Experiences For Everyone

The Lack Of Competition Is A Deficiency That Prevents Access To Growth Needs

Page 32: Dojo 1.0: Great Experiences For Everyone

You Should Be Demanding A Better Future From The People

Who Can Deliver It

Page 33: Dojo 1.0: Great Experiences For Everyone

Until Then, Toolkits Should Be Preparing For A Better

Future...

Page 34: Dojo 1.0: Great Experiences For Everyone

For Everyone

Page 35: Dojo 1.0: Great Experiences For Everyone

Build With, Not On

Page 36: Dojo 1.0: Great Experiences For Everyone