WEBVTT

00:00.000 --> 00:02.000
You

00:30.000 --> 00:32.000
You

01:00.000 --> 01:02.000
You

01:30.000 --> 01:32.000
You

02:00.000 --> 02:02.000
You

02:30.000 --> 02:32.000
You

02:32.000 --> 02:34.000
You

02:34.000 --> 02:36.000
You

02:36.000 --> 02:37.000
You

02:38.000 --> 02:40.000
You

02:40.000 --> 02:42.000
You

02:42.000 --> 02:44.000
You

02:44.000 --> 02:46.000
You

02:46.000 --> 02:47.000
I

02:47.000 --> 02:48.000
I

02:48.000 --> 02:49.000
Better

02:49.000 --> 02:50.000
No

02:50.000 --> 02:51.000
Yep

02:51.000 --> 02:52.000
Okay

02:52.000 --> 02:55.000
So

02:55.000 --> 02:57.000
That's what the v0 of our launcher

02:57.000 --> 03:04.320
And we developed it from scratch, which means that we didn't use any component or

03:04.320 --> 03:05.320
fork anything.

03:05.320 --> 03:09.320
We were building it from scratch.

03:09.320 --> 03:11.760
That was the very first development.

03:11.760 --> 03:14.840
And we reached a few months later, please don't share one.

03:14.840 --> 03:19.160
What we can call it, please don't share one, which was our first real-on share.

03:19.160 --> 03:21.640
You can find the link to the GitHub here.

03:22.560 --> 03:26.160
But, basically, what we developed is a grid of application,

03:26.160 --> 03:29.480
a dot, the possibility to create folder of application,

03:29.480 --> 03:32.280
and we have a left panel, which is in the right ear,

03:32.280 --> 03:35.760
but a left panel where you can set your widget.

03:35.760 --> 03:41.240
On purpose, we don't expect our users to set widgets on the main screen.

03:41.240 --> 03:47.600
Again, that's a design choice, which is not a purpose of this talk.

03:47.600 --> 03:51.400
This launcher design from scratch and built from scratch

03:51.400 --> 03:53.840
has been maintained up to Android 12.

03:58.840 --> 04:06.120
As you can imagine, we were facing some witnesses with this launcher design from scratch.

04:06.120 --> 04:11.720
The first main problem was we were facing a lot of crashes and upgrade resets,

04:11.720 --> 04:15.680
which means that time-to-time people with a large number of application,

04:15.680 --> 04:18.080
one on the right, 200-application installed,

04:18.080 --> 04:20.520
were booting their device, and the grid was resets.

04:20.520 --> 04:23.720
All the groups, all the icon arrangement, were resets,

04:23.720 --> 04:26.560
and they were starting from scratch, which was a big problem.

04:26.560 --> 04:30.320
Despite our investigation, we are not able to reproduce it reliably,

04:30.320 --> 04:36.840
so we faced a lot of difficulty to identify the root cause of this and to fix it.

04:36.840 --> 04:42.280
Another thing that comes with under-it-10 was quick step.

04:42.280 --> 04:49.280
Quick step is the system-gesture-based navigation feature and task feature in AOSP.

04:49.280 --> 04:53.800
So that's a component which lets you do those stuff in AOSP,

04:53.800 --> 05:00.760
and it was embedded within launch 3, since if I'm not strong under-it-10.

05:00.760 --> 05:03.600
Which means that for our design from scratch launcher,

05:03.600 --> 05:05.600
we were not having those features,

05:05.600 --> 05:09.040
and we were not having access, for example, to recent view,

05:09.040 --> 05:11.520
without we have to build it again.

05:11.520 --> 05:17.040
So the recent view is the feature that lets you switch between application.

05:17.520 --> 05:20.320
We were also facing some problems with Dragon Drop,

05:20.320 --> 05:27.360
and that's why we added to add a quick step APK within next-to-bliss launcher 3,

05:27.360 --> 05:34.080
next-to-bliss launcher 3, in order to get those features work properly.

05:34.080 --> 05:41.440
But, well, we feel it was more like a hack and was not convenient to maintain.

