Keynote with Tim Sneath (Dart Conference 2018)
Thank. You guys welcome to dog Kampf it's so good to have you all here, my. Name is Tim, Smith and I'm the group product, manager for, flutter and dart. I've. Been only at Google for about nine weeks so. Far after. Joining, from Microsoft, where I spent, 20 years or just under 20 years working on different client technologies, including, WPF. Silverlight. Internet. Explorer. And. Windows. Honestly. Though I expected, to be with Microsoft, for a good, many years to come but about, 6 months ago I came, across flutter. And I. Kind, of fell in love so today, I kind of want to tell you a little bit about what brought me here. So. We're gonna be talking about two, primary. Technologies. This morning, of course. One is darts, this is after all the dark conference and dart, is a fast, powerful. And productive. Language that is optimized. For client-side. Development. The. Other is flutter, which, is a new mobile UI framework, from google for. Crafting, high quality native, experiences. For, ios and android. Over. The last couple of weeks we've been iterating on our vision to try and make sure that we fully convey the opportunity, that, we see here and here's, what we've come up with we want to help developers craft beautiful, native. Experiences. Across, all screens with, a client, optimized language, rich. Powerful frameworks, and delightful. And flexible, tooling and, we. Believe we're. At a unique inflection. Point at this time in building mobile application, software where, the time is right for a new framework that. Combines, all these attributes together. So. I want to tell you a story about. One of the first companies to build an application using. This, framework and their, experiences, in. Fact instead of me telling you the story I want, to show you this. Short, video. Hamilton. Is one the most talked about in best love musicals, which shows on Broadway in London, and around the country we. Wanted something to make, the show more accessible, for our fans so we wanted to develop an app to meet the needs of fans as we started to expand the brand we. Turn to a posse a newer face development, firm to help us develop the hennepin app Hamilton's. Flutter app launched in the app store in the Play Store three months after we wrote our first line of code and we accomplished a time fans, can enter a daily lottery for a shot of ten dollar tickets buy merchandise Rooney commerce experience, take, selfie photos with the ham cam and get daily news updates we knew that this app needs to be rock-solid both, in terms of performance and visual fidelity and really, represent the amazing, experience, at the Hamilton show itself provides and ultimately, that's why we decided to use flutter flutter.
Is A mobile UI toolkit, that allows developers, and designers to craft beautiful, native experiences. On ios and android ii and is entirely free and open-source we have very high expectations of, quality, for the apps that we build we, expect, pixel perfect results, and we. Need that other be very high performance, flutter. Gave us a lot of opportunities, that previously. Weren't available, to us the, fact that it's a single codebase drastically. Improved our ability to deliver consistent, experience, across the platforms it's hot reload, gives us an ability to build more features in less time it, allowed me to make change is really fascinating through, the UI. Having, estoppel restart, the app coming, from an iOS and Android background, it's something I've been waiting for for a long time the. Photo developer community is very active dropping. Packages helped us maximize productivity. It helped us integrate elements, firebase, and cloud the, end of the day we're just really happy that we found flutter so that we can build these beautiful and native interfaces for both iOS and Android from a single codebase we, were given a really tight timeline and we turn the app around faster, than I ever could have imagined, we were able to make changes right up to the night before we went live and really, feel confident, about them in fact, we push an entirely new feature to the App Store the day before we launched and since, launch flutters efficiency, and speed has helped us to build, new features such as the recent trivia game we're, really excited because the show continues to grow we're, going to be able to keep pace with a ton of new features that's, gonna make that even better we, couldn't be more thrilled with flutter it has enabled us to use one code base to deliver, a truly, high quality app that Hamilton, fans have absolutely, fallen in love with we're, thrilled with what Posse was able to deliver the entire brand of Hamilton, is about delivering on an experience, for fans they're, thrilled, about the new features that were rolling out and we're really excited to see where the app goes next.
So. Cool I got to hang out with some, of the team from Posse last. Week in New York and it's amazing, what they've done there I particularly loved that the speed they. Were able to start building and get a great. Result on, there Hamilton app and the. Results, are in, from the various stores we've, already seen a million or more installs. Of the Hamilton app with. Over. 450,000. Monthly. Active users so, it's been, a really powerful experience and a great example of how darts, and flutter, come together to build great application. Experiences. Okay. So, let's break it down little we're. Gonna spend the next in a while talking about each of these three parts and why, we think together they, make this platform a compelling opportunity, for. Client developers I'm, going to start with, the language which. Is of course dart. So. Dart is the backbone, for everything, we're building it's. A stable complete. Battle-tested. Language. This. Isn't an architectural, diagram, but dart, is more than just a language of course it. Includes a set of core libraries, includes. Compilers. Transpilers. It's, got runtime, support for advanced language capabilities, like garbage, collection, as well as a rich ecosystem, of tools and, packages. The. Dart started, on the, web but, we've evolved it over time to add mobile. And that's been our direction moving forward. As. We look across the web we're seeing evidence that dart is starting, to become popular. We used Google bigquery to. Do a scan across the public. Github, corpus, to, see, how many lines. Of code that were out there with it with art and we're, already seeing that there's over 70 million lines, of code out there, and. You can see that over the last couple of years dart, is starting to take off it's. Not a top-ten language yet but as you can see from the shape of this TOB index dart. Is really starting to climb up the rankings, or the ratings. Okay. But. There are lots of languages, out there why, do we specifically think dart is a good one. Well. There are three things in my mind, firstly. As you saw with the Hamilton app and as you'll see again later flutter, has this amazing, capability, called hots reloads, which, allows you to deploy an application to. Your device and, continue. To change it in profound ways while it's still running and hot. Red reload makes, you quit quickly, iterate. On your UI design, you, can make changes, to your application and, continue. Immediately to see the results of those changes, whilst, the application, keeps running and that, doesn't just happen, it's, powered, by dart. Dart. Provides, added compiler, and it provides the support and integration, with flutter at. Runtime for, changing, code and keeping the state alive. As as the new pieces of code are deployed into the into, the VM. Secondly. Dart. Is near unique in. Having a number of different outputs for it dart. Is designed around. The. Ability to support mobile and web applications, if you're, building a mobile application. As a developer, we have a JIT compiler, that gives you the great developer, support for things like hot reload but, we also have native, ahead-of-time compilation to. Machine, code whether it's arm or something else so, that you can, achieve. That, native, performance. On your, released product. Similarly. If you're building a web app we, have transpilers. And we have a couple of those as well we have one that, is designed for development, purposes that, has lightning.
Many Engineers we have working, with our web tools inside Google we really can't talk about that which, really taught me an important thing which is always ask for forgiveness instead of permission. But. What I did ask is like what can I add, mo and talk about how much money, it makes is like well that's all public it's. Like Oh perfect, so. All you have to do is go look at a quarterly statement from Google to see how much money we make an ad revenue it's, not a small part of the Google business. And. It's all primarily. Driven by Adwords, so I was. Trying to think of the superlative, to describe, the requirements and, I think intimidating, was the word I landed on there like the most this. Team has. To build an app that's has. To be rock-solid like, anyone. Here that has an application that takes credit cards you realize any, minute of downtimes lost revenue so it has to be stable, it, has to be fast people, expect this kind of experience to switch experiments, to feel like a native application like, a desktop application remember. Having to install those. And. It has to integrate quickly this is still a very competitive business the. People that buy ads expect, new features we rolled out continually, and so, the, engineers have to be able to move really quickly and what was great is because, of darts flexibility, its type system its core libraries. Not. Only enabled us to build the frameworks that we used to drive these tools but, allowed us to build a compelling application, so, without showing, you how to buy an ad on Adwords at least were to show you the application we have. If. You switch to the demo please, this. Is AdWords, exciting. The. First thing I want to do it's kind of silly I'm gonna do the shift command our trick. Just. To so show how fast loading. The application is this. Is a giant application, I don't know if people reloaded Gmail before. But. For the size and scale of what this accomplishes, we, actually because we have a very smart compile compiler. That knows how to treat and do lots of other clever things we, actually generate relatively, small binaries, for large applications. Secondly. I just wanna show some of the richness of this, even. Things like a button click I could just do this for hours. Mm-hmm. Like the, subtle material animations, you list the load upload the the load animations, this application is actually broken into several small parts and we delay, load them as you click around this, allows our initial load time to be very small and allows, us to segment. The application applauded and again, this is one of those things where having a strong, type system and be able to rely on you. Know things like static analysis are really important it allows their engineers to build multiple. Segments, have a huge, application and have, high confidence that when you deploy it, all glues together well and must just send well so, things like you know slide out animations. Really. Big lists. Wait. For the delay load here. All. Work really fast and this, is 100 cent written in dart. So. If I want to target my angular dart ad at my father I could go in here very easily and, make. Sure he sees it and. Even silly things like the calendar control. If. You look at just the mouse over behaviors, we. Show the highlight you know the ability to do drag and drop, Tim, and I both spent a lot of time working on, desktop. Frameworks. Where, we had complete control of the operating system and the in the OS stack and accomplishing, these kinds of effects and this kind of speed was really difficult and. It's so exciting to work on a platform that enables delivering, these type applications, to the open web and. That's what dart let us do back. To slides please. So speaking of superlatives. We. Talked to Manish about just the experience of deploying adwords with dart and again. How critical it was to be was revenue how.
The Shape, the language the libraries, the tooling we have really. Offered an amazingly, productive. Experience for the engineers, and. Given. What they came from it's, you know it's a very validating thing to be a product manager on because they've just been so delighted in their productivity, and of course when you have a very productive engineers, in. Such a critical business that, really maps to increased, revenue, thank. You Kevin. A. Bird. Is such a great example of, how darts, coupled, with the web framework, that dart, provides enables. You to build these highly scalable, fast, performance, experiences. So. Dart one, was, good, but. We listened to you people, in their community, people, on. Github, and other places and you told. Us a couple of things about how you were using darts, and some innovations, you'd like to see in the language in. Particular you told us that optional types are, sometimes, hard to use you. Told us that as you write more and more code in darts you'd like us to help you as a language. Reduce. The amount of boilerplate code in your line in your code and then, thirdly you said you'd like us to just iterate, faster. With the language to build new, innovations. Or new language features into the language. So. Today I'm delighted. To formally, announce. Darts. To, witches. Table, two is a reboot, of dart as a language optimized. For, client, development. Tartu. Is mainly about three things, firstly. Strong. Mode, secondly. Some, new language features and thirdly. A common. Front-end, let's. Talk about each of these in turn. Firstly. Strong mode, so. When the team first designed dart they, were inspired by, the dynamic, loose, typing, model of the web it seemed great but. As we scaled up dart one to extremely, large applications. We, found that stronger typing, really, helped us to detect errors and of. Course this is becoming a trend on the web as well as you can see from the rise of languages, like typescript. So. Here's, an example of how insidious, errors, can sometimes, creep into your code with, a weaker type system this. Is a simplified. Example of, an actual bug we found in our adwords code, you, can see here that there's some code it's taking. Some prices. Trying to sort them and return, the lowest price, any. Guesses as to what the price reported, will be. Was. I hearing. A few different answers here some some, expert, dart engineers, have already figured it out maybe they're the people on the dart team, yeah. The answer is 10,000. And. That's because of. The way that the, strings are converted. When when the initialization takes, place it's. Essentially, returned converts. Price into a dynamic, list, so. Strong mode enforces. Type checking and it, means you can never get into such a state where any value expression, evaluates, to a value that doesn't match the expression, static type so.
With Strong mode we get better error messages, earlier so issues like this quartz immediately. And so you see here this is a dart pad with strong mode turned on and you immediately see that there's a, squiggly. Line underneath warning. You that there's an error so. Strong mode we think is a good. Step forward for dart as a language that will help with these broader. Big, production, quality applications. Secondly. New language features I mentioned. That we're evolving and, rebooting, dart to be optimized, for the client and here's, a great example of how we can reduce the amount of boilerplates so. This is a bit, of flutter code to build a widget and, as, you may know flutter uses, darts to actually, create an instantiated. This. Is an interesting challenge a lot of languages, try and create a separate, markup. Language, for, the UI declaration. Because the language, itself is not really designed around UI, and we dance we think we're onto something here where, the UI can be expressed in the same code. File as the rest of your logic. The the, model of the view controller all appearing in the same place, the. Problem with this is that there's a little too much language ceremony, associated, with the declarations, here and it gets in the way of that UI in particular there's. A lot of new and comps to the boilerplate, you. Can't miss it out and it can actually cause confusion if you suddenly forget to. Put in a constant, suddenly. All the, extra. Intelligent, help from the editor that sort of disappears. So. Wouldn't it be great if we could get rid of that and just focus on building the UI, so. With this specific new language feature we've, made optional, we've, made new and Const, optional. And so now you can write something. Like this in Dart to where, there's not actually a single, dart. Keyword, involved. In the, declaration. Of. Of. Your, widget. Pretty. Cool. And. Following, this. We're looking at how we can make the UI as code experience, even better with future. Releases. And iterations, of the dart language and, leaf, is going to be talking a little bit more about language features, after this sir keynote so you'll hear some other examples. The. Third thing in dart too is, the. Introduction. Of a common front-end, now. Lots of tools and compilers are out there already that, allow us to handle dart. Code today. Most of them are built independently. Which. Admittedly allows different teams to work fast and to iterate quickly but. Many of the tasks that each of these different items, needs. To perform, are actually, common and so, that means there's lots, of rework, lots of these tools doing the same things and worst, there's, a risk of inconsistency. If there are subtle differences in how they handle the. Dart language. So. With dart 2 we're, introducing, a new common, front-end, to our tooling and. This front-end of course analyzes, the source code to build an internal representation of the program it manages, the symbol tables, and those kinds of things and the, benefit of that is that we. Get more consistency, across these individual, pieces it, means we can move faster with the language by adding new features and in some cases those. Changes, don't even require back-end, changes, also. It enables us that positions, us well for.
Don't Want app one, click okay, okay so, why did you pick flutter specifically. As your technology to build whoo cool well, that's a good question and actually a funny story, when. We started company five months ago we, didn't we haven't heard about flutter back, then so, we, started, to evaluate, these more, traditional like native, Android and react. Native kind. Of a flat. Frameworks. We. Had our requirements, like, we, wanted to, have, native. Like. Performance. Smooth, user experience. And, we. Wanted it to run on both iOS, and Android. Not, to mention code efficiently, to, level this all and last, but not least. We wanted it, to be out quickly in, time to play impossible, of course okay so, then. None. Of these actually this framework. Didn't, fulfill, our requirements, so, our. Developer. Actually suggested, suddenly flutter, and. He. Thought that it's gonna, fulfill all the requirements and, we were amazed and that's, actually why we're here now because. We chose flutter and we have not our beta, version, out and they're on. IOS. And Android, fantastic. So, just. Tell me a little bit about your experiences, using flutter then tell me from a technical level what is it about flutter that attracts you Tim. Out, of all of the good features flutter, provides, I actually, went to our developers. Thanked, ISM asked. Him if you need to name two most, important, features, that you love about flutter, so here you go. Number. One hot, reload hot. Stateful. Reload, is a killer. Then. Then. Then. Then another one other one is uh is. The customizable, UI it's. Amazing. You can just customize anything. You want, that's. About it fantastic. Thank, you so the application, is is live right now in beta on both stores right tell me a little bit about that how can people get it yes. Yeah. Well, it's, a public, beta on, Google. Play so you can get it today, just. Google, it. You. Were ugly and then. If you want to use, Apple. Version if I was very shy version if we have a, stand. Both they're outside, in the break time so you can go there and just, keep email and we, give it your own test file great yeah I've seen your app it looks beautiful it's a really good example of the power of flutter, in action there's a little video of it behind the scenes there but yeah, I'd encourage everybody go, download it check it out and. If you want the Android or the iOS version and, you're not physically, here I guess, you can email these. Guys and they'll give you a test flight. All right cool hey guys thank you thank, you yes. So. Flat is only an alpha but, we already have over 200, apps in the Google Play Store and we're continuing, to see apps. Start to take off here and we think this is the, point in time where maybe flutter. Is starting to be that sort of that, firework, that's called the spark and maybe starting to take off a little bit. We. Launched flutter back, in we. Announced flutter I should say at IO, and since, IO. Last year so that's what nine months or so there's. Been a whole bunch of new features added to it. Including things like right-to-left, layout support, accessibility. Custom. UI background, execution you can read the list here as, well as integrating dart too and the richness of the. Dart, language into. Flutter we're. Getting very close to beta we're expecting, a beta to, be available, before i/o we have the channel ready we're starting to kind of put the pieces in place so, whilst. We're not announcing the beta this morning stay real tuned because we are we are getting very very close to. The point where we think flutter is is ready for prime time and, a. Few, idea, a few examples, of some of the things that we're working on as, as, with Dart everything, in flutter is open, source everything is out there on github so you can go and see what's. Going on this is a sampling, of some of the areas where we've been putting. Some energy right now to add. New capabilities including, widgets like maps and webview, and charts. We're, doing continued, work on accessibility we, already have accessibility, support but that's a journey we're, continuing, to work on we're, adding increased support for, performance. For text rendering we're, adding new language, and tooling features, like. Enable. Embedding, flutter widgets into an existing app and profiling. So. Check it out there's the website there where you can see everything, that's on our radar we also love receiving, your pull requests, your contributions.
Your Issue so we can continue to make sure that we build with flutter a, framework. And an, SDK that is perfectly. Suited. For the needs that you have as, a client app developer. So the third stanza, review I we've talked about dark, to the, rebooted. Client, optimized language, we've, talked about flutter as an example of one of the rich powerful frameworks, that build on the dart language and, lastly. I want to talk a little bit about some of the tooling that, we have for. Darts, and flutter together. Firstly. We, build great, IntelliJ. Plug-in support for, for. The entire stack, here and that's, available. For, IntelliJ, for webstorm, for Android studio and just this last year we shipped 13, different versions, of this so we're moving very fast, on the, tooling you can see a lot of momentum there and you. Can expect to see continued, delivery. Of updates. To that of Portland, team, deliver. A lot of that work so thank you to you guys, we. Also have a. Redesigned. Package. Repository. For, getting at various. Different things that you need whether you're building for the web whether, you're building a flutter mobile, app or whether you're just building something that needs some core dart functionality, and relatively. Uniquely, as a packaging, site, our repo, here provides, really. Good support for things like reputation. So when you pick, a particular package, here we, assign it a reputation score based off number of downloads based off a few other metrics, so, it's easier to kind of see their packages, that you might. Be interested in that are relevant to. Your needs. Already. We have over 1500. Packages. At, pub.dartlang.org, which, is pretty incredible again, given where we're at in this early stage of our journey with. Dart and flutter and, you can see more packages, every day the one that came out just this last 24. Hours from, App Tree who've built a great Maps plugin. And, so you can see a bunch of different things that are coming out here, one. Great example of how the community how, you guys are, all helping, us build a better dart, ecosystem is, this, one here. Danny Tapani yeah Danny are you here somewhere wave your hand if you're here there is we're hiding at the back there because he's he's, shy, Danny. Danny, has built this amazing extension. For flutter and darts for visual studio code which is a really popular developer, tool and. Again. We're seeing a lot of interest. In this it's a great way to build. Flutter. Or dart applications, and I'm pleased to announce today that we're bringing Danny on to. Work full-time with us for the next 12 months on. Continuing. To improve this. Code extension, to make it a really great alternative to. Android studio IntelliJ. For building these applications. So. This is the opportunity, we, have right now between these three different pieces with, darts, this, battle-tested. High-performance. Scalable, language, with. Flutter this, beautiful. SDK. For building incredible experiences. With. Tooling, that supports, this and packages, that, the community provides we, think we're poised for a really, interesting 2018. We think we've, got something here that is rather unique and I'm, really excited by the opportunity. As we move, ahead with. This combination and, others. Are starting.
To See it as well for, example this medium article from Nick Manning was. A really good article talking about why he thinks flutter, will, take off in 2018. Even. Visual Studio magazine. Who. Maybe not our most loyal, fans. Wrote. This article about how even. Things like xamarin are starting. To be challenged, by bye-bye. Flutter so the. Opportunity, is here you, guys are the early adopters you were here first you've. Been following, this journey for. A while and we think this is the time this is the year where. Flutter is going to be amazing. So. I want to close with a thank you, some. Of you have done amazing work to help support us and get us to this point in, particular alexandra. Has. 156. Pull. Requests, committed, in, the codebase of blood for flutter and darts and Gunther, has, been. Amazing. At answering questions on, Stack Overflow with, over 2004, hundred answers. To different questions plus, of course we have this stack of Google. Developer, experts, most. Of whom are here in in. LA for the conference so I'd like to particularly, thank you, guys for making this, this. Environment, great thank you so much. So. Lastly what next here, at Kampf we're gonna have a really good time we've got I can't remember how many sessions 12 13 14 15 sessions we've. Got unconference, an unconference we've got lightning talks, it's. A great opportunity not just to listen and learn but also to network with other Google, engineers, to network with each other, secondly. We want your feedback tell us how we're doing tell, us what we need to continue, to invest and improve on to, make this a great platform, for you. Thirdly. We'd, really, appreciate your help we are still in alpha with flutter dart, is still starting, to take off we'd really love your support in being, our evangelists. To spread the good news of Dart and flutter so if you feel able we'd really appreciate you, tweeting. Or sharing, with your networks a little bit about your own experiences, with, the platform and lastly. Please, contribute we have everything that's out in the open, we really, do relish your contributions, whether it's finding, new bug reports, or whether it's filing. Issues. Or, contributing. Actually to the code with patches or or pub. Widgets. Or things like that so. With, that I want. To thank you I hope you have a really good dark conference, thank, you so much for coming have a great day, and today in tomorrow thank you guys. You.