WEBVTT

00:00.000 --> 00:12.600
Welcome to my very short talk about the project. I'm currently working on what I gave it

00:12.600 --> 00:21.600
the name Aparoksha and yeah I'm going to explain a bit about how I organized this project

00:21.600 --> 00:27.120
about the thoughts behind this project and it's important to note that this project is

00:27.120 --> 00:33.680
quite young and and there are certain parts of the project which are fully implemented

00:33.680 --> 00:41.040
but other parts are in a very early stage so don't be disappointed if you check it out

00:41.040 --> 00:49.920
and realize that it's impossible to do too much with it and currently. So the fundamental

00:49.920 --> 00:56.640
idea of the project that I'm currently working on is to find patterns in different

00:56.640 --> 01:04.640
and fully native UI frameworks and so you can see the file manager of macOS and the

01:04.640 --> 01:11.920
file manager of GNOME and you can see that there are so many parallels between those two design

01:11.920 --> 01:20.640
languages that it's kind of natural to find a layer of abstraction that catches this

01:20.640 --> 01:31.600
similarities so that enables those two different UI that are so similar to be built with one

01:32.320 --> 01:41.200
code and yeah so for example you might see that those side bars that are available on

01:41.200 --> 01:46.880
every platform also for example on windows with when you are and so it's it's very natural to

01:46.880 --> 01:56.880
create this shared crosspad from framework and so for the developer experience and I had

01:56.880 --> 02:03.040
Swift UI in the mind so and the declarative reactive framework that can be used and to create apps

02:03.040 --> 02:13.920
for macOS, iOS and other apps all platforms and I just took some of the concepts and implemented it

02:14.880 --> 02:23.120
in a more in an open source way as a way I mean it's it's all available and in a way that

02:23.120 --> 02:30.320
that makes it possible to combine it with and with other UI frameworks that are already existing

02:30.320 --> 02:39.120
and for other platforms for example at way to for GNOME and you can see there's this concept of

02:39.200 --> 02:47.120
defining state and which models and what is currently visible in the user interface and there's

02:47.120 --> 02:56.240
this very declarative definition of the UI itself so those are the main concepts of the

02:57.280 --> 03:09.040
of the interface the developers can use and so I decided to design the architecture in a way

03:09.920 --> 03:18.240
that enables most of the parts of an app one wants to build and to be actually written in

03:18.240 --> 03:28.400
an interface that is in kind of similar to Swift UI so of course this shared framework is

03:28.400 --> 03:36.080
crosspad from framework and called upper-oxa and this framework cannot we cannot use this framework

03:36.080 --> 03:42.400
for all and parts of the user interface because there are complex views that are only available for

03:42.400 --> 03:47.840
one platform or there are so many differences between similar views that it's difficult to implement

03:47.840 --> 03:54.320
one widget and one view that is available on all the platforms and so I decided to

03:55.200 --> 04:05.360
develop those smaller platforms specific libraries and that are so you can you can mix

04:05.440 --> 04:14.080
and the crosspad from and part and the platform specific part with each other and through this

04:14.800 --> 04:23.200
be able to to write as much as possible in an interface that is similar to Swift UI and what you can see

04:23.200 --> 04:33.280
down there is that that I created this package and I called it meta and which enables a developer

04:33.840 --> 04:44.960
to port any existing UI framework that is imperative and to Swift UI like style so

04:44.960 --> 04:55.040
and so that this is a very generic library that can be used and to create such interfaces

04:56.000 --> 05:07.600
from such an interface and just to illustrate how declarative also the definition of such

05:07.600 --> 05:15.520
UI frameworks is so this is for example the definition for a label view and this translates

05:15.520 --> 05:22.160
the declarative interface into the imperative interface so this is how it looks like

05:22.160 --> 05:31.360
so in case someone is interested in implementing a UI framework for another platform that isn't

05:31.360 --> 05:38.160
currently implemented and yeah so then there's like the crosspad form framework and which is based on

05:38.160 --> 05:47.200
those native frameworks and well currently that's what one can accomplish with the crosspad

05:47.200 --> 05:54.160
from framework so you can see and on we have certain views for example this alert view that is so

05:54.160 --> 06:00.240
much standardized between platforms and that it's super simple to implement and there are other

06:00.240 --> 06:05.760
patterns for example this the sidebar pattern I mentioned before and that is also very similar

06:05.760 --> 06:13.120
between platforms but there are other patterns and such as this pattern here that is also very

06:13.120 --> 06:22.080
very similar to sidebar it's like a sidebar with less items and so that's basically kind of the

06:22.080 --> 06:27.120
two types of views there are the ones that are already very very standardized and the other

06:27.120 --> 06:32.880
ones that are a bit more complex to implement but the availability of which it is currently

06:32.880 --> 06:43.120
quite limited so yeah don't expect too much right now and yeah you can see there's the support for

06:43.120 --> 06:53.520
Winnii as well and yeah so the the only part of the project that is quite useful at the moment is

06:53.600 --> 07:03.840
the is the port for Known and because I'm a Known user myself and you can see there it is

07:03.840 --> 07:12.000
it is possible to distribute an app straightening swift and using the most popular app store

07:12.000 --> 07:20.240
on Linux which is called Flattop and there is a concept called Flatpack which enables an app to

07:20.240 --> 07:29.440
be running a very restricted environment and and and ask for permissions for more stuff and

07:29.440 --> 07:36.960
to do more stuff and and so I I devour I and and another and swift developer and called

07:36.960 --> 07:47.360
chasey wasn't x86 and developed an extension for flatpack and which enabled swift apps to be

07:47.360 --> 07:54.000
developed through flatpack so that's very very convenient also you can for example in an ID like

07:54.000 --> 08:01.120
Known builder or in VS code with the flatpack plug and you can just open an app project written

08:01.120 --> 08:08.160
in swift and the uses flatpack and you can run it right away you don't need to install anything

08:08.160 --> 08:16.640
and except for flatpack and there's also a an tutorial on on the website and that you can

08:16.640 --> 08:25.600
use to learn how to interact with advice for swift and this sample app and here illustrates

08:25.600 --> 08:31.200
and what I mean by saying you can write parts in the native frameworks and other parts in the

08:31.280 --> 08:36.720
cross-platform frameworks so that you can see here this is fully written in the cross-platform framework

08:37.920 --> 08:44.480
while this view here is fully written in an iterator for swift so the so the so the framework

08:44.480 --> 08:51.920
specifically for Known and so we can really mix those things and and it is and require to mix those

08:52.400 --> 08:58.160
and things at the moment and there are certain patterns that aren't available on certain platforms

08:58.160 --> 09:05.040
so this won't change and so for my plan for the future I will definitely implement some of our

09:05.040 --> 09:15.600
widgets and I'll certainly add support for Pewds so for native KD apps and also add support for

09:15.600 --> 09:24.080
iOS and as the back-and-from-acquests allows full interaction with swift y'all and actually there

09:24.080 --> 09:40.000
is already a mobile operating system currently supported with Known so thank you for your attention