05:41.520 --> 05:48.800
So for those two reasons, we decided that we need to build again a launcher

05:48.800 --> 05:53.760
and to improve it and make something more modern.

05:54.800 --> 05:59.360
So we look at the market, what was existing,

05:59.360 --> 06:04.080
and with this and most of the launcher developed on the market,

06:04.080 --> 06:08.080
we're based on launch 3, what is AOSP launch 3.

06:08.160 --> 06:12.240
It's the default launcher in the Android ecosystem,

06:12.240 --> 06:15.520
which is the base of Google Pixel Launcher, for example,

06:15.520 --> 06:18.400
but also of the brand launcher, a line-and-and-joice launcher,

06:18.400 --> 06:22.000
which is called Trebusier, and also Launcher,

06:22.000 --> 06:23.520
which is another open source launcher.

06:25.840 --> 06:29.280
It offers the basic features that you know if you already add

06:29.280 --> 06:32.080
Google device in your hands, so an icon grid,

06:32.080 --> 06:34.880
a place, this dual mode, et cetera.

06:38.720 --> 06:42.480
It doesn't add any documentation, which was a problem for us,

06:42.480 --> 06:45.120
but we feel that with all the components,

06:45.120 --> 06:49.520
it was what that were included within this launch 3.

06:50.640 --> 06:53.440
And the example of other companies or projects,

06:53.440 --> 06:57.280
bathing their work on launch 3, it was the good pass to start working with.

06:57.840 --> 07:03.120
And we were expecting not to read on the wheel,

07:03.120 --> 07:09.120
which is what we all intend to do with open source.

07:09.840 --> 07:16.640
So we built launch 3, and I will just show you a quick demo about how it looks like,

07:16.640 --> 07:21.520
so that's my main device. So we have the icon grid that used as UCB4.

07:22.560 --> 07:26.080
We have multiple pages, we can have four doors of applications here.

07:27.040 --> 07:29.440
We can indeed reorganize the icons.

07:32.560 --> 07:37.920
As we can see, again, as I, IOS, I cannot drop an icon anywhere,

07:37.920 --> 07:41.760
we put them all at top, top left.

07:42.800 --> 07:50.160
And we have this left screen with the widget.

07:50.160 --> 07:54.400
You can add from the application you have installed on your device.

07:57.040 --> 08:04.880
So that's what we were able to build by modifying launch 3b of your to which this point.

08:05.600 --> 08:10.800
And it's quite a similar in terms of feature to what we add in launcher

08:10.800 --> 08:12.480
in a blister on shelf first version.

08:16.960 --> 08:18.560
I come back on the slides.

08:20.560 --> 08:22.080
So how did we proceed?

08:23.040 --> 08:27.120
How did it went from launch 3, which has its own design to something

08:27.120 --> 08:33.120
most similar to IOS, and what we intended to do to for, to add for our users?

08:36.160 --> 08:39.120
Well, and I'm sorry for one of the talk we had before, we forgot the project.

08:39.920 --> 08:40.800
Sorry about that.

08:42.400 --> 08:47.760
So we forgot the 12th-year project, which is the 4th itself of launch 3.

08:48.720 --> 08:52.240
In two, our GitLab repository, and yes, it's GitLab.

08:52.240 --> 08:56.320
It's not Garrett, we are at Mirina, we mostly rely on GitLab for now.

08:57.040 --> 08:58.960
So that's why it has been fucked on our GitLab.

09:00.800 --> 09:04.080
One of the main problems we add with launch 3 are not the main problem,

09:04.080 --> 09:06.720
but it's something we feel what's not convenient for our developers.

09:07.280 --> 09:11.760
And especially if we want to onboard Android developers, or Android application developers,

09:11.760 --> 09:16.960
is that launch 3 is built with AOSP, which is a complex

09:17.280 --> 09:22.880
build system, so that's why our developers are in a very early stage,

09:22.880 --> 09:29.760
migrate the application to Android Studio, in order to be easier to build,

09:29.760 --> 09:36.080
and also be able to use Android Studio features, even if we know Android Studio can be a bit

09:36.080 --> 09:40.160
heavy sometimes, it brings some improvements in terms of development.

