From e7366bf41f68cfe07e9ea03fc4a398baecbae651 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sat, 4 Feb 2017 09:41:13 +0000 Subject: Initial conversion from MediaWiki, 20170204 --- developer_weekend__nov_2014_.mdwn | 182 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 developer_weekend__nov_2014_.mdwn (limited to 'developer_weekend__nov_2014_.mdwn') 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. + +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 + -- cgit v1.2.3