SlideShare una empresa de Scribd logo
1 de 31
the
extensible
web
JavaScript, all the way down
the web platform is a kludge
the problem is in the process
despite all this
we’ve somehow done ok
how?
the extensible web manifesto
is standards bodies saying
they’re ready to do their part
the web platform is our language
but like all languages, it must evolve
#extendthewebforward in two acts
I. extend our basic vocabulary
II. start incorporating slang
extending our vocabulary
custom tags
shadow dom
web audio
fullscreen
notifications
geolocation
⋮
es6 and es7
incorporating slang
<template>
<dialog>
css: variables; unset; hierarchies
pointer events
promises
what’s next?
streams
fetch
zip/zlib
class Elements extends Array
???
get involved
this philosophy has teeth
how to win friends and
influence standards bodies
the future is longer than the past
#extendthewebforward
extensiblewebmanifesto.org

Más contenido relacionado

La actualidad más candente

The Metro Developer User Group: July 2012 Meetup
The Metro Developer User Group: July 2012 MeetupThe Metro Developer User Group: July 2012 Meetup
The Metro Developer User Group: July 2012 Meetup
Sam Basu
 
Git Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon PragueGit Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon Prague
Emma Jane Hogbin Westby
 
Mdst3705 2012-01-15-introduction
Mdst3705 2012-01-15-introductionMdst3705 2012-01-15-introduction
Mdst3705 2012-01-15-introduction
Rafael Alvarado
 

La actualidad más candente (17)

Higher Ed Web Conference - Web Project Management
Higher Ed Web Conference - Web Project ManagementHigher Ed Web Conference - Web Project Management
Higher Ed Web Conference - Web Project Management
 
You learned JavaScript - now what?
You learned JavaScript - now what?You learned JavaScript - now what?
You learned JavaScript - now what?
 
Introducing tech bug
Introducing tech bugIntroducing tech bug
Introducing tech bug
 
Apereo 2018 - Webcomponents and building a unified authoring experience for a...
Apereo 2018 - Webcomponents and building a unified authoring experience for a...Apereo 2018 - Webcomponents and building a unified authoring experience for a...
Apereo 2018 - Webcomponents and building a unified authoring experience for a...
 
Why you should use a web framework, eventually
Why you should use a web framework, eventuallyWhy you should use a web framework, eventually
Why you should use a web framework, eventually
 
Introduction to FOSS techniques
Introduction to FOSS techniquesIntroduction to FOSS techniques
Introduction to FOSS techniques
 
The Metro Developer User Group: July 2012 Meetup
The Metro Developer User Group: July 2012 MeetupThe Metro Developer User Group: July 2012 Meetup
The Metro Developer User Group: July 2012 Meetup
 
What are some misconceptions about node js
What are some misconceptions about node jsWhat are some misconceptions about node js
What are some misconceptions about node js
 
Git Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon PragueGit Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon Prague
 
Mozilla webmakers
Mozilla webmakersMozilla webmakers
Mozilla webmakers
 
Outcomes
OutcomesOutcomes
Outcomes
 
Mdst3705 2012-01-15-introduction
Mdst3705 2012-01-15-introductionMdst3705 2012-01-15-introduction
Mdst3705 2012-01-15-introduction
 
Mozilla and web literacies
Mozilla and web literaciesMozilla and web literacies
Mozilla and web literacies
 
Multimedia Journalism Innovations in the Classroom
Multimedia Journalism Innovations in the ClassroomMultimedia Journalism Innovations in the Classroom
Multimedia Journalism Innovations in the Classroom
 
CSS Audits: Take Back Control of your CSS (Susan Robertson)
CSS Audits: Take Back Control of your CSS (Susan Robertson)CSS Audits: Take Back Control of your CSS (Susan Robertson)
CSS Audits: Take Back Control of your CSS (Susan Robertson)
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
Intro js-la-jan-4
Intro js-la-jan-4Intro js-la-jan-4
Intro js-la-jan-4
 

Destacado

Destacado (8)

The State of JavaScript
The State of JavaScriptThe State of JavaScript
The State of JavaScript
 
Async Frontiers
Async FrontiersAsync Frontiers
Async Frontiers
 
After Return of the Jedi
After Return of the JediAfter Return of the Jedi
After Return of the Jedi
 