09:40.880 --> 09:45.600
So that's what we did at a very early stage, being able to build it in Android Studio.

09:46.560 --> 09:55.280
Then development time, so we modify launch a design and UX for to meet our expectations,

09:55.280 --> 09:57.520
which are in your case, what I listed here.

09:59.920 --> 10:04.960
As I said earlier, there is no documentation, so that's purely a reverse engineering,

10:04.960 --> 10:13.200
trying to understand what our code is designed and to modify what exists in the source code.

10:13.840 --> 10:18.720
Hopefully, we didn't add to modify a lot of stuff.

10:18.720 --> 10:22.480
We disable some feature, like the Drawer mode, I listed here.

10:22.480 --> 10:27.440
And then we were able to build on top of this, some features we were expecting and looking for.

10:28.640 --> 10:33.040
So typically, rearrange icons automatically, make the icon jiglings.

10:34.880 --> 10:37.760
Well, the icon folders, we add to modify it a bit.

10:37.920 --> 10:43.760
And well, you can see, by scanning this QR code, all the modifications that we made on top of

10:43.760 --> 10:46.640
launch a three, which is around 300 comets.

10:52.880 --> 11:00.800
As any development, it takes a bit of time, and what one of the difficulty,

11:00.800 --> 11:06.240
while developing on the launcher, if you intend to do it, is to manage the wide variety of

11:06.880 --> 11:12.560
screen size that you can have on the market, especially when you deal with,

11:12.560 --> 11:17.920
when you want to build this green and have a pixel perfect alignment and all the resolutions,

11:17.920 --> 11:24.960
that's a long process to iterate, to test the emulator is indeed helpful, but not enough.

11:25.760 --> 11:31.440
And you have to collect feedback from many people and wide variety of devices, and that's probably

11:31.520 --> 11:34.240
what's taking a lot of time, the more time soon.

11:36.240 --> 11:42.800
And then, but that's more internal and for our purpose, we were migrating users from a

11:42.800 --> 11:46.160
previous version to a new version, with a completely different database.

11:46.880 --> 11:50.000
Please don't show that a database was built by our developers.

11:50.000 --> 11:55.280
Please don't show three is the database made by mostly the database made by Google for

11:55.280 --> 12:02.400
launch a three. So we had to migrate the icon position on the grid, the groups of icons,

12:02.400 --> 12:09.680
and the widgets from this previous DB, to the new one. And that's why it was kind of challenging for us.

12:12.080 --> 12:17.520
Hopefully, as I said, most of the AOSP component launchers we are untouched. We keep them as

12:18.240 --> 12:26.160
easy, and we only have to build a new features, but that's for developers,

12:27.120 --> 12:35.760
culture developers, we meant in culture. So now we released these launchers three,

12:35.760 --> 12:43.920
sorry, in May last year, what we are about is we were able to build on top of launchers three,

12:44.000 --> 12:48.880
exactly the same features we added in this launcher. It was kind of challenging and we were not sure

12:48.880 --> 12:57.280
we were, we were able to do it, but we were able without breaking it because we keep and we have

12:57.280 --> 13:04.080
no more stability. So it confirms the choice that it was the best approach to base our launchers on

13:04.080 --> 13:11.280
launchers three, because since May, I don't hear any more about bug, there is still a few,

13:11.360 --> 13:18.080
but I'm more earring about adding new features, which is always a good sign that the development

13:18.080 --> 13:26.560
is better. We improved a lot, a dragon drop of icons, which was one of the main complaints we

13:26.560 --> 13:32.960
added before with the launcher. And what is very good, also, basing your project, your launcher

13:32.960 --> 13:38.480
development on launchers three, is that it opened so do a more easy little add new features. So we

13:38.560 --> 13:45.600
focused on the first iteration on smartphone size screen size and we were able to add easily

13:46.400 --> 13:51.520
tablet mode and I would speak later that we can think about adding even more feature,

13:51.520 --> 14:03.600
way more easily than by developing from scratch. One of the challenge and it joins one of the

14:03.600 --> 14:11.760
torque we had before with forking is that we have to manage on the red versions. So before our launcher

