Aller au contenu
Tous les transcripts
Podcast / conversationQt Group· 21 mars 2013 50 minAutoproduitDivertissementNumérique

Qt DevDays 2011, HTML5 in QtWebKit: Alexis Menard

Source d'origine 2 locuteurs

Transcription Whisper (large-v3), avec identification des locuteurs. À recouper avec la source d'origine.

Analyse automatique

Générée par IA — peut contenir des erreurs. Méthodologie

Chapitres

Répartition du ton (temps de parole politique)

Propositif 95 %

Questions et réponses

Taux de réponse directe : 86 % (directe = 1, partielle = 0,5, éludée = 0)

  • 38:33OuverteRéponse directe

    Do you have a website which is totally made with HTML5?

  • 40:55OuverteRéponse directe

    The web worker process, is it integrated with C++?

  • 41:34OuverteRéponse directe

    Does QWebKit support geolocation API?

  • 42:50RelanceRéponse partielle

    You mentioned this worker. And that means that threads come to JavaScript, but JavaScript has no mutexes or anything.

  • 44:41OuverteRéponse partielle

    You mentioned about hardware acceleration for CSS effects. What's the hardware acceleration situation for the Canvas 2D context and SVG?

  • 45:34OuverteRéponse directe

    I have the question about the security in the storage feature. How is this works in WebKit?

Affirmations vérifiables (citations exactes)

  • 11:20PrésentateurFait
    « video tags is basically to get rid of Flash. »
  • 11:44PrésentateurFait
    « the problem with Flash is, like, unless latest version, there was no hardware acceleration. »
  • 21:41PrésentateurFait
    « people like me that are working on WebEngine, they hate plugins. »
  • 35:46PrésentateurFait
    « The Qt part of Webkit is not yet in power with, let's say, Google or Apple. »
  • 47:42PrésentateurFait
    « I think at some point, they will finally say... Because there are drafts, right? »
  • 48:44PrésentateurChiffre
    « C++11 was standardized like, I don't know, two months, three months ago, right? »
  • 48:52PrésentateurChiffre
    « It's like took how many years? It's like almost 11 years. »
  • 48:55PrésentateurChiffre
    « The last number was 99, right? Or 2003. »
  • 49:08PrésentateurFait
    « Even if the standard is released, then it will take some years for browsers to be fully compatible with the standard. »
  • 49:26PrésentateurFait
    « Even after the standard, it will take some years for you to be sure that your HTML code is going to render properly on every browser of the market that support HTML5. »
  • 49:40PrésentateurFait
    « they are very, very slow for implementing stuff. »
  • 49:44PrésentateurFait
    « They make huge progress now. »

Temps de parole

  • Présentateur86 %
  • ?11 %

≈ 82,3 interruptions / 10 min (chevauchements et interjections détectés).

Modèle mistral-small-latest · prompt v1 · les citations sont vérifiées mot pour mot dans le transcript ; le taux de réponse directe est calculé à partir des verdicts question par question. Aucun label idéologique n'est produit.

0:04
Locuteur

Hi

0:05
Présentateur

everyone,

0:06
Locuteur

thanks

0:06
Présentateur

for joining today for talking about HTML5 and QtWacket.

0:11
Locuteur

This

0:12
Présentateur

talk is not just about, you know, hacking HTML5. I believe here we are not web developers, right? We don't make websites. I'm not a very advanced, skilled HTML developer.

0:23
Locuteur

I'm

0:24
Présentateur

following the spec and implement it. It's mostly for people that make hybrid applications, right? Like those that want to mix a bit of HTML contents with their C++ application or Qt application. So how you can basically use the new feature of HTML5 in your application. So it's not going to be how to develop an HTML5 website.

0:48
Locuteur

The

0:48
Présentateur

agenda for today is a bit of introduction. What is HTML5 and what is all that noise that we hear about that? What are the new features for user interfaces? Like what the user can see?

1:02
Locuteur

And

1:03
Présentateur

what you can use for helping you, you know, making the stuff under the hood, basically. What the user doesn't see. The user doesn't see. And the conclusion. About me, so my name is Alexis Menard. Yes, I'm French. You probably noticed my accent. I'm sorry. I'm the Qt WebKit team lead in INDT. So INDT is the No Care Research Institute

1:28
Locuteur

in

1:29
Présentateur

Brazil. There I'm taking care of like eight people that work on WebKit. Oops.

1:39
Locuteur

I

1:39
Présentateur

used to be a troll, exoslo troll. I used to work for Qt development frameworks. So I worked three years on Qt, QML, QGraphics. Last year I was doing a talk about QGraphics in depth.

1:52
Locuteur

You

1:52
Présentateur

guys, some of them, some of you guys received an N9. I work on the N9 browser. I made the video support for HTML5 on it. So if you like it, you can, you know who made it. Half of it was made by me and another was by a colleague. I'm an open source advocate. I contribute to many open source projects, of course, including WebKit.

2:15
Locuteur

And

2:15
Présentateur

I'm now an occasional KDE developer. I used to be much more active than now. Mostly because of my family. And I started as a student project in 2006. And then I worked on Plasma

2:27
Locuteur

mainly.

2:28
Présentateur

Plasma is the user interface for KDE. I refactored it quite a lot.

2:35
Locuteur

And

2:35
Présentateur

then I launched a mobile user interface for it, which now become Plasma Active, which is currently shipping. I've seen some examples on some of the partners there. So it's good.

2:49
Locuteur

So

2:50
Présentateur

working for R&D in Brazil is very cool because I left Norway. and my snow,

2:55
Locuteur

cold

2:55
Présentateur

weather, and darkness. My party friends and the awesome Norwegian food base of sausages.

3:04
Locuteur

For

3:04
Présentateur

Brazil, which is slightly different landscape. Beach, sun, I go to work in short every day.

3:10
Locuteur

And

3:10
Présentateur

I finally joined, was able to join my family. So my wife and my little daughter. And I drink Cay Pyrinnes all day long. So

3:17
Locuteur

it's

3:18
Présentateur

very, very good.

3:21
Locuteur

No,

3:21
Présentateur

seriously speaking, let's back to the subjects. HTML5, so what is that? So I found the codes,

3:27
Locuteur

which

3:28
Présentateur

was the main area that has not been adequately addressed by HTML is

3:32
Locuteur

VAC

3:34
Présentateur

subject referred

3:34
Locuteur

to

3:36
Présentateur

as web applications. So by web applications, I mean like stuff like Gmail, Google Docs, and all those stuff.

3:45
Locuteur

So

3:45
Présentateur

this specification attempt to rectify this. So helping people that make web apps to

3:51
Locuteur

make

3:53
Présentateur

their life easier, basically. And with this awesome logo that they came up with. HTML5 is a huge update. It's like

4:03
Locuteur

huge.

4:04
Présentateur

It's the successor of HTML4,

4:06
Locuteur

of

4:07
Présentateur

course. HTML4 was standardized in 1997, so it's like a while ago.

4:11
Locuteur

And

4:13
Présentateur

the world had changed since then.

4:14
Locuteur

So

4:15
Présentateur

