 Hello everyone. I'm sorry I don't have much demo code, but I have good animations and a cute babypick, so bear with me. I work with Mapbox, and I create a thing called leaflet. If you don't know what leaflet is, it's a thing you use to put maps on the web. And all the awesome guys are using it. It looks like this. Okay, let's go. First announcement I'm going to make is that the next version will be 1x0. It's a really huge milestone for the leaflet project. It's really important, and it's perhaps the biggest update of leaflet since the first release three and a half years ago. It supports a lot and a lot of changes, but maybe not the changes you would expect from a major release. So I need some time to explain my thinking behind leaflet development and what I actually want to do in future, and how the development happens, and what features I accept and what not. Probably it will happen sometime next month, though I would release it earlier, but I have a three-week vacation in Turkey after the Phosphor G, and I didn't rest for a year, so I really deserved that. So hopefully next month. And so a bit of background of leaflet history, leaflet was born against all odds. So back in 2008, when the only open source mapping solution in JavaScript was local errors, and I thought that you could build a really much simpler JavaScript library, and everyone told me that I shouldn't do it, that it's a worthless idea, it's crazy, no way I could do that. They told me that I'm wasting time, that I should have been spending Contribute into Opalware, instead of having this blash release ideas, and my boss at CloudMate told me that I should forget about building an API from scratch, because we need to use a stable, major established solution, and I said fuck all that, I'm gonna do it anyway. So leaflet was born as a protest against bloat, against clutter, and against complexity. And so the top priorities were how all is being and will always be simplicity and performance, and everything comes next. And so let's see what's next for 1.0. And I should also say that it's an evolution, not revolution. So there are a lot of improvements that are maybe small, but they build up into something that makes the product tick. So first I'm gonna talk about animations and usability improvements, and the first feature that leaflet 1.0 will finally have, and it has been requested a lot of times for all those years as fractional support. So you will be able to set any zoom level you want, and it will just work as expected. So leaflet will still be optimized for integer zoom levels, but if you need this functionality, you can use it without any problem. And one thing that this feature enables specifically is ballistic padding. It's kind of optimal padding that zooms and pumps at the same time, and it's really great for lots of applications when you have to switch between locations or zoom to particular locations, and it makes the usability much better. So you will have that. So let's get back to fraction zooming. Okay, so next up is bird tile loading. So up to this moment, leaflet has had a really simple way to buffer tiles from other zoom levels, and actually it could save tiles from zoom levels from which he zoomed into another level for only one level. Well, it sounds complicated, but we'll just get better. Too long to explain. There's less flickering of tiles now. Next is the panamine urtula is working better, less buggy, and more fluid. And there's a really long-standing bug that specifically was really not for satellite tiles, applications. In Safari format, there were gaps between tiles. That's gone now. Finally, the performance of pinched zoom on iOS Safari got smoother due to some really clever hardware acceleration tricks. There is now pop-up fade-out animation. Pop-ups were fading in, but not fading out. Finally, it happened. Next is vector support. It was basically rewritten from scratch in leaflet 1.0, and it changed a lot. So the first thing is that before that, leaflet was using SVG for vectors, and you could switch to canvas implementation on a global switch. But it was kind of a half-assed implementation. It was a bit buggy and not very performant. And now canvas support is really solid, and you can switch between SVG and canvas renders, and you can have both SVG and canvas vectors on leaflet map at the same time. It all became much easier. You can now put vectors in custom pane. So if you want to put a tile layer and then a vector layer and then a tile layer on top and then a vector layer on top, you can do that. Before that, it was a problem in leaflet. Next is a really huge performance boost for SVG layers. So adding vector layers got about three times faster, and it takes almost three times less memory. So it will get immediately noticeable on maps with lots of vector shapes. Canvas layers also got really, really fast, because now when some layer changes, it does partial redraw instead of redrawing the whole time scene. And the heat detection algorithm for mouse movements is also much faster. So generally, if SVG layers are not cutting it for you and you have too many layers on your map, switch to canvas, and it may be much faster. And canvas layers are now redden up, screen enabled. There were lots of problems with multi-polygon and multi-polygon implementations because they're kind of a hack. They were implemented as... they were inherited from feature groups. So actually, the implementations was, like, just put a lot of individual polygons or individual polylines on the map and call it multi-polygon, multi-polygon. And now this was rewritten, and it solved a lot of bugs and problems people were coming out with. So... polyline and polygon now have get center methods. Next is styleware code got rewritten a lot. So previously in leaflets, the styleware implementation was perhaps the biggest pilot source code. It was really huge. And pretty complicated. And now it's much better because styleware classes now split into two classes. Gridware and styleware. And gridware handles all the grid logic and styleware handles all the dump images loading logic. And there was previously a class called styleware canvas that you could use to generate tiles on the fly to do some things like fractals or any custom layers. But now it's done for good. Now gridware can do the same in a much better way, much more flexible. So earlier you would create a styleware canvas class and you would set up a function that would draw those tiles. And in the new way, you can create canvas elements or you can create anything you want. So it's much more flexible. You can do any kinds of tiles, WebGL tiles, anything. Next is projection support and leaflet. It was also really not very good because I'm still really confused by projections. Welcome to the club. It's a secret of GIS. Yes, I'm actually curious about GIS. I'm still really confused about projections. And so I had to use some help on that and a guy who maintains a leaflet plug-in code for leaflets that allows you to use any projections you want with leaflets. It helped me make the projection code much better and it was cleaned up. And previously there were lots of projection hacks throughout the whole first code. So lots of hacks in tileware implementation and lots of hacks in vector implementation, et cetera. And now there are no hacks at all. Like everything is centralized in CRS implementation. So now the CRS that you choose for your map defines everything, how tiles wrap, how, what are the bounds, distance measure. It's much easier to use weird projections and projections that are not earth based, like simple projections for games, for example. And approach for leaflets this plugin also got much better because it's got rid of a lot of hacks that got around my hacks in leaflet. Some changes in how layers work. So now all layers are inherited from one base class, layer class. And it's allowed me to get rid of a lot of repetition and there's more consistency now between different layer types and it's better for plugins because they can cook up to leaflet layers more easily. There's now custom pain management. So previously there was a set of container elements where all the stuff you put on the map would get into like all tilewares would get into tileware pain all vector layers would get into vector layer pain and you couldn't actually customize that. Well you could but it was really hacky. Now it's pretty easy you can create any pains and like put any layers into any pains and it makes it easy to like control that order of layers makes it easy to for example hide some pains temporarily and show them and make interactions faster. There are also some performance improvements. So LetoNG class construction got 8 times faster and it's certainly noticeable if you ever try to take a huge data set and iterate through all the points to create LetoNG that you put to convert into LetoNG objects so it's now faster. Faster layer construction so things like marker creation is just faster generally for all layers. There is a huge feature group class performance boost and feature group powers classes like GeoJSON due to much better event propagation mechanism now creating feature groups events and feature groups work much much faster. Memory footprint of leaflet got much better because I spent quite some time optimizing how it handles events leaflet events and download them so it should take less memory and removing listeners got 2 times faster too and there are lots of other services and improvements so as you can see there are no huge features but I actually really try to avoid adding new features and I'm more likely to remove code to add it and that makes it hard to accept a lot of pull requests because if I accepted all the pull requests that are coming then leaflet would quickly turn into a monster and best of all you heard about all the improvements and how much do you think the leaflet code size grew it actually got smaller so maybe there are not so many features but the internals got written really heavily so the code is much simpler and better organized it's easier to understand it's easier to contribute to and it's smaller like you can see the stats between the latest stable version and the master version and a couple words people have been asking why does it take so long the latest big leaflet release 0.7 was at the end of the last year so it's almost a year and 1.0 is still not released so why so long so there are four reasons that I'm down to list the first reason is that it's really hard to concentrate when you have war going on in your country the second reason is that it's really even more hard to concentrate when you are a father of twin girls two days ago it was taken well we'd be selling mad box onesies mad box too mad box stores open yeah they're a three month fold and yeah life has been crazy third reason is that leaflet is already so good people are really happy with it and they're not complaining as much as they were before so less motivation and the fourth reason is mad box GLJS and our beautiful Lauren will talk more about it today so stay tuned but I've been working on mad box GLJS a lot as you can see half thousand over the year and I must also comment on a lot of people when they heard about mad box GLJS they were impressed but they thought what does it mean for leaflets obsolete will I stop developing leaflet if I work so much in mad box GLJS and things like that and the answer to all these questions is no and this is why mad box GLJS is incredibly complex technology so much thought has been put into it and so much research both on server side and client side it has tons of code tons of bits and pieces that fit together it's really really complex and it's really doesn't fit the leaflet philosophy because leaflet on the other hand is something that's the atom of simplicity so there will always be a place for two libraries mad box GLJS currently created two experiments, blow mines and create amazing map interactions but leaflet will mainly go to library for long and long time because it's that simple it's easy to use, it works on all platform, mobile, desktop any platforms it has tons of plugins, more than 100 it has a huge community everyone knows it, everyone uses it so it isn't going anywhere and I'm going to continue developing it pretty actually and also leaflet and map box GL benefit from each other because I work on both projects and a lot of experience I got from developing leaflets I'm putting into map box GL and a lot of map box GL experiments and ideas I get from developing map box GL will be reflected in future leaflet releases too and there is also leaflet project so you can pick up map box GLJS and leaflets and I think I'm going to open source the repl some time today or maybe tomorrow if I'm in a good mood okay so I think that's it for today thank you it's too nice to mention it but the price has not changed as one point I will be the same wrap up price I'm going to do the first question just because it's one of those questions that I think this audience can help think through in terms of canvas versus SPG and kind of basic rules of thumb of if I have these many features I can render them with SPG if I need more features do I go with canvas how do you think about the sheer volume of features and whether to use canvas or SPG I think you always need to try both see what's worth better but the general rule of thumb is that for lesser amount features and less points in a future SPG works better interactions works more smoothly and the layer handles a bigger amount of features that it may have some like visual artifacts or it may not work as perfectly as the SPG layer but you always need to switch between two and see if you have a lot if you have a lot of flares you need to try both and it's now easier for you questions from the audience don't be shy yes multiple projections on the same map multiple projections on the same map no yes good idea bad idea take it away I'm actually not sure because I'm yet to find a good use case for this but I think some people have done this but maybe it's not as obvious as you can expect so maybe I will consider this for sure it's definitely not obvious one use for that is when you have all these work services around from the national event what should be an expectation of a practical work while we provide such an hard work for the presentation and you have people coming to you the problem with different projections in the same map is that they don't generally align and that's not a simple problem so you need to solve this somehow I don't have a definite answer to this so for the effects that would be always one projection maybe what we do is we have three maps and we just turn them on okay yeah see that end quick story there is a very very large US government agency that should remain nameless who's redoing their mapping portion and so when they did the requirements but the new contractors they're like okay web map web mercator and of course somebody from the government agency says we're going to need albers too because we do technical measurements using our web map and the idea one of the great one of the great de facto standards that has accelerated web mapping has been web mercator no matter how you feel about it from a purest projection point it's made everyone's life easier so projections is one of those capabilities that it's a double-edged sword and if you're in the business of building maps like me personally I'm not going to tell my clients they can do projections like it's taken them eight years to get on board with the single de facto standard we have any questions from the back back standing there down front yeah we're getting second 3.9 so in terms of projections am I understanding that we're going to be able to non-progator tiles or is it going to be other things get projected on the map no it means other like antitiles of any directions especially with the frost for the leaflets well it actually already works in the leaflet stable but it's not as easy there are some taxing to do but you got that on your laptop? alright we might make you get up here before lunch since projection seems to be the hot topic here sounds like like D3 yeah alright questions from the back? yeah it wasn't really a technical question I thought I'd ask about the origin of the name yeah the origin of the name of leaflet the etymology so I knew that I wanted to build a library that's really lightweight and simple and I wanted to come up with a name that's reflected like the lightness and simplicity and maybe have something to do with a piece of paper or something that you can put a map on and naturally we come up leaflets and I think it wasn't taken among JavaScript libraries because now any name you can come up with any name is a JavaScript library if you come up with a name commonly used to is a JavaScript library any other name is a JavaScript library nowadays so it's the nature is a brand strategies we have time for two more questions anyone? what do you think the stability of the plugin ecosystem will be at 1.0? yes many of the plugins will have to be dated but I think that's a good way to filter out plugins that are still supported and plugins have a long game forgotten plugins is an area I want to focus on do more quality control make a better listing of plugins that's where you actually see how many GitHub stars does it have is it compatible with the latest version things like this I really want to spend more on this but I think people will have to update their code in many occasions but it's worth it one of the themes throughout Phos4G is always community management how do you encourage people to participate and yet how do you maintain kind of a base level and how do you move forward with necessary changes and manage that whole process it's a challenge no matter what your project is one more question last one doing the honors great, well let's get Steve back since this is a chance to get you on the spot what do you think is some of the new big things that are coming in JSNG like so you've been working on the WebGL stuff we saw that last year this event that was kind of the beginnings of that what do you think forget WebGL, WebGL is now old school everybody here knows it new new hot what is it it's a hard question what do you mean it really does it does he's like an expert in the field I want to hear what he thinks he's held to I think it's not much about new technology it's about making things that are already possible much easier to implement things that you if you needed to spend a year developing some really great application with current development browser technologies you can spend a month instead of a year because of all the new ideas there were polyfills for that you could get around like a lot of things but now it gets easier so and so this is going to enable a lot of things like people will get more creative, people will generally get more creative when it's much easier from the things that were hard for previous people great, well that's all the time we have for part, let's give them a big round of applause