summaryrefslogtreecommitdiff
path: root/developer_weekend__nov_2014_.mdwn
blob: dfe9386cb8ac4672a52331dedf385b9640ab044f (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
[[!meta title="Developer Weekend (Nov 2014)"]]
[[!meta author="Tlsa"]]
[[!meta date="2014-11-21T17:41:48Z"]]


[[!toc]] There will be a NetSurf
developer weekend on 14, 15, 16 November 2014 in Manchester, hosted at
the offices of Codethink.

People
------

-   jmb
-   Kinnison
-   kyllikki
-   rjek
-   tlsa

Stuff
-----

Some things that may be discussed or worked on include:

-   Review, fix and merge GSoC Hubbub work
-   Testing
    -   Layout: bitmap export via framebuffer frontend, and comparison
    -   Browser: scripting monkey front end
-   Current state of JS
    -   Duktape? (Quack.)
-   URLdb rewrite
-   Current state of core browser API
-   New layout engine planning
-   Squashing old bugs
-   Filterable logging stuff
-   Performance
-   NetSurf to core buildsystem

Discussions
-----------

### Libraries

-   Vince recently split out utf8proc and all present hurrahed.
-   Libharu appears to be abandonware -- Do we want to take it on, or do
    we want to drop it? Decision is to drop it for now, and worry about
    it again when we have paginating layout
-   Break out most of utils/\* and shunt the rest around? -- Non-urgent
    but not vetoed (call it libnsutils)
    -   Officially, John-Mark Bell acknowledges he's okay to re-license
        his code as MIT/Expat
    -   Officially, Daniel Silverstone acknowledges he's okay to
        re-license his code as MIT/Expat
    -   Officially, Rob Kendrick acknowledges he's okay to re-license
        his code as MIT/Expat
    -   Officially, Michael Drake acknowledges he's okay to re-license
        his code as MIT/Expat
    -   Officially, Vincent Sanders acknowledges he's okay to re-license
        his code as MIT/Expat
    -   Missing permissions: Chris Young, Achal-Aggarwal, Adrian Lees,
        Adrien Destuegues, Andrew Duffell, Andrew Sidwell, Andrew
        Timmins, Anthony J. Bentley, Chris Williams, Fran├žois Revol,
        James Bursa, James Shaw, Jeffrey Lee, John Tytgat, Kevin Bagust,
        Matthew Hambley, Mike Lester, Ole Loots, Philip Pemberton, Phil
        Mellor, Richard Wilson, Rob Jackson, Sean Fox, Steve Fryatt,
        Sven Weidauer
-   Toolchains
    -   Atari is bugged
    -   libcurl/openssl updates are often and annoying
    -   We need to lorry all the things -- Daniel to assist
    -   GCCSDK not compilable with modern ubuntu (14.04) currently
        (maybe update?) (Wheezy works)
-   Michael has a load of libcss stuff he hasn't pushed because he's a
    silly moo.
-   TODO: come back and think about hubbub

### URLDB

1.  URL (normalised fragmentless nsurl) -\> key/value store (avec
    \$indices of various smells)
2.  Cookie jar
3.  Password bucket
4.  Autocompletion database
5.  hostname pattern -\> key/value store

This should be part of libnsutils

Further design discussion at that time.

### Layout

libfandango

layout context hangs off a DOM document

Needs:

-   Render API (potentially extended with compositing)
-   Font Metrics API
-   Scheduler
-   CSS handling
-   Event injection API?

Research:

-   Text layout algorithms
-   CSS3 features and impact vs. currently understood layout

Deep thought:

-   inlines

### JavaScript

Vince is concerned about nsgenbind -- He feels the idl vs. bnd thing
might be a pain. There are two branches, one in nsgenbind and one in
NetSurf which need finishing. Basically restructuring the output. This
is idle from 12 months ago and needs adopting.

A C mirror of the IDL object model has to be constructed in order that
we can then bind to an engine.

Duktape (finally released in October 2014) lacks a lazy evaluation
model. This means that we'd have to build 400 prototypes up front on
every engine initialisation. Expensive in time and memory (can we
perhaps handle this with duktape threads?)

Spidermonkey JSVERSION is not Spidermonkey's API version -- oopsie

Our Spidermonkey API version is, unfortunately orphaned (1.7 is pre-NSPR
and we use this everywhere but Linux) 1.8 and 1.85 are post-NSPR and are
the last separable library releases of spidermonkey (and here is the
orphaning). Between 1.7 and 1.8[5] we have significant API/ABI
differences. We currently "patch" this with a header file full of
macros. 1.85 actually refers to the javascript version not spidermonkey.
We're not seeing API stability and we cannot build against more modern
Spidermonkey

We'd like to split out spidermonkey version and make the macros use
those. Unfortunately pkg-config is a tad pants here due to missing
version information.

Perhaps we need someone (not Vince to save his brain) to research
duktape's status, capabilities and write a mini report for Vince.

Ultimate goal would be something like libnsjavascript which builds on
top of duktape, contains the bindings, and abstracts all of that out of
the netsurf repository, so that netsurf simply ends up gluing
browser\_window, libnsjavascript, the dom it got content and fandango
together.

### Buildsystem

1.  Core buildsystem -\> triplets
    -   BUILD/HOST/TARGET
    -   Move the warning flags into the core
    -   If a platform lacks a triplet, inventorizificate one.

1.  Port NetSurf to the core build system
    -   May need extensions to core build
        -   May be feature discovery stuff
    -   Ensure that testrunner can run any of the random
        mini-test-suites we have in NetSurf currently

So core-buildsystem gains pkg-config.mk kinda thing

Migration of NetSurf to core build system may be predicated on moving
platform content from frontends into libnsutils

### Core Window Thing

Coalescence of all core vs. frontend window abstractions:

1.  Browser Window
2.  Treeviews
3.  Local history

Approaches:

1.  Everything is a browser window (abuse Content model)
2.  Have a 'Window' superclass, move most interaction to that
    abstraction, browser\_window is effectively a subclass