14:11.760 --> 14:19.520
was an APK, that we built from scratch again and that we tuned to fit each on the red version.

14:19.520 --> 14:24.960
No, we are based on launchers three, which has one branch per on the red version, which means that

14:25.520 --> 14:30.880
from our for users, we want to be consistent across all on the red version. We people are running

14:30.880 --> 14:37.360
EOS and we don't want them to don't care if they are running under a 12, 13 or 14. So we want

14:37.360 --> 14:42.720
our launchers to be exactly the same on all those on the red version and that's kind of a challenge

14:42.720 --> 14:46.880
because we have to keep this consistency across three branches and three on the red versions.

14:49.360 --> 14:55.680
And indeed, as I told you before, we have a set of three on the red comets and it means that

14:55.680 --> 15:02.880
so when a new underreaction comes with its new comets, new features, etc, we have to apply our

15:02.880 --> 15:07.680
comets on top of this new branch and fix what has been changed. So that's also something which

15:07.680 --> 15:14.160
is a bit more difficult, but so far it has been not a bit less complex than expected, mostly because

15:14.160 --> 15:20.720
Google doesn't release so many new features in the previous underreaction. So knows that underreaction

15:20.720 --> 15:28.640
has been released, we released since last year. We can, there is no much feature that are coming

15:28.640 --> 15:32.640
in the launcher, it's mostly bug fix, which make our maintenance work easier.

15:34.880 --> 15:38.960
One of the challenge, if you build your launcher, is to keep a consistency in design between

15:38.960 --> 15:46.160
smartphone and tablets because there are two different screen sizes and in fact that's two modes.

15:46.160 --> 15:51.920
So as I told you earlier, we first developed on smartphones, it was working well, but when we were

15:51.920 --> 15:59.120
opening on tablets, it was kind of messy. So well, that's a kind of a new development to do

15:59.120 --> 16:03.600
and to keep the consistency in design that's worked to pay attention to.

16:06.080 --> 16:10.720
But it's easier than if you developed from scratch, we were able to add tablets.

16:10.960 --> 16:18.560
We think about working on the desktop mode, so when you plug your smartphone to a screen,

16:20.080 --> 16:24.000
and we would like because it has been asked a lot by the community, being able to add widgets

16:24.000 --> 16:30.800
on the screen, and so agreed. The main problem here is that we broke some features in

16:30.800 --> 16:37.120
launcher 3 in order to make our own behavior with the organized application at top left,

16:37.680 --> 16:42.000
and we know that it will be a bit challenging to add again, with Jets on this agreed.

16:51.440 --> 16:57.200
To give you an idea, so in terms of work, it has been two developers working on this topic.

16:58.560 --> 17:02.400
During one or five years, more or less, so they were not full-time on it,

17:02.480 --> 17:08.320
they were working also on other projects, to give you also an idea of the time it takes to build

17:08.320 --> 17:16.000
something on top of launcher 3. If you want to modify it as easily as us, indeed if you

17:16.000 --> 17:25.520
keep the main AOSP features of launcher 3, it will be less complex. I will say that the development

17:25.520 --> 17:32.240
itself was a third of that, maybe half a year, and then it was iterating to fix all the

17:32.320 --> 17:38.480
bugs, and we add in our development, being able to address all the issues with screen resolution,

17:39.440 --> 17:45.200
that was most of the time, and we manage our source code in GitHub.

17:47.040 --> 17:56.800
So that's almost how we modified launcher 3, and as I told earlier, we confirm that from our perspective,

17:56.880 --> 18:03.920
it's definitely the best way of the easiest way to develop a launcher from scratch,

18:03.920 --> 18:08.640
having done the two experience of from scratch and from launcher 3.

18:10.800 --> 18:16.320
I reach the end of this talk, which will let a bit of place for question, if you have,

18:16.320 --> 18:22.720
but before I spoke about Blistoncher and Blistoncher 3, and you might ask where is Blistoncher 2.

18:23.600 --> 18:29.920
In fact, it was an attempt, it was an attempt to build a second iteration of our first launcher

18:29.920 --> 18:36.080
again from scratch, and it failed. It was a two complex to re-implement or two complex four