they basically cleaned up a lot of stuff based on common usage of what they noticed on websites and how web developers were dealing with HTML. For example, the HTML language itself didn't have a grammar. So it's like,

4:32
Locuteur

for

4:34
Présentateur

instance web, if you,

4:35
Locuteur

for

4:35
Présentateur

instance, open a, I don't know, a tag, like, I don't know, a table tag, and then you don't close it,

4:39
Locuteur

it's

4:40
Présentateur

a mistake, right?

4:41
Locuteur

It's

4:42
Présentateur

bad HTML code.

4:44
Locuteur

But

4:44
Présentateur

there was no specification that was saying, okay, what should you do? Close it automatically or, you know, write an error or try to do some magic. So if you take your faulty HTML code and you run down in different browsers, then you will have different results. Because there were no norm for it. There was no grammar. There was no error handling specified by HTML4. So finally,

5:07
Locuteur

they

5:07
Présentateur

came up with

5:08
Locuteur

a

5:09
Présentateur

norm. So you, a standard. So you can say, oh, if I don't close this tag, then I can do this. Then, so finally, browser can implement the same way of handling errors while parsing HTML documents.

5:20
Locuteur

Which, in

5:22
Présentateur

the future, it will help having your HTML render the same

5:27
Locuteur

cross

5:28
Présentateur

-border. Cross, you know, Internet Explorer, Google Chrome, Firefox, and so on.

5:33
Locuteur

On

5:34
Présentateur

the sign-out, in WebKit projects,

5:36
Locuteur

it

5:36
Présentateur

meant that we entirely rewrote the parcel for HTML because of this. So,

5:42
Locuteur

at

5:42
Présentateur

some point, WebKit switched to an entire new parcel just for, like, following the,

5:47
Locuteur

the

5:48
Présentateur

spec and the new norm of HTML5. Which is good, right? So we hope that other browser vendors will do the same. Normally, Internet Explorer, Opera, and so on.

5:58
Locuteur

I

5:58
Présentateur

believe they do. I'm not checking everything, but I believe they do.

6:03
Locuteur

It

6:03
Présentateur

also extends existing elements. For example, you know, input tags. You can have, like, type input type button and stuff like that. And there are new ones. Like, for instance, input type email. So it will handle for you, you know,

6:14
Locuteur

an

6:14
Présentateur

input type, like, a field where you have to type an email address. So it will check for you if there is, like, an at, if it's a correctly formatted address and so on.

6:23
Locuteur

It's

6:23
Présentateur

basic testing, right? Of course, it's not gonna check if the server exists and so on. But at least, you know, it avoids, like, lots of, a lot of GS code that you find in every single website that check this.

6:34
Locuteur

So

6:34
Présentateur

finally, websites can start moving to this rather than having their own GS code that actually does the same.

6:41
Locuteur

And

6:41
Présentateur

it also, for instance, input type color. So you finally have a color picker.

6:47
Locuteur

Stuff

6:47
Présentateur

that help the web developer and people that make HTML code a lot. And add new elements. For instance, you know, video tags and summary or detail tags, which

6:58
Locuteur

I

6:59
Présentateur

will not go into detail why. But it's, like, it's new features, basically. New tags, sorry. And you have new features, like, for instance, drag and drop. You can, for instance, drag from your desktop to a web browser. And you can finally get drop events. And then you can finally handle drag and drop properly. So you can drag, drop from one side to the other. And, like, from the desktop to your browser. And then the browser from the desktop.

7:22
Locuteur

Which

7:22
Présentateur

is good. So you can finally upload files without going through the file dialog and then show stuff and so on. So, of course, not that much website yet implement those. But, like, when the standard will be, when HTML5 will be standardized, which is not the case yet.

7:37
Locuteur

Then the

7:38
Présentateur

years that will follow, then browser will be compatible with the standard. Which means that you can finally rely on it. And

7:44
Locuteur

move

7:46
Présentateur

away your old code, basically. You've also, like, offline storage database. Like, you can finally have websites that store something on your computer. So the next time you open them, then it's,

7:58
Locuteur

they

7:59
Présentateur

can react to a previous, like, previous time you were there. Something much more advanced than cookies.

8:07
Locuteur

So,

8:07
Présentateur

many features. I will not go to all of them.

8:10
Locuteur

Just

8:10
Présentateur

for the record, CSS3 is not part of HTML5, right? So, like, HTML is just about HTML. CSS is about

8:17
Locuteur

style

8:18
Présentateur

-shed, right?

8:19
Locuteur

Though

8:19
Présentateur

I will talk about it in this presentation because I think it comes with it. Like,

8:23
Locuteur

it's

8:24
Présentateur

not part of the standard. It will not be part of the standard. But I think it's, like, both come together. You have to use it together to,

8:31
Locuteur

I'd

8:32
Présentateur

say, use this, like, so-called Web 2.0.

8:38
Locuteur

So,

8:39
Présentateur

how do you find a web application today? For instance, Roku video player. Spotify is one of them. You know, it's, like, it's an hybrid app that's, like, half the content is online. And then you get your clients on your computer. And then it uses your computer to actually play music. But get the content from online. Stream it from online. So those are

8:57
Locuteur

web

8:59
Présentateur

apps, basically.

9:00
Locuteur

Because half

9:01
Présentateur

they'll use interface HTML.

9:03
Locuteur

But

9:03
Présentateur

they also have application because they use stuff on your computer.

9:08
Locuteur

The

9:08
Présentateur

OV store on the N8

9:10
Locuteur

is

9:12
Présentateur

one of them, too. It's using HTML5 for the user interface. And Netflix. Some of the clients of Netflix, like, I think, on the PS3 is using it. And,

9:25
Locuteur

of

9:25
Présentateur

course, not the one on Windows because it's using Silverlight. But

9:28
Locuteur

some

9:29
Présentateur

of the clients actually use this.

9:33
Locuteur

So

9:33
Présentateur

what are the success stories of those kind of

9:36
Locuteur

web

9:37
Présentateur

apps? It's, like, they have creative user interfaces, right? It's, like, they're usually very appealing. Like, they're nice to look at. Like, Spotify is great.

9:46
Locuteur

And

9:47
Présentateur

they have a very, very great experience when they're connected to the web. Like, Spotify is just about this, right? Like, you have a lot of playlists. You can share playlists. People can vote. You can start. It's, like, when you're connected, those apps are very added values comparing to, I'd say, a dedicated music player, right? Which just have local content.

10:09
Locuteur

And they

10:10
Présentateur

receive updates, right? Since you're connected, they can change the user interface by just, you know, changing the file they're using online, right? So that the user interface may change from a day to another one. And it doesn't require any user interaction, right? Because they just deploy new HTML5 on the server. And then they just render it on the local app.

10:31
Locuteur

And

10:31
Présentateur

you get a new UI

10:32
Locuteur

for

10:33
Présentateur

free.

10:35
Locuteur

And

10:35
Présentateur

they are not just web pages.

10:37
Locuteur

They

10:37
Présentateur

are integrated with the platform, you know? It's, like, they store stuff on your hard drive, you know? It's, like, they use, they integrate with the platform, like, copy-pasting and stuff like that, right? So it's, like, they have added values comparing to