The Promised Land (in Angular)
The Promised Land (in Angular)The Promised Land (in Angular)
The Promised Land (in Angular)
 
Streams for the Web
Streams for the WebStreams for the Web
Streams for the Web
 
ES6 in Real Life
ES6 in Real LifeES6 in Real Life
ES6 in Real Life
 
The jsdom
The jsdomThe jsdom
The jsdom
 
The State of JavaScript (2015)
The State of JavaScript (2015)The State of JavaScript (2015)
The State of JavaScript (2015)
 

Similar a The Extensible Web

Responsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJS
Christian Heilmann
 
Adaptive web-design-chapter-1
Adaptive web-design-chapter-1Adaptive web-design-chapter-1
Adaptive web-design-chapter-1
Marcelo Graciolli
 
Ganesh Sonawane Resume CIT
Ganesh Sonawane Resume CITGanesh Sonawane Resume CIT
Ganesh Sonawane Resume CIT
Ganesh Sonawane
 

Similar a The Extensible Web (20)

Fullstack JavaScript Developer - E-Degree
Fullstack JavaScript Developer - E-DegreeFullstack JavaScript Developer - E-Degree
Fullstack JavaScript Developer - E-Degree
 
Shippable DevOps platform overview
Shippable DevOps platform overviewShippable DevOps platform overview
Shippable DevOps platform overview
 
Rishabha singhcv
Rishabha singhcvRishabha singhcv
Rishabha singhcv
 
Is everything we used to do wrong?
Is everything we used to do wrong?Is everything we used to do wrong?
Is everything we used to do wrong?
 
Enhance Enhance
Enhance EnhanceEnhance Enhance
Enhance Enhance
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Responsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJS
 
5 best practices in dev ops culture
5 best practices in dev ops culture5 best practices in dev ops culture
5 best practices in dev ops culture
 
Best Java Training
Best Java TrainingBest Java Training
Best Java Training
 
javr
javrjavr
javr
 
Java Tutorial to Learn Java Programming
Java Tutorial to Learn Java ProgrammingJava Tutorial to Learn Java Programming
Java Tutorial to Learn Java Programming
 
Java Full Stack Development content
Java Full Stack Development  contentJava Full Stack Development  content
Java Full Stack Development content
 
Java Full Stack Development content 1 (2023).docx
Java Full Stack Development  content 1 (2023).docxJava Full Stack Development  content 1 (2023).docx
Java Full Stack Development content 1 (2023).docx
 
Achieversit Training Institute in Bangalore 2
Achieversit Training Institute in Bangalore 2Achieversit Training Institute in Bangalore 2
Achieversit Training Institute in Bangalore 2
 
Java application-development
Java application-developmentJava application-development
Java application-development
 
Adaptive web-design-chapter-1
Adaptive web-design-chapter-1Adaptive web-design-chapter-1
Adaptive web-design-chapter-1
 
Ganesh Sonawane Resume CIT
Ganesh Sonawane Resume CITGanesh Sonawane Resume CIT
Ganesh Sonawane Resume CIT
 
5 Best Practices DevOps Culture
5 Best Practices DevOps Culture5 Best Practices DevOps Culture
5 Best Practices DevOps Culture
 
Google’s Internal Memo Leaked "JavaScript is Flawed, Won't Work, and Can't Be...
Google’s Internal Memo Leaked "JavaScript is Flawed, Won't Work, and Can't Be...Google’s Internal Memo Leaked "JavaScript is Flawed, Won't Work, and Can't Be...
Google’s Internal Memo Leaked "JavaScript is Flawed, Won't Work, and Can't Be...
 
DevOps With Chef and Azure
DevOps With Chef and AzureDevOps With Chef and Azure
DevOps With Chef and Azure
 

Más de Domenic Denicola

Boom! Promises/A+ Was Born
Boom! Promises/A+ Was BornBoom! Promises/A+ Was Born
Boom! Promises/A+ Was Born
Domenic Denicola
 

Más de Domenic Denicola (11)

ES6: The Awesome Parts
ES6: The Awesome PartsES6: The Awesome Parts
ES6: The Awesome Parts
 