18:36.080 --> 18:41.920
team size with mostly one developer dedicated to it. It was two complex and too long to re-implement

18:41.920 --> 18:49.440
again, or what is done in launcher 3. So after some time, we stopped this Blistoncher 2 project,

18:49.520 --> 18:57.040
and with that's where we moved to Blistoncher 3, based on launcher 3, because we tried twice,

18:57.040 --> 19:02.640
and definitely we feel that it's the best approach to move with Blistoncher 3.

19:07.600 --> 19:12.080
I want a bit shorter than the time slot, and we have five minute for question, probably.

19:12.080 --> 19:18.640
Thank you very much for your attention, and you can reach me here. The source code

19:18.720 --> 19:25.280
of Blistoncher 3 is here, and you have the slide with the QR code if you want them. So I

19:25.280 --> 19:32.640
don't believe there are any questions. Yep. I've noticed the visual design is quite different from

19:32.640 --> 19:40.320
the Blistoncher 3. How exactly much or did it take to implement stuff like the war effort?

19:41.280 --> 19:47.040
So the question is, how much was it complex to implement the blur effect?

19:49.520 --> 19:55.360
The blur effect was difficult to implement in both cases. We add difficulty in our first launcher,

19:55.360 --> 20:02.320
and we add difficulty with launcher 3. The R play sees where it was not so much of a problem.

20:02.320 --> 20:10.640
Okay, we'll just switch again here. So typically for the dark, it was not so much a problem.

20:10.640 --> 20:15.680
So at bottom here, but we add difficulty to add, and we didn't add the end,

20:15.680 --> 20:23.360
blur effect in the background of those icons, of those group icons. So that's for our performance

20:23.360 --> 20:33.680
is proposed mostly that we were not able to do it. So we don't see a lot of difference

20:35.920 --> 20:47.520
adding blur effect in both cases. It was difficult in both. Any other questions?

20:48.480 --> 20:57.200
Yep. What do you want to do with the blur chart 3 to detect the blur effect in some test

20:57.200 --> 21:04.240
coming in on the chart? So the question is, if we are doing some tests to compare performances

21:04.240 --> 21:09.280
between launcher 3 and the work we did, note sadly that's a good question, but we didn't.

21:10.240 --> 21:20.480
Then it runs on most of the device we tested. We recently ported on Android 12 on Galaxy S7.

21:23.920 --> 21:27.520
Yes, no, Galaxy S7 is not a good example because it doesn't have lunches 3,

21:27.520 --> 21:34.000
but on Galaxy S8 it has, and we don't notice any major issue.

21:34.960 --> 21:41.440
I'm not sure we will be asked performance to be honest as much as 3, but it keeps being usable

21:41.440 --> 21:48.880
for normal devices and normal usage. I didn't test it, but I know some people in the team

21:48.880 --> 21:57.040
are device with 200 or more application install, and I didn't hear again problems from there.

21:57.040 --> 22:03.440
So indeed, maybe on a very old device with a lot of application, it will fast problem,

22:03.440 --> 22:06.960
will it be worse, or better than with launcher 3? I don't know.

22:27.600 --> 22:46.400
So the question is, if I understand, what do we do? If Google stops supporting launcher 3,

22:46.400 --> 22:51.360
is that correct? That's a question. Well, we will continue probably as before. We'll

22:51.680 --> 22:59.280
work on launcher 3 and keep continuing to move it to the new Android versions. We will not have

22:59.280 --> 23:06.320
the choice, but that is a base. We will bring way more features. That said, I feel there is a

23:06.320 --> 23:13.840
very low chance that Google stops supporting launcher 3, because again, that's a base that's

23:13.920 --> 23:20.480
open source space, which is used widely and especially for some OEM. So I think that don't have

23:20.480 --> 23:27.600
any interest to close sources of launcher 3. It will make the life of anybody including the

23:27.600 --> 23:38.960
partner way other. So cross-finger, but hopefully a lot of luck. I think there is still a room for

23:38.960 --> 23:50.400
one or two questions. Yes, no. No question? Well, thanks a lot, everyone, and thanks a lot for

