 Hi, I'm Julien Spauber. I'm going to talk about my journey or my experience creating my first GTK application called Teleport. Like a year ago or so, I wanted to create a GTK application, but didn't know what actually, at least at the beginning. And then with a friend, who is actually a designer, we were in the same room. And we had to share a file. How do you do that? How do you share a file on a local network normally? Do you use Sambar, network share, own cloud, next cloud? Instant messaging? Email? No, you just give up. You give up. You speaky. Best way to speaky, I guess. Who does use speaky? I use speaky to share a file, the local network. I do that too. So we were thinking about how could we resolve that problem by connecting something like instant messaging to sharing a file, but not to have the file shared with a remote server to upload it somewhere else. Because most of the time, we don't have a really good internet connection, although it's not everybody. Yeah, in Italy, it's getting better. Whatever, we focus on the local network to have something like this, a push notification that you send somebody a file. I'm Julian, by the way, so I'm sending my friend a file, and he will see something like that. Julian's laptop is sending you a file MD as a markdown file, and he can accept it or reject it if he doesn't like to work with me, whatever. So yeah, we start to think about this. And so we can directly go to a demo, because it will be really quick. I did. Why are you not on my Wi-Fi? Yeah, the problem with this is that, do you see it now, that on public Wi-Fi, for example, many clients can't, normally clients can't talk to each other, luckily. And telegram doesn't work. Do you see it now? Why? Now? Let's start telegram, teleport. I confused those two. Maybe we should change the name. So this is teleport. We keep using the face quite simple. Oh, OK. I have, because before my laptop died, no, I can't do it from here. That's so bad. Can I do it? Can I use a pseudo like this? Oh, yeah, I can do. Oh, nice. So now I'm searching for devices. And you still can't see me? That's crazy. We tried it before. That's so sad. I can try to switch off the Wi-Fi and switch it back. Maybe your Wi-Fi is just bad. I can use 5G, actually. OK. Whatever. Not going to show you the demo, sadly. I don't even have pictures. Whatever. Can you try to keep connection to my Wi-Fi? So let's go back to the project. It's actually design-driven. So from the very beginning, we focused on we defined a task we want to resolve. What do we want to do? Like solving the problem I described before, sharing a file on a local network. Obviously, sometimes we have additional problems that Wi-Fi doesn't work. Oh, now it works, actually. Now it works. Oh, thanks. Awesome. Oh, yes. Oh, all righty. So we see here that I got a notification from a photo, actually. Let's see what it is. I save it. And I can directly open it here or show it in the folder, but open it. And that's the portal. Does anybody know what's a portal? Flatback thing. We're going to talk about it later, slightly. Yeah, they're selling stocks. It works. And we also have, like, a really nice, let's put it there. Like, we can drop it there. And he got the same notification or sent it there. So it's quite basic. We have minimal settings for now. Why do we are working on that? Let's go back to the design-driven project and the description. So we focused on the task to simplify also the user interaction. And we tried, at the beginning, to start with just an application which works. That we can directly test it on users and see what we have to change in the user experience. Like, you saw showing folder. Previously, it was move to folder. And we had to implement something like, actually, a file dialogue which allows the file to be saved somewhere else. But we figured out that it's much easier that we're just showing the download folder and the user can copy it from now to those somewhere else. And that's the awesome thing about an MVP, what means a minimal available product, which is a minimum set of specifications we really need to have a working application which user can already use. Also, like many designers say, best UI is no UI. We expected that. But we went the step forward. We think the best UI are notifications because they are not distracting as much as the UI when you have to switch to another application. It's much better integrated in your workflow. Also, a tip for developers. How many developers are here most? Who is not a developer? Yeah, more than expected, actually. So my suggestion is to get a developer on board. Obviously, not everybody can have a really good friend who is awesome developer like Tobias is, designer, sorry. But still, try to get one on board so that you as a developer can focus on what you're really good at, like actually coding. Actually coding, and you can do what you love and you don't have to mess with. Where should I put this button? Do I really care about that? But I care about user experience. I care about having users. If my application isn't usable, why do I do the work? So at the beginning, we tried to create an electron app, which is not native at all. But I actually wanted to create a GTK application. So we wanted to write a native application for GNOME, actually. And also, C is not that hard. Who writes C code? Who loves writing C code? Oh, fewer. Yeah, I like writing C code because it's quite simple. Like you have really basic constructs like F4 and variables. And more or less, that's it. Yeah. I saw those confused faces. But it's not. For the beginning, you can already do something with that. And also, we have really awesome, at least in the GNOME community, we have really awesome applications. And one advantage of advantage of open source and free software is that we can look at each other. We can look at code of other people. And for example, if you want to start GTK development with C, you can have a look at GNOME to do, which is a really awesome app, at least code-wise. And the UI is getting improved constantly. So now, we somehow know how to start. But how can we ship an application to users and test the usability and the user experience and get an immediate feedback? Because we are working with designers. And also, they need to know what users think. How do they interact? Therefore, we used Flatpak, which is a really awesome, let's say, container system package management, not a technical description. And we used Natalie belts. For most of the change, we build it, publish it, and got often a feedback already. Or we could really easily test it on friends' machines or also on a second we had a home. Then for the first release, we didn't have to do much because it's already Flatpak. So we created a release. It's done. And you can immediately install it to all GNOME Linux-based machines that's the advantage of Flatpak. There is FlatHub, which is like an app store for Flatpaks. But since, for now, we only created a really basic version of Teleport, we obviously have already, from the start, plans for the future. Most people, I think, have plans for the future for their projects. And we are thinking about adding, sending multiple files. But that's not essential to be able to use the app. Also, we would like to add a more complete settings menu, let's call it menu, that, for example, users can change the device name on inside Teleport. Also, we would really like to have encryption because when we are on a public network, yeah, safety should be an issue. Also, we would really like, which actually was one of the main goals to have clients for different platforms like Android, iOS, Windows, and macOS. If somebody is interested in contributing like a client for another platform, talk to me. I would be excited to get something done there. So we have future plans. So I really hope I got for designers some insight in my progress how I got started with GTK and how I work. And I hope also that I showed a good reason to developers to get designers on board already in the start, already way before writing code, but also to let them participate to the project because they can take off your shoulders a lot of load, which, for example, when you're learning a new language, it's quite difficult if you have also to think where should I put that button, which font should the text be? What should I write there? And in this sense, this is my Twitter handle, julian underscore sparmer, or drop me an email. Yeah, thank you. Yeah, please. No straining because it's either. Actually, since, let's say, my personal designer, is quite involved in GNOME, and the GNOME designer. So he actually knows what he can do with GNOME technology. But I often talk to him, no, we can't do that because it's way too complicated to implement. And then we had really often front and back and forth to discuss how we could do something. And it's an interaction between two people or more people. It's not like a designer is coming to your project and he is saying, we have to do it this way. You will, on the way, also learn. You can also learn something about design and then create together something like a project. Does that respond to your question? Oh, I have to repeat the question. The question was, can you repeat the question? OK, the question was, if GTK is limiting the possibility of implementing a design proposed by a designer, other questions? Yeah, please? Yeah. So it wasn't actually a question, it was more a suggestion. Oh, the question was, what am I using on the back end to send files? It's Lib Soap, which is a web server. Yeah, it's a basic web server, a library, a GTK library. It's part of, how does the client know? The question was, isn't it easier that the client is pulling the file than pushing it? It's actually that way. The computer, which is sending a file, sending a notification that I'm offering you that file, you can download it from that URL. So it's actually the same as creating your own HTTP server from the terminal and then sharing the link with somebody. It's the same thing, just with a different user experience. I do that all the time, like creating an HTTP server and sharing the link, but it's too much work, actually. And the discovery is handled by Avai. Do I pronounce it right? I don't think so. Yeah, that would be also nice, but different use case, actually, because you still have to use Telegram or any instant messenger to share it. Yeah, yeah. In two parts. The first part is, this has anything to do with the people nearby functionality of the laptop itself. Yeah. And the second part of this is, I know that that communicates with Macs quite well. With Macs, sorry? With Macs. Ah, Macs, yeah. OK. Is it possible that this could be a problem with AirDrop? I actually don't know how AirDrop works. I don't have a Mac, so I couldn't try it on my own computer and never around to try it. But it could be possible. We are using, actually, Avai, which is an implementation of Bonjour. So it could be possible. But we should, like, the AirDrop is proprietary. And I think it is proprietary. I think so. Yeah, I think so. They didn't. I don't think they allow third people to develop applications for that, I guess. Thanks. Other questions? The project, by the way, is public on gitlab.known.arc. But you can find it also on GitHub. Or just search for teleport. You will find it.