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


  • Chris Young (Still not quite up to visiting)


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


  • 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)


  • 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.


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.


  • 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


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


  • 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)