NetSurf
From NetSurf Development Wiki
Jump to: navigation, search

Development Plan

This is a planning document covering future NetSurf development and releases.

Contents

General

Road to JavaScript

The most requested feature is JavaScript. To get JavaScript the following steps are needed:

  • Complete Hubbub and port NetSurf to Hubbub -- done
  • Complete LibCSS and port NetSurf to LibCSS -- done
  • Complete LibDOM and port NetSurf to LibDOM --in progress
  • New layout engine to cope with dynamic style and content changes
  • JavaScript

Each of these steps will require a lot of time.

NetSurf 3.0

The focus of this release will be on: the introduction of a proper DOM; big improvements in speed and memory efficiency; improvement of user interaction, e.g. with form widgets and status bar display; and support for treeview based functionality (e.g. global history, bookmarks, cookie manager) in all front ends. No major improvements are planned for the layout engine until NetSurf 4.0.

Once we move to using LibDOM, we should give a big speed improvement over NetSurf 2.x. There will be a lot less string copying and string compares will be much faster due to usage of string interning library LibWapcaplet in NetSurf, LibDOM and LibCSS.

APNGs are already used in the wild (unlike MNG). While we can display the first frame, thanks to PNG backwards compatibility, it would be good to support the animation extension.

We have always put XHTML though an HTML parser, which works well enough currently, but it will be good to handle XHTML properly.

Big tidyup

  • One bitmap image content type, instead of one for each of JPEG, GIF, etc. Make image format handlers into simple data converters for the image content type.
  • Tidy up printing system
  • Implement cloning of HTML contents (required for printing)
  • Keep source data in chunks; currently about a third of the heap is wastage
  • Drop _GNU_SOURCE on the floor

Core features

  • Use new textarea widget for form inputs, remove old mad textinput code
  • Integrate LibDOM
  • Support for APNGs?
  • Use an XML parser for XHTML?
  • Rewrite URL handling
  • Advert blocking needs overhaul
   - current sourec of adblock css is long gone (nov 2004)
   - the original idea source for css based blocking is http://www.floppymoose.com/userContent.css but thats inadequate for our purposes
   - another source used in our current css was last updated 2008 http://www.gozer.org/mozilla/ad_blocking/css/ad_blocking.css
   - an adblock plus source which might be worth adding instead of doing it by css https://easylist-downloads.adblockplus.org/easylist.txt where http://adblockplus.org/en/filters is the file format. We might be able to convert from the adblock format to css?


GTK front end

  • Use freetype directly, as pango makes us far slower for the sake of functionality we don't use
  • Get rid of libsexy

Framebuffer front end

  • Support for mouse drags
  • Support for page scaling (needs work on plotters)
  • Caret rendering
  • Tabs?

Windows front end

  • Get it ready for a first release

NetSurf 4.0

The focus of this release will be a new layout engine. The new layout engine will enable dynamic changes to pages such as :hover, reflowing for scrollbar insertion. It will also add support for features missing from the old layout engine such as z-index and vertical-align.

Core features

  • New layout engine, capable of dynamic changes
  • HTML 5 consideration
  • CSS 3 consideration

NetSurf 5.0

The focus of this release will be JavaScript support.

Core features

  • JavaScript
Personal tools