About NetSurf

NetSurf is a free, open source web browser. It is written in C and released under the GNU Public Licence version 2. NetSurf has its own layout and rendering engine entirely written from scratch. It is small and capable of handling many of the web standards in use today.

Project Goals

The NetSurf project's goals and aims are:

Have fun
NetSurf is developed in people's spare time, so our main goal is to have fun – hopefully learning something and creating a product that people find useful along the way. If you want to join in, check out the developer and contributor area!
Adhere to the standards
There are many web standards. HTTP, HTML and CSS are just a few of them, and new specifications appearing all the time. The NetSurf team is devoted to implementing these standards.
Superior user experience
We want NetSurf to provide a consistent interface to the user that fits right in with your desktop environment. We aim to make NetSurf's interface clean and simple while providing access to powerful functionality.
Keep NetSurf small
NetSurf is a web browser with a small footprint, and we want to keep it that way.
Portability
We want NetSurf to be available to as many users as possible. We've already seen ports to handheld devices and would like to help anyone attempting a new port.
Modularity
Many of of the components designed for NetSurf are available separately, so that others might use them in their own projects.

Project History

The NetSurf project was started in April 2002 in response to a discussion of the deficiencies of the RISC OS browsers that were available at the time. NetSurf has been developed continuously ever since. The latest features and bug fixes have always been available immediately to users through the project's autobuilder. NetSurf had become the most widely used browser on RISC OS well before NetSurf's first release, version 1.0, on 17th May 2007. Development builds have continued to be more widely used than release versions by RISC OS users.

Screenshot of an ancient NetSurf version. An old version from April 2004 displaying the Drobe web site in March 2009.

A GTK port was started in June 2004, which runs on Unix-like platforms. Initially this port was created in order to aid the development and testing of the RISC OS version. Over time, the GTK port has become a fully fledged part of the project and cemented NetSurf's commitment to portability.

Old NetSurf throbber animation.

NetSurf's exuberant throbber animation in 2004.

NetSurf has now been ported to many more platforms with native front ends being created for BeOS & Haiku, as well as AmigaOS 4. A dumb framebuffer port also exists, which has no particular operating system or GUI toolkit requirements.

Timeline

Some of the major events and changes in the project's history are chronicled below.

Apr 2002NetSurf project started
Jun 2004GTK port available
May 2007NetSurf 1.0 released
Jun 2007NetSurf packaged in Debian
Jun 2007Hubbub HTML parser started
Jul 2007LibDOM DOM implementation started
Aug 2007NetSurf 1.1 released
Jan 2008NetSurf web site redesigned and rewritten
Mar 2008NetSurf 1.2 released
May 2008LibCSS CSS parser started
Jun 2008BeOS & Haiku port available
Aug 2008AmigaOS 4 port available
Aug 2008Hubbub used in NetSurf builds
Sep 2008Framebuffer port available
Apr 2009NetSurf 2.0 released
May 2009NetSurf 2.1 released
Jul 2009LibCSS used in NetSurf builds
Mar 2010New cache designed and used in NetSurf
Apr 2010NetSurf 2.5 released
Sep 2010NetSurf 2.6 released
Jan 2011Atari port available
Jan 2011Mac OS X port available
Apr 2011NetSurf 2.7 released
Sep 2011Frames and iframes in NetSurf core
Sep 2011NetSurf 2.8 released
Mar 2012LibDOM used in NetSurf builds
Apr 2012NetSurf 2.9 released
Sep 2012Early JavaScript support started
Feb 2013Textarea widget used for HTML forms
Apr 2013NetSurf 3.0 released
Sep 2013Redesigned treeviews
Dec 2013Big LibCSS selection speedup
Apr 2014NetSurf 3.1 released
May 2014Added disc cache feature
Aug 2014NetSurf 3.2 released
Mar 2015NetSurf 3.3 released
Aug 2015Changed JavaScript engine to Duktape
Feb 2016NetSurf 3.4 released