10:49
Locuteur

a

10:50
Présentateur

regular web page.

10:53
Locuteur

So, of

10:54
Présentateur

course, this target's, like, you know, hybrid app for you guys because

10:57
Locuteur

I'm

10:58
Présentateur

not talking about, you know, Google Docs or stuff like that.

11:04
Locuteur

So,

11:04
Présentateur

what are the new features for user interfaces? And HTML5 finally comes with audio and video tags. And audio and video tags for

11:13
Locuteur

playing

11:15
Présentateur

audio files and playing video files. It's very obvious. So,

11:20
Locuteur

video

11:21
Présentateur

tags is basically to get rid of Flash. Let's put it like this. Get rid of Flash for video playback. I mean, the number one use case of Flash after games is,

11:30
Locuteur

I'm

11:31
Présentateur

not sure, actually, probably the first use case of Flash is video playback and then games.

11:36
Locuteur

And the

11:37
Présentateur

problem with Flash is, like, unless

11:39
Locuteur

latest

11:40
Présentateur

version,

11:41
Locuteur

there

11:42
Présentateur

was no hardware acceleration. And even today, there is no hardware acceleration on Linux, if I recall correctly. So, it's, like, it's really bad for playing HD videos. Finally, if you have a video tag that is built in on the web browser, then the browser can actually, the web engine can integrate with the platform and then have support for video acceleration, which is very, very good. Unfortunately, there is an active debate on which codec the video tag should support, whether it's WebM or H.264. Hopefully, they will solve it because this is a mess.

12:16
Locuteur

And,

12:17
Présentateur

but still, it is there at work. And, by the way, all the features I'm going to talk about today is the one that works in QwebKit. So, these features you can use today. And my presentation is made in HTML5. So, for instance, you see it's dynamic. If you want it in silver, you get it in silver. If you want it in blue, you get it in blue. So, you can pick it in blue. And I can, right away, demo the video part by just clicking on it. And then I got the video

12:41
Locuteur

playing.

12:48
Présentateur

So,

12:48
Locuteur

and

12:49
Présentateur

this is the hardware accelerated, which is very good.

12:55
Locuteur

And,

12:56
Présentateur

by the way, also the presentation runs on the WebKit 2 base browser made with QML and Qt5. So, I eat my own dog food.

13:05
Locuteur

While

13:06
Présentateur

making this presentation, I also fixed many times Qt5 and WebKit, which was very great. So, yeah, you can show videos finally, which is great. You can hide them. And while you hide them,

13:16
Locuteur

it's

13:17
Présentateur

not like a plug-in, right? We know that the video is hidden. So, we don't have to do some magic with the plug-in. We can just, you know, stop rendering it. While it's still playing, we just don't draw anything on the screen because we know that the video is hidden.

13:30
Locuteur

And the

13:31
Présentateur

plug-in is always more complicated

13:33
Locuteur

because

13:34
Présentateur

the plug-in, so either run on separate windows. So,

13:37
Locuteur

then

13:38
Présentateur

start to be a mess or it's like windowless, but then it's like playing on top of the video. So, it's like on top of the web page. It's just a huge mess, plug-ins.

13:50
Locuteur

So,

13:50
Présentateur

the video is really nice because it's very well integrated. So, on QtWebKit, they work on all platforms we support.

13:58
Locuteur

Mac,

13:58
Présentateur

they use QuickTime. On Linux, they use the Streamer.

14:02
Locuteur

And

14:02
Présentateur

on Windows, we use QtMultimedia, which happens to use now

14:05
Locuteur

the

14:06
Présentateur

Windows Media Foundation, which is the Windows API. So, that's all for...

14:15
Locuteur

So,

14:16
Présentateur

as I said, I will talk about CSS as well a bit. I just come up with features randomly, right? There's no... I think it's feature interesting. For instance, like you can finally do border radius, like having rounded corner images, which help a lot of people because you don't have to make your own images. And then

14:33
Locuteur

do

14:34
Présentateur

the right, like the rounded right in-game for Photoshop and you can finally have built-in support for it. And then this is like

14:41
Locuteur

end

14:43
Présentateur

up into a proper painting API rather than, you know, having you, having multiple images set on your web server. It's like finally this is ending by Qpainter, for instance. And that works well.

14:55
Locuteur

You

14:55
Présentateur

can also animate with CSS. So, you can make this awesome animation that I made with the clouds. So, just so that you understand a bit, I'm gonna just show you the code. So,

15:05
Locuteur

the

15:05
Présentateur

cloud is just as you can see a CSS

15:07
Locuteur

thing, which

15:09
Présentateur

is load an image.

15:11
Locuteur

And

15:11
Présentateur

then you got the drop, which is like the small RAM thing. And then I have multiple of them. So, as you can see here, like I create my cloud

15:20
Locuteur

and

15:21
Présentateur

I create all my drop, right?

15:26
Locuteur

And

15:27
Présentateur

then

15:27
Locuteur

I

15:29
Présentateur

would say, so that's the animation with just fold. So, it's like moving, right? Then I set the duration.

15:37
Locuteur

Then

15:37
Présentateur

I set the is in curve. So, timing function, they call it. Linear.

15:43
Locuteur

And

15:43
Présentateur

then how many times I want to run the animation, I say infinite.

15:46
Locuteur

So,

15:47
Présentateur

and the cool part is, if I come back here, is that you can specify key frame. And it would say, okay, at 0%, my drops

15:54
Locuteur

will

15:55
Présentateur

be

15:56
Locuteur

at

15:57
Présentateur

opacity 1. So, you see them, right? And then the transform would be, so translation would be 0. So, the original position, which is just under the cloud.

16:05
Locuteur

And

16:06
Présentateur

then at 80% of the animation, I would say opacity is still 1. But I move them around. And then WebKit will interpret for me all the position in between. So, you don't need to care about it. And then at 100%, I would say opacity is 0. So, from 80% to 100%, you will animate the opacity from 1 to 0, right? So, you have this fade out effects, kind of, right?

16:28
Locuteur

And

16:28
Présentateur

then also the translation. CSS, animation CSS,

16:32
Locuteur

very

16:33
Présentateur

good

16:33
Locuteur

comparing

16:35
Présentateur

to JavaScript. Before, everything was JavaScript. You know, you make a timer and then you start moving stuff around.

16:42
Locuteur

That

16:42
Présentateur

was the only solution you had.

16:44
Locuteur

The

16:45
Présentateur

advantage of CSS

16:46
Locuteur

is

16:47
Présentateur

that it's easy to use. You see, like, the key frame, very easy to use. You understand it very well.

16:55
Locuteur

There

16:56
Présentateur

are useful timing functions. Like, you can specify in what time and how many times you want to run it and so on. So, it's very, very easy. And

17:03
Locuteur

one

17:05
Présentateur

of the major advantages of CSS animation is better performance. Why? Because

17:10
Locuteur

on

17:11
Présentateur

WebKit,

17:11
Locuteur

the

17:12
Présentateur

CSS animation run on separate layer than the page you render.

17:15
Locuteur

And

17:16
Présentateur

this particular layer is hardware accelerated.

17:19
Locuteur

So,

17:20
Présentateur

