Tuesday, 6 August 2013

NetSurf Society Report 2012-2013

Thanks to the Secretary and Treasurer for their continued work in
these roles this past year.


Year in review
==============

During last year we launched NetSurf 3.0, the first release to
incorporate our DOM library.

We have also made progress towards JavaScript support. Development
builds supporting a small subset of JavaScript functionality are
now available.

We migrated the project's version control from Subversion to Git,
and changed the core buildsystem.

The project's old autobuilder has been completely replaced with a
Jenkins based Continuous Integration system, which automatically
builds NetSurf and our libraries for various platforms. It also
does automated testing, produces test coverage data, and static
analysis reports.

The new CI system now reports build failures in our IRC channel.
With the discontinuation of the CIA.vc service, we have lost commit
notifications on IRC.

NetSurf 3.0
-----------

The big change in NetSurf 3.0 was the use of our new Document Object
Model library, LibDOM. This new library is a foundation that paves
the way for us to implement a fully dynamic layout engine in the
future, which is essential for useful JavaScript support.

Other improvements included in the release included new textarea
support, ability to fetch and parse CSS in parallel with HTML
documents, extensive behind-the-scenes refactoring, and a host of
smaller changes and fixes.

Current work
------------

Since NetSurf 3.0 was released several areas have been developed.

Background image handling has been revamped to minimise redraw area,
to handle animated background images, and to cope with image
conversion failure. Textarea redraw has been optimised to minimise
redraw area. Visited links are now styled correctly. A bloom
filter utility module has been added which is currently used to
optimise urldb lookups. The handling of user options has been
rewritten to better support changes to the default values and the
system colour settings.

Since the existing treeview is plagued by bugs and poor performance,
it is in the process of being rewritten. The new treeview code is
largely finished, with the the new global history and cookie manager
modules already completed.


Going forward
=============

The main plan for NetSurf's development since NetSurf 1.x has
been shared widely before. Here it is again:

| 1. New HTML parser (hubbub)
| 2. New CSS engine (libcss)
| 3. New DOM implementation (libdom) < We are here now
| 4. New layout engine
| 5. Add JavaScript support < Also working on this
|
| [1] was introduced with NetSurf 2.0
| [2] was introduced with NetSurf 2.5
| [3] was introduced with NetSurf 3.0
| [4] is intended for NetSurf 4.0
| [5] is intended for NetSurf 5.0

Looking at the above plan, it seems likely that, since JavaScript
support has already been started, NetSurf 4.0 will have both
the new layout engine and a fair amount of JavaScript support.

If JavaScript is used to test the dynamic layout engine, I believe
we could combine step [5] into step [4].

The next 12 months
------------------

We are planning a NetSurf 3.1 release once the HTML forms handling
has been rewritten as opaque DOM driven widgets. The treeviews will
be transitioned over to the new implementation soon, so this feature
is also likely to make NetSurf 3.1.

As for LibDOM, there remain many interfaces that are unimplemented,
especially for the HTML element specialisations. Some parts of
LibDOM can also be removed.


Long term there are two main areas of focus for future development:

+ Pushing on with the plan towards JavaScript. The dynamic layout
engine needs planning.

+ Improving/fixing what we've already got. There are various
issues that we have. The most striking being our CSS selection
performance, which has dominated profiling reports for the last
few years.


Thanks to everyone involved in the project for their contributions over
the last 12 months!

--

Michael Drake (tlsa) http://www.netsurf-browser.org/

No comments:

Post a Comment