 So, hello, my name is Jordan I've been a contributor, I've been a ground contributor for about two years now mostly working on QA staff and Shaksana days I'm a builder, which means I give stuff building and involved in most of the rest the related project in GNOME I enjoy writing grass and I like to say I I work for Centricular, which is paying for me to be here. So, yeah, I also get to write the rest of the work so GNOME is an old project. It's older than me It was started by Miguel de Caza and Federico Mena It's a default in the desktop environment of most Linux distribution nowadays It has a big community of many active participants It's built on top of Gillib and Cheh So Gillib is a cross-platform Cheh library It provides common data structures For Cheh because Cheh does not have a standard library It includes an object or index on a framework called G object It's what GStream and GTK are built on top It's commonly used in many embedded devices and probably You already have a couple of devices in your home that are with it GTK is a cross-platform Graphical user interface still get it used by GNOME, elementary, GIMP, many popular applications It's written in Cheh with Cheh with G object It's heavily object oriented has used subclasses and interfaces It has hierarchy based widgets And uses callbacks for singline handling It also has a CSS styling engine It provides a couple of platform integration APIs It's built on top of GLIB.jio which is like the library for handling input and output in Gillib ADK which is an accessibility library, GAROP and PANGO It has bindings for many languages There is a framework to automatically generate bindings for Gillib-based projects using just an XML file and so Yeah So GStream is a cross-platform multimedia framework It's pipeline-based Which is heavily multi-threaded It's written in Cheh with Cheh object, but it's not tied at any way to GTK It has good integrated windows and macOS support Which where GTK is like more of Linux toolkit nowadays Your TV also probably is using GStreamer for media decoding and coding It also has bindings for many many languages GStreamer is not an alternative to FMBAC It can make use of it It's not a media player or playback library It's not a coder protocol library It's not a decoding tool and it's not a streaming server But it can be used to build all of those So LibreSwitch is the first major library that That added That got Rust code involved It's used by GNOME, GTI, GIMP and Quick Media It was originally written by as part of Gill by Ralfel again Gill was Gill is an acronym for GNOME Illustrator program Which later involved in the study part and now it's in Scape It's about 20 years old So it's there's a lot of Old Cheh code there It was unmentend for a while. It had a couple of CV issues A couple of years ago Federico Gwinterar took over Mentors of LibreSwitch After a while getting fed up with the CVS He he decided to gradually port the library to Rust. It's not a rewrite. It's a gradual port It tends for say and API and API compatibility And it has achieved that to this day still So in 2017 In December the last say only version of LibreSwitch was released In couple months there will be the next version 246 Which includes all the functionality That the library uses to render and SVT it's implemented in Rust and only Rust The only thing that's left is the say headers and say API It has an active community nowadays around it and it's actively developed again Federico Paolo and Ivan made it possible to port huge chunk of it to Rust and it's now It's one once less library So LibreSwitch still has a say API and say header files To this end GNOME class was Was started to be developed it's meant to In order to interface with the glib and gobject libraries you need a say ffi Which means you need a safe code Also subclass in gdk and gdk install in general is known for to have a lot of boilerplate A GNOME class is meant to be to allow you to both write Syntax like if it was a higher level language like python But also automatically generate the unsafe code that you would need in order to interface with gobject directly It's like vala, which was Transpiled languages that compile industry But it instead targets the raster AST So you get to write safe code Without boilerplate And get all the gbs functionality There are a couple of applications that have popped up The first one is fractal Fractal is a matrix the third client It's a big application and it was a An experiment for the most part It was written before many of the nice things were stabilized like shared the derive and digitalized So the code base is not as pretty nor Easy to work with yet. There's a huge effort on refactoring it It has a quite active community, which is like It's amazing because like All these new people that come up that have popped out are like Came up from a rast community before they had nothing to do with GNOME It's nice. It was started by Daniel Garcia as a side bro. It's mostly to learn rast GNOME podcast is a podcast client It was my excuse to learn rast It started like a while I started like a year ago or so. It's about as old as fractal It's it was a nice way to like to get to know to get to learn rast and mess with the gdk a bit The problem is like Due to some bindings limitation like not being able to subclass yet a widget You you had like Try a lot of different approaches in order to get something. That's Nice and maintainable to work So the code base was written a couple times In order to make it easier to be maintainable It has a multi-thread and concurrent parsing indexer of rss Which is like a year ago. I had no idea what any of these words would mean And now it's not only implemented in a few it was not only meant in a few weeks also memory safe It's just crazy So These are two old apps, but they are getting rewritten in rast They're not they're not going to be gradually ported because It's not as easy unlike with the unlike the liver svg. It's not as easy to gradually port applications Because you can't Due to a couple of issues with With both subclassing and the packaging system you can't just write Widgets in rast and have them called while you port your app. So These both of those apps will get the are getting rewritten from scratch They're both third third paragraphs in because developed independent of gnome Which is nice to see that rast is getting adopted not only by gnome But also the wider community that just targets gnome as the platform they want to run on So gnome has an idea It's called builder It it aims to make developing gnome applications as painless as possible It's you need like three clicks from to go from Not from cloning a repository to have the application running and be able to modify it and And actually have the application then such a the modifier is just running it uses It does not have any host dependencies makes use heavy use of the flatback and flatback runtimes to achieve It has flatback has rast support. There's a rast toolchain for for flatback runtimes Builder also has rls support since march. It was like one of the earliest adopters in this So, uh, talk about we talked about flatback before Flatback is a package system. It has a it It's a package system then That's meant to So flatback provides a package system for sandboxed app applications that are independent of host and can run across any distribution in any desktop environment It uses austria underneath and Astria is like austria is like git for binaries. It has a duplication and can make divs out of binaries Ribomanager is the tool that is used for flat hub Which is which is the largest flatback repository It's it's written in rast. It's a web server in rast that provides fashion that provides functionally similar to git push It will soon be deployed and power all of the flatback all of the flat hub infrastructure, which is many millions of users so Whoops, there's a slide missing on it So cargo is wonderful, but it's not a build system. Sadly Not at least that one the traditional sense You usually need to distribute more than just a binary or just a data SO file. So you can't just use cargo for general distribution package man Neither other tools normals don't have an easy way to support cargo which results in really ugly hugs with wayards self-scrims and going Going way out of what the build system would allow Like you you can't do out of three builds with Do you do some packaging issues? the main the main problem with the build system is that you have a mesh on our auto tools which is which wants to take control of all of the artifacts that are generated and everything every invocation of the compiler that is run But then at some point you have to call cargo because cargo is like the only way to compile Rust code currently and They really don't like Not being able to determine what the artifacts the build artifacts will be And how they will be named the where they are placed So you most most of the time you end up with ugly cell scripts that have mesh on called cargo and says how to get a binary Then have my mission handle all the rest of the stuff which might be Installing documentation Updata desktop files And other stuff like that Rust says generally at editing most distributions If you are using a long-term support release of a distribution The the Rust compiler there usually gets updated only when Firefox requires a new one So most of the time it's like Almost a year and maybe more Older the jitter by the jiggery the jiggery abondings and And jobs have no subclassing support In general yet, which Sebastian will be talking about later This results in an idiomatic code and which is like it's high It's has a higher maintenance cost than usual dramatic code and It will be needy and will need to be written at some point currently to one subclassing available so it will be Bit better This is also the reason that like rust is not yet Incom editor we have any kind of templates for writing gtk applications because The the code that you will need to write today will have like many workarounds limitations of subclassing of the bindings Which at some point you will have to throw away in a couple of months So there's also the community aspect of rust Rust has the most welcoming and empowering community I have ever came across Everybody wants you to succeed Everybody is there to help you Everybody is super friendly Rust also has a beginner's program A rust beginner's channel, which is probably misspelled there Uh gnome also has a new cameras experience. There was also a gnome cameras workshop An hour ago But it's not as nice as the last one like you just drop on the Rust channel and everybody answers you your questions like five minutes and Helps you in even more gnome is sadly Doesn't have the manpower to do it we try as much as we can but It could get a lot of better a lot better and it's something to look forward into The rust code of conduct was a big thing It's what inspired Federico To start an initiative to rewrite the gnome code of conduct and get people to start taking it seriously again it and The previous the current And the code of conduct Is rather ambiguous and nobody really cares about it But that's not the way we want to move forward there have been There's a duplication the sled, but it's fine There have been four a hackfest so far related to rust and gnome There's one every six months now that and people get around discuss issues and Have have a great time in general and Slides on me So and that's about it Overall since I Managed to take on slide Any questions? Yes Yes Go ahead So the question is how does vala compares to rust when it comes to the developer the development experience in writing the code So the process with fallage Is far smoother because The resulting integration is placed already we are currently have to smooth out a couple of paper cuts and Solve out the issues with the build system first before it becomes easy. There's also needs some there's some Ongoing work on the bindings that needs to be released first before you are able to do things like that gnome class is actively maintained But it's not yet ready for prime time to get you to write the objects the a couple a couple of things are missing But it's getting there Other than that it's Okay Yeah, it's still quite early. I think Yes So the question is when if jillip geosec and njadk will be written in us You probably won't ask I don't think there is any chance of this happening But you probably won't ask actual jillip and zk developers and But it probably won't happen it's jillip is badly tested by now and and yeah So yes in the back Yes, so the question was There are the couple of Distributions have added trust second ballers and There's that's the similar case for bsd bsd as well And if there was some feature that was held back due to Due to distributions not having a current enough compiler Yes, actually there are a couple of things that Would clean up the libars vg code base a lot but We currently We currently support The latest long-term release releases the That how that and it's like we support currently, I think last said 1.1.28 So we always try to To not bump the version increment The minimum version requirement without any good reason but sometimes you have to avoid we can't avoid it because Create underneath has just bumps it to and needs rust 2018 or so So Yeah Yes So the question was since jillip is running on Mac on windows as well What's the accessibility state of it and if you can write rust applications That are accessible to other users in those platforms if Gdk uses atk For the accessibility integration which is which stands for inaccessibility toolkit, I think If if gdk itself And adk is functioning on macOS and windows Which I I'm not I don't know the state of this yet It would work with rust as well with the rust bindings as well The bind the bindings API wise are fairly not fairly complete, but there There's a huge range of the API that's that is covered already But I'm not sure how what's the status of Atk on macOS and windows if they integrate yet as well as on linux Thank you