we use OpenGL for animating them. Which means that animation gets fast.

17:26
Locuteur

And

17:26
Présentateur

in most cases, there's 80% of the use case you had before where you just move stuff around. Like, typical drop down menu that you have and stuff like that.

17:36
Locuteur

So,

17:37
Présentateur

I recommend to use CSS animation over JavaScript glue code

17:40
Locuteur

or JavaScript,

17:42
Présentateur

you know, hacking code you had before. Which I had also. Because they are just hardware accelerated which is so much better.

17:52
Locuteur

There

17:53
Présentateur

is this new canvas element. So,

17:55
Locuteur

it's

17:57
Présentateur

easy. Let's put it in one world. It's just like a Kupinter.

18:00
Locuteur

But

18:00
Présentateur

on the web. Probably have less feature or more feature. But like, it's just like Kupinter. It's an imperative 2D API. So, same. It's an interactive HTML file presentation. So, we can just do it. So,

18:14
Locuteur

you

18:16
Présentateur

get from the document, you get the elements.

18:20
Locuteur

So,

18:21
Présentateur

canvas example smile. So, if I go back to my source code, you'll see that here.

18:28
Locuteur

I

18:28
Présentateur

got a canvas, right? Canvas element. Perhaps I should increase a bit the... Yeah. So, I got canvas which has an ID canvas example smile.

18:40
Locuteur

So,

18:40
Présentateur

I get it in my variable. Of course, the canvas elements, the API is only JavaScript, right? You just do comments on JavaScript.

18:49
Locuteur

So,

18:49
Présentateur

you can get then a context from the canvas. So, there is the 2D context and there is the 3D context. I'm not talking about the 3D context yet. So, let's stick with the 2D one.

18:58
Locuteur

And

18:59
Présentateur

then when you get the context, it's just like if you get a Kupinter. You can just do

19:02
Locuteur

context

19:04
Présentateur

.bugging path. Then it will start putting a path. Then you can say context

19:10
Locuteur

.line

19:12
Présentateur

.width

19:13
Locuteur

equals 4. And

19:19
Présentateur

then you can start doing everything you want. So, I just did a small example. I'm a bit lazy to type everything. So, I just

19:25
Locuteur

copy

19:26
Présentateur

paste it. But you'll see it's very easy.

19:31
Locuteur

So, I

19:32
Présentateur

just draw an arc and then I move my painter around. So, I just drew multiple arcs. And then at the end, I stroke everything

19:41
Locuteur

on

19:41
Présentateur

the screen. And if I evaluate this code,

19:44
Locuteur

then

19:44
Présentateur

it makes a really nice smiley.

19:48
Locuteur

So,

19:48
Présentateur

yeah, that's just this. So,

19:50
Locuteur

you

19:50
Présentateur

get the power of doing custom drawing.

19:54
Locuteur

Which

19:54
Présentateur

is very, very good. I think it's a very nice improvement to

19:57
Locuteur

the

19:57
Présentateur

HTML in general. Because you can finally do painting easily.

20:02
Locuteur

Why

20:02
Présentateur

you would use that? Shart is a very good use case of it. It's insanely easy to draw like bars with this. It's like you just have your old data that are processed. Then you get it in JavaScript. Then you can easily draw a graph.

20:20
Locuteur

Like

20:20
Présentateur

sharts, you know, of 80%, 90% and so on.

20:23
Locuteur

You

20:23
Présentateur

can draw lines easily. It's like

20:25
Locuteur

I'm

20:27
Présentateur

pretty sure that it already exists. Sharts library based on Canvas.

20:34
Locuteur

So, if

20:35
Présentateur

it's not, it will. It's probably people will come up with. So,

20:39
Locuteur

it's

20:39
Présentateur

like this was really hard to do before. Because it's like

20:42
Locuteur

that

20:45
Présentateur

for me, it's a huge improvement. You can also write simple 2D games. You know, like Pac-Man stuff. It's like very easy to write with this.

20:53
Locuteur

And

20:54
Présentateur

you can also use this for certain types of animation.

20:56
Locuteur

You

20:56
Présentateur

know,

20:57
Locuteur

you

20:57
Présentateur

can, you know, draw, clear, draw and so on. So, it's like, it's just like using Kupinter, right? So, you can also use somehow Kupinter for doing animation, right? So, it's good for that.

21:11
Locuteur

You've

21:11
Présentateur

got also WebGL.

21:15
Locuteur

It

21:15
Présentateur

extends JavaScript. Same to allow 3D contents.

21:20
Locuteur

It's

21:20
Présentateur

also context on the Canvas elements.

21:23
Locuteur

You

21:23
Présentateur

know, so instead of getting the context 2D, you can get the context 3D. And then,

21:26
Locuteur

boom,

21:27
Présentateur

you have

21:28
Locuteur

OpenGL

21:29
Présentateur

access. You can just draw GL codes. Like, it's just using the OpenGL ES APIs, the 2O, and you can draw anything you want. So, no need for a plugin, which is very great. I mean, people like me that are working on WebEngine, they hate plugins. So, the less plugins we use, the better it is for us. So,

21:51
Locuteur

then

21:51
Présentateur

you have, like, co-access. You can do everything you want. So, all the fancy demos you see on the internet about HTML5 is, like, most probably using WebGL. Unfortunately, I'm running a WebKit 2 based browser. We don't have yet WebGL working there. So, I cannot make it anymore.

22:11
Locuteur

But

22:12
Présentateur

I have Google Chrome.

22:12
Locuteur

I

22:12
Présentateur

could show it. But that's fine. You can find demos online. Anyway.

22:19
Locuteur

What

22:19
Présentateur

about handle the hood improvements?

22:24
Locuteur

So, you

22:25
Présentateur

get, JavaScript got, like, a lot of smarter selectors.

22:28
Locuteur

You

22:28
Présentateur

know, you are used to get element by ID, which is a bit, like, limited.

22:33
Locuteur

Now,

22:33
Présentateur

you can, for instance, like, get elements by class name. You can say, okay, I'd like to all div, or I'd like all tables, or, I don't know, all h1.

22:42
Locuteur

You can, you

22:43
Présentateur

can also query selectors, you know, like, CSS selector. You can query selector all, and it makes life so much more easier. For instance, the example is, like, oh, I'd like all the

22:52
Locuteur

selector

22:54
Présentateur

h1, which is, like, a type, CSS type, slide. So, it's like, then you get a list of it, and then you can do stuff with it.

23:01
Locuteur

So,

23:02
Présentateur

I use it for,

23:03
Locuteur

in

23:04
Présentateur

that particular use case, I use it for moving my slide around. So, I could get all, and then I can move them around. Oops, later on doing issue. Web workers, so what is this? It's like, you know, in JavaScript, this main problem is, like, if you have, like, heavy JavaScript code, you know, something that computes a lot,

23:28
Locuteur

then,

23:28
Présentateur

you know, it may slow down the web browser.

23:32
Locuteur

So,

23:32
Présentateur

now, you get this web worker. It's basically a way for you to offload scripts

23:37
Locuteur

processing

23:39
Présentateur

in a separate thread. So,

23:42
Locuteur

for

