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 2.6

The focus of this release is to fix bugs reported in NetSurf 2.5.

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, LibCSS and Hubbub.

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

  • Move input handling from browser.c to content handlers
  • 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.
  • Stop front ends from poking around inside contents. TODO: List of instances or examples.
  • 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
  • Frames handled by core
  • Core treeviews providing:
    • Hotlist / bookmarks
    • Global history viewer and manager
    • Cookie management
    • SSL certificate chain inspection interface
  • Support for APNGs?
  • Use an XML parser for XHTML?
  • Fetch imported CSS files in parallel
  • New file: fetcher, without curl

GTK front end

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

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