Tip:
Highlight text to annotate it
X
ADDY OSMANI: Hey guys, we are live on the Chrome Developer
channel for the Chrome Office Hours.
I think it will be useful for us to go around the room just
to see who everybody is.
Paul?
PAUL KINLAN: Hi, I'm Paul, as Addy just said.
I'm a developer advocate at Google.
I've worked Chrome, Web Intents.
And I'm looking forward to loads of Web
Intents questions today.
I don't see any on the list.
I'm want you to come and ask some, otherwise I probably
won't be speaking today.
Sorry, guys.
PAUL LEWIS: Hey,I'm Paul Lewis.
I'm a developer programs engineer for Google,
obviously, working on Chrome, Chrome apps, GPU, and
performance kinds of things.
ADDY OSMANI: I'm Addy.
I work on Yeoman tooling, some developer docs, and one two
other bits.
PAUL IRISH: I'm Paul Irish.
Paul.
I'm working on all sorts of HTML5, openware platform, dev
tools, Yeoman, good stuff.
SAM DUTTON: My name is Sam Dutton.
I'm here in London working on Chrome devrel, I'll be working
on WebRTC, and doing more mobile Chrome stuff.
PAUL IRISH: So we have a Google moderator setup that
you can go and submit questions to and vote up and
down on other people's questions so that we answer
exactly the stuff that you are interested in.
So if you can, just open up the
developers.google.com/live, and you'll see
that we're on air.
Click through that, and then you'll see the moderator right
there, where you can submit questions and put things up.
So this is just Office Hours, and we're just going to answer
your questions.
So we're guided by you guys today.
SAM DUTTON: We're planning to do this on a pretty regular
basis from London now, so we're really looking forward
to more of your questions.
ADDY OSMANI: So let's dive in.
PAUL LEWIS: Cool.
The first question that we're going to get into comes from
the United Kingdom from Simon Owen.
He asked, are we going to see a FireSass equivalent or
similar in Chrome?
And so he's talking about the FireSass extension for FireBug
adding in support of the Sass stylesheet [INAUDIBLE].
So we've been looking at this and really want to have some
good, powerful stuff.
There's a patch that's brewing.
It has not landed yet, as a straw-man attempt, where you
can actually see Sass files inside the Sources panel in
the Chrome dev tools.
And so that's the first step.
We'll see where it goes from there.
But we're investigating and writing Chrome right now.
PAUL KINLAN: So are you going to use source maps?
PAUL LEWIS: As far as I know, it's not actually using source
maps just yet.
Although the cool thing is that the original
implementation of source maps was refactored to allow for
more flexibility when it came to CSS source maps.
So while what's implemented right now is not taking
advantage of that, there's plumbing to enable that.
So that patch will actually land today or tomorrow.
So if you're on Canary, you'll be able to see
the begins of that.
The other thing I wanted to mention is if you Google for
Web Inspector Commits RSS, you're going to get an RSS
feed of all the commits to WebKit that are just the
WebKit Inspector, which is from dev tools.
And you can see everything that lands, including new
features and small bug fixes and stay very close to what's
coming down the pipe.
Next question?
SAM DUTTON: Yeah.
Moving on to a question here from [INAUDIBLE], are you
planning to make Chrome desktop sharing extensions
support voice chat, work around firewalls so we can
interact with our site users like with Skype, but totally
over the web?
Well, none of us here work on that extension.
We have passed the question on to the team.
I'd like to take this opportunity to give a plug for
WebRTC, which does a lot of what you're talking about.
I've said already.
It allows video chat and enables NAT traversal, so
getting through firewalls and so on.
So take a look at that.
We've got a great WebRTC article now on
HTML5 rocks dot com.
We'll have a little on webrtc.org.
Great way to chat with people, and it's all in the browser,
plug-in free.
PAUL KINLAN: So that would be for his screensharing as well.
So you are talking about doing WebRTC at the same time as
screenshare?
SAM DUTTON: I'm not sure if the question here is about
doing video chat or specifically about doing
desktop sharing.
We'll ask the promoting team about working--
PAUL KINLAN: Because I've seen some stuff that use the
Mutation Observers as well to get the screen on someone
else's remote screen.
PAUL IRISH: Next question comes from [? Keviex ?]
in the United States.
He says, a question regarding V8 flags in Chrome.
So there's a lot of flags that you can pass into the V8
Javascript engine that allow you to implement tracing.
And this is actually pretty cool.
In a very high performance environment, you want to know
when it goes into Crankshaft, which is
the optimize compiler.
And you can see what goes into that heavily optimized route
and then back out and, perhaps, get an indication of
your code that is keeping it from going into a highly
optimized route.
There's a great talk, I think, at Google I/O about V8 and
optimization, where you can learn more about this.
But [? Keviex ?] is asking, can anyone give instructions
on using these flags inside Chrome to get this?
So for this one, Chrome has flags that you can run against
the executable.
So if you just Google for running
Chrome flags, I think--
a while ago I made a page that has the instructions.
Basically, you need to run Chrome from the command line,
and then you can pass in flags.
Every available flag is listed on peter.sh.
So if you just look for that, you can find it.
But there's a specific technique of passing in V8
flags through a Chrome flag.
So it's like you wrap the V8 flags in a warm
hug of other flags.
SAM DUTTON: So you can do it from Chrome
flags, in other words?
PAUL IRISH: You can do it.
So the name of the Chrome flag is V8 Flags.
And you pass it a string of other flags.
Yeah, that's nice.
But that way you are able to get this output dumped into
your terminal, as far as V8's behavior.
PAUL KINLAN: So are there any tools that
consume that output?
Or is it, literally, your just go in and?
PAUL IRISH: I haven't seen any.
That would be really cool.
I haven't seen it.
Next question.
SAM DUTTON: Wow, we got some more questions coming in.
PAUL IRISH: Good, keep them coming.
SAM DUTTON: Yeah, fire them in.
PAUL IRISH: Please, vote up and down on
anybody else's questions.
PAUL KINLAN: I've seen someone mention Web Intents.
SAM DUTTON: We got get him more questions.
PAUL KINLAN: We'll do that one later, alright?
I'll save them for last.
SAM DUTTON: The last question is a good one.
PAUL IRISH: Are there any known IDE or tools to take
advantage of remote debugging support API to enhance web
developer resources?
So this cool.
One of the extension APIs inside Chrome is actually
called the Debugger API.
And this is actually a JSON feed of the remote debugging
protocol that is used for remote debugging and also,
actually, for the Web Inspector application in the
web app, just to communicate with the host page.
So it actually just communicates over the same
protocol that it uses for remote debugging.
And that protocol is exposed via an extension.
What this allows is you could create, in a page, your own
complete API--
I'm sorry, UI, for all of Chrome dev tools.
One particularly great application is, let's say, you
have a web based IDE.
You could be showing code, and then you have your set
breakpoint, pause, step into, step out of, and all that
would be proxied through the dev tools plumbing.
And you get to control the API inside the UI.
So it's really exciting.
And as far as people who are taking advantage of this right
now, there is a plug-in for Eclipse that allows you to
debug your JavaScripts over in Eclipse and it just routes
through them and uses the debugger protocol.
And that's, I think, it these days.
Adobe has a new web based IDE called Brackets.
And I've talked to them about this API.
And so they've looked at it.
Nothing has landed as far as I know.
But it could be pretty rad if we saw an
implementation there.
PAUL KINLAN: So is the protocol over TCP?
PAUL IRISH: Yeah.
PAUL KINLAN: Interesting.
I was just thinking because, obviously, Chrome Apps, the
packaged apps, have got access to UDP and TCP connections.
So you can make a little Chrome App like, right now, on
the Dev and Canary channel, which would talk to the
instance of Chrome and have a debugger inside your own web
app type of thing.
PAUL IRISH: I think it's actually a WebSocket
connection.
PAUL KINLAN: Oh, is that a WebSocket one?
SAM DUTTON: Yeah.
There's actually a great article if you're interested
in extending the dev tools.
There's a really good article by our colleague Boris Smus.
If you Google for extending Chrome
Developer Tools Boris Smus--
that's S-M-U-S--
that's a really great place to learn about building
extensions for the Chrome tools.
But also, if you want to actually add stuff to your own
custom frontend.
So good information there about doing extra
things for the tools.
PAUL KINLAN: Is that like extra panels
and stuff as well?
SAM DUTTON: Yes.
It's actually information about building a new frontend
or tweaking, adding on to the existing frontend.
There's good information there about building extensions
using the dev tools extensions, APIs.
PAUL KINLAN: Because we'll have to do a Web Intents--
I'm going to mention Web Intents every single time.
It's the Web Intent that I write that [INAUDIBLE].
Because we're thinking about doing like a dev tools custom
panel to tell you what information was being passed
into an app [INAUDIBLE].
ADDY OSMANI: So the next question is, how will the
divergence of the W3C and WHATWG on the HTML5 spec
affect Chrome?
And I guess the answer to that is, it won't really.
We're actively involved in both.
And we're hoping that the differences there are going to
stay minor.
PAUL IRISH: The other thing to point out is that the Chrome
team is involved in working groups on the
W3C, also the WHATWG.
This is not the first time that there's been a
divergence.
For instance, inside the WHATWG HTML spec, it includes
the Canvas 2D API.
But that is in its very own spec over in W3C land.
And there's wording differences and things like
that already.
So there has been a divergence.
Well, I don't know if it's more of a divergence, but
there is new editors as well.
We expect not much of an effect at all on how Chrome
operates and is developed.
ADDY OSMANI: So the next question is, as the Web SQL
feature was deprecated from HTML5 spec, are you planning
to remove it from Chrome in the future?
Web SQL is interesting.
Dropping it from the web platform is difficult, because
there are people actively using it at the moment.
And if we want to do that, one prerequisite is that things
like IndexDB, for example, get broader support and start
getting used a little bit more.
We do see Web SQL, perhaps, getting dropped at sometime in
the foreseeable future, but, again, people need to start
using IndexDB, for example, a little bit more.
PAUL KINLAN: So the question I was going to ask is, do we
know of any abstraction layers which just get rid of the
differences between the two, I mean, that we can kind of tell
people right now?
PAUL IRISH: Between Web SQL and IndexDB?
PAUL KINLAN: Yeah, so don't have to
particularly worry too much.
I mean, if you're going to develop an app now, and you
want just to store later?
SAM DUTTON: Right, you mean like Lawnchair
and stuff like that.
PAUL KINLAN: Yeah.
I mean, Lawnchair, Data Backbone has got these couple
different plug-ins--
ADDY OSMANI: Yeah, there are a bunch of different sync
plug-ins for Backbone that you can get that allow you to
switch the storage options that you use, whether it be
IndexDB or something else.
But as Sam mentioned, there's also Lawnchair, which a lot of
people are using at the moment.
PAUL IRISH: Yeah, in a way it's tricky, because Lawnchair
has asynchronous API, as far as I remember.
You want to have a asynchronous API, because the
browser likes when you're acting in an
asynchronous fashion.
And so if you want something that's like simple and has
great browser support, just use local storage.
And if you're going to go a little bit more complicated
than that, and you need better performance, and you need
better data consistency, you might end up writing the
adapters yourself.
But I don't like recommending that.
PAUL LEWIS: Got to be driving the market.
ADDY OSMANI: You can post a response to questions inside
the moderator.
If you have a suggestion for a storage library that handles
Web SQL and IndexDB and, hopefully, is also
asynchronous, drop it in there, because it's hard to
capture all the possible libraries there.
Simon Sarris, who is a Canvas expert in New Hampshire, he
asked about scrollbars.
So in Chrome, when you do a Control F find you get little
highlights on the scrollbar to indicate page position, where
all the matches are.
And sometimes, when you customize the scrollbar with
CSS, that effect is lost.
So he's asking, do we get to retain that functionality,
somehow, while still having customer styling on
scrollbars?
Great question.
PAUL KINLAN: Do we know an answer?
Because I was just think--
do we?
No?
No answer.
Because I was thinking about this.
I remember doing something like this a while ago where,
in custom CSS, you could, basically, just manipulate it
with the Canvas, essentially, like the background.
It wasn't necessarily a background image, but you
could, essentially, attach the Canvas to it.
And I can't remember, for the life of me, how I did it.
But because the scrollbars in WebKit are startable, and you
can get access to the thumb, the background, and the little
bits at the top and bottom, I was wondering whether you do
the same type of thing there as well.
The height and width, you can get the Canvas and say, well,
the background image for this scrollbar is the output from
this Canvas.
I've not seen it done.
Well, I've seen it done in other apps, but I've never
seen the solution, if that makes sense
PAUL IRISH: I feel like it's a totally legit feature request
to ask for custom styling for the match
markers in the scrollbar.
If we have a styling [INAUDIBLE]
like -WebKit -scrollbar -match, or whatever, and then
you might take it from that yellow and change it into
something that matches what you've styled it into.
If we had that then there would be no reason to hide it
automatically when it styles.
And so file a ticket and see what folks think, because I
think that would be awesome.
PAUL LEWIS: So the next question from Stewart is, will
Chrome for Android follow a similar frequent release
schedule to the desktop version?
And are there any plans for dev and Canary versions?
The simple answer is, yes, we intend to follow the Chrome
release cycle, but we don't have an ETA for this,
specifically, at the moment.
When we do, we'll announce it publicly.
But what we can say is that we will be following the dev beta
stable Canary release pattern that you've seen on desktop.
ADDY OSMANI: So the next question is, are you planning,
soon, to implement the device orientation locking by the
view port orientation preview in the Chrome mobile and
Android default browser?
So we're investigating what APIs are important to have on
mobile at the moment.
That includes the orientation lock.
We're aware of it We're looking at it at the moment.
But we don't have anything to announce just yet.
I know it's not the best answer, but it's what
you get right now.
Yeah.
PAUL IRISH: Stewart asks do you know of any work
implementing the Web Audio API for Chrome for Android?
Web Audio API is used in--
was it used in Exquisite Forest?
Yeah.
PAUL KINLAN: It was used in the WebChrome
mobile app as well.
PAUL IRISH: The new Chrome [INAUDIBLE] was for Forest,
which I recently released, experiments and arty stuff.
It's really cool.
And it's not currently available
in Chrome for Android.
What you can do is, if you go to mcrbug.com, it's a list of
all the tickets that are filed against Chrome for Android.
And one of them in there, towards the top, you'll see,
is Web Audio support.
Star this ticket to stay notified.
Right now, there's not any support.
One of the things that would be really useful to hear is,
if you're a mobile developer, and you could really use Web
Audio support, and you just said the audio tag doesn't cut
it for you, leave a not saying what your use case is.
What is that you want to build, so people have a better
idea as far as what is the possibility of this feature?
I've heard a lot of people say that Web Audio API makes a lot
sense in desktop settings, but on a phone or a tablet, it's
not as obvious.
So having a broader understanding of what people
are going to make would help a lot as far as helping people
understand the priority of this should be.
SAM DUTTON: If you're in London, go to the Science
Museum and check out--
PAUL KINLAN: You know, I should have said that, man.
SAM DUTTON: Paul's your man--
PAUL KINLAN: Check out the Science Museum, Chrome Weblab.
It's awesome.
SAM DUTTON: It's really nice.
PAUL IRISH: What is it?
PAUL KINLAN: It's five, real world, interactive
experiments, Chrome experiments that you can
interact with from anywhere in the world on the web or
interact with directly from the Science Museum.
There's an interactive orchestra, sand drawing box,
which you take a picture of your face,
draw it in the sand.
You have to go check it out.
It's really cool.
It's beautiful as all.
PAUL LEWIS: In the meantime, if you can't,
chromeweblab.com, would be the place to visit.
PAUL IRISH: We went there just last night.
And it was totally cool.
Got an understanding of how everything was built, all
built with Chrome and web technologies, even some
Node.js and Arduino in there.
PAUL KINLAN: So we'll do some Hangouts, as well, soon, with
some of the people who have built the project.
I've haven't got an exact ETA when it's going to happen.
ADDY OSMANI: Are they going to talk us through how these
things were used?
PAUL KINLAN: Yeah, we want to do one talk per experiment,
from top to bottom, from client to server, show you how
it was built.
PAUL IRISH: So neat.
PAUL KINLAN: It's going to be fun.
PAUL IRISH: Next question, Simon asks about some of the
new Canvas functionality that's been added to the spec.
I think this happened circa March, April, is when it
actually hit the spec.
There's new functionality and features for
Canvas that are in there.
But I don't think we've seen it in any browser yet.
As far as ETA, I can't say.
I just don't know.
But the best way to check this out on the WebKit tracker.
So what I just did is I just looked up one of
these, found a ticket.
Right now it's assigned to Gene Jackson, who is commonly
a spec editor for a lot of specs.
And he has a lot of them assigned to him.
So it looks like there's certainly interest from
implementers.
But I haven't seen any patches prepared yet,
so watch the tickets.
And that's as much as we know right now.
If you're just joining us, hello.
We are going through a bunch of questions.
You go to developers.google.com/live,
click on are Chrome Office Hours, and there's a bunch of
questions you can vote up, down, and ask.
PAUL KINLAN: There are quite a few now.
It's good.
PAUL IRISH: Vote up and down more.
Upsell.
SAM DUTTON: Who is going to take this next one?
Bunch of questions.
PAUL IRISH: This is good.
Mosen from LA, he has asked some stuff about Web Forms.
First, input type color added to HTML5 spec a long time ago.
It's been implemented in Chrome and WebKit?
I know about Chrome.
I'm not sure about Safari and other ports.
But it, right now, brings up the operating systems color
picker widget.
Mosen is asking, why does it do this versus
your own color picker?
PAUL KINLAN: When he says, your own color picker, does he
mean one that you'd write yourself or like a
standardized Chrome one?
ADDY OSMANI: I guess he means a general one, something that
might write tehmselves.
PAUL IRISH: I don't know.
I don't have a great answer.
My guess is that it's probably better for all browsers to use
the native operating systems picker than all browsers have
inconsistent color pickers with different functionality.
When you leave it up the OS you present something that is
probably more familiar to the user than what
one implementer thought.
And so I think that consistency is pleasant.
Plus it probably is nicer to get that feature out quicker,
because you can leverage something instead of rolling
it all from scratch.
Mosen also asked about input type week and type time.
Those are not supported well.
Type date is.
And why that is, I think they're just a matter of
priorities.
Everyone needs a date in there.
ADDY OSMANI: It's a matter of time.
PAUL KINLAN: Yeah, it's a matter of time.
PAUL IRISH: I like it.
PAUL LEWIS: Sounds good.
PAUL KINLAN: Yeah, it was good, wasn't it?
PAUL IRISH: Everyone needs date pickers, and so laying
that first certainly made sense.
There are tickets.
I think I have a link, on the Web Kit Bug Tracker, ticket
number 86990.
Actually, if I can show you.
Can we bring up my screen?
Great.
Cool.
It's coming up in just a moment.
So right now, this ticket--
And of my favorite features is to view the dependency tree.
So for any ticket you can understand what are the things
that have to happen before this ticket can get closed and
patch plan this?
What is this blocking?
And dependency trees, on the Web Kit Tracker are pretty
nice to understand how the whole thing will be
implemented and the progress of something.
So, in this case, we can do that, see what's already been
resolved in this tree.
And you can see that quite a few things, a good 90% of what
is needed for this feature is complete.
So take a look at that.
ADDY OSMANI: The next question is about Yeoman.
Louie Lopez from Spain writes, what kind of support shall we
expect for AngularJS?
Good question.
So with V1 of Yeoman, we are going to be including a really
nice scaffold for AngularJS, which will hopefully let you
do a little bit of what an existing project called
Angular-Seed lets you do.
Which is sort of scaffold out a brand new Angular project
and maybe one or two other things.
We're actually actively working with the Angular team
to try getting a little boiler plate that has best practices
into there.
And so our support for it out of the box is going to be
pretty decent.
For anybody that sort of is more concerned with other
frameworks, like perhaps Backbone or Ember, we're going
to, hopefully, in the future, work with the people involved
in those projects to create similar scaffolds.
But we've been working with proof of concepts that already
work with Backbone and Ember.
So far, they work great.
And I think it's just going to be the case of, once Yeoman is
out, you'll start to see more of these generators and
scaffolds come out soon after, hopefully.
PAUL LEWIS: And if somebody is not familiar with what Yeoman
is, as a tool, could you give us like the elevator pitch?
ADDY OSMANI: Yeah, of course.
So Yeoman is an opinionated workflow for developers that
will, hopefully, help them build more beautiful
applications.
We try to take a look at aspects of
their development process.
Everybody needs a build process of some sort, using a
build tool.
People like the idea of not having to manually write out a
lot of the boiler-plate coding needed for projects.
So Yeoman is also to going to take care of that.
We've got a bunch of other neat stuff in there.
We've got support for headless WebKit testing.
We've got a watch process.
You're able to write, for example, Coffee Script or
Compass and have that automatically compile using
[? iReload ?]
and a bunch of other things.
So you won't even have to go back and manually compile
things yourself.
But we've got some other features in there too.
PAUL KINLAN: Does it support Web Intents?
SAM DUTTON: Yes.
ADDY OSMANI: Yes.
PAUL KINLAN: Yes.
ADDY OSMANI: That was the first feature,
before anything else.
SAM DUTTON: Shameless.
PAUL KINLAN: It doesn't matter.
You're not going to actually launch with it.
ADDY OSMANI: Oh, god no.
PAUL KINLAN: Yeah.
I'll work on it.
I'll get it in.
It'll be good.
ADDY OSMANI: That's your evenings
cleared up right there.
PAUL IRISH: The next question comes from JahRomero.
And it's asking, are there any plans to allow side-by-side
installs of different Chrome channels on Linux?
So Chrome Canary is available on Windows and Mac.
And Chrome Canary, I think, is fantastic for developers.
I know, I run Chrome Stable and then Chrome Linux
side-by-side all the time.
You guys, is that how you roll?
PAUL KINLAN: Well, I tend to get the latest Chromium build
every night from Linux.
PAUL IRISH: So Chrome Canary works great for Mac and
Windows, but there's a lot of people on Linux.
And I understand that not having Canary is a bummer.
There are builds, depending on what flavor you're on.
I know there is a package that's maintained for Ubuntu,
for a nightly Chromium build.
And so take a look around for maintained
unstable Chromium packages.
That updates every night.
Otherwise, there's plenty of scripts that people have
written, just batch scripts that go and fetch it on the
fly for you.
Is yours just like you have it set on chron job?
PAUL KINLAN: I've just got a bookmark to the directory
where they are, and I download it when it's up.
But I've seen some scripts, like shell scripts, which
just, basically, pull it in.
And it will work quite nice.
PAUL IRISH: If you do want an absolute edge Chromium build,
you can go to downloadchromium.appspot.com,
which just sniffs out what OS you're on and gives you one
single click.
Because finding that actual directory is kind of a pain.
PAUL KINLAN: Yes.
And it changed a while ago, right?
PAUL IRISH: Yep.
ADDY OSMANI: So Hussein from Colorado writes, what parts of
the Chrome ecosystem is the team most excited about--
PAUL KINLAN: Web Intents.
ADDY OSMANI: No.
I haven't finished the sentence, and
he's already on it.
It doesn't have to be one thing, Yeoman, AngularJS,
HTML5 features.
I think it will useful to go around.
I can't imagine what you'd most interested in.
PAUL KINLAN: So I'm actually interested in helping
developers just build great web apps quickly and have
great web apps to talk to each other.
I mean, that's the problem I've always face on the web is
that you don't have to do really deep integrations and
just building all these things is really hard.
So anything that makes my life easier, to build great web
apps, is good.
So things like Yeoman, I'm excited about.
I've used Backbone quite a bit recently.
I've not really tried Angular, but I've heard a lot of good
things, those type of things.
Anything that makes it easy for me.
PAUL LEWIS: Me, I'm kind of excited--
I guess I'm similar on this, but WebRTC, for me, is one of
the things.
Because it's quite disruptive thing to see coming through.
PAUL IRISH: That's a good answer.
PAUL LEWIS: I'm a big fan of disruptive stuff, just because
I'm a big believer in what the browser can do.
And so seeing this stuff landing in the browser,
without plug-ins, it's opened so many doors.
So, for me, it's WebRTC for sure.
PAUL KINLAN: So just on that point, we've been able to do
things which we've never been able to do.
And I'm sorry for jumping in.
PAUL LEWIS: That's good though.
I know where you're going.
PAUL KINLAN: Where am I going?
PAUL LEWIS: I think you'll go with packaged app.
PAUL KINLAN: I am going with packaged apps.
We hadn't even planned this.
It's so good.
We just connected.
The latest version of Chrome Packaged Applications, for
instance, allows access to network sockets, UDP, TCP.
You have Bluetooth, USB, all these type of things, which
we've never had in the browser before.
So yeah, that's another one I'm very
excited about as well.
And I won't interrupt again.
ADDY OSMANI: Is that a promise?
I believe you.
I'm most interested in anything that helps developers
build applications more easily and that factors into Yeoman.
I'm also really interested in Web Components.
I see that being the future of how people, perhaps, create
widgets and applications.
And perhaps there'll be less of an emphasis on the
frameworks they use and more about what the browser can
give you right out of the box.
So I think it's going to be really exciting to see what
happens there.
Paul?
PAUL LEWIS: He's busy going left while we're going right.
ADDY OSMANI: Just say, everything.
PAUL IRISH: I know, right?
What are you going to go with?
SAM DUTTON: I'm not going to tell you.
PAUL KINLAN: Well, I'll tell you.
He was going to say, Web Intents.
SAM DUTTON: I was going to way Web Intents.
PAUL IRISH: I really like all the things there.
SAM DUTTON: Yeah, me too.
PAUL IRISH: One of the things about WebRTC though is that--
a small thing, just a small one--
it's still behind.
You have to go to [INAUDIBLE].
SAM DUTTON: Yeah.
PAUL IRISH: It's still in Canary?
SAM DUTTON: Beta.
It's in stable, but it's behind the flags.
PAUL IRISH: It's in stable?
SAM DUTTON: Yeah.
But it's behind flags.
PAUL IRISH: But in Canary is it behind flags?
SAM DUTTON: Yeah.
In Canary--
oh god, I'm going to get this wrong.
PAUL KINLAN: I thought beta was still behind the flags.
ADDY OSMANI: I thought beta was [INAUDIBLE].
SAM DUTTON: It's complicated.
Sorry.
Just--
a little explanation.
There were originally two flags you needed to enable to
use WebRTC.
One was MediaStream.
One was PeerConnection.
What's happened is that it's basically working that, as the
versions of Chrome come through, you don't need to
enable MediaStream.
But PeerConnection, for the actual peer-to-peer
communication stuff, still needs to be enabled.
So what that means is that get user media is available.
We will be coming with flagless implementation, but,
for a while, PeerConnection is behind a flag.
PAUL IRISH: And just to clarify--
SAM DUTTON: Don't ask me to remember which specific
versions it's in.
PAUL IRISH: Oh, it's fine.
Just to clarify, get user media is the evolution of the
device tag from forever ago.
SAM DUTTON: Yeah, kind of.
PAUL IRISH: So it's usually just part of WebRTC.
But you don't need to be doing in realtime communication with
anyone else.
You can just be using get user media as a way to get access
to the camera, microphone--
SAM DUTTON: All that, yeah.
PAUL IRISH: But WebRTC with
PeerConnection is hugely powerful.
And even though it is available pretty widely now,
behind a flag, I don't think we've really seen a great
killer app with it.
SAM DUTTON: Yeah, come on.
PAUL IRISH: The fact that I connect to a peer, not send
all my bandwidth through a server, so you can create,
essentially, a video chat app that can scale beautifully.
Because all the connection is peer-to-peer.
With things like noise cancellation, duplex sound--
SAM DUTTON: Echo cancellation and so on--
PAUL KINLAN: [INAUDIBLE].
PAUL IRISH: And variable bit rate, based on
your connection speed.
Them amount of technology that's in there, things that
you don't have to worry about is pretty incredible.
PAUL KINLAN: So one thing that we would love to see is,
obviously, because there's the PeerConnection API, and
[INAUDIBLE] and all that type of stuff
you can build a server.
Like a client and the peer-to-peer thing, which is
actually not a web browser, it's just a web servelet.
Render a display buffer to it, send it out.
I think it would be brilliant.
SAM DUTTON: That is interesting.
PAUL KINLAN: You could just do a whole lot of stuff with
that, and it would be cool.
SAM DUTTON: One of the things--
PAUL KINLAN: We need to experiment with it, right?
People need to do that.
Let's test it.
SAM DUTTON: One of the things, just to reiterate a bit,
WebRTC, this is all about, potentially, direct
peer-to-peer connection.
But there's a whole stack of stuff built into WebRTC to
cope with NATraversal and communication of streaming
data from behind the firewalls and to
make that really seamless.
That's one of the great strengths.
The other thing we'll be seeing later in the year, we
hope or certainly is planned, is DataChannel API.
At the moment, we've seen WebRTC apps that
use the video stuff.
And what's planned is this API called DataChannel, which does
the same thing, but for any kind of arbitrary data, so
incredibly powerful.
PAUL KINLAN: Over peer-to-peer WebSockets?
SAM DUTTON: Yeah, peer-to-peer data.
PAUL KINLAN: Right--
SAM DUTTON: Oh, come on.
PAUL KINLAN: You know when I said I wouldn't interrupt?
We've actually had a remote gate crasher.
Seth Wright wants us to say Dart is his most exciting
platform feature.
ADDY OSMANI: That surprises me.
SAM DUTTON: If you haven't used Dart, give it a go.
Try it out.
I got to give one more plug since it's my turn.
I've got to mention the track element, which is really
interesting.
I think if you haven't had a look at this, it's a really
simple way to get synchronized timed metadata in with media ,
such as video and audio, so simple use cases, stuff like
captions, subtitles.
But what makes it, for me, really interesting, aside from
the accessibility stuff, is the ability to use timed
metadata of any kind.
So you can have metadata that relates to times within media
and do anything with that.
PAUL KINLAN: Do you want to tell them about your example
that you did?
SAM DUTTON: Yeah.
Shameless plug--
PAUL KINLAN: Yeah, go on.
It's good.
SAM DUTTON: Have a look on HTML5 Rocks.
There's an article about the track elements.
We did one in particular based on some work some guys did
here at Google.
If you go to samdutton.com/maptrack, you'll
see a demo there, which, like a guy ride around on a cycle,
around the Mt View Google campus.
And you can see that synchronized with a pointer on
a map, and also like StreetView
of where he's going.
And that's all done using the track element.
PAUL KINLAN: You'll see all that, the geolocation, there's
the timed elements--
SAM DUTTON: It's fairly simple.
It just had a geo file--
I used an XML file--
to create, in JavaScript, the track data.
And yeah, that's it.
You'll need to have Canary for that.
There's, again, a whole stack stuff we're going to see.
Bring it on.
Good implementations.
ADDY OSMANI: I guess, since we're talking about video and
WebRTC, this is an interesting question for
Sam from Adam Bradley.
Do you see solutions like PhoneGap still being useful if
we're able to capture audio and video now from new HTML5
input fields and features?
SAM DUTTON: Yeah.
In the short term, certainly.
I mean, I don't see these things as
excluding each other.
But I can see that the functionality we get with
MediaStream, if you're using get user media, that's the API
behind that MediaStream.
There's a lot of potential to that stuff which is built
right into the browser.
And we'll see wider implementations across
platforms--
PAUL KINLAN: I think it depends right now.
It's like, if you're building something that's specific for
Android and want specific Android integrations, then
we're not quite there just yet.
But look at the pace of change we've had recently, just to
get where we're going.
It's pretty cool.
PAUL IRISH: The published goal of PhoneGap is
to make itself obsolete.
So they want that.
So hopefully that happens.
SAM DUTTON: Right, where are we with the questions?
PAUL KINLAN: We're on [INAUDIBLE] updates.
PAUL IRISH: We got a lot of questions.
So the next one is GreyGhost Visuals asks why Chrome does
not support the rem unit inside media queries and links
to a little demo where that doesn't work.
PAUL KINLAN: So I'm naive.
I don't know what the rem unit is.
Is it relative em's?
PAUL IRISH: Relative em's.
PAUL KINLAN: Is that what it is?
PAUL IRISH: Jonathan Snook has a really good
article about it.
It was a more recent one.
I'm not sure why.
PAUL KINLAN: Why would you need it in a media query?
Is that in the actual filter--
PAUL IRISH: You're defining a width that you want to
manipulate, that things are going to change in.
So I think, actually, for the media query
condition, not the payload.
PAUL KINLAN: But then, my only question is, you normally put
media query stuff at the top of the page, where you don't
even need a relative em.
You just need a normal em unit, because that's where
it's based from, is it not?
PAUL IRISH: What I would suggest on this is filing a
ticket and link it to your demo.
So this is actually the first time that I've heard that this
is an issue.
So it may not be on the mind of anyone that could work on
it and fix it.
So file a ticket and just ping me afterwards, and I'll try
and find an engineer who can take a look.
We got three more minutes.
PAUL KINLAN: Can I answer one?
I promised I'd answer some Web Intents questions.
PAUL IRISH: Yeah, you did.
PAUL KINLAN: Cheers, dudes.
So it says, I'm currently implementing a proof of
concept with Web Intents.
And I'm wondering is it correct that I have to
implement a Chrome extension to support an
intent at the moment?
Yeah, it's pretty correct at the moment.
We don't have the full tag support in any of
the browsers anyway.
We have a JavaScript shim which emulates.
But that's incompatible with pure Chrome implementation.
So right now, you have to either have a Chrome extension
or a packaged app, where you will define the actions and
the data type that you want to work on and what URLs they
will launch inside the manifest itself.
So, yes, right now, our ultimate goal is to have the
manifest as an option, but have something on the open
web, which will let you register functionality with
the browser of your application.
So we're not way off.
I mean, if you want to build stuff, here today, Chrome,
Chrome extensions, Chrome apps, they're pretty good.
They can be packaged apps or hosted apps as well, so it
doesn't have to be packaged, which most people think it is.
PAUL LEWIS: And is it worth mentioning what Web Intents is
for the uninitiated?
PAUL KINLAN: There is no one who is uninitiated.
I keep talking about it all the time.
PAUL LEWIS: Really?
Hadn't noticed.
PAUL KINLAN: So Web Intents, they're basically a way for
you to connect applications, essentially.
It's an easy way to connect web applications.
The idea, basically, is that you'll have two applications,
which don't need to know about each other to be able to talk.
So you might share a link from a web page, and you, as the
user, get to choose your preferred service for link
sharing, not the ones that are deeply
integrated into the website.
It's like a discovery mechanism for applications.
That's the highest way of saying it.
And the pitch I normally do is if you're familiar with
Android Intents, it's Android Intents but for the web.
So that's the easiest way.
And then another Web Intents question, someone's given me a
compliment that says--
ADDY OSMANI: That's not a question.
PAUL KINLAN: It says, where can I get the awesome--
I didn't get a compliment?
Fred, from London, where can I get an awesome laptop skin?
I thought he said, I was awesome.
Fred, from London, I can probably send you one.
We'll meet up or something.
PAUL IRISH: [INAUDIBLE]?
PAUL KINLAN: He's in London, so it's probably cool.
We'll sort something out.
I think we got some gel skins here.
If not, our producer will send us something.
PAUL IRISH: We've got a few.
And then we can actually post the artwork file and you can
go order a custom one from gelaskins.com.
Let's do that.
PAUL KINLAN: There is, actually, one question right
at the bottom.
It's nothing to do with what I've been
talking about at all.
When will voice input, within the Chrome extension pop-up,
be working again?
There's actually a Chrome extension API, which allows
you to not even require a pop-up.
I believe it's experimental still, so you can play with
that as well.
If it's not working, you might want to look at that one.
PAUL IRISH: One last question.
ADDY OSMANI: So Pete from the UK writes, can you give us any
specifics of the Yeoman plug-in pattern and what the
library will provide?
How far down the add-task for everything style are you
going, or at what point will the developer be expected to
manage files and line endings on their own?
So Yeoman is going to try as much as possible to stay an
opinionated project.
We're going to provide tasks for things that we think
people will use.
So we've got tasks to help with things like required JS
and CoffeScript and Compass.
You don't, of course, have to use those things.
But they're there in case you do want to use them.
In terms of the plug-in pattern that we use, it's
actually really, really flexible.
You can include, in your boilerplate or scaffold or
template or whatever you want to call it, as many different
policies you want.
So if you're a framework, for example, you can define the
models, the views, the controllers, all the different
bits and pieces that are required to
scaffold something out.
And it can be completely up to your style.
It can be customized as much as you want.
And we're going to be providing a really solid set
of docs, right now, so at least that you can go create
your own templates as much as you want.
PAUL IRISH: Cool.
And the last part of that, you were asking about should
developers manage files and line endings?
As far as line endings are concerned--
in the projects we generate?
ADDY OSMANI: Yeah.
PAUL IRISH: Editor Config.
Go to editorconfig.org.
It's kind of an emerging standard that the jQuery
Project Modernizr, Agent [INAUDIBLE], a lot of projects
are getting.
It just sets up a very few number of rules as far as
white space preferences, like carriage return, line feed,
style things, and has plug-ins for editors so that the
editors keep all these files consistent across these
environments.
And this is something that we think is awesome.
And so we have it as part of Yeoman.
I guess that's it for this Office Hours.
Awesome time with three Pauls in London.
ADDY OSMANI: And the rest of us.
PAUL KINLAN: Yeah.
Who all--
PAUL LEWIS: The non-Pauls.
ADDY OSMANI: The non-Pauls.
PAUL LEWIS: Thank you very much for joining us.
ADDY OSMANI: Thank you.
PAUL KINLAN: So are we going to try and make this a
relatively regular thing as well, probably on Thursdays,
probably about the same time?
I'm always going to talk about Web Intents.
PAUL IRISH: So next time you see a message go out on
Twitter or G+, click through the link, ask some more
questions, vote up and down.
And we'd love to answer everything we can for you.
PAUL KINLAN: And enjoy the Olympics.
ADDY OSMANI: Yeah, the Olympics.
We'll see you guys next time.
SAM DUTTON: Thank you.
PAUL KINLAN: Bye.
SAM DUTTON: See you.