0:00:00.000,0:00:20.310 36c3 preroll music 0:00:20.310,0:00:27.660 Herald: So, hey, we're finally ready to[br]start, we have Volker Krause here with a 0:00:27.660,0:00:32.210 privacy by design travel assistant and[br]it's going to be about building Open 0:00:32.210,0:00:38.449 Source travel assistants, I think, and[br]this talk will be in English. And if you 0:00:38.449,0:00:43.600 want translations, wenn ihr eine deutsche[br]Übersetzung haben wollt, haben wir hier 0:00:43.600,0:00:48.750 hinten auch ganz tolle Übersetzer in[br]unserer Kabine, da könnt ihr auf 0:00:48.750,0:00:54.330 c3lingo.org mal reinhören, wie die alles[br]live mitreden. Genau. Now. Let's have 0:00:54.330,0:00:58.270 a warm welcome for Volker here and have[br]fun with his talk. 0:00:58.270,0:01:00.480 Applause 0:01:00.480,0:01:06.400 Volker Krause: Thank you. OK, so what is[br]this about? You probably know those 0:01:06.400,0:01:13.729 features in, most prominently Google[br]Mail, but I think TripIt was the one that 0:01:13.729,0:01:21.130 pioneered this. So GMail reads your[br]email and then detects any kind of booking 0:01:21.130,0:01:27.430 information in there, like your boarding[br]passes, your train tickets, your hotel 0:01:27.430,0:01:34.609 bookings and so on. And it can integrate[br]that into your calendar and can present 0:01:34.609,0:01:44.311 you a unified itinerary for your entire[br]trip and monitor that for changes. And 0:01:44.311,0:01:51.529 all of that doesn't cost you anything.[br]Maybe apart from a bit of your privacy. 0:01:51.529,0:01:58.850 Well, not too bad, you might think. But if[br]you look at what kind of data is actually 0:01:58.850,0:02:06.280 involved in just your travel. Right. [br]The obvious things that come to 0:02:06.280,0:02:12.440 mind, your name, your birthday, your[br]credit card number, your passport number, 0:02:12.440,0:02:21.620 that kind of information. Right. But that[br]isn't even the worst part on this, 0:02:21.620,0:02:27.590 because those operators don't just get to[br]see your specific data for one trip, 0:02:27.590,0:02:33.099 right? They get to see every… everyone's[br]trip. And now if you combine that 0:02:33.099,0:02:39.980 information, that actually uncovers a lot[br]of information about... relations 0:02:39.980,0:02:45.030 between people, your interests, who[br]you work for, where you live and all of 0:02:45.030,0:02:52.340 that. Right. So pretty much everyone here[br]traveled to Leipzig for the last four days 0:02:52.340,0:03:00.099 in the year. If that happens for[br]two of us, once, right, that might be 0:03:00.099,0:03:05.580 coincidence. If that happens two or three[br]years in a row, that is some kind of 0:03:05.580,0:03:13.260 information. But yeah, what to do[br]about that, right? The easy solution 0:03:13.260,0:03:22.450 is, just not use those services. It's like[br]first world luxury stuff anyway. That 0:03:22.450,0:03:26.200 works until you end up in a foreign[br]country where you don't speak any of the 0:03:26.200,0:03:31.940 local languages and then get introduced to[br]their counterpart of Schienenersatzverkehr 0:03:31.940,0:03:39.200 or Tarifzonenrandgebiet. And at that[br]point, you might be interested in actually 0:03:39.200,0:03:46.019 understanding what's happening on your[br]your trip in in some form that you 0:03:46.019,0:03:50.329 actually understand and that you are[br]familiar with, ideally without installing 0:03:50.329,0:03:54.650 15 different vendor applications for[br]whatever you actually might be 0:03:54.650,0:04:02.780 traveling, right? So we need something[br]better. And that obviously leads us to, 0:04:02.780,0:04:10.680 let's do it ourselves. Then, we can at[br]least design this for privacy right from 0:04:10.680,0:04:16.299 the start. Build it on top of Free[br]Software and Open Data. Well, of course, 0:04:16.299,0:04:23.780 we need to... at least it's not entirely[br]obvious that this will actually work, 0:04:23.780,0:04:30.450 right? The Google and Apple, they have a[br]total different amount of resources 0:04:30.450,0:04:37.320 available for this. So, can we actually[br]build this ourselves? So let's have a look 0:04:37.320,0:04:46.360 at what those services actually need to[br]function. And it turns out it's primarily 0:04:46.360,0:04:54.200 about data, not so much about code.[br]There are some difficult parts 0:04:54.200,0:04:58.850 in terms of code involved as well, like[br]the image processing and a PDF to detect a 0:04:58.850,0:05:03.310 barcode in your boarding pass. But all of[br]that exists as ready-made building blocks. 0:05:03.310,0:05:11.160 So you basically just need to put this[br]nicely together. So let's look at the 0:05:11.160,0:05:16.860 data. That's the more interesting part.[br]And in general, that breaks down to 0:05:16.860,0:05:22.560 three different categories. The first one[br]is what I call personal data here. So 0:05:22.560,0:05:29.530 that's basically booking information,[br]documents or tickets, boarding passes, 0:05:29.530,0:05:33.350 specific for you. So there at least you[br]don't have a problem with access because 0:05:33.350,0:05:40.390 that is sent to you and you need to have[br]access to that. But it comes in all kinds 0:05:40.390,0:05:47.800 of forms and shapes. So there are the[br]challenges to actually extract that . The 0:05:47.800,0:05:55.420 second kind of data is what I would call[br]static data. So, for example, the location 0:05:55.420,0:06:02.300 of an airport. Now, you could argue that[br]that could change and there is rumors 0:06:02.300,0:06:07.310 that some people apparently managed to[br]build new airports. I live in Berlin, so I 0:06:07.310,0:06:15.630 don't believe this. Jokes aside, so,[br]"static" refers to within, static within 0:06:15.630,0:06:22.360 the release cycle of the software. So[br]several weeks or a few months. So this is 0:06:22.360,0:06:26.880 stuff that we can ship as offline[br]databases. And offline, of course, helps 0:06:26.880,0:06:32.440 us with privacy because then you're not[br]observable from the outside. And the third 0:06:32.440,0:06:41.570 category is dynamic data. So stuff that is[br]very, very short lived, such as delay 0:06:41.570,0:06:46.410 information. There is no way we can do[br]that offline. If we want that kind of 0:06:46.410,0:06:54.530 information, we will always need some kind[br]of online querying. Then let's look 0:06:54.530,0:07:02.960 through those three categories in a bit[br]more detail. For the booking data, google 0:07:02.960,0:07:08.380 was faced with the same problem, so they[br]used their monopoly and defined a standard 0:07:08.380,0:07:16.360 in which operators should ideally have[br]machine readable annotations on their 0:07:16.360,0:07:21.330 booking information. And that's awesome,[br]because we can just use the same, the same 0:07:21.330,0:07:26.840 system. That's what nowadays became[br]schema.org, which I think Lucas mentioned 0:07:26.840,0:07:33.910 in the morning as well. At least in[br]the US and Europe, you'll find 0:07:33.910,0:07:41.860 that in about 30 to 50% of booking emails[br]you get from hotels, airlines or event 0:07:41.860,0:07:49.600 brokers. So that's a good start. But then[br]there's the rest, which is basically 0:07:49.600,0:07:57.150 unstructured data, random PDF files or[br]HTML emails we have to work with. There's 0:07:57.150,0:08:03.611 Apple wallet boarding passes. They are[br]somewhat semi structured and most 0:08:03.611,0:08:16.340 widespread for flight tickets. Well,[br]that's somewhat usable. And barcodes, so 0:08:16.340,0:08:23.030 that's what you, again, see on boarding[br]passes or train tickets. I could 0:08:23.030,0:08:29.420 probably fill an entire talk just with the[br]various details on the different 0:08:29.420,0:08:35.120 barcode systems, the one for boarding[br]passes, I think, Karsten Nohl had to talk 0:08:35.120,0:08:40.970 at Congress a few years back, where he[br]showed how they work and what you can do 0:08:40.970,0:08:50.280 with them. Instagram #boardingpass is a[br]very nice source of test data. The one 0:08:50.280,0:08:54.670 that you find on, on German railway[br]tickets is also pretty much researched 0:08:54.670,0:09:00.451 already. The ones we actually had to[br]break ourselves were the one for Italy. I 0:09:00.451,0:09:04.680 think to my knowledge, we are the first[br]ones to publish the content of those 0:09:04.680,0:09:13.070 binary barcodes. And we are currently[br]working on the VDV Kernapplikation 0:09:13.070,0:09:18.451 E-Ticket, which is the standard for German[br]local transportation tickets. That 0:09:18.451,0:09:24.170 actually has some crypto that you need to[br]get around to actually see the content. So 0:09:24.170,0:09:30.550 there is, if you're interested in that[br]kind of stuff, there is quite some 0:09:30.550,0:09:39.180 interesting detail to be found in this.[br]But let's continue with the 0:09:39.180,0:09:47.660 static data. There, of course, we have[br]Wikidata. That has almost everything we 0:09:47.660,0:09:54.600 need. And we are making heavy use of that.[br]And that's also why I'm here today on the 0:09:54.600,0:10:07.360 Wikimedia stage. One thing that[br]Wikidata doesn't do perfectly is timezone 0:10:07.360,0:10:15.640 information. That's why we're using the[br]open street map data for this. There's in 0:10:15.640,0:10:23.090 Wikidata, three different time zone… or[br]ways of specifying the time zone. UTC 0:10:23.090,0:10:29.520 offsets, some kind, of coarse, human[br]readable naming like Central European 0:10:29.520,0:10:37.890 Summer Time, and then the actual IANA time[br]zone specifications like Europe/Berlin. 0:10:37.890,0:10:42.200 And that's the one we actually need[br]because they contain daylight saving time 0:10:42.200,0:10:47.270 transitions. And that is actually crucial[br]for travel assistance, because you 0:10:47.270,0:10:52.810 can have a flight from, say, the US to[br]Europe, at the night where there is 0:10:52.810,0:10:57.720 daylight saving time transition on one[br]end. And if we get that wrong, right, we 0:10:57.720,0:11:01.261 are off by one hour. And that could mean[br]you miss your flight. So that we 0:11:01.261,0:11:07.120 need to get absolutely right. And[br]Wikidata there mixes the three timezone 0:11:07.120,0:11:16.860 variations. So that's why we fall back to[br]OpenStreetMap there. Another area 0:11:16.860,0:11:23.420 that still needs work is vendor specific[br]station identifiers. So there's a number 0:11:23.420,0:11:28.850 of train companies that have their own[br]numeric identifier, or alphanumeric 0:11:28.850,0:11:34.870 identifiers, which you find, for example,[br]in barcodes of tickets. So that's our 0:11:34.870,0:11:39.281 way to actually find out where people are[br]traveling. So that's something we are 0:11:39.281,0:11:47.430 trying to feed into Wikidata as we get our[br]hands on those identifiers. For airports, 0:11:47.430,0:11:51.420 that's easy because they are[br]internationally standardized. For train 0:11:51.420,0:11:59.220 stations, that's a bit more messy. And[br]finally, the dynamic data. That's again, 0:11:59.220,0:12:08.410 an area where we benefit from Google using[br]their monopoly. They wanted to have local 0:12:08.410,0:12:15.430 public transportation information in[br]Google Maps. So they defined the GTFS 0:12:15.430,0:12:25.820 format, which is a way for local transport[br]operators to send their schedules to 0:12:25.820,0:12:31.330 Google. But most of the time, that is done[br]in a way that they basically publish this 0:12:31.330,0:12:40.300 as Open Data. And that way, all of us get[br]access to it. And then there's Navitia, 0:12:40.300,0:12:46.170 which is a Free Software implementation of[br]like a routing and journey query service 0:12:46.170,0:12:51.270 that consumes all of those Open Data[br]schedule information. And that then in 0:12:51.270,0:13:00.270 turn, we can use again to, yeah, find our[br]departure schedules, delays and that 0:13:00.270,0:13:06.760 kind of live information. Apple Wallet[br]also has some kind of live updating 0:13:06.760,0:13:15.060 polling mechanism. But that is somewhat[br]dangerous because it leaks personal 0:13:15.060,0:13:21.500 identifiable information. So the,[br]basically, a unique identifier for your 0:13:21.500,0:13:28.240 pass is sent out with the API request to[br]to pull an update. So that is basically 0:13:28.240,0:13:34.130 just a last resort mechanism if you have[br]nothing else. And then there's a bunch of 0:13:34.130,0:13:40.410 vendor specific, more or less proprietary[br]APIs that we could use. They are 0:13:40.410,0:13:46.010 unfortunately not often compatible with[br]Free Software and Open Source, because, 0:13:46.010,0:13:50.520 they might require API keys that you're[br]not allowed to share, or they have terms 0:13:50.520,0:13:54.540 and conditions that are simply[br]incompatible with what we are trying to 0:13:54.540,0:14:03.610 do. So for some, this works, but there's[br]still some room for improvement in those 0:14:03.610,0:14:12.089 vendors' understanding the value of proper[br]Open Data access. OK, so that's the 0:14:12.089,0:14:23.480 theory, let's have a look at what we have[br]actually built for this. So there's two, 0:14:23.480,0:14:32.120 ya, backend components, so to say there is[br]the extraction library that implements the 0:14:32.120,0:14:38.020 schema.org data model for flights,[br]for trains, for hotels, for restaurants 0:14:38.020,0:14:49.230 and for events. It can do the structured[br]data extraction. That might sound easy at 0:14:49.230,0:14:56.040 first, but it turns out that for some of[br]the operators, doing proper JSON array 0:14:56.040,0:15:01.350 encoding is somewhat hard. So, I mean, you[br]need to do a... need to have a comma in 0:15:01.350,0:15:09.020 between two objects and brackets around[br]it. Some of them struggle with that. So we 0:15:09.020,0:15:18.290 have to have lots of workarounds in, in[br]parsing the data we receive. Then we have 0:15:18.290,0:15:26.240 an unstructured extraction system that's[br]basically small scripts per provider 0:15:26.240,0:15:33.470 or per operator that then, yeah, use[br]regular expressions or XPATH queries 0:15:33.470,0:15:40.120 depending on the input and turn that into[br]our data model. We currently, I think, 0:15:40.120,0:15:46.010 have 50, slightly more than 50 of those. I[br]know that Apple has about 600, so that is 0:15:46.010,0:15:56.899 still one order of magnitude more. But[br]it's not impossible. Right. So I think we, 0:15:56.899,0:16:03.899 we have the means there with Free Software[br]to come to a similar result than 0:16:03.899,0:16:10.140 people that have an Apple or Google scale[br]budget for this. The service coverage is 0:16:10.140,0:16:14.730 actually quite different. So, for Apple,[br]I've seen their custom extractor. 0:16:14.730,0:16:20.839 So they have a lot of like US car rental[br]services. We have somewhat more important 0:16:20.839,0:16:26.550 stuff like CCC tickets. So the Congress[br]ticket is actually recognized and I 0:16:26.550,0:16:32.600 managed to get in with the app. What[br]the expection engine also does is it 0:16:32.600,0:16:37.279 augments whatever we find in the input[br]documents by information we have on 0:16:37.279,0:16:43.640 Wikidata. So we usually have time zones,[br]countries, geo coordinates, all that 0:16:43.640,0:16:51.990 useful stuff for then offering assistance[br]features on top. And input formats is 0:16:51.990,0:16:58.200 basically everything I mentioned. The[br]usual stuff you're getting in an email 0:16:58.200,0:17:06.730 from a transport operator or any kind[br]of booking document. The second piece on 0:17:06.730,0:17:12.209 like, on backend components is the public[br]transportation library. That's basically 0:17:12.209,0:17:19.709 our client API for Navitia mainly, but[br]also for some of the proprietary 0:17:19.709,0:17:25.819 widespread backends like HAFAS. That's the[br]stuff Deutsche Bahn is using. And it can 0:17:25.819,0:17:31.451 aggregate the results from multiple[br]backends. And if you're using Open Data in 0:17:31.451,0:17:36.640 the backend - interference noise - it[br]propagates the attribution information 0:17:36.640,0:17:44.200 correctly. So. And just a few days ago, it[br]also gained support for querying train and 0:17:44.200,0:17:52.360 platform layouts or "Wagenstandsanzeiger"[br]in German so we can have all of that in 0:17:52.360,0:18:03.610 the app. And now of course there's the KDE[br]Itinerary app itself. So it has, oh… it's 0:18:03.610,0:18:09.940 very hard to read here. It's basically a[br]timeline with the various booking 0:18:09.940,0:18:16.370 information you have grouped together by[br]trip. It can insert the live weather 0:18:16.370,0:18:22.059 information. Again, that's online access,[br]so it's optional, but yeah, it's kind of 0:18:22.059,0:18:29.990 useful. And this is… you probably can't[br]read that. But that's my train to Leipzig 0:18:29.990,0:18:35.929 this morning and that's actually the[br]Congress entry ticket. And the box at the 0:18:35.929,0:18:47.559 top is the collapsible group for my trip[br]to Leipzig for Congress. And it can 0:18:47.559,0:18:56.070 show the actual tickets and barcodes,[br]including Apple Wallet passes. So, if you 0:18:56.070,0:19:01.929 sometimes have a, like a manual inspection[br]at an airport where they don't scan your 0:19:01.929,0:19:07.769 boarding pass, but look at it, apparently[br]that looks reasonable enough that you can 0:19:07.769,0:19:15.770 board an aircraft with it. At least, I[br]wasn't arrested so far. And then we have 0:19:15.770,0:19:22.110 one of my favorite features, also powered[br]by Wikidata. It's the power plug 0:19:22.110,0:19:27.759 incompatibility warning. interference[br]noise - So, I mean, if you're traveling 0:19:27.759,0:19:32.889 to, say, the US, or UK, you're probably[br]aware that they have like incompatible 0:19:32.889,0:19:38.730 power plugs. But there are some[br]countries where this isn't – at least to 0:19:38.730,0:19:44.320 me, isn't that obvious, like Switzerland[br]or Italy, where only half of my power 0:19:44.320,0:19:49.929 plugs work. So this is the Italy example.[br]It tells me that my Schuko plugs won't 0:19:49.929,0:20:06.701 work, only my Europlugs and. interference[br]noise - And the right one is, I 0:20:06.701,0:20:13.169 think for the U.K., where nothing is[br]compatible. If you occasionally forget 0:20:13.169,0:20:20.809 your power plug convertor while traveling,[br]that is super useful. And then, of course, 0:20:20.809,0:20:27.570 we have the integration with real[br]time data. So we can show the delay 0:20:27.570,0:20:34.879 information and platform changes. The part[br]in the middle is the alternative 0:20:34.879,0:20:39.450 connection selection for trains. So[br]if you have a, like a train ticket that 0:20:39.450,0:20:46.100 isn't bound to a specific connection,[br]right, then the app lets you pick the one 0:20:46.100,0:20:49.940 you actually want to take. Or if you're[br]missing a connection, you need to move to 0:20:49.940,0:20:55.960 a different train, you can do that right[br]in the app as well. The screenshot on the 0:20:55.960,0:21:02.280 right hand side is the, like your overall[br]travel statistics. So if you're interested 0:21:02.280,0:21:08.529 in, like, seeing the carbon impact off of[br]all your trips and the year over year 0:21:08.529,0:21:15.769 changes, right, the app shows that to you.[br]And I wasn't really successful, but that's 0:21:15.769,0:21:20.919 largely because the old data is[br]incomplete. So if you're interested in 0:21:20.919,0:21:27.039 that, right, since we have all the data,[br]that can help you see if you're 0:21:27.039,0:21:34.159 actually on the right track there. And[br]then to get data into that, we also have a 0:21:34.159,0:21:41.049 plugin for email clients. This one is for[br]for KMail. So it basically then runs the 0:21:41.049,0:21:45.059 extraction on the email you're[br]currently looking at and it shows you a 0:21:45.059,0:21:52.690 summary of what's in there. In this case,[br]my train to Leipzig this morning, 0:21:52.690,0:21:57.299 including the option to add that to the[br]calendar or send it to the app on the 0:21:57.299,0:22:06.090 phone. We also have the browser extension.[br]So this is the website of the yearly KDE 0:22:06.090,0:22:10.840 conference, which has the schema.org[br]annotations on it. And the browser 0:22:10.840,0:22:18.169 extension recognizes that. And again,[br]offers me to to add that either to my 0:22:18.169,0:22:27.389 calendar or to the itinerary app. And that[br]also works on many restaurant websites or 0:22:27.389,0:22:33.759 event websites. They have those[br]annotations on the website for the Google 0:22:33.759,0:22:41.080 search. So again, we benefit a bit from[br]the, Google incomprehensible. OK, then 0:22:41.080,0:22:47.159 we get to the more experimental stuff that[br]basically just was finished in the last 0:22:47.159,0:22:54.850 couple of days, that we haven't shown[br]anywhere else publicly yet. The first one 0:22:54.850,0:23:03.259 is, and that's a bit better to read, at[br]least, if you saw the timeline earlier, 0:23:03.259,0:23:08.129 right, it had my train booking to Leipzig[br]and then the Congress ticket. But that 0:23:08.129,0:23:14.059 still leaves two gaps, right. I need to[br]get from home to the station in Berlin, 0:23:14.059,0:23:19.840 and I need to get from the station in[br]Leipzig to Congress. And what we have now 0:23:19.840,0:23:24.999 is a way for the app to automatically[br]recognize those gaps and fill them with 0:23:24.999,0:23:31.239 suggestions on what kind of local[br]transport you could take. So here the one 0:23:31.239,0:23:41.559 for Leipzig to Congress is expanded[br]and shows the tram. That still needs 0:23:41.559,0:23:47.769 some work to do live tracking so that[br]it accounts for delays and changes your 0:23:47.769,0:23:53.399 alarm clock in the morning if there's[br]delays on that trip. But we have 0:23:53.399,0:23:59.119 all the building blocks to make the[br]whole thing much more smart in this 0:23:59.119,0:24:09.029 area now. And that, I think was literally[br]done yesterday. So that's why the graphics 0:24:09.029,0:24:19.859 still are very basic. That's the train[br]layout, coach layout display for 0:24:19.859,0:24:26.629 your trip. So that you know where your[br]reserved seat on the train can actually be 0:24:26.629,0:24:38.440 found. Then, I only showed the KMail[br]plugin so far. We also have a work-in- 0:24:38.440,0:24:43.409 progress Thunderbird integration, which is[br]probably the much more widespread email 0:24:43.409,0:24:51.519 client. Featurewise, more or less the same[br]I showed for KMail, so it scans the email 0:24:51.519,0:24:57.479 and displays your summary and offers you[br]to put that into the app or, possibly 0:24:57.479,0:25:04.080 later on also into the calendar.[br]This one is even more experimental. I can 0:25:04.080,0:25:08.769 only show you a screenshot of Web[br]Inspector proving that it managed to 0:25:08.769,0:25:17.059 extract something. That's the integration[br]with Nextcloud. I hope we'll have an 0:25:17.059,0:25:24.929 actual working prototype for this in[br]January then. Those two things are, of 0:25:24.929,0:25:32.330 course, important for you to even get[br]to the data, the booking data, that then 0:25:32.330,0:25:45.239 the app or other tools you built on top[br]can consume. OK, so where to get this 0:25:45.239,0:25:55.470 from? There's the wiki link up there. The[br]app is currently not yet in the Play Store 0:25:55.470,0:26:00.919 or in the F-Droid master repository. We[br]have an F-Droid nightly build repository. 0:26:00.919,0:26:09.230 I hope that within the next month we'll[br]get actual official releases in the easier 0:26:09.230,0:26:16.279 to reach stores than what we have[br]right now. If you are interested in 0:26:16.279,0:26:23.749 helping with that, there's some stuff in[br]Wikidata where improvement on the data 0:26:23.749,0:26:33.251 directly benefits this work, and that is[br]specifically around train stations. I 0:26:33.251,0:26:36.700 think in Germany, last time I checked, we[br]still had a few hundred train stations 0:26:36.700,0:26:45.460 that didn't have geo coordinates or even a[br]human readable label. So that's something 0:26:45.460,0:26:50.679 to look at. Vendor-specific or even the[br]more or less standard train station 0:26:50.679,0:26:56.139 identifiers is something to look at. So[br]UIC or IBNR codes for train stations, 0:26:56.139,0:27:03.940 that helps a lot. Yeah. And then, we kind[br]of need test data for the extractions. So, 0:27:03.940,0:27:11.249 forget everything I said about privacy. If[br]you have any kind of booking documents or 0:27:11.249,0:27:17.950 emails you want to donate to support this[br]and get the providers you're using 0:27:17.950,0:27:23.479 supported in in the extraction engine,[br]talk to me. That would be extremely 0:27:23.479,0:27:30.769 useful. Yeah, that's it. Thank you. 0:27:30.769,0:27:33.169 Applause 0:27:33.169,0:27:37.309 Herald: Hello, hello? Yeah. That's a very[br]impressive project, I think, do we have 0:27:37.309,0:27:43.869 questions then I'll hand you my[br]microphone. Yes. 0:27:43.869,0:27:51.440 Q: Would it be possible to extract[br]platform lift data for train stations? 0:27:51.440,0:27:57.179 A: Sorry? Platform….[br]Q: Platform lift data. 0:27:57.179,0:28:08.299 A: Oh, I think Deutsche Bahn has an Open[br]Data API for the live status of lifts. 0:28:08.299,0:28:15.739 That would, of course, in theory be[br]possible. What we are trying to do is to 0:28:15.739,0:28:21.820 be generic enough so that this might not[br]be applicable in just one country, 0:28:21.820,0:28:29.220 although it is very European focused[br]because most of the team is there. But 0:28:29.220,0:28:33.770 lifts is something that is easy enough to[br]generalize in a data model, right? Its 0:28:33.770,0:28:39.139 location on the platform, and, are they[br]working or not? So, yeah, that that would 0:28:39.139,0:28:49.059 be a nice addition. That goes into the[br]entire direction of, ya, indoor navigation 0:28:49.059,0:28:54.529 or navigation around larger train stations[br]and airports. So that's probably something 0:28:54.529,0:29:00.620 where we could use a better overall[br]display with the OpenStreetMap data and 0:29:00.620,0:29:07.460 then augment that with, like the, where[br]exactly is your train stopping and in 0:29:07.460,0:29:11.559 which coach is your seat, and then have[br]the lift data so we can basically guide 0:29:11.559,0:29:17.240 you to the right place in a better[br]way. Yeah. 0:29:17.240,0:29:25.869 Herald: Any more questions? Yes.[br]Q: It's the mobile app written in Qt as 0:29:25.869,0:29:31.080 well?[br]A: Yes, most of this is C++ code, because 0:29:31.080,0:29:39.390 that's what we use at KDE. The mobile[br]client as well. There's a bit of Java for 0:29:39.390,0:29:45.899 platform integration with android. I don't[br]think anyone has ever tried to build it on 0:29:45.899,0:29:52.879 iOS, but of course it works on Linux based[br]mobile platforms as well, thanks to Qt and 0:29:52.879,0:29:57.159 C++, yeah.[br]Q: So you mostly talked about the mobile 0:29:57.159,0:30:02.470 app so far, which is understandable, but[br]as it's a QML application does it also run 0:30:02.470,0:30:08.399 on desktop? And, a second question, how[br]do, how do all the plugins and the 0:30:08.399,0:30:14.840 different instances of the app share their[br]data? 0:30:14.840,0:30:22.239 A: So, yes, the app runs on desktop. I was[br]trying to see if I can actually start it 0:30:22.239,0:30:31.489 here. I'm not sure on which screen it will[br]end up. That's where we do most of the 0:30:31.489,0:30:42.809 development. Let me see if I can move it[br]over. Oh, thank you. And I need to find my 0:30:42.809,0:30:56.950 mouse cursor on the two screens. Uh. I[br]think I need to end the presentation 0:30:56.950,0:31:10.580 first, but, yeah, short answer, of course.[br]There we go. And let me switch to… to… 0:31:10.580,0:31:19.429 yeah, so that's it, running on[br]desktop. It has a mobile UI there. That 0:31:19.429,0:31:27.609 could, of course, be extended to be more[br]useful on the desktop as well. And in 0:31:27.609,0:31:33.539 terms of storage, that is currently[br]internal to the app, there is no second 0:31:33.539,0:31:42.029 process accessing the actual data storage.[br]That would just unnecessarily complicate 0:31:42.029,0:31:47.570 it for now. But if there is a use for[br]that, yeah, we'll need to see. 0:31:47.570,0:31:53.700 Q: Yeah, but, but, but there was an[br]option, in the e-mail plugin, for example, 0:31:53.700,0:31:57.749 to send it to the app. Can I then only[br]send it to my local app and not to the 0:31:57.749,0:32:02.739 mobile app?[br]A: Oh, the central app, that's using 0:32:02.739,0:32:08.059 KDE Connect. That's an integration[br]software that allows you to remote control 0:32:08.059,0:32:11.359 your phone from the desktop. So that's[br]basically bundling up all the information 0:32:11.359,0:32:17.049 and sends it to the app on the phone. And…[br]or it can import it locally, so. 0:32:17.049,0:32:26.820 Herald: OK, do we have other questions?[br]No, we don't have time? So then, thank you 0:32:26.820,0:32:32.049 very much, Volker, maybe you can tell[br]people where they can find you if they 0:32:32.049,0:32:34.240 have anything more they want to talk[br]about. But…. 0:32:34.240,0:32:41.219 A: Yeah, I mean, there's my email[br]address and otherwise I'll be around all 0:32:41.219,0:32:44.669 day, all four days.[br]Herald: Around where? 0:32:44.669,0:32:48.630 Volker Krause: Probably somewhere. So it[br]just is a bit tricky. 0:32:48.630,0:32:52.649 Herald: …catch him before he runs away,[br]then! All right. So give a round of 0:32:52.649,0:32:55.100 applause again and thank you, Volker! 0:32:55.100,0:32:58.805 Applause 0:32:58.805,0:33:06.560 postroll music 0:33:06.560,0:33:26.000 Subtitles created by c3subtitles.de[br]in the year 2021. Join, and help us!