23:42
Présentateur

instance, in this example, so I create a script, you know, and I create a worker, and I specify which JavaScript file it will use.

23:50
Locuteur

And

23:51
Présentateur

then, this will be the JavaScript file that will be executed. And then, on the work, and then, the worker will start.

23:58
Locuteur

And

23:58
Présentateur

if you look on the worker.js file, then I just try to find prime numbers, right? So, I just go around,

24:05
Locuteur

and

24:07
Présentateur

then,

24:07
Locuteur

as

24:08
Présentateur

soon as I get one, I post a message. And this, then my main script will get it on this worker-on-message handling, you know, like worker-on-message means that you will receive the message from the worker,

24:20
Locuteur

and

24:21
Présentateur

then you can do anything you want.

24:22
Locuteur

You

24:23
Présentateur

get the events, and then you can get the data what you sent. So, I send the prime number.

24:29
Locuteur

So,

24:29
Présentateur

that's really nice. You can finally offload stuff. Webkit's taking care of you creating the thread. Webkit's taking care of the messaging between the two.

24:38
Locuteur

You

24:38
Présentateur

just use it like this.

24:40
Locuteur

Post

24:40
Présentateur

and on-message. So, one you post, and the other you get a callback, basically.

24:46
Locuteur

So,

24:47
Présentateur

I also encourage you to use that. If you want to offload a bit, so you keep the UI responsive. Local storage. Let you save data on disk. This is also very nice. So, you can finally have websites that are a bit

25:01
Locuteur

less

25:02
Présentateur

stupid. They'll remember what you did last time. Or, web applications that are less stupid. So, it's very, this one is very easy to use. It's like,

25:13
Locuteur

it's

25:14
Présentateur

a key value-based API. You store a key,

25:18
Locuteur

you

25:18
Présentateur

store a value for a key, and then you can get it.

25:23
Locuteur

So, and

25:23
Présentateur

the data is stored on the hard drive of the user. So, next time you visit the page, you can query it, and then you can see if there was something stored before. So, I have a small example. So, for instance, on my presentation, I have a button that will save the current slide I'm looking at. So, I just save it.

25:42
Locuteur

And

25:42
Présentateur

then if I reload the page, of course, I'm going back to the beginning of my web page.

25:47
Locuteur

And

25:47
Présentateur

then I implemented, like, if I press the R key, then it will actually look for the local storage and see which slide I store.

25:54
Locuteur

And

25:54
Présentateur

it will just restore it. Last time I've seen. So, that's cool too. Makes nice values for people that reopen the

26:02
Locuteur

app,

26:04
Présentateur

basically. Of course, you can do that easily in C++, right?

26:07
Locuteur

That

26:07
Présentateur

if you have a hybrid app, you can just make a co-object that stores this into key settings, and then you're done.

26:13
Locuteur

But, how

26:14
Présentateur

many C++ line of code you need to do this versus two lines? So, it's like, you can use those, right? That's what my talk is about. Like, showing you new feature that you can use in your hybrid app, so that you can save C++ code for it.

26:29
Locuteur

This

26:29
Présentateur

is one example.

26:34
Locuteur

There's

26:35
Présentateur

also application cache. So, the way it works is like,

26:41
Locuteur

it's

26:42
Présentateur

not a cache where you put stuff, it's like caching resources.

26:46
Locuteur

So, on

26:47
Présentateur

the HTML tag, you specify a manifest, and the manifest is like,

26:51
Locuteur

you

26:51
Présentateur

describe what you want to cache on the hard drive.

26:53
Locuteur

But,

26:54
Présentateur

I'm talking about resources. Like,

26:57
Locuteur

I

26:57
Présentateur

have this huge PNG image that I load on my website, and, well, I want to store it on the hard drive, because the next time the guy is visiting the web, or launching the app, or visiting the website, I just don't want it to download it again.

27:11
Locuteur

So,

27:12
Présentateur

you can finally, in the manifest, say, on the cache part, you can finally say, okay, well, please save my image.png on the hard drive, and use it next time you visit the website.

27:22
Locuteur

It's

27:22
Présentateur

like

27:22
Locuteur

cache,

27:24
Présentateur

web browser always cache data for you, right? Like, they were trying to be smart.

27:30
Locuteur

But,

27:30
Présentateur

this is a way for you, web developer, or hybrid app developer, to specify what to cache to the web browser, which is slightly more advanced and better than what the browser were doing before. So, what browser actually do today, they will still do it tomorrow.

27:45
Locuteur

But,

27:46
Présentateur

this is a way for web browser to be aware of it. So, if your CSS file is huge, which I don't recommend, by the way, but if it's huge, then you can just say, okay, cache it.

27:56
Locuteur

Same

27:57
Présentateur

for the JS file, same for PNG file, same for HTML files.

28:02
Locuteur

Then,

28:02
Présentateur

there's another part of this manifest, which is

28:05
Locuteur

network. So,

28:07
Présentateur

you can specify which files

28:09
Locuteur

of

28:10
Présentateur

your application or website needs network access.

28:15
Locuteur

So,

28:16
Présentateur

that if the user goes to it, you can finally have a good handling of,

28:22
Locuteur

I

28:23
Présentateur

don't have internet connection.

28:25
Locuteur

So,

28:26
Présentateur

and then you get this fallback part, where you will say, okay, if any

28:29
Locuteur

network

28:31
Présentateur

file is being accessed, then I will fall back to another one.

28:36
Locuteur

So,

28:36
Présentateur

you can finally gracefully handle cases where

28:40
Locuteur

there

28:41
Présentateur

is no network access.

28:44
Locuteur

Instead

28:44
Présentateur

of having, like, can't connect to network, and then ugly page from the web browser,

28:50
Locuteur

right?

28:50
Présentateur

You can finally, on your web app, you can say, okay, well, there is no network, but I'm running locally. So,

28:56
Locuteur

it's

28:56
Présentateur

like, okay, I can finally fallback to, you know, offline.html that may be a bit

29:00
Locuteur

nicer,

29:02
Présentateur

or

29:02
Locuteur

just

29:03
Présentateur

have the features, but limited to local access, basically. So, I just made a small

29:09
Locuteur

table

29:10
Présentateur

to recap. So, if you're offline, everything that is described on the cache manifest will use the cache, right? So,

29:20
Locuteur

it

29:20
Présentateur

will load from the disk and use it. If you're online, it will check if it's an updated version for you, and then if it's not, then it will update, right? If it is.

29:30
Locuteur

Network, if

29:31
Présentateur

you're offline, all the files that are described under the network part, they will not be used. So,

29:37
Locuteur

they

29:38
Présentateur

will just fallback to the fallback part.

29:40
Locuteur

But

29:41
Présentateur

if you're online, of course, you will just use, always use the remote file.

29:45
Locuteur

That's

29:45
Présentateur

also a way for you to enforce using a file on the server that you want to be sure that they use

29:52
Locuteur

that

29:53
Présentateur

one, the last version and not something that is on the cache. A CGI script or something like that is most probably the

30:01
Locuteur

one

30:01
Présentateur

you put there.

30:04
Locuteur

And

30:04
Présentateur

