path: root/developer_weekend__nov_2014_.mdwn
diff options
authorDaniel Silverstone <>2017-02-04 09:41:13 +0000
committerDaniel Silverstone <>2017-02-04 09:41:13 +0000
commite7366bf41f68cfe07e9ea03fc4a398baecbae651 (patch)
tree5bb9c3cbe7eab7e70ff1ebd65d9de59a694762df /developer_weekend__nov_2014_.mdwn
Initial conversion from MediaWiki, 20170204
Diffstat (limited to 'developer_weekend__nov_2014_.mdwn')
1 files changed, 182 insertions, 0 deletions
diff --git a/developer_weekend__nov_2014_.mdwn b/developer_weekend__nov_2014_.mdwn
new file mode 100644
index 0000000..dfe9386
--- /dev/null
+++ b/developer_weekend__nov_2014_.mdwn
@@ -0,0 +1,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.
+- jmb
+- Kinnison
+- kyllikki
+- rjek
+- tlsa
+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
+### 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
+layout context hangs off a DOM document
+- Render API (potentially extended with compositing)
+- Font Metrics API
+- Scheduler
+- CSS handling
+- Event injection API?
+- 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
+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
+### Buildsystem
+1. Core buildsystem -\> triplets
+ - 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 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
+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