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/