the fallback, if you're offline, it will use the fallback. Of course, my example before was very simple, right? I say fallback star offline means that any network file that has been accessed will go to offline. But you can be, you can refine. For every file, you can say, okay, fallback to that one, fallback to that one, fallback to that one. And so, if you're offline, then fallback will use the fallback. And if you're online, of course, you will use the remote. So, same as the network, right? How you enable data storage with QWebKit? You can, in QWeb settings, you can set the local storage path. So, this is what the small demo I did with the current slide that I saved.

30:45
Locuteur

You

30:45
Présentateur

can override the path

30:46
Locuteur

by

30:47
Présentateur

specifying where you want to store those data.

30:50
Locuteur

And

30:51
Présentateur

otherwise, by default, you save it to the QDesktopServices data location, which is

30:58
Locuteur

in

30:59
Présentateur

Linux.cache, .local.cache, whatever.

31:04
Locuteur

And

31:05
Présentateur

you can also set the offline web application cache path, which was what I was explaining before.

31:11
Locuteur

This

31:11
Présentateur

is where it's going to store the PNG file, where it's going to store the CSS that I want to cache.

31:19
Locuteur

There

31:20
Présentateur

are many attributes. I didn't talk about the local storage database enabled, but I just

31:24
Locuteur

mentioned

31:25
Présentateur

it briefly because it's...

31:27
Locuteur

If

31:28
Présentateur

I talk about everything, I won't have time.

31:30
Locuteur

So,

31:30
Présentateur

anyway, this is basically a led you access to a database kind of thing. Just not like the local storage where it's just like key value.

31:38
Locuteur

This

31:38
Présentateur

is like, so you get full power of the database, you know, select, insert, update, all those SQL languages, basically.

31:46
Locuteur

That

31:46
Présentateur

works also in QWebKit today.

31:48
Locuteur

And

31:48
Présentateur

if you want to enable everything, in one shot, there is a shortcut, enable, persistent storage, boom, you're good to go. Everything is enabled. So, everything will work. If you have HTML code that you're using it, then it will just work. If you don't enable it, then it will just do anything.

32:03
Locuteur

It

32:03
Présentateur

will still load, it will still parse, it will still execute, but will not do anything.

32:11
Locuteur

So, one

32:12
Présentateur

of the strengths of QWebKit is integration with C++, right?

32:18
Locuteur

So,

32:19
Présentateur

all I was talking about, it's just a tiny bit of HTML file, right?

32:22
Locuteur

You

32:23
Présentateur

can easily integrate with your existing app.

32:25
Locuteur

So,

32:26
Présentateur

if you see benefits of using HTML5, then you can easily integrate it with your existing app. So, I just remember that on the web frame, you can add a C++ object

32:40
Locuteur

so

32:41
Présentateur

that you can expose your

32:42
Locuteur

C++

32:44
Présentateur

API to your web world. So, you can mix both, right?

32:49
Locuteur

You

32:49
Présentateur

can mix HTML5 and your existing

32:52
Locuteur

logic that

32:55
Présentateur

you have in C++. So, for example, here,

32:56
Locuteur

I

32:57
Présentateur

create my object. And then, you know, I just have a slot. And then on the main frame, I can add it to JavaScript window object, my object. And then I instantiate it, like this part, right?

33:07
Locuteur

And

33:08
Présentateur

then in JavaScript code, in my web world, I can just use it like this. My object, it's a global object in the JavaScript global object. And then I was just like,

33:16
Locuteur

call

33:17
Présentateur

it.

33:17
Locuteur

So,

33:18
Présentateur

that's a very good feature of code. You can mix both worlds.

33:22
Locuteur

So,

33:23
Présentateur

I hope this will help you to understand how you can use HTML5 as well as what you already have

33:29
Locuteur

in

33:30
Présentateur

code, like based on code, right?

33:34
Locuteur

HTML5 will

33:35
Présentateur

help you to write part of your UI if you want to. That's what I meant.

33:39
Locuteur

And

33:39
Présentateur

you can still interface with all you already have.

33:41
Locuteur

So,

33:41
Présentateur

it's just like, no, don't think about HTML5 and HTML, like something that just run on the web browser. It can totally run on a separate, like on your app, basically.

33:52
Locuteur

You

33:52
Présentateur

can also, from C++, evaluate JavaScript. It will just execute, you specify the JavaScript in, as a parameter of evaluate JavaScript. And then it will just run the JavaScript in the web world for you. So, it's also a way from your C++ world to command the HTML world.

34:10
Locuteur

And

34:10
Présentateur

then if the function has a written value, then you get it as a client.

34:16
Locuteur

You

34:16
Présentateur

can also add complete widgets to pages with QW plugin factories. So, you can have your QWidget that show up in the page too.

34:23
Locuteur

But

34:23
Présentateur

I said,

34:24
Locuteur

we

34:24
Présentateur

don't like plugins. So,

34:26
Locuteur

it

34:27
Présentateur

works, but I don't recommend to use it.

34:30
Locuteur

But

34:30
Présentateur

if it's, for instance, you see that, for instance, in HTML, you cannot...

34:34
Locuteur

You're

34:35
Présentateur

not very happy with table.

34:37
Locuteur

You

34:37
Présentateur

know, it's like to make tables. And then you want to use QtReview.

34:41
Locuteur

You

34:41
Présentateur

can just do it with this.

34:45
Locuteur

So, you

34:45
Présentateur

can still make your UI in HTML. And then if you feel that it's not going to fulfill everything you need, you can still sneak in stuff from QtReview. So, that's good too.

34:58
Locuteur

So, I

35:00
Présentateur

like when people ask questions. So, I reserve a lot of time for questions.

35:06
Locuteur

So,

35:06
Présentateur

that's it. If you want to get started, there is html5works.com. So, it has a lot of examples on how to use it. HTML5 is huge. It's still not finished. It has, like, millions of features. And it

35:17
Locuteur

will

35:19
Présentateur

take me a day to explain everything. On the wiki page of QtWebkit, I forgot to put the link, but I should... You can find it on Google. So, it's like on the wiki page of QtWebkit, on webkit.org, you can find what feature of HTML5 we support, and what is the status. If it's beta, if it's experimental, if

35:41
Locuteur

it's

35:42
Présentateur

not implemented at all.

35:44
Locuteur

Google. So, we

35:45
Présentateur

are not yet... The Qt part of Webkit is not yet in power with, let's say, Google or Apple. So, they support more features than we do. Like, for instance, Google is, like, way better for everything that is like WebGL than, let's say, Apple or Qt, for instance. But we're good. We are working hard. So, it's gonna come. If it's missing, it's gonna come.

36:10
Locuteur

So... And

36:11
Présentateur

even if you heard about Webkit 2, I did a talk just before about Webkit 2, you know, it's like QtWebkit, the layer of QtWebkit 1, it's not gonna receive any improvement in Qt5. But everything that happens on the core,

36:23
Locuteur

on

36:24
Présentateur

WebCore, like on the core of the engine, you'll get it anyway. So, any new HTML5 feature that doesn't require a layer API in QtWebkit, which is

36:32
Locuteur

80

36:33
Présentateur