GTK NetSurf screenshot. A more recent NetSurf showing Wikipedia.

Get the latest version from our download section.

Ports & Availability

This section explains the various NetSurf front ends and should cover whether NetSurf is available for your system. NetSurf currently has seven different front ends. These are for RISC OS, GTK, BeOS, AmigaOS, Atari, Mac OS X and dumb framebuffers.

Desktop front ends

The RISC OS front end is suitable for RISC OS 4 and greater. The AmigaOS front end is suitable for AmigaOS 4. The BeOS front end works on BeOS, Zeta and Haiku. The Mac OS X port requires at least version 10.5.

GTK NetSurf screenshot. NetSurf's GTK front end showing the BBC Homepage.

NetSurf's GTK front end works on Unix-like systems, including Linux, FreeBSD, NetBSD, Solaris and others. There are no native Windows or MacOS X ports of NetSurf at the moment, however the GTK front end can be built for those platforms. The GTK front end is available from the package repositories of many Linux distributions including Debian and Ubuntu.

Framebuffer front end

NetSurf's framebuffer front end has no particular operating system or GUI toolkit requirements. Its mouse pointer, all its widgets etc, are drawn though NetSurf's internal plotters, the same rendering interface used to draw web pages. This makes the framebuffer front end highly portable. Currently the framebuffer front end can target the following framebuffer surface providers:

The Linux framebuffer
Output to a Linux framebuffer and input from Linux input event device nodes. The output device may be specified and defaults to /dev/fb0. The input node search path may also be specified, and defaults to /dev/input/.
SDL
The SDL surface is a straightforward port to the SDL library which is available for many operating systems. This allows the framebuffer NetSurf front end to be run inside a desktop window, making development easier.
X
The X surface uses the XCB. This allows the framebuffer NetSurf front end to be run inside an X desktop window, making development easier.
VNC
The VNC server surface uses the libvncserver library to provide a straightforward unsecured VNC server. Multiple clients may connect.
The ABLE framebuffer
This surface handler enables NetSurf's framebuffer front end to run directly on the ABLE bootloader, shipped with hardware from Simtec.

Releases vs Development trunk

Users can run our release versions of NetSurf, or they can run development versions. Our release versions are tested and released when we are happy with them. Development versions are snapshots of the current state of the code, as the developers are working on it. These versions may have newer features or bug fixes that haven't made it into a release yet, however (depending on what the developers are doing) they might also have new bugs, instability, or they may produce reams of debugging output.

We recommend users use the release versions, unless they particularly want to help us by reporting issues with development versions. People building NetSurf from source are encouraged to build the current HEAD, rather than a release, as it is most up-to-date and has features that may not yet have been released.

NetSurf in Action

Since NetSurf started out on RISC OS hardware, which is not particularly fast – the most widely used RISC OS hardware is a 200 MHz StrongARM RiscPC – so it runs well on resource constrained hardware such as handhelds. Even on fast modern desktops, users benefit from NetSurf's efficiency through its fast startup time and lightweight approach.

Photo of NetSurf running on a Simtec DePicture.

The image above shows NetSurf's framebuffer front end running on top of a Simtec DePicture's bootloader! It's using an ARM9-based Samsung S3C2440 CPU running at 400 MHz.

People also use NetSurf on other handheld gadgets, such as the Openmoko mobile phone and the Nokia N810 internet tablet. NetSurf's full page scaling abilities help it to make the best use of a small screen.

Want to help?

The NetSurf project needs help and input if it is to keep moving forward. There are many ways for users to contribute to the NetSurf project. One of the simplest is to try the latest development build regularly. If you find any bugs, features you like or changes you don't like you can give feedback to the developers. It is this valuable feedback that helps shape NetSurf into a program people enjoy using.

Visit the "How can I help?" page to see other ideas for contributing to the project. If you can program and you'd like to improve NetSurf, then we'd love to hear from you. Pick an area you'd like to improve or a feature you want to add and contact the developers. Also, take a look at the developer and contributor area of this site.