summaryrefslogtreecommitdiff
path: root/developer-weekend/feb-2017.mdwn
blob: bee92d6f4ea529ac536eeda47b6eaba8cfefbb03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
[[!meta title="Developer Weekend (Feb 2017)"]]
[[!meta author="Daniel Silverstone"]]
[[!meta date="2017-02-04 12:00:00"]]

[[!toc]]

Attendees
=========

* John-Mark Bell (Yes, he's not dead) (Still!)
* Michael Drake
* Vincent Sanders
* Daniel Silverstone

Apologies
=========

* Chris Young (Still not quite up to visiting)

Topics
======

GIF Stuff
---------

John-Mark and Vince have had a trawl through the `libnsgif` stuff and
basically decided "OH GODS NO!" and want to replace the lzw stuff.

Content Sharing
---------------

We decided that any content which implicitly or explicitly contains context
(for example HTML, Animated GIFs, audio, video, etc) cannot be shared.

GIFs could start out unshared, and if they determine later that they are not
animated, they could flip to a shared context.  Ditto they could, on
`CONTENT_DONE`, switch from copied data to referencing the whole content stored
in `llcache`.

Auto-Updating Contents
----------------------

Contents which update automagically (e.g. animated gifs) should, when an update
occurs, send a message up to the content's users to notify that a change has
happened. It is then left up to the users to decide what to do about it.

Thus, for animated GIFs, which update off the scheduler, when the scheduled
callback happens, the content handler should update its frame counter, and
send a content changed message. On receipt of the message, the relevant user(s)
should decide what to do (if anything -- if the GIF's not visible, there's no
point decoding the new frame and attempting to display it).

CSS Media Queries
-----------------

John-Mark is getting on with these

Actions:

* Parser implementation 90% complete (other 90% remains to be done)
* No selection implementation as yet (although Michael has defined a
  mechanism for libcss clients to provide media state at selection time)

Plotter API work
----------------

After discussion, Vince is working on updating the plotter API to thread the
plot context through everything, for widgetery (or however you spell that)

Actions:

* define plotter API which passes context to each call **MERGED**
* update all core uses of API to match changes **MERGED**
* update core plotters (knockout and print) to meet new API **MERGED**
* update each frontend plotters to provide API **MERGED**

New layout engine: `libnslayout`
--------------------------------

Michael started looking at the new layout engine again.

* Recalled the state of things when it was last touched.
* Cleaned up what's there.
* The next step for development is to add CSS selection support.  Following
  that we can actually experiment with layout.
* Reviewed the current state of the specs that this library needs to implement.
  * Decided to focus on CSS2.2 first, and worry about level 3/4 stuff later,
    since they can be treated mostly as extras.
  * Downloaded a copy of the current CSS2.2 document.
* Ongoing: design the new layout engine.

Cookies
-------

netsurf cookies currently adheres to RFC2109 (kinda) and we should implement
RFC6265

Vince has investigated and this is necessary for using cookies at least
partially safely with javascript. without this implementation javascript access
is not secure.

JavaScript and Events
---------------------

Daniel continues his epic horror-party into `addEventListener()` and friends.

Activity:

* Fixed bug in nsgenbind which meant generic onFOO handlers were always being
  registered for 'click'. **MERGED**
* Added support for event listeners to duktape binding **MERGED**
* Added `EventTarget` IDL implementation to duktape binding **MERGED**
* Added test case for `DOMNodeInserted` which sadly doesn't work on modern
  browsers due to them switching to mutation observers. **MERGED**
* Updated `Docs/UnimplementedJavascript.txt` for `EventTarget` **MERGED**
* Added an alignment to shush clang for struct casting **MERGED**

Tests
-----

Daniel found and corrected some hiccoughs in the `test/` tree:

* We were linking the system libidn rather than using `utils/punycode.c`
  **MERGED**
* We were at risk of going over-time on some hash table tests.
  **MERGED**

Frontends
---------

* **cocoa:** to be put on notice. noone is maintaining it. if noone responds on
  developer or user list then CI will stop building and updating to build will
  not be required. If the frontend does not build at the next developer weekend
  it will be removed from git.

* **atari:** toolchains are badly in need of a refresh. will be removed if
  noone wants to maintain it.

Next time
=========

We have chosen the next developer weekend to be June the 9th/10th/11th 2017.
It shall be at the same place as this one (Males Close)