 So before we start we have a quick demo, hopefully it works, to give you a brief introduction This is my machine, the right one, and the people at Wichelt, we use a project from our community, it's a 24 Wichelt, which is a fully productive application We hack this people to give it some network capabilities, and I, as a buddy at Wichelt, and I see Daniel's people session, we try to manipulate Okay, so he's also connected, and then I can throw it back, and the SCC is very, very productive Before office, and so this is the fun part of the talk, now it gets serious, so everybody knows now what's your compass, right? At first we'll give you a short overview about what's your compass Yeah, it's only a brief introduction, we don't go in deep, touch the surface, you might ask Lena, I will ask every question to Lena, if it gets too deep And then I'll give you more Lena part, I will give you some circum implementations The big question, what do you have to do to write circum applications? It's not done on a zero code, and then we give some more demonstration, not only to people, but also fun stuff And demo would be the biggest part of our talk, so just start with a short introduction Zero code, also called zero configuration networking, is a bundle of network techniques to make it easy to write network applications And just don't care about something I give an idea for, so start with months, and so on And as you saw in the nice application work, it opens new possibilities for developers So the main idea is to think more network, to give your application network wings And it probably fits best for a talk network, like a small lens, like here And we have meetings also, we've just done switch here, connected with these two laptops on the MacBook And it has no working part So this makes casual services admins really obsolete, so there's only that admin with deeper knowledge of networking techniques Comes to your machine and sets up your interface Like IPv6 or not? Yeah Like IPv6 Yeah, sure, who knows such an address We will come to that more later ZeroConf covers three parts, it's also called the three-layer foundation here, ZeroConf So it solves these three problems for you, and it looks like magic This is addressing, naming for your hosting and discovery Yeah, they're addressing, like you might ask for IPv6 There's some automatic magic to assign an IP address for IPv4 For IPv4, there's some further magic, we call it ABI AutoAPD, I don't know And there is no DHCP server required for this, as you might saw here We just connected the machines to that switch and they are assigned to their own IP addresses And this is quite nice for home networks Okay, nowadays everyone has some Wi-Fi router or something like that, which in DHCP server you can put in But in this case, like in a conference or something like that, where you don't have the central infrastructure in place It's quite handy to have The naming is done with a technique called multicastiness It's an invention method The main goal is that no DNS server is required, no central DNS server It works mostly exactly as plain DNS, except that your naming requests are not sent to a central DNS server They are sent to a multicast address And here you see the address And the responding of these requests is done by a so-called MDIN-Ed responder Which works in background and listens to port 53, 53 So when there is a DNS server in your network, it can coexist with the port So the most important part for applications developed with you is where you like the discovery part of the Siri Comfort Because you are able to discover services in your local network Without a central instance in your network like an SLP server How many of you run an SLP server at home? Okay, you have a problem You don't have? Yeah, expect cyber, nobody runs one So you can discover services in your local link with DNS-based services Like the name already tells, it's based on plain DNS And it also contains human readable information So what you see in the e-wall widget is some... Okay, it's not that user-friendly maybe But you can have a tech-use service with a service name and a service type To search only for a particular service like in this case for what they call e-wall I guess they are announced as people Yeah, as people underscore people and dots underscore TCP And so this widget shows only all instances on this local link which is running or which offers a service And you can also have some optional configuration parameters For example, a client has a location information on which floor, something like that So you can write a critical rich application without bothering the user to know about IP addresses Or the port or something like that So it really opens up a new possibility to write an application like we did with people So for you as a developer, the third layer, the discovery layer is the most important one Because this is the layer you use in your applications for publishing services, for code for services The other two layers are done by ZeroCon, if you don't have to care I'll probably show you in a later slide how you publish and browse Yeah, let's come to some major ZeroCon implementations As I already mentioned, Apple did the major inventions in the ZeroCon stuff They shipped a package called Bojo, or formerly called one of them Bojo is also available for Windows and also for other projects like operation systems And in the Linux environment there is Awari And which author is the main author Yeah, maybe, do you want to introduce Awari? Or should we do an introduction? Awari, who knows Awari? That's not your personal introduction I need to work on it So there are more details Awari offers a full zero-conform implementation Like we mentioned before, this three layers That for our implementation is Awari AutoIP Which is running when, for example, the DHCP client doesn't get an IP address assigned And also our NDNAS, NDNAS is free And Awari provides NDNAS interface to announce services or to browse for services And it also provides a dead-familiar HDDs And you can also use a Libre Awari client Which wraps the NDNAS interface and you have callbacks, callback functions So it's asynchronous and it's very nice done, so good job And it also offers lots of bindings, like for Monon, Python, and I guess many more And also lots of helpers, for example, as a key, mainly with integration And what else? Anything else? Someone has had a lot of support crisis stuff Awari is really nice to implement It offers everything you need So the great question, what do you have to do to write zero-conform applications To use zero-conform capabilities? Yeah, I don't waste my time giving you an introduction on how to implement this with Awari There is in the south coast of Awari a very good detailed demonstration on how to browse For services or public services This was also the way I started to get familiar with Awari It was very easy And on this week's page you get also a description for the Divas interface But I guess you have also Divas introspection, right? The Divas stuff is not really documented, but the Awari client is documented And it mostly just reflects what Divas does So if you need some documentation for Divas, just go into the documentation for the CAPI And you should be able to find out what it is So that's the best point to start with Awari So if you're a KDE developer, there's a great package called KDE in SSD With KDE in SSD, as the name is, I expect you can do everything What the third layer should do You can publish services, you can browse for services Here's a short snippet We will show you later that this code really works Sure And first of all you have to allocate a public service object And do this while parting a service name A unique service name And the second parameter is the most important parameter It's the service type So when you want to browse for the service, you have to use exactly this service type And of course report where your service runs on Afterwards you start the service while calling the method publish So what you have to do to browse for this service It's really also very easy You have to allocate a browser object And the only thing you have to give this browser object is the service type You really want to browse And if you're familiar with Qt's signal and slot technique It would be really easy for you to connect to the signal service edit Where you get the remote service pointer And you can resolve this pointer and do everything You can ask for the port number, service running, the host name, the service name And something else And last you have to start your browse and you get a lot of signals Hopefully So that's basically all for the theoretical part We try to show you something First of all our self-made people The small example we wrote to show you that it's really that easy Is it readable in the back? Or should we increase the size? It's readable Yeah, maybe it should increase the size we can Really? It's better? Okay What we've done, we wrote a class with the method start-servers Where we just give us the service name, the username and the host name of this machine And we pass the service type in the port number, as I said in the slides before And additionally you have a text area where you can push in a cool byte array I just added a string This is the start of the service There's another method for browsing These are the three steps I showed you in the slides before Connect to the signal and start browsing And run out of time Okay So I started the service and Daniel also started his client And as you can see he has registered a new client with his machine name The port number and so it runs on And when I stopped the service No, I didn't connect it to the remove but to start again you will see that So what you also can see we have different ports So you can also announce different port numbers with dnssd Or this is this human readable string which you can deliver So what do you show in your UI or in your browsing widget So for future networking applications It's really not needed to know the IP address of the service where I want to connect It's just a simple connectivity and you can browse for the service So next we show you some instant messaging Speaking always on a local headbook So here's a short list What applications are currently open to the user There are many more support Support one is down here And you can turn it on It's a messaging Added those articles to the list on the right It's a way that you should be adding like dvol It's only one week old code so we will add it That's it And it does as my final exam project I didn't know that you wrote Mangalasi at this time Maybe we did If you look here to the screen Tom started Conqueror Which is able to do a Bojo chat Which is based on which is using The local link to announce To this first network There's a 4-bit plugin for the computer It's not in a situation where it's stable but works So you can also use it with iChat And make all the things Maybe you want to show it as a suspended Took Scooter It's the name of the MacBook So it works as well Another great application One of our Acrid winning applications is Giver It's a GTK application for file sharing You can easily drop files in a body list And you'll hear which also has announced The Giver service You can get these files And I took this great capability And wrote an application called K-Pass Or homely Kiffer There are some reasons to rename that So I'll just show you that It is available as Plasmurid for KD4 Or as Traken Yeah, Daniel has started this Traken in KD3 is kick-ass straight So just in case we want to send him So we can see our bodies This is Daniel, this is Marcel So we can send him a file Or clipboard entry This is the extension Which is not yet available But we just sent him a file Maybe for some presentation Oh yeah, there's something in my laptop It just takes a while, seriously Sorry, here's the file Is that some kind of particle or something? And it's just... it's HTTP Some kind of HTTP Yeah, yeah It's just plain, very, very simple HTTP Put implementation Because it's not standardised It's actually good So I'll just send you a clipboard entry Yeah, I just tried to send Daniel A clipboard entry And you sent me this pass as clipboard And if I accept, I can now select this pass No, it's here running KD3 Because it's activated BLT bus It's a clipboard function of KD4 Yeah, just so we can do it again And then just a load of... We can't start We just can't run anywhere So what you also can do with K-pass You can start a public file server It's also announced You have a zero-conf So you can see in the documents That I am running a public file server For example, I will publish my home directory That's enough Okay, I have successfully published And I found now in Conqueror and KD3 In the zero-conf KIR Then it's home directory Yeah, the public file server Where this takes a while Maybe it should take a small amount of time Is that okay with that? It's left up Okay, so what else? Enough for K... It also works with K-1 Yeah, it's pretty clear Maybe we should send this image Yeah As my final exam project for my traineeship I wrote an enhanced synergy With the zero-conf capability I don't know how many of you know synergy Okay, for those who have done that It's an application to share input So your mouse If you look at the bottom of your screen With your mouse Then it redirects the input Even off your keyboard to this machine For example If I wouldn't move now That's it Yeah The mouse What you can see here Is a good debugging tool It's a buggy It's not a buggy It's not a buggy Yeah, but it's not a buggy Yeah, it is Yeah, you can see Yeah, for some reason It doesn't work Yeah, maybe I just Say what I did I enhanced synergy To support multi-homing This means if I use my laptop In the office and connect it to the office network It automatically connects To my workstation And I can use a regular keyboard and mouse Of my workstation To control my laptop And if I go home I can Just connect it to my home network And control my ASAP PC On my desk at home So this is the basic of multi-homing And this makes Early use of DNS-based services Carried by just browse Founds the machines in your network And decides if it's now The client or the server for synergy And the synergy implementation Is written for Bonjour So it runs on macOS X And for avai So it's depending on Full time Which implementation is used If avai is available It goes avai If moshu is available It will So it comes up for synergy So it makes it even usable For For Control For synergy with 0.4 macOS X And on the apps So actually the demo doesn't work But we run out of time Maybe Do you have some questions? Some questions Don't be shy Try to answer No questions So then the things are coming We have device-specific capabilities So we have for each device The capability Or we discover them on the fly On the first thing So I don't know if it's just We can We have frontend as well You need at least the frontend To use the framework So we have kitchen thing For KDE Which is quite complicated Because there was also a kitchen to version Before Which got dropped At least in the subversion Two weeks ago Which got replaced By an open-soom-based kitchen thing It's the same for mortising There was a version 4 Which got replaced by Open-soom-based Mortising And there's AMSIM tool Which is the command-line interface But it's actually It's quite tricky to use Because it's a long parameter list And it's more It's not likely to be used For other suboxys It's more useful for debugging Or to try to reduce a problem So We will switch to a quick demonstration So What we are going to do first So The kitchen thing You can see that We have a new group Like we saw on the slide For example What we're going to do So I put them On-device with KDE And here you see The object I'm handling This will be in the feature And detect those When we use this cover We will see Which they're going to support Because some device Which doesn't even store Memos or notes So we do a quick one Just Same context Now you have to choose By hand Maybe we can improve For the plugins So we take the KDE plugin And We take the Palm plugin So the KDE plugin At the moment Don't need any configuration It's just Since the standard resource And And this is also Quite And this is the palm configuration It just changed from USB To Bluetooth Probably being supported For two weeks now Hot sync while to set It's quite cool So Lots of meeting edge features today So I turn on the palm device You can see no wind So now I press sync And press yes Sync So There's almost one entry It's Still solving Go, go, go And in the meantime it's done Can't press No There are empty entries Oh, there are really empty entries There are two Humminged entries On the palm So maybe we should delete them You know And this is why you Why you need The revision history Ah, no man Because after half a year of using this You'll find out That you have half of your Interplicate You can do 20 empty entries And you don't know Actually it should never happen Yes But it does Okay, so I just deleted So I unnamed entries And Press see It's the Synchronization And press here as well Synchronization So Now they got deleted It was quite quick Maybe I should sync more later So There you can see It's still not Say Got nothing again Say Still gone And I don't know If anyone can see this There's not only one entry Okay So maybe I can Create a new entry And use the session So We must talk about What? Data talk about Data We take data loss Maybe We have Data loss What's happening somewhere And you mean Framework specific loss Comments, emails Data Oh, of course There's a lot of loss But Maybe If someone can prove There's data loss And with the Full power And Yeah, it's data So then You want some logs? I can give you logs Too many logs This is Among Logitech Normal logs For And user Like I needed Those two Oh, maybe Yeah, this is This should be implemented On the front-end side So you mean some User-friendly stuff I know about the logs Okay So there are many logs We have this So Yeah Now we saw If you want You can create a new entry I don't know that But There's a pen on the side Well Okay, that helps But I don't know that Anyways Okay In the meantime I Can I can show The New features of the capabilities Yeah This is M-sync The command line interface Which I Wasn't able to To pass The key-sync In time With the AE It builds But it doesn't link So So we do M-sync Yes Well I tried like Test But it drained the power Oh Okay Is it going to Take UTF By the way Oh That's working This is not UTF It's not It's Windows Okay But we can't handle those We do In the plugin we do Just Oh I just do The same thing I have to go If you want to see A demo on the merger We can Meta the boost And So last question Was Really good The subject The internalization UTF Supported languages And stuff like this And it's Actually If this work Can on the plugin It does support that Or It doesn't support it So The framework It doesn't care about We Don't use The UTF-8 The plugins have To convert When they convert To the XML format Or just To UTF-8 Do you start The output format With the information Code page 1, 5, 2, 1 And you start Yeah We convert it And back To the From the XML format Which is UTF-8 Back to Code page 1100 Whatever So I do this last thing And then I Have to Handle To the demo It's now Doing Insularization Of Bluetooth So At 6 I have to go on Because I got a demo So Conclusion Backups Are recommended I don't think it's Still not perfect But it's quite cool So And we Really need More developers We have 15 plugins Some of them Are un-maintained Or we don't Even have Devices for it To test Or to validate If it's a Even work And You can find Further information About SparkJ Project On those websites Or if you have Some Specific question About open sync Put them on the menu Or you can Also contact me Right So There's no time For questions Sorry But you can Meet me Mainly On the list Yes And There are some Good work Questions