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.
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.
- 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.
- Many of of the components designed for NetSurf are available separately, so that others might use them in their own projects.
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.
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.
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.
Some of the major events and changes in the project's history are chronicled below.
|Apr 2002||NetSurf project started|
|Jun 2004||GTK port available|
|May 2007||NetSurf 1.0 released|
|Jun 2007||NetSurf packaged in Debian|
|Jun 2007||Hubbub HTML parser started|
|Jul 2007||LibDOM DOM implementation started|
|Aug 2007||NetSurf 1.1 released|
|Jan 2008||NetSurf web site redesigned and rewritten|
|Mar 2008||NetSurf 1.2 released|
|May 2008||LibCSS CSS parser started|
|Jun 2008||BeOS & Haiku port available|
|Aug 2008||AmigaOS 4 port available|
|Aug 2008||Hubbub used in NetSurf builds|
|Sep 2008||Framebuffer port available|
|Apr 2009||NetSurf 2.0 released|
|May 2009||NetSurf 2.1 released|
|Jul 2009||LibCSS used in NetSurf builds|
|Mar 2010||New cache designed and used in NetSurf|
|Apr 2010||NetSurf 2.5 released|
|Sep 2010||NetSurf 2.6 released|
|Jan 2011||Atari port available|
|Jan 2011||Mac OS X port available|
|Apr 2011||NetSurf 2.7 released|
|Sep 2011||Frames and iframes in NetSurf core|
|Sep 2011||NetSurf 2.8 released|
|Mar 2012||LibDOM used in NetSurf builds|
|Apr 2012||NetSurf 2.9 released|
|Feb 2013||Textarea widget used for HTML forms|
|Apr 2013||NetSurf 3.0 released|
|Sep 2013||Redesigned treeviews|
|Dec 2013||Big LibCSS selection speedup|
|Apr 2014||NetSurf 3.1 released|
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.
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
- 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.
- The X surface uses the XCB. This allows the framebuffer NetSurf front end to be run inside an X desktop window, making development easier.
- 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.
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.