From NetSurf Development Wiki
Development Plan
This is a planning document covering future NetSurf development and releases.
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