Boom! Promises/A+ Was Born
Boom! Promises/A+ Was BornBoom! Promises/A+ Was Born
Boom! Promises/A+ Was Born
 
Domains!
Domains!Domains!
Domains!
 
Client-Side Packages
Client-Side PackagesClient-Side Packages
Client-Side Packages
 
Creating Truly RESTful APIs
Creating Truly RESTful APIsCreating Truly RESTful APIs
Creating Truly RESTful APIs
 
Promises, Promises
Promises, PromisesPromises, Promises
Promises, Promises
 
JavaScript on the Desktop
JavaScript on the DesktopJavaScript on the Desktop
JavaScript on the Desktop
 
ES6 is Nigh
ES6 is NighES6 is Nigh
ES6 is Nigh
 
Unit Testing for Great Justice
Unit Testing for Great JusticeUnit Testing for Great Justice
Unit Testing for Great Justice
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js Platform
 
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

The Extensible Web

Notas del editor

  1. The web platform has, historically, been a kludge.
  2. It’s grown, organically, into a mess.Our platform has no sense of cohesionMost of its APIs have been poorly designed, by C++ developers, via a binding layer meant originally for CORBA.There have been major gaps in what we can do compared to native appsAnd for those things we can do, we end up doing them by drowning ourselves in custom JavaScript functionality
  3. Generally, new things have been introduced into our web platform via:Months or years of mailing list standardization, writing something in prose and IDL, driven by scenario-solving without much concern for actual usabilityThey expose some fundamental capability in terms of a high-level API or declarative form that burrows down directly to the implementer layer of C++, with limited customizabilityAfter all this time, it eventually ends up in your hands, and you end up telling the standards bodies that it’s a huge mess, that it solves half your problems half of the time.
  4. (Heh. Most successful platform ever!)
  5. We wrapWe prolyfill (explain)We transpileAnd in one case, promises, we even built an interoperable standard from the ground up.We need our platform to be better, and so we make it better ourselves.
  6. We’ve been shouldering all the work until now, writing massive JavaScript libraries or transpilers to reinvent basic functionality.There’s a better way, where we work together toward the future.What these standards bodies have realized is that…
  7. This means two things:Explaining features of the platform that are already there.Wouldn’t it be weird if we had compound words like “scifi,” but didn’t have any word for “science” or “fiction”? If some standards body, perhaps the French Making Up Words Consortium, just handed us the word “sandpaper,” but we had no way in our language to talk about “sand” or “paper” individually? The web is like that today, and we’ll see a few examples.Giving you new low-level features that you can use.If you want to invent the word “scifi,” somebody had better have come up with words for “science” and “fiction”! Similarly, there’s lots of things we just don’t have “words” for on the web, yet. That’s where native apps are hurting us.So with this in mind:
  8. The most fundamental gap in the platform that’s unexplained: how do those darn tag things even work?Somehow, you feed a string containing some angle brackets into the browser, and they get turned into these JS objects with terrific APIs, which we call “the DOM.” How does that even work?Custom tags explains this process, saying that you register a mapping of tag names to element prototypes with the browser, and that’s what the HTML parser is actually doing under the hood. This is great! The democratization of HTML!And better yet, no more crazy widget libraries, with their own semantics. No more jQuery UI with this .option thing, no more Dojo dijits, no more Bootstrap craziness, no more WinJS with their funky winControl property. Just tags, that turn into elements, which behave like normal DOM things: they have properties, getters, setters, methods, you name it!
  9. But what about the existing tags? Half the reason these widget libraries exist is so that you can create your own freakin’ &lt;select&gt; element, because otherwise it’s not styleable or customizable.In general: you know how you have these magic tags, like &lt;select&gt; or &lt;input type=&quot;date&quot;&gt; or &lt;details&gt; or &lt;video&gt; even good old &lt;li&gt;, where it looks like there’s some extra “stuff” the browser’s doing, but you have no idea how?Yeah, that’s the shadow DOM.But what’s great, is that once we actually have a basis for these hidden parts of the DOM, in reality instead of in C++ magic land, you can actually start hooking into them instead of rebuilding an entire element just to customize its behavior and styling.“I&apos;m working on transitioning the &lt;select&gt; element from a custom renderer to shadow dom.”
  10. This is a good example of both adding new capabilities and explaining old ones. Because you can do fundamentally new things with web audio, like positional audio or audio synthesis or so many other cool things.But remember the &lt;audio&gt; tag, from way back in 2009? Well, it’s kind of the quintessential “here’s some C++ magic thrown over the wall to you guys.” From an extensible web perspective, the &lt;audio&gt; tag should be explained in terms of web audio!
  11. But speaking of fundamentally new capabilities, you can find examples of such things popping up all over the platform.
  12. ES6:Extensibility of built-insProxiesES7Object.observeWeak references---So now we have a capable platform, with all these new low-level capabilities, and with our existing capabilities actually composed out of nice low-level primitives. This means we can stop rebuilding the entire platform just to customize one piece.
  13. The second half of this extensible web philosophy is that we need to tighten the feedback loop between developers and standards bodies.Because think about it: you have all these great things that you’ve built out of our low-level tools, but now you’re downloading megabytes of JavaScript or transpiling your code just to get the base of your platform. This is why almost every web page uses jQuery: because the platform itself hasn’t stepped up to the plate and incorporated jQuery’s innovations back in.In short, we need to incorporate this kind of slang you’ve invented back into our shared language.
  14. &lt;script type=&quot;text/x-handlebars&quot;&gt; anyone?
  15. Adopted by jQuery, Dojo, Angular, Ember, WinJS, YUI, … it’s time to put these in the platform.
  16. FileReader, XMLHttpRequest, getUserMedia, postMessage, object URLs, MediaStreams… just like with promises, we’re missing a piece of slang here.Node.js has led the way, but there’s still some lessons learned with their implementation that could make our life easier.In the end, we want to be able to take various sources (URLs, camera data, already-downloaded binary payloads like videos etc.) and pipe them into various sinks (&lt;img&gt;, &lt;video&gt;, and &lt;audio&gt; tags; other &lt;iframe&gt;s; custom consumption code).
  17. The basic act of doing an HTTP request has so much complexity: cross-domain protection, redirect following, deserialization from bytes, cookie jars, caches… We want to provide the basic building block, and the ability to layer each of these features on top of it.
  18. Active investigation going on into how to expose compression primitives to the web
  19. And what else? What do we need? What is preventing you from building webapps of your dreams? You tell us!
  20. The best thing you can do to get involved in these things is to prolyfill.There’s only so much standardization bandwidth to go around, so if you can create a de-facto standard like jQuery, or an open specification like Promises/A+, the world is waiting.If you want to figure out what a zlib API for the browser should look like, the best thing you can do is:Learn what the constraints and use cases are (and not just your use cases, but everyone’s!)Design an API and library to prolyfill this gapEvangelize its use among developers, so that everyone recognizes it as the clear solution that all developers just want browsers to ship.
  21. The W3C Technical Architecture Group had four seats go up for reelection recently, and four “reformers” were elected at once: Yehuda Katz, Alex Russell, Marcos Caceres, and Anne van Kesteren. The extensible web philosophy underlies their governance, as the ultimate technical body which provides guidance and approval for all W3C specs. We’ve already seen fruit here with their reviews of the web audio spec, among others, where they have helped these specs build a solid grounding in JavaScript fundamentals and generally be less magic and more JavaScript. All their work is being done on GitHub, as are more and more specs. This is happening.
  22. More generally, if you want to be involved in helping the web succeed by guiding us toward better standards, then let’s talk. It’s an area I’ve been diving into over the last half-year, stemming from my Promises/A+ work but expanding into many other things. Finding the right approach and content is delicate, as these people are used to noobs coming out of the woodwork to demand feature X. But if you approach in good faith and avoid a prideful demeanor, they’re happy to listen. I’ve had have a few success stories in this area already, and by this time next year I want to have a lot more.I’ll be giving a talk at LXJS with this title, by the way. Stay tuned.
  23. I want to end on a hopeful note. It’s easy to think about all these cool things that are coming, and then get depressed about having to support IE8 or Android 2.3 at your job. But that’s the price we pay for an open, interoperable web; we can’t just march to the tune of a single vendor, but instead need to work through this collaborative, cooperative process to build our shared language. In the end, the future is longer than the past, and I look forward to not only living in that future, but in helping to shape it, together with you all.