dojo 1.0: great experiences for everyone
DESCRIPTION
Slides from my talk at @Media AjaxTRANSCRIPT
Dojo 1.0:Great Experiences...
For EveryoneAlex Russell
Project Lead, The Dojo Toolkit
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
The Application Hierachy Of Needs
• Deficiency needs - Platform- Security- Social Capacity- Competition
• Growth Needs- Integration- Platform capacity
If The Platform Isn’t Ubiquitous And Capable,
Another Will Emerge
Changes In Cost Are Changes In Capacity
Complexity Is The New Dominating Factor In Cost
Where Are We Fighting Complexity?
• HTML• CSS• JavaScript• Server integration
http://flickr.com/photos/kidisland/502242023/The Wall Of Complexity
Implements Of War
• Grouping + Encapsulation• Shared Context• Patterns of Practice• Separation of Concerns• Forgiveness
So How Are We Doing?
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
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
Good Semantics Let You Say What You Mean
And Get What You Want
For Applications, HTML/CSS Are Liabilities
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?
Platform Capacity Is The Ability To Grow New
Semantics
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
When Are You Going To Talk About Dojo?
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
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
L&F Responsibility
<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
/* 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
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
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
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
You Can’t Tack These On Later,i.e., Systemization Matters
Dojo Expresses Platform Capacity
...But We Wish We Didn’t Have To
Our Collective Perception Of Where We Are On The
Hierarchy Is Wrong
The Lack Of Competition Is A Deficiency That Prevents Access To Growth Needs
You Should Be Demanding A Better Future From The People
Who Can Deliver It
Until Then, Toolkits Should Be Preparing For A Better
Future...
For Everyone
Build With, Not On