% of them, then you'll get it for free. So, don't worry. QtWebkit 1 will, in any cases, get updates somehow. So, and the Webkit 1, we don't remove the code. It's there as well. So, don't worry. Otherwise, there is also this cool website, CanvasDemo, that shows how you can do cool stuff with Canvas.

36:56
Locuteur

And

36:56
Présentateur

also, of course, W3 specifications are pretty, pretty good. It's like really nice to read.

37:02
Locuteur

That's

37:03
Présentateur

how we base our work, basically, to implement them. So, HTML5 is like full of great stuff. It powers application of today. Already today, many websites use HTML5. Even if the standard is not yet finished, because this web browser uses it. And it will for sure power the web of tomorrow. Like, it's a for sure. It's like

37:28
Locuteur

web

37:29
Présentateur

apps, like Google even made an entire operating system on top of that. Like, Google Chrome OS, right? Like, it's just a web browser, basically. So, it's like,

37:37
Locuteur

it

37:38
Présentateur

will power the web of tomorrow. So, you

37:40
Locuteur

better

37:40
Présentateur

look at them also.

37:42
Locuteur

When

37:42
Présentateur

you evaluate, there was a talk about whether I should use HTML5, whether I should use HTML5, whether I should use C++.

37:50
Locuteur

I

37:50
Présentateur

think it's up to you, it's like up to your skills. But you should give a try to HTML5. You can achieve pretty cool stuff. Like, I did the presentation, right? It's like, it has fancy animation, you see? Like, fade in, fade out. And I didn't use any already made framework. I just made it by myself. And it was very, very quick. So, then I'm not necessarily a very skilled HTML developer. I'm an implementer. So, I recommend to give a try.

38:18
Locuteur

So,

38:18
Présentateur

I'd like to thank you for being here today.

38:22
Locuteur

And

38:22
Présentateur

if you have any questions, just bring it.

38:25
Locuteur

But

38:25
Présentateur

you have to wait the microphone first.

38:33
Invité

Do you have a website which is totally made with HTML5?

38:40
Présentateur

Yes, there is. Unfortunately, we cannot. I know one for sure, but we can't access it here because it's like Pandora.

38:48
Locuteur

In

38:49
Présentateur

the US, like this radio online player. The entire website is made in HTML5. There are many of them. It's like, I actually have a demo here. Well, let me see.

38:59
Locuteur

I

38:59
Présentateur

will like just activate it on my,

39:02
Locuteur

yeah. Just

39:06
Présentateur

put a very ugly e-frame. That's in my presentation.

39:15
Locuteur

Yeah.

39:16
Présentateur

As you can see, it's like,

39:18
Locuteur

yeah,

39:19
Présentateur

it's like,

39:19
Locuteur

this

39:20
Présentateur

is an online website that is just like using canvas, right? And it's an entire drawing thing.

39:26
Locuteur

You

39:26
Présentateur

can do a lot of things with it. So, like, unfortunately, the toolbar doesn't show up for some reason. But, like, you can specify gradients. You can basically do drawings. And this is an entire HTML5 app,

39:39
Locuteur

right?

39:39
Présentateur

So, you can like have buttons here. You know, you can specify the colors.

39:43
Locuteur

And

39:44
Présentateur

so, this doesn't have any C++ code, right? It's online. So, you can do pretty advanced stuff, right?

39:54
Invité

Okay. Thank you.

39:55
Présentateur

And Gmail,

39:56
Locuteur

Google

39:57
Présentateur

Docs are HTML5 apps. Like, they use a lot of features from HTML5. You just open the source code of them and then you grab for some, you know, keyword from HTML5. You see that they use a lot. Funny enough, I discovered all that. That's, you know, when you are on Gmail and someone talk to you, there's this ding, ding.

40:16
Locuteur

You

40:17
Présentateur

know, it's like this sound. I was expecting them to use audio element for it. Now, in fact, they still have a flash plugin that is size 00 that they hide on the top of the website. So, I was like, no, guys, no.

40:29
Locuteur

So,

40:30
Présentateur

I think they do that for compatibility, but still, no.

40:34
Locuteur

So,

40:35
Présentateur

yeah. There are a lot of examples. Like, you don't have like full features. You have like full features HTML5 websites, but you have many of the existing websites using features that are already implemented.

40:49
Locuteur

So, yes,

40:53
Invité

hello.

40:55
Locuteur

The

40:55
Invité

web worker process, is it integrated with C++?

40:59
Locuteur

Sure.

40:59
Invité

In the web worker, can I call it C++ code?

41:03
Locuteur

Web

41:03
Présentateur

worker?

41:04
Invité

What did you say? Script. Web worker.

41:06
Locuteur

Yes. The worker

41:06
Invité

process, is it integrated with C++? Can I,

41:09
Locuteur

over

41:09
Invité

the web bridge, if I start a web

41:11
Locuteur

worker

41:12
Invité

process, can I call it C++ inside?

41:14
Locuteur

No.

41:15
Présentateur

So, it's built in in WebKit.

41:17
Locuteur

So,

41:17
Présentateur

it's like, where the web, the... It's JavaScript.

41:20
Locuteur

Yeah. It's

41:20
Présentateur

JavaScript only.

41:21
Invité

Thank

41:21
Locuteur

you.

41:22
Présentateur

We followed the spec for this. It's not a good WebKit feature. It's like, it's a spec of HTML5.

41:33
Invité

Hello. Does QWebKit support geolocation API?

41:38
Présentateur

I didn't talk about it, but yes, we do. As I was saying, I cannot explain everything, but it's like, we do support geolocalization.

41:45
Locuteur

The

41:46
Présentateur

N9 is using it. It works. You can use it there. It works.

41:54
Locuteur

On

41:55
Présentateur

phones, you will use the GPS and so on. Like, it will actually use the underlying API, but like, of the operating system.

42:02
Locuteur

On

42:03
Présentateur

desktop, I'm not very, very sure that actually it works on every platform because Windows doesn't have API for it. So, we can't use it. And it depends the platform, basically, because we need a platform that gives us geolocalization information, right? On Mac, you have it. Yes. But on Linux, you have it with GeoClue, right? But on Windows, I don't think there is anything. So, I'm not sure it actually works. Okay. So, that's the problem with some of the features. It's like, it's a bit inconsistent,

42:34
Locuteur

depending

42:35
Présentateur

the platform you're running on. But geolocalization is mostly for mobile phones.

42:39
Locuteur

And

42:39
Présentateur

then, that works.

42:41
Locuteur

Okay.

42:42
Présentateur

Thank you. That works on Symbian. That works on Mego. That works on Mimo.

42:49
Invité

Hi. You mentioned this worker. And that means that threads come to JavaScript, but JavaScript has no mutexes or anything. For instance, is it possible to access the DOM elements from the worker? And then, what would happen if I have two?

43:07
Locuteur

Yeah,

43:07
Présentateur

wait, wait. You're a bit limited of what you can do

43:10
Locuteur

on the

43:10
Présentateur

worker. Okay. It's like, accessing the DOM and so on is not recommended.

43:15
Invité

Not recommended or not possible?

43:17
Présentateur

Actually, I'm not sure it's possible. I have to check myself, actually. But it's like,

43:22
Locuteur

it

43:23
Présentateur

will not crash. That's for sure. That you can modify the DOM from the worker?

43:31
Locuteur

I'll

43:31
Présentateur

be fair. I don't know. I have to check. But it's a good question. But it will not crash for sure. Because the way the messages stuff work is like posting. It's just like Qt, right? It's not direct access.

43:40
Locuteur

So,

43:41
Présentateur

it's like, it's going to pass to some kind of event queue and then process one by one.

43:47
Locuteur

So,

43:48
Invité

like... But there are no such threading techniques like semaphores, mutexes or anything else.

43:53
Présentateur

No, no, you can't. But you don't have that in JavaScript. So, you don't need this. So, it's like, the worst case you could get is like an undefined object, right? Let's say, in a worker, you access something on the DOM. I believe that you can access stuff on the DOM. But the worst case, what you get is like an undefined object, right? We just don't do anything in JavaScript. We just throw an error, but not crash.

44:13
Locuteur

So,

44:14
Présentateur

you can easily check every time you're on the worker if my object that I want to access is undefined. That means it has been deleted by someone.

44:21
Locuteur

Then

44:21
Présentateur

you can undo it properly,

44:23
Locuteur

right? So,

44:24
Présentateur

you don't need mute access. You just rely on JavaScript features, I'd say.

44:29
Locuteur

Okay,

44:30
Invité

thank

44:30
Locuteur

you. But

44:30
Présentateur

I believe you can access it. I don't see why you can't.

44:35
Locuteur

So...

44:36
Présentateur

But perhaps, mistaken,

44:37
Locuteur

but...

44:38
Présentateur

It needs to check.

44:40
Locuteur

Hi.

44:41
Invité

You mentioned about hardware acceleration for CSS effects.

44:45
Locuteur

Yes. What's

44:46
Invité

the hardware acceleration situation for the Canvas 2D context and SVG?

44:50
Présentateur

So...

44:53
Locuteur

So,

44:53
Présentateur

for SVG, I'm not very sure because I don't work on the EVG parts. Though I believe there is someone that works on it there. I remember. And... But so there was... Fortunately, Andreas is not here, but he worked a lot on it. But

45:05
Locuteur

for

45:06
Présentateur

the CSS, it's for sure hardware accelerated. For Canvas

45:10
Locuteur

2D,

45:11
Présentateur

it's not... I don't think it is. We just do...

45:15
Locuteur

We

45:15
Présentateur

just do normal Cupid intercourse. I'm not sure, but... Same.

45:18
Locuteur

I

45:18
Présentateur

need to check. I mean, it's like huge. I don't work on those parts. So it's

45:21
Locuteur

like... Yeah.

45:24
Présentateur

But I can check. It's very easy. Or I can point you to the person that knows.

45:28
Locuteur

Oh,

45:33
Invité

hello. I have the question about the security in the storage feature.

45:38
Locuteur

In

45:38
Invité

the... A question about the security in the storage feature. Yes. In HTML5. How is this works in WebKit? Because, for example, we're loading some evil page, which is trying to read something from the hard disk or store some huge data.

45:54
Présentateur

Well, it's like...

45:55
Locuteur

It

45:55
Présentateur

means that... That means that to get an exploit from that means that the... It means that someone had access to your hard drive and your user accounts and then start writing into your own directory, which already is like... Requires

46:09
Locuteur

very

46:11
Présentateur

huge exploits. Like, you need to be able to write into your home directory of the user. What it does though is like, you get the website and like the file of the website and then store it and reload it. It's not as worse as having... Like,

46:24
Locuteur

if

46:25
Présentateur

you wrote an HTML5 that is faulty with an exploit inside, it's the same... The cache has nothing to do with it. It will just cache it on the hard drive.

46:32
Locuteur

What

46:32
Présentateur

you're talking about is like, if someone modified the cache, right?

46:35
Locuteur

But

46:36
Présentateur

that means that you already have access to the user accounts. That's already a huge security flow on the machines itself, on the IT system. So, then WebKit can't do anything about that. If the user accounts like, let's say, Unix is... On Linux, if you violate it, it's like already too late for WebKit.

46:55
Locuteur

The

46:56
Présentateur

cache just take what is online, put it on the hard drive. If you have... If someone managed to modify the hard drive, then it's like...

47:03
Locuteur

It

47:03
Présentateur

can do way worse than this. So, the real security issue for WebKit is what comes from online.

47:11
Locuteur

If

47:12
Présentateur

the HTML5 is... HTML files is faulty, then... Then... Then that's a problem. That's what WebKit is trying to handle. But saving on the hard drive and someone modifying it, then... No, we can't... We can't have control on this.

47:24
Locuteur

And

47:25
Invité

the second question. Do you have any idea when the HTML5 specification will be finished?

47:31
Locuteur

No.

47:32
Présentateur

I'd say 2016 or something, probably. But I have no idea. It takes a long time. But that's the thing. I think at some point, they will finally say... Because there are drafts, right? And some of the drafts are... You know, markets like advanced or very stable or like all web browsers of the market already implemented it, which means that the spec itself is good.

47:57
Locuteur

I

47:57
Présentateur

think at some point, they'll say, Okay, we take what is already there, plus

48:01
Locuteur

some

48:02
Présentateur

that are on very advanced status, and then they close it. and then the next stuff is going to be for the next version.

48:09
Locuteur

Now,

48:10
Présentateur

when they will do this, no one has control on that. It's like use political discussions. But like... Many of the specs, you need to implement them to find their flows, basically. Like when implement... Like people come up with ideas and spec, write a spec, and then when browsers start... Like browser vendors start to implement it, then we find flows.

48:33
Locuteur

I

48:33
Présentateur

contributed back to the video spec. because there was some problem with it. So it's like... You never know. I mean, just like C++, right? C++11 was standardized like, I don't know, two months, three months ago, right? Or something like this. It's like took how many years? It's like

48:50
Locuteur

almost

48:52
Présentateur

11 years. The last number was 99, right? Or 2003. 2003 is like, come on.

48:59
Locuteur

It's

48:59
Présentateur

the same. We don't know.

49:02
Locuteur

And

49:02
Présentateur

plus after... Even if the standard is released, then

49:06
Locuteur

it

49:08
Présentateur

will take some years for browsers to be fully compatible with the standard.

49:14
Locuteur

So... Well,

49:15
Présentateur

if you do an HTML... Entirely HTML5 website, and you rely on features that will, you know, were so-so, and for... Like, it will take... Even after the standard, it will take some years for you to be sure that your HTML code is going to render properly on every browser of the market that support HTML5.

49:36
Locuteur

that's

49:36
Présentateur

the problem.

49:38
Locuteur

And

49:38
Présentateur

especially in terms of Explorer, you know, they are very, very slow for implementing stuff. Oh, they make progress. Like, they make huge progress now. They're finally opening up their minds, so it's good.

49:49
Locuteur

So,

49:49
Présentateur

yeah. I don't have VTA for that. I wish I could.

49:58
Locuteur

Any

49:58
Présentateur

other questions?

50:06
Locuteur

Thank

50:06
Présentateur

you.