MALE SPEAKER: Great.
So we're here at Devoxx 2013.
We're back.
And we have the Angular guys.
Igor and Misko, welcome back.
MISKO HIVERY: Thank you.
IGOR MINAR: Thank you.
MALE SPEAKER: You guys were very popular last year.
I think you did even better this year.
You were all over the place.
You had university session, three hours,
which will be online.
And I heard good things about it,
how you managed those three hours.
You had a code lab which was kind of full, lots of people.
IGOR MINAR: The code lab was awesome.
MALE SPEAKER: And you're just back from a what
you think the future of Angular will be session.
So you liking the conference so far?
IGOR MINAR: It's pretty good.
We've always liked Devoxx.
It's great to be here.
MALE SPEAKER: Well, I think you had kind of a hockey stick
thing going on last year, around Devoxx.
I'm not sure this is really--
MISKO HIVERY: We're giving Devoxx all the credit.
MALE SPEAKER: OK, OK.
Great.
So let's step back for a second.
Angular, for anybody that's been living
under a rock for the past couple years now,
I guess, what are we talking about?
IGOR MINAR: We're talking about framework
for building client-side web applications
with HTML and JavaScript, CSS.
We focus on developer activity and combining all these web
technologies into something that's
really pleasurable to use and is also scalable and testable,
so that you can build big applications
or small applications depending on what you need.
MALE SPEAKER: Wow.
It's buzzword compliant.
Awesome.
So we're talking MVC type of framework,
we're talking data binding.
Do you want to say a word quickly about that?
MISKO HIVERY: Sure.
Data binding, it's just a way for getting the data
from the heap, memory objects, into the DOM, and backwards.
MALE SPEAKER: And back.
MISKO HIVERY: And back.
So that it interacts with the DOM
through the input fields, et cetera,
we update the memory in response.
MALE SPEAKER: Directive scopes, other major important concepts?
MISKO HIVERY: I think directives is unique
because it's something that is unique to us.
Nobody else has this particular thing.
And the idea is extending the vocabulary of HTML.
MALE SPEAKER: Dependency injection, one of you
mentioned that.
That's important.
IGOR MINAR: So dependency injection
is just a way of assembling all the objects
and wiring the application together,
which is great because you don't need to do it by hand
and also makes the testability [INAUDIBLE] much better.
MALE SPEAKER: So in the year that you've had that, I think,
tremendous success, what are the interesting or surprising
things you've seen people do with Angular?
Has it been taken and used in unusual places?
Is it exactly what you had expected?
IGOR MINAR: Yes.
All the time.
We keep on being surprised about things people do with Angular.
MISKO HIVERY: Like putting it in a car.
IGOR MINAR: Put it in a car.
Seeing all kinds of visual things
like drawing diagrams in a declarative way,
taking text and translating that into diagram.
We've seen slides.
MISKO HIVERY: Games.
IGOR MINAR: We've seen games, mobile applications.
MISKO HIVERY: Mobile apps on iPhone.
MALE SPEAKER: So I hear here at Devoxx, the actual,
the thing on the screen is actually built with Angular?
MISKO HIVERY: Yes
IGOR MINAR: Yes.
MALE SPEAKER: So it's really all over the place.
IGOR MINAR: When we started with Angular,
we really meant it to be a way for building enterprise
applications, but people have taken it
in very different directions and it's
surprising to see what they can do with Angular.
MALE SPEAKER: What you mentioned in one of the session
was that you felt really well about the fact
that people are actually building stuff
they weren't able to build before, or not
with the same productivity.
So you can actually get something done in a weekend,
whereas before it was this whole scaffolding and dragging
libraries.
IGOR MINAR: Right.
I mentioned it before, but it's really nice
when I talk to people and they say, hey,
I was able to build this app that otherwise wouldn't
exist if weren't for Angular.
And I feel really good about it because I
feel like these applications can really change the way people
interact and how they do things, and how
technology can make life better.
MALE SPEAKER: So let's see.
There's been a number of new things.
So first of all, Angular 1.2 was released.
MISKO HIVERY: Finally.
MALE SPEAKER: Finally.
Just in time for Devoxx.
Thank you very much.
IGOR MINAR: I'm not sure if it's related.
It was pretty close, and we were heading for Devoxx,
so we're like yeah, it's time.
Cut it.
MALE SPEAKER: It's Devoxx-driven development, right?
DDD.
IGOR MINAR: DDD.
MALE SPEAKER: There we go.
So animations, who wants to talk about?
MISKO HIVERY: Yes.
Animations are also, I think, something
that we're very proud of.
It's a very unique take on animations.
And I think most frameworks just give you
a bunch of APIs to use.
And we kind of stood back and said,
how could the animations look like
if this was just designed from scratch?
How can we do it all declarative?
And so on.
And so we really focused on just making CSS-based animations
just work out-of-the-box.
So if you want to add animations,
it's as simple as just adding a whole bunch of CSS animation
code.
MALE SPEAKER: Don't used too much of it though.
I mean, animations, you don't want to overdo it.
MISKO HIVERY: No, you don't want to overdo it.
But you want to make it easy for people.
So you want to have a subtle animation that
helps in getting the point across rather
then just animation for animation sake.
MALE SPEAKER: Right.
It's not just for being pretty.
There's a purpose.
There's UX concerns with it.
Do you want to talk about improved error messages?
I think that's an important one, a day to day improvement
that makes a difference.
IGOR MINAR: So this is one of the things that bothered me
personally because when I see people struggle
with their applications when they don't know what
is happening, and they get very unhelpful error messages,
it's not a good spot to be in.
Because not only the application's not working,
but now you're getting some information that is not
helpful in getting you from this bad place.
So what we did with Angular is we identified all of the places
where we throw error exceptions from,
and we gave them unique identifiers
and gave them very descriptive error messages.
And also linked them to a documentation page
where this message is described in a much larger scope
and it describes the situations where the error's happened.
But as we were adding these error messages,
we were quickly realizing that we
were adding bytes to AngularJS.
And that's never a good thing for client-side code.
You want to keep the payload small.
So one thing that we came up with was hey,
let's just strip all these error messages
from the minified file, but make it
possible to reconstitute the error messages on the server
just by clicking on the link, if you
had the need to debug something in production.
So it gives you the possibility of debugging things
in production, have you had the need, as well as
smaller payload.
But in development, you get full error messages and everything
is the way it should be.
MALE SPEAKER: The way you expect it.
So speaking of development, what is the typical developer
environment for somebody that's using Angular?
What do you see out there?
Or do you recommend anything?
MISKO HIVERY: I don't think we recommend anything.
People use Sublime from vi to Emacs,
the standard stuff, Eclipse.
MALE SPEAKER: Which is probably one
of the nice things about Angular--
MISKO HIVERY: WebStorm.
I personally use WebStorm.
MALE SPEAKER: --prescriptive in that sense.
MISKO HIVERY: But there is a couple of IDs
that are actually building it in.
Netbeans sent something from JBoss, was it?
IGOR MINAR: I don't know about JBoss,
but WebStorm-- WebStorm has a decent support for AngularJS.
Netbeans is working hard on that and stuff.
But from the whole workflow, what I'm happy about
is how Angular encourages the test-turn development.
And developers actually take this advice
and use test-turn development technique
to build their applications.
Tools like Karma really help with that.
And I'm just glad to see that in practice.
MALE SPEAKER: So let's talk about the future.
So one question I think you guys get quite often
is well, standards are showing up.
There are things like Web Components.
How does that influence the roadmap and what
you guys are doing with Angular?
Does it clash with what you've done already?
MISKO HIVERY: No.
So we actually talked about it in our future of Angular talk,
and how we would like to be on top of it,
and how Web Components is specifically--
MALE SPEAKER: The observed part.
IGOR MINAR: Shadow DOM.
MISKO HIVERY: Shadow DOM.
How specifically Shadow Dom is helping us making that happen.
Object.observe is another area, DOM mutation observers,
and so on.
MALE SPEAKER: So all the dirty-checking that
you're doing today is something that would go away with--
MISKO HIVERY: Yes, with Object.observe.
And it's a standard we helped to write.
MALE SPEAKER: Yeah.
You influenced it.
Is that fair to say?
IGOR MINAR: Yes.
MISKO HIVERY: Yes.
MALE SPEAKER: The other thing you talked about
was how you like for developers to be
able to use parts of Angular without dragging
the whole thing, so maybe just the dependency injection for--
IGOR MINAR: Right.
So I personally believe that modularization
will be a key component of the web development
or the whole web ecosystem in the future.
And this is what we would like to take to our hearts
and break Angular into smaller pieces, each focused on one
particular task.
For example, you mentioned dependency injection.
There's no reason why dependency injection
needs to be built into Angular.
We can just extract it, create a separate library out of it,
and then use it in Angular.
But you can also use it without Angular
in [INAUDIBLE] application, or some other application
or anywhere.
MALE SPEAKER: Good.
Any other things you find important,
in terms of the feedback you've gotten that you've taken,
and that you think will influence
the future of Angular?
IGOR MINAR: So one of the things that we would like to do more
is get more of the community feedback
on things we are doing.
MALE SPEAKER: What's a good channel for that?
IGOR MINAR: Definitely follow on Twitter and Google+ feeds.
We're going to be sharing some of the proposals
for the future versions of Angular and things
that we want to do.
And we would like community to help us by providing feedback
on these proposals and help us with reviews and stuff
like that.
MALE SPEAKER: OK.
So we're at Devoxx.
One of the big announcements here was Dart 1.0.
I here there's an intersection with Angular.
Do you want to go over what happened there?
MISKO HIVERY: Yeah.
So we would like you have a choice in which language
you want to use.
In JavaScript, you have CoffeeScript, et cetera.
And all of these are semantically
equivalent to JavaScript, so you can just use AngularJS out
of the box with them.
But Dart is semantically a little different.
And so we actually made a port of Angular on top of Dart.
And it's actually used internally at Google.
So there's real apps running on it,
as opposed to just hypothetical.
MALE SPEAKER: Right.
In production at Google.
MISKO HIVERY: Yes.
IGOR MINAR: So at Google, currently we
run both the Dart applications and JavaScript applications.
Because one thing that we see is that language
is such a sensitive topic among developers.
There are people who have different backgrounds, who
have different preferences.
And you can't just tell them this is the only thing
that you can use.
And it really is up to the project, up to the team,
to pick whatever they feel comfortable and productive in
and use that technology.
And Angular now gives them the option
to go either with Dart or JavaScript.
MALE SPEAKER: Great.
So where should people go to find out
what's available today, 1.2, and the future?
Obviously, the website, angularjs.org?
IGOR MINAR: Yup, angularjs.org.
And on Twitter, it's @angularjs and Google+, +angularjs.
MALE SPEAKER: You guys are having a conference soon, I
hear.
An Angular conference?
IGOR MINAR: Yup.
We have a really awesome community,
if we haven't mentioned it.
And some of the members of the community
are throwing an AngularJS conference
which we are taking part in.
And this will take place in January, mid-January.
And we're really looking forward.
MALE SPEAKER: Looking forward to that one.
Thank you guys.
Wish you all the best for the future.
And thanks for watching.
IGOR MINAR: Thank you.
MISKO HIVERY: Thank you.