[MUSIC PLAYING]
ANDREW BROGDON: All right.
KATE LOVETT: Are you ready for it?
ANDREW BROGDON: Yes.
KATE LOVETT: Let's do it.
ANDREW BROGDON: Let's do some more questions.
KATE LOVETT: John.
ANDREW BROGDON: John, you're in the moderator's seat.
What do you have for us?
JOHN RYAN: Yeah, so this question
is, how do I get started contributing with Flutter?
If I want to actually work on the framework,
how do I get started contributing?
ANDREW BROGDON: That's a good question to hear.
KATE LOVETT: That is a really good question.
In fact, I am so glad that you asked.
ANDREW BROGDON: As someone who contributes to the framework
personally, go for it.
Yeah.
KATE LOVETT: Yes, yes.
And first of all, every time I see a first-time contributor,
I am so excited.
It's one of the most thrilling moments ever.
I try to roll out the welcome wagon
as digitally as possible with emojis and everything,
because everyone is welcome.
Everyone is welcome to contribute to Flutter.
ANDREW BROGDON: Because sometimes people
are afraid to try and contribute.
They're worried that someone's going
to code-review their stuff and be like, well,
this is awful code.
Why would you trouble us with this?
KATE LOVETT: And I felt that way too.
It can be a bit daunting the first time that you
go around GitHub and you consider contributing
to an open source project.
And so I'm here to tell you that you can do it.
If you look at our wiki--
maybe we can pull it up.
We do have a contributor's guide that kind of gives you the
how to set up your environment and how to find something
to work on when you first--
ANDREW BROGDON: Oh my goodness.
KATE LOVETT: --look at potential things
to submit a pull request for.
My personal favorite, what's near and dear to me,
is working on documentation changes.
It takes away the fear of oh, gosh,
I don't want to break anything.
I don't want to dip my toe into the water
and make a big mistake.
So working on some of our documentation,
like submitting a little bit of sample code or something
like that, is not only a great way to get started,
it's a great way to learn.
And it also helps other people learn and contribute
to the project as well.
ANDREW BROGDON: That's true.
KATE LOVETT: So check it out.
ANDREW BROGDON: Yeah, that--
the docs and tests.
You want a test something?
KATE LOVETT: Tests are always great.
ANDREW BROGDON: People are going to love you.
KATE LOVETT: Tests are wonderful.
ANDREW BROGDON: Yeah, you never have enough tests.
That's something that I'm sure the engineering team is always
happy to see, somebody being like,
oh, there's not enough tests for this.
Let me do a little work on that.
So yeah.
And there's a contributor's guide on the wiki.
You can check that out.
It'll help you get your machine set up and things like that.
And again, Flutter is a safe space.
We have a code of conduct for code reviews
and everything like that.
If you show up and you're really putting effort in,
people will welcome you.
And they'll be very happy to have you.
KATE LOVETT: We can't wait to see you.
So check it out.
ANDREW BROGDON: All right.
John, what else?
JOHN RYAN: Yeah, so we've gotten a lot of questions
about whether I should be using Visual Studio Code or Android
Studio.
[LAUGHTER]
Are we going to come out with Flutter Studio?
So what's the deal with IDEs?
KATE LOVETT: Oh, gosh.
Are we-- do we want to get into this Thunderdome?
ANDREW BROGDON: Yeah, we can cover it,
because we just announced a whole bunch of other tools
that now suddenly integrate with Flutter
and can generate Flutter code.
So one of the four pillars of Flutter is openness.
And that applies to a lot of things,
including the tools that we integrate with.
So Flutter has three fully supported IDEs.
There's Android Studio.
There's IntelliJ IDEA, which is the one that I personally use,
and Visual Studio Code.
And there are significant numbers
of people using all three of those.
They're all supported by the Flutter team.
We have people working on those plug-ins
and adding features to them and so on and so forth.
Flutter itself and the language server
that provides analysis messages and stuff like
that though-- they're open, too.
You can hook them up to something like vi or emacs.
There are folks in the engineering team,
like Hans is a dedicated emacs user.
KATE LOVETT: Yes.
ANDREW BROGDON: I've never seen somebody move so fast.
KATE LOVETT: I actually use two of them.
ANDREW BROGDON: Oh, yeah?
KATE LOVETT: I use--
yeah.
I use Visual Studio Code when I'm working on a sample
or trying to identify what's going on in a bug.
And the actual framework code, I work on it in Android Studio.
So I switch back and forth.
And I don't know why.
And what's really great is the fact that it works in both.
And rather than having one dedicated IDE,
it's whatever you like best.
ANDREW BROGDON: Yeah, and if you work in some other editor
that you wish worked with Flutter,
I bet you can find other people that work in that,
and you could just start working on a plugin with them.
Who knows?
All right.
What do you have, John?
What's next?
JOHN RYAN: Yeah, so this question
is from Mayor G on Twitter, and the question
is coming from the San Francisco Bay Area.
The question is, can Dart be compiled to WebAssembly.
What about WebAssembly?
KATE LOVETT: WebAssembly.
ANDREW BROGDON: WebAssembly.
KATE LOVETT: We just had that talk on web.
ANDREW BROGDON: Yeah, and that was about Skia compiled
to WebAssembly, if I believe.
So let's see.
So right now pure Dart code cannot be compiled
to WebAssembly itself.
That's not something that it's able to do.
I think the garbage collection isn't quite the same,
and they're still working on it or something like that.
If you are looking for better performance,
though, from a Dart application, the canvas
kit experiment that they're working on right now--
and if you just saw Farhat's talk,
you saw him talk about it.
That provides a significant speed update
using a WebAssembly-compiled version
of Skia, the graphics library.
So if that's interesting to you, that's
definitely something to look into.
And it is very performant.
The first time I saw it, I thought
they were running it as a desktop app.
It was--
KATE LOVETT: Oh, wow, really?
ANDREW BROGDON: Yeah, it's crazy.
So-- but yeah.
There you go.
KATE LOVETT: What else do you have for us, John?
JOHN RYAN: Yeah, so this question
is from Jeffrey Liu on Twitter.
The question is around how to record a video of a widget.
So is there a way to record a video of a widget?
ANDREW BROGDON: Oh, wow.
So to record--
KATE LOVETT: To record a video.
ANDREW BROGDON: I know how to take a screenshot of a widget.
KATE LOVETT: Yeah, and I know that there
are some devices that do provide screen recording.
I think that iOS certainly does have a feature that
will screen record for you.
ANDREW BROGDON: So--
KATE LOVETT: But if you don't have an i--
I'm not sure.
I'm not as familiar with Android, to be honest.
ANDREW BROGDON: So I have the good fortune
of working with Greg Spencer, who
is the engineer that does a lot of the tooling for Flutter's
documentation.
So you may have gone to Flutter's docs,
and sometimes there'll be all manner of things embedded
in there to try to give you a better
idea of what the widget does.
And I remember seeing in the Curves library--
they have videos of Curves.
KATE LOVETT: Yes.
ANDREW BROGDON: And these are--
if we go into the laptop, you can actually run these and see
if you put a Curve on an animation,
what does that Curve look like?
You don't necessarily know what bounce in,
bounce out looks like until you actually see it.
And I believe--
KATE LOVETT: This was actually recorded using an open source
script that Greg wrote so that we
could create these sort of demos for our references.
It's assets for API docs.
ANDREW BROGDON: Oh, you're on the engineering team, so
[INAUDIBLE].
OK.
KATE LOVETT: Yeah, and this is-- and this is open source,
so you can take a look at it.
And there's also instructions on how to use it.
And lots of examples of how we've used it,
because all of our examples that you'll
see in our API documentation have
been generated by this script.
And occasionally we will just run them all over again,
just to make sure that they're all up to date
and they all match spec.
So I encourage you to check it out.
And if you like it, feel free to use it.
It's very handy.
And-- yeah.
ANDREW BROGDON: Oh, my.
There's a lot of tooling--
KATE LOVETT: Yeah, there's a lot of-- there's a lot.
Yeah.
ANDREW BROGDON: Yeah, so as with everything,
with Flutter, it's all open source.
You can always go look at the code.
There's packages in here?
Woo, diagrams.
KATE LOVETT: Yeah, there's a lot going on there.
ANDREW BROGDON: It's like a two-image.
I've actually talked to Greg about this before,
but it was a while back.
I think this is it.
Takes snapshot, and what he does is repeatedly take snapshots
and then he uses a tool to sort of merge them together
into a video.
So that's definitely something that you can look into.
Again, this is one of the nice things about open source.
You can check this out, publish your own version
of widget-to-MPEG or something like that
and make a little community for yourself.
[MUSIC PLAYING]