 Hello, can you hear me? Well, I was going to say already start from who I am so My name is the Shanali. I had to check one to make sure I Work for this company called IBM. I'm sorry Red Hat and It's been two weeks But I worked at Red Hat before five years and desktop team I've been trying to get back for a while and now I finally made it back But not in the desktop team, but in another team containers related stuff So new stuff for me to learn and stuff Should I start with the actual okay cool And I've been involved in force in different companies and different levels and stuff Mostly GNOME stuff, but other things as well like G-Streamer and Related stuff mostly I'm into flying. I have a helicopter license working on my plane license and I like cats And the story I'm going to tell you is a very small boring one, but maybe some interesting somewhat I start in 2007 and it's sounds like a Spanish conspiracy because These two guys this guy and this guy they were both Sitting together some somewhere with some people from Garmin and they said oh, what about we have Geolocation service for Linux because there is nothing like that right now And since debuts is the way to go nowadays, so it would be using debuts so They decided to create a project called Geoclue which is a debuts based geolocation service There's a concept is very simple the application asked this service like where I am right now and The service this tells them that and They found a victim. I mean some are of course student to do the actual work And this guy wrote a lot of did all the hard work and he made it possible the Geoclue And the concept was based on external providers So each The source of location was an external source. So within the service service itself There was nothing it was only an API for applications to talk to and for service providers to hook into the service So they can tell tell it where the location and give it updates about location and stuff and The first and the easiest one in any kind of application like geolocation You can implement as geo IP, which is the simplest one because Any service out there can see your external IP and tell What it thinks where it is and there's a database already out there? Max mind is a company that maintains it and they have like a commercial version of that database and there's a Free version of that it is there's not a lot of difference between them actually in practice But there's some So yeah based on that they implement a GUIP provider They also kind of provided a Wi-Fi geolocation, but they couldn't really because the only ones were Proprietary and they couldn't use it in open-source software so they kind of created a source that You can manually tell it like okay these Wi-Fi's if you see these Then it means I'm on this location So user had to manually do that and that's not really you know it doesn't work out of the box So it I don't think anyone actually use that I'll be surprised if they did and They one of the things that is essential is support for GPS devices So they created another person came along and he wanted he was interested in GPS support in Geoclue and implemented gypsy Ian Holmes is his name and But there was already a project called GPS D it's maintained by Ira Kramer and I think and but And the reason they didn't take that was it had a very very conservative architecture They wanted everything to be allocated on the stack and it created many other problems it increased memory usage and stuff like that and They had a very archaic IPC mechanism they didn't want to use GP debuts at all and they were afraid of that They said it doesn't work and stuff anyway So there was a bit of a clash and they they both have written really long blog posts explaining why did You know did what they did like why gypsy and why GPS D still anyway so And then since some of the Garmin people were involved in the creation of Geoclue They used it in their devices as far as I know and also in many MIMO and MIGO devices Geoclue was used as still is being used in YOLA devices if you know that one so Yeah, but over time the dreams were forgotten people got busy with other things Geoclue was un-maintained for your gypsy was un-maintained for even longer The guy who wrote Geoclue UC Cooker and he's a good friend and I still meet him and he's still involved in open source But the guy who wrote gypsy he's he has vanished. I think I have never I haven't seen him for 15 years or something and Then in 2013 when I was still in desktop group of the Red Hat I was bored. I I have been doing the same application for three years Continuously, which is going on boxes and I want to do something different so I was like, what should I do and Talk to this guy. He's involved in all parts of Grome at least and free software of this very free desktop Software and he had he was kind of involved in Geoclue development at some point So he had some ideas about creating a new Geoclue Geoclue, which because the old Geoclue was getting really old this the source code was not really nicely written in the end and Also, it was using a lot of libraries and APIs that were not really Sorry They are not really Like maintained there those APIs are not there anymore so instead of revising that old software and also the architecture is not it's like the External providers I mentioned so it sounded like a really good idea on paper, but Practically, it's it's not such a good idea because many people created their own providers And they use them in their own devices, but they never contributed upstream So the upstream Geoclue you take on your desktop machines. They are just they only have GUIP and it's not very useful at all so because of that we we created Geoclue 2 with Bastia Nocera and The idea was much simpler architecture which is not just good for developers but also for application developers and Now for anyone who uses it For example, we only have internal sources. We don't have external source. There is one exception to that I'll tell later, but ideally it's all sources belong in our code And if you want to add some source, please come and contribute that and also Geoclue usually used to provide Geoclue 1 used to provide Geocoding service Geocoding API and We thought that doesn't really belong there We it should be a separate service that people should be able to use that separately from Geo geolocation So there it was that code was put into a separate a library called Geocode Geolib and Another reason for redesigning Geoclue 2 was privacy because Geoclue 1 had no concept of privacy It would just give the location to any application that asked it but You know location is like a very sensitive piece of information So if any application can get it, it's it could be a really bad application that wants it You downloaded some random application off the internet and takes your location and gives it to someone So the idea was having an app authorizing agent And it that has to be external and the first OS that was added It was added to was GNOME because I was working on GNOME stuff So it was natural for me to add it to that at least myself So currently if you use some application right now that does location for example, GNOME maps or something You will get a dialogue and then it saves that permission from you in a in a database and stuff And similarly elementary. I think one year ago two years ago. They also added Apothrizing agent for Geoclue As for the sources the first source of course as I mentioned the easiest one is GUIP So we added that as first thing and modems was another kind of easy thing because there is already two Backends for managing modems one is modem manager other one is Ophono Modem manager is the one being used on GNOME and stuff So I use that I actually have a blog post about that why modem manager is much better than Ophono But I'm nothing against people adding Ophono, but we have modem manager support already and it does Support two things one is cell tower based location, which is not very accurate. It's a few kilometers at best and The GPS which most modems nowadays they come with a GPS on it So we we get a GPS location, which is a lot more accurate, of course And but the problem is that not everyone has a modem and a lot of in a lot of laptops even if you have a modem Many corporates they just disable it because nobody this thing nobody uses it So and when you are stuck with GUIP the GUIP at best can give you city level location And that's not good. Sometimes that's even very wrong And people get really frustrated. So we need something more accurate that that can that is more abundant which can be used on many most laptops and stuff and that's Wi-Fi based geolocation The concept is simple you you see which I Which Wi-Fi network you see you get a list of that the strands and then you send it to server and server tells you Okay, this these devices are in this particular street. So you get a street level accuracy, which is really good Already, but the problem was how do we do that? Where's the server? Which server we can use we can't use Google service You can use Microsoft or Apple's or whatever Now one we could use was yahoo's which was there for a bit that you can use an open-source software But there was some limits to the date the data rate and all that so it wasn't ideal, but we had to use something, right? But then soon after I started your clue to Mozilla came out with their own service Which is called Mozilla location service and that does the Wi-Fi based geolocation and they utilize their vast number of user around the world To gather all the data about Wi-Fi's so they had within within months. They had a huge huge amount of data from across the world and So and it was completely open so it's open source the and data is not open for privacy reasons Exactly, but that's a completely different topic for another talk But we can talk about it afterwards if you want Anyway, it was a really good send and we use that service immediately and we were the one of the first users external users of that service But as I mentioned laptops have Wi-Fi so you can use it but most desktop machines do not have Wi-Fi's So what about them there? Are they stuck with GUIP? More or less. Yes, but we came up with a solution for that A summer of course student implemented this So the idea is that you Share from your phone. Yeah, all the phones nowadays the smartphones have GPS devices nowadays so you Share your GPS location on your network on your Wi-Fi network or your internal network and then anyone can use it any software and He as a part of his project here, of course added support in geoclue So there's application called you to share which you can install on your Android device And you get the Android device location on your desktop or laptop or whichever device you want so that was a kind of Workaround for for desktop machines, but that's the best we could do There's no other way and it uses a why to tell announce its location on network What about standalone GPS devices? I said more Dems have GPS but not like it's that's not the only place for GPS There's standalone ones that you can plug into USB usually or Bluetooth How about them the problem with those is that they usually need some kind of configuration They don't work out at the box at least right now. There's a new Linux subsystem coming I have heard that will solve this problem at least for many devices modern devices But I don't know if it will solve for all devices so you need to set bot rate and stuff like that on the on the Serial port that it exposes on So since it's three needs an external Means we thought okay. What about gypsy we can use that But it that has been maintained for much much longer Unmaintained for much longer than geoclue the guy who wrote it. He's nowhere to be found Yeah, source code is not that great and Yeah, so we we thought like and it's written in C and I've been more Into rust these days. So I decided to just write a new one GPS chair. It's called and it's Another reason to rewrite that is that it's not a diva service But it's the works the same as the geoclue share. I mentioned the app So it just exposes your network on the local network if you wanted to and Since is a since geoclue already had the support for NME over TCP So it could readily use this software that I wrote in rust So that's on github and you can you can use that for standalone devices And of course from day one we had GNOME integration because I was interested in that in GNOME Maps actually this is a GNOME maps as a software I Started nowadays another person is that guy is maintaining it and This one I mentioned is a Finnish conspiracy and the maps is more a Swedish one because Always a maintainer is a Swedish guy and yeah, anyway, so Yeah, anyway, and of course one of the cool features we wanted to have with geolocation was automatic time zone update So many devices have implemented that so long ago, but we never had this so it was really cool to have it and in GNOME and Of course clocks and weather needs location as well webka GTK for different web pages and and Yeah, so those were the apps and We recently more recently we we had some positive development as well like free desktop Created a git lab Instance and I think now it's the only git lab And geoclue was one of the first ones to move. I said to Daniel like yeah I want to be the first one to move there And it was like immediately positive effect because it makes things so simpler and easier and also it All of a sudden there were many contributors to geoclue not just in terms of issue reporting But also patch patches were being submitted before there was rarely any external people other than me You know giving patches, but now there's a lot of people Well enough people more than before And Another change was flatback. So and I mentioned about privacy At that time flatback wasn't there. There was a concept of that. There was some development, but it wasn't really there What is flatback? It's a Bundling app bundling solution So you put all your app with all its dependencies in one bundle and then you you can distribute it for all the Distributions you don't have to package it for distribution distributions and also one of the core concept is sandboxing so first they were focused on bundling, but nowadays they are focusing on sandboxing as well and When it comes to sandboxing an app, you don't want the app to to access System bus at all and geoclue is on system bus for many reasons So we talked I talked to the person Matthias Klassen who is Working on the sandboxing solutions. So they are called portals The portals are a way for app to get to system Without actually directly having access to the system whole system. So it's much more secure And he wanted to do a geo geolocation Portal, but since we already have a privacy story We had to remove some of that code and now we will hopefully we will eventually remove all of our privacy stuff and in In favor of the flatback geolocation portal and flatback will handle all your this the apps will talk to Flatback flatbacks portal and that will talk to geoclue for us for you So it will be More secure that way But we have challenges ahead The Mozilla location service when it was announced Mozilla was still doing Devices they were into mobile stuff and that was their main use case for it But they haven't been into that for two years at least now They are really nice people. So they are keeping it up. The service is still there We can still use it and I think you can also contribute back to it like with their Android app But how long would it be there? Nobody knows. So there is this Uncertainty about the service and the service is extremely important for free desktop right now Because if you can't get your location all these apps they are not very useful And especially there's something like automatic times on update once you get used to that you're kind of expecting it to always work Right, so it would be a pity if we if we can't locate you anymore all of a sudden And we have only your city location at best So I would be interested in hearing about any if anyone has any suggestion on how to fix this problem The code is open source. It can be moved somewhere else. It can be hosted by somewhere else the same service So if anyone has any ideas like you know You want more platforms a lot of embedded devices they took geoclue one and they are they are still using that one And that that source code is not even there anymore. It's not just on maintain It's just not there the source code upstream. So it's a maintenance burden. So I think they really should All move to geoclue two of course It's it's a bit of a task because the API is different architecture is different But I think it's it's worth it to do that effort And it's been a while it's been like four years three four years that your clue to came out. So it's time Now we need more developers as I mentioned with GitLab I saw more contribution coming in a lot more than before But I would like some more developers to actually start Actively working on it. There we have many different tasks to still fix in in in geoclue. So I've worked if you want to work on something cool Please consider this project Also as I mentioned before rust So I I really don't believe that any new source code should be written in C and C++ at least I Understand existing source code like large especially large code base Remaining in in C and C++ because it's a lot of work to to port to rust So that's understandable, but This geocluse core is not that big and it could be done if I count in Mondays like I don't know a Month at best if I do a full like work on it full-time But that's like the worst-case scenario I'm hoping maybe it will be a summer of code project, but we will see But if anyone else wants to help me with that, it would be awesome and it will go much much faster much easier And it's a if you want to You know have a some kind of practice of rust and or porting to rust from C this is a really ideal project for that because it's a simple architecture very few objects and It's it would be really good practice if you want that practice for this Yeah, that's my presentation Ten minutes of question and answers if you want so you have all the freedom to show Yes Not really I would like to improve the question was that if we have other sources in mind for geoclue for getting location No The thing is that the the app I mentioned you clue the GPS chair That doesn't support all devices yet Didn't get enough time to to work on that and improve on that So if I if you want to or someone else want to help on that that would be awesome Yeah, that's that's my main thing and another thing another source could be the GPS sharing app for Android It's only for Android. There is no support for Apple for what is it called the iPhone? So, yeah, so if someone can add that I'll be cool to know The question was what about Galileo most more or less But when we say GPS, it's not just GPS. It's all the satellites all the all the networks. We want them all and Yeah, GNSS. Yeah, and actually they were patches to GPS share for for fixing that like I was assuming in the strings that it starts with a GP which is for GPS But someone fix that I think so it's it supports all those Is there anybody because we have five six minutes left? The previous sort of surplus time slots there was always somebody who wanted to do a little blurb in front of us and He got a standing applause almost Just because he dared or she there is that she that's for once wants to sort of stand up and do something Come on Don't you want something from the crowd? No You're just here to consume Well, thank you very much