From 2a2acc3269e64a327f321b2e042fb03443d01bbd Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Tue, 14 Oct 2014 21:00:11 +0100 Subject: Complete en -> html rename --- developers/contribute.en | 126 ------------------ developers/contribute.html | 126 ++++++++++++++++++ developers/gsoc/2008ideas.en | 237 ---------------------------------- developers/gsoc/2008ideas.html | 237 ++++++++++++++++++++++++++++++++++ developers/gsoc/2009ideas.en | 282 ----------------------------------------- developers/gsoc/2009ideas.html | 282 +++++++++++++++++++++++++++++++++++++++++ developers/gsoc/2014ideas.en | 173 ------------------------- developers/gsoc/2014ideas.html | 173 +++++++++++++++++++++++++ developers/gsoc/index.en | 154 ---------------------- developers/gsoc/index.html | 154 ++++++++++++++++++++++ developers/index.en | 153 ---------------------- developers/index.html | 153 ++++++++++++++++++++++ developers/publicity.en | 103 --------------- developers/publicity.html | 103 +++++++++++++++ 14 files changed, 1228 insertions(+), 1228 deletions(-) delete mode 100644 developers/contribute.en create mode 100644 developers/contribute.html delete mode 100644 developers/gsoc/2008ideas.en create mode 100644 developers/gsoc/2008ideas.html delete mode 100644 developers/gsoc/2009ideas.en create mode 100644 developers/gsoc/2009ideas.html delete mode 100644 developers/gsoc/2014ideas.en create mode 100644 developers/gsoc/2014ideas.html delete mode 100644 developers/gsoc/index.en create mode 100644 developers/gsoc/index.html delete mode 100644 developers/index.en create mode 100644 developers/index.html delete mode 100644 developers/publicity.en create mode 100644 developers/publicity.html (limited to 'developers') diff --git a/developers/contribute.en b/developers/contribute.en deleted file mode 100644 index 7d7811e..0000000 --- a/developers/contribute.en +++ /dev/null @@ -1,126 +0,0 @@ - - - -NetSurf | Contribution Guide - - - - - - - - - -
- - - -

Contribution Guide

- -

People ask us how they can help the NetSurf project. This section of the site is here to help people contribute to the project. You should be able to find all you need here. If not, please contact us!

- -

Contributing to NetSurf

- -

NetSurf is open for anyone to contribute to. Everyone is very welcome to help! There are all sorts of ways to contribute to the project. For some ideas, see the list below:

- -
-
Publicity
-
-

Help tell people about NetSurf.

-
    -
  • If you have a web site, you could add a link to the NetSurf page. Such as -
    <a href="http://www.netsurf-browser.org/">NetSurf Web Browser</a>
    -Which appears as: NetSurf Web Browser.
  • -
  • A selection of adverts are available for use in magazines, pamphlets and on web sites. See the publicity page for more information.
  • -
-
-
Provide feedback
-
-

We need to know what you think about NetSurf, if we are to develop a web browser people enjoy using.

-
    -
  • Report any bugs you find.
  • -
  • Request the features you want.
  • -
  • Discuss your opinions of NetSurf on the mailing list.
  • -
  • Run the bleeding edge version of NetSurf to provide the most helpful feedback to developers.
  • -
-
-
Non-programming contribution
-
-

If you want to contribute to the project directly but are unable to program, there are still many ways for you to help.

-
    -
  • Translation of NetSurf and the NetSurf web site into other languages.
  • -
  • Creation of new themes.
  • -
  • Help with Templates design.
  • -
  • Help answer peoples questions on the mailing lists, if you know the answer.
  • -
-
-
Programming
-
-

NetSurf's developers have limited time to work on the project. If you are a capable programmer there are all sorts of ways you could help the project.

-
    -
  • Help with the core of NetSurf: Fetching, Layout, etc.
  • -
  • Help improve the RISC OS user interface.
  • -
  • Help improve the GTK user interface.
  • -
  • Submit patches for bugs.
  • -
  • Submit patches to implement features you want.
  • -
-
-
- -

If you want to help, get in touch!

- - - - - -
- - -
- -
- - - diff --git a/developers/contribute.html b/developers/contribute.html new file mode 100644 index 0000000..7d7811e --- /dev/null +++ b/developers/contribute.html @@ -0,0 +1,126 @@ + + + +NetSurf | Contribution Guide + + + + + + + + + +
+ + + +

Contribution Guide

+ +

People ask us how they can help the NetSurf project. This section of the site is here to help people contribute to the project. You should be able to find all you need here. If not, please contact us!

+ +

Contributing to NetSurf

+ +

NetSurf is open for anyone to contribute to. Everyone is very welcome to help! There are all sorts of ways to contribute to the project. For some ideas, see the list below:

+ +
+
Publicity
+
+

Help tell people about NetSurf.

+
    +
  • If you have a web site, you could add a link to the NetSurf page. Such as +
    <a href="http://www.netsurf-browser.org/">NetSurf Web Browser</a>
    +Which appears as: NetSurf Web Browser.
  • +
  • A selection of adverts are available for use in magazines, pamphlets and on web sites. See the publicity page for more information.
  • +
+
+
Provide feedback
+
+

We need to know what you think about NetSurf, if we are to develop a web browser people enjoy using.

+
    +
  • Report any bugs you find.
  • +
  • Request the features you want.
  • +
  • Discuss your opinions of NetSurf on the mailing list.
  • +
  • Run the bleeding edge version of NetSurf to provide the most helpful feedback to developers.
  • +
+
+
Non-programming contribution
+
+

If you want to contribute to the project directly but are unable to program, there are still many ways for you to help.

+
    +
  • Translation of NetSurf and the NetSurf web site into other languages.
  • +
  • Creation of new themes.
  • +
  • Help with Templates design.
  • +
  • Help answer peoples questions on the mailing lists, if you know the answer.
  • +
+
+
Programming
+
+

NetSurf's developers have limited time to work on the project. If you are a capable programmer there are all sorts of ways you could help the project.

+
    +
  • Help with the core of NetSurf: Fetching, Layout, etc.
  • +
  • Help improve the RISC OS user interface.
  • +
  • Help improve the GTK user interface.
  • +
  • Submit patches for bugs.
  • +
  • Submit patches to implement features you want.
  • +
+
+
+ +

If you want to help, get in touch!

+ + + + + +
+ + +
+ +
+ + + diff --git a/developers/gsoc/2008ideas.en b/developers/gsoc/2008ideas.en deleted file mode 100644 index b376da6..0000000 --- a/developers/gsoc/2008ideas.en +++ /dev/null @@ -1,237 +0,0 @@ - - - -NetSurf | Google Summer of Code 2008 Ideas - - - - - - - - -
- - - -

Google Summer of Code Ideas

- -

This page lists our project ideas for Google Summer of Code 2008.

- -

Details of our selected students and their projects can be found on our GSoC page.

- -
-
Before applying for a project
-
-
    -
  • Join our IRC channel #netsurf on Freenode and introduce yourself. Also, subscribe to the developer mailing list.
  • -
  • Have access to a computer with supported OS (RISC OS, Linux, FreeBSD, etc) or an OS relevant for the project you want to apply for (Windows, Mac OS).
  • -
  • Get up to speed with Git, as we use this for source control, and get the NetSurf source code.
  • -
  • Build NetSurf and enjoy using it. (Ask if you need help.)
  • -
  • Get familiarised with the source code – read the code documentation.
  • -
-
-
When applying for a project
-
-
    -
  • Create a set of project milestones (ranging from a couple to maximum 10). This will be useful for you as guidance and for us to set our expectations right.
  • -
  • Include your IRC nick in your application if you've spoken with us on #netsurf, so that we recognise you.
  • -
-
-
During the project
-
-
    -
  • Most of NetSurf team communication happens via #netsurf IRC during evenings and nights (CET). We expect you to join in on a regular basis for help, discussions and project updates. Note that you're not restricted to speaking to your assigned mentor; the whole development team are willing to help wherever they can.
  • -
  • When improving NetSurf's layout engine, be able to create test cases and verify that existing test cases don't get broken.
  • -
  • Keep NetSurf's project goals in mind, especially the first point.
  • -
-
-
- -

Please get in touch if any of these ideas appeal to you or if you have your own idea for either NetSurf or one of NetSurf's sub-projects. Come and chat to the developers in the NetSurf IRC channel or post to the developer mailing list.

- -

All these ideas require knowledge of C, as NetSurf is entirely written in C.

- -

See the Feature Requests tracker for more ideas.

- -

New CSS parser and selector engine

-

NetSurf's current CSS parser and selector engine has several limitations. The existing code could be improved or rewritten. The limitations include:

- -

Improvements here would improve NetSurf's rendering of many web pages, as well as the infamous acid2 test.

-
-

In the long-term, NetSurf will be requiring a DOM StyleSheet and CSS binding. The current CSS parser and selection engine aren't really structured in a manner that permits this to happen. Therefore, this project could take one of two forms:

-
    -
  • Focus upon and fix the limitations in the current CSS engine
  • -
  • Develop an entirely new CSS engine to replace the existing one
  • -
-

There is an outline description of a new CSS engine, which may be of interest to those who want to take the second approach to this project. This description is fairly complete from an external API perspective. The implementation details of a new engine are completely negotiable – we have some idea of what's needed, but the student's input will be highly valued.

-

Regardless of which approach is taken, we would expect that testing of the code is performed on a regular basis to ensure that things are still working as expected. New testcases should be written to exercise existing bugs and test out new functionality.

-
-

Skills required: C, CSS, parsing

-

Difficulty: Medium

-

Existing code: CSS parser and modules, Documentation

-

References: CSS 2.1 specification DOM Level 2 Style specification

- -

Native Windows or Mac OS X ports

-

NetSurf currently has user-interface layers for the RISC OS Window Manager and for GTK (on Linux, FreeBSD, etc.). The GTK interface works on Windows or Mac OS X, but a native interface for these systems would give a better experience.

-

Skills required: C, Windows UI development or Mac OS X UI development

-

Difficulty: Medium

-

Existing code: Declarations of functions that each interface must implement, RISC OS specific code, GTK specific code

-

References:

- -

Keyboard navigation

-

The browser currently requires a mouse to use. Keyboard shortcuts would move between and activate links, inputs, etc. The document structure is stored in a tree, and algorithms for walking through the tree to find the next link or input would need to be developed. A further improvement would be to take layout position into account and implement moving in 2D.

-

Skills required: C, HTML, CSS, usability

-

Difficulty: Easy

-

Existing code: Key press handling, Box tree structures

-

References:

- -

Printing improvements

-

Printing is currently only available on RISC OS, and the output is difficult for the user to predict. Work could include implementing printing for GTK, print preview, intelligent paging or reformatting, support for print stylesheets, and user control over what parts of the page are printed. This might include writing a portable base and platform-specific layer.

-

Skills required: C, CSS, GTK, possibly Cairo, possibly Postscript

-

Difficulty: Hard

-

Existing code: RISC OS printing implementation

-

References:

- -

PDF plotter

-

NetSurf's graphics output is abstracted through "plotters", which are a set of functions that render output to some destination. For example, there are plotters for RISC OS window, GTK window, and DrawFile (a vector graphics format) output. Implementing a PDF plotter would turn NetSurf into a general HTML to PDF conversion tool.

-
-

NetSurf already uses several Open Source libraries (cAres & cURL, IJG JPEG, OpenSSL, libXML2, zlib, etc), so it is likely that an existing PDF write-capable library can be found and used in this project. Firstly, research the possible candidate libraries, based on criteria like: supported programming languages, its platform independence, ease of use, licence and any other possible advantages (like support for writing other vector based file formats, etc). Such research will actually mean writing some test/prototype code using those libraries in order to get familiar with their interfaces.

-

It is unlikely that this project will involve developing a PDF writing library from scratch. We won't rule this out for certain, but would require some convincing arguments from you.

-

During the evaluation of PDF writing libraries, we expect the student to become familiar with the requirements of the NetSurf plotter interface, figuring out what the issues could be from NetSurf API point view and for the PDF write library candidates. A plan should then be devised to solve these issues.

-

After hooking the PDF write library into NetSurf and getting some useful PDF files from web pages, it will be time to come up with a strategy to test your code. As we tend to be lazy, at least sometimes, we won't buy the "Save as..." manual save and view in a PDF viewer approach.

-

It could very well be that this project involves working closely together with people assigned for the "Printing improvements" project.

-

These project boundaries are not set in stone. We think it is a well defined project but we're happy to hear suggestions from you to enrich the project or redefine certain aspects of it.

-
-

Skills required: C, graphics, PDF

-

Difficulty: Medium

-

Existing code: Plotter interface, RISC OS plotter, GTK plotter, DrawFile plotter

-

References:

-

Mentor: John Tytgat

- -

Page reader

-

The web is a vast resource of information and services. Traditional browsers enable its access for people who can see. NetSurf attempts to help partially sighted users with a sophisticated scaling / zoom feature, however it could be improved further with a page reading option. Speech synthesis could be used to render pages as spoken output.

-

There are already several libraries for speech synthesis. This project would first involve enabling NetSurf to speak the textual content of a page. Further work would improve the usability of the system by consideration for such factors as:

- -

Skills required: C, accessibility

-

Difficulty: Medium – Hard

-

Existing code:

-

References: eSpeak text to speech synthesizer

- -

Dynamic pseudo classes

-

NetSurf currently has no support for CSS dynamic pseudo classes (e.g. :hover). The work would involve adding support for these classes to the CSS parser and selection engine and modifying the layout engine to handle dynamic style changes.

-

Skills required: C, HTML, CSS

-

Difficulty: Hard

-

Existing code: CSS parser, HTML handler and layout engine

-

References: CSS 2.1 specification

- - -

Abstract RISC OS GUI code into a separate library

-

NetSurf's RISC OS user interface is rich and powerful. It supports many features such as editable toolbars, dialogue box handling and menu generation. If the interface code was abstracted into a separate library, other RISC OS applications could benefit from the availability of a sophisticated, tried and tested and style guide compliant GUI toolkit.

-

Skills required: C, RISC OS WIMP, OSLib

-

Difficulty: Medium – Hard

-

Existing code: RISC OS specific code

-

References: OSLib

- -

Extracting the core into a library

-

NetSurf is currently conceptually split in two – the front-end (GUI) and the back-end (core):

- -

These two parts are then statically linked together.

-

Ideally, the back-end part of the browser would be abstracted to a stand-alone library, which a front-end could provide a table of entry points to. This allows for more than one program to use NetSurf's abilities efficiently, as well as giving us a chance to rationalise and tidy up the current rather ad-hoc API.

-

Skills required: C

-

Difficulty: Medium – Hard

-

Existing code: See "Native Windows or Mac OS X ports" and "PDF plotter". Options code in back-end

-

References:

- -

Improved inline element handling

-

NetSurf's handling of inline elements is particularly incomplete. This task would involve improving the way in which these elements are handled. Particular issues include:

- -

Skills required: C, HTML, CSS

-

Difficulty: Hard

-

Existing code: Layout code, Documentation

-

References: CSS 2.1 specification

- -

Improved GTK front end; tabs, downloads, etc

-

The GTK port, while capable of navigating the web and displaying web pages, lacks may of the features which would make it suitable for every day browsing. There are lots of features that could be added which would improve the user experience. These include:

- -

Skills required: C, GTK

-

Difficulty: Medium

-

Existing code: GTK specific code, Core code for text selection, export, etc

-

References:

- - - -
- - -
- -
- - - diff --git a/developers/gsoc/2008ideas.html b/developers/gsoc/2008ideas.html new file mode 100644 index 0000000..b376da6 --- /dev/null +++ b/developers/gsoc/2008ideas.html @@ -0,0 +1,237 @@ + + + +NetSurf | Google Summer of Code 2008 Ideas + + + + + + + + +
+ + + +

Google Summer of Code Ideas

+ +

This page lists our project ideas for Google Summer of Code 2008.

+ +

Details of our selected students and their projects can be found on our GSoC page.

+ +
+
Before applying for a project
+
+
    +
  • Join our IRC channel #netsurf on Freenode and introduce yourself. Also, subscribe to the developer mailing list.
  • +
  • Have access to a computer with supported OS (RISC OS, Linux, FreeBSD, etc) or an OS relevant for the project you want to apply for (Windows, Mac OS).
  • +
  • Get up to speed with Git, as we use this for source control, and get the NetSurf source code.
  • +
  • Build NetSurf and enjoy using it. (Ask if you need help.)
  • +
  • Get familiarised with the source code – read the code documentation.
  • +
+
+
When applying for a project
+
+
    +
  • Create a set of project milestones (ranging from a couple to maximum 10). This will be useful for you as guidance and for us to set our expectations right.
  • +
  • Include your IRC nick in your application if you've spoken with us on #netsurf, so that we recognise you.
  • +
+
+
During the project
+
+
    +
  • Most of NetSurf team communication happens via #netsurf IRC during evenings and nights (CET). We expect you to join in on a regular basis for help, discussions and project updates. Note that you're not restricted to speaking to your assigned mentor; the whole development team are willing to help wherever they can.
  • +
  • When improving NetSurf's layout engine, be able to create test cases and verify that existing test cases don't get broken.
  • +
  • Keep NetSurf's project goals in mind, especially the first point.
  • +
+
+
+ +

Please get in touch if any of these ideas appeal to you or if you have your own idea for either NetSurf or one of NetSurf's sub-projects. Come and chat to the developers in the NetSurf IRC channel or post to the developer mailing list.

+ +

All these ideas require knowledge of C, as NetSurf is entirely written in C.

+ +

See the Feature Requests tracker for more ideas.

+ +

New CSS parser and selector engine

+

NetSurf's current CSS parser and selector engine has several limitations. The existing code could be improved or rewritten. The limitations include:

+ +

Improvements here would improve NetSurf's rendering of many web pages, as well as the infamous acid2 test.

+
+

In the long-term, NetSurf will be requiring a DOM StyleSheet and CSS binding. The current CSS parser and selection engine aren't really structured in a manner that permits this to happen. Therefore, this project could take one of two forms:

+
    +
  • Focus upon and fix the limitations in the current CSS engine
  • +
  • Develop an entirely new CSS engine to replace the existing one
  • +
+

There is an outline description of a new CSS engine, which may be of interest to those who want to take the second approach to this project. This description is fairly complete from an external API perspective. The implementation details of a new engine are completely negotiable – we have some idea of what's needed, but the student's input will be highly valued.

+

Regardless of which approach is taken, we would expect that testing of the code is performed on a regular basis to ensure that things are still working as expected. New testcases should be written to exercise existing bugs and test out new functionality.

+
+

Skills required: C, CSS, parsing

+

Difficulty: Medium

+

Existing code: CSS parser and modules, Documentation

+

References: CSS 2.1 specification DOM Level 2 Style specification

+ +

Native Windows or Mac OS X ports

+

NetSurf currently has user-interface layers for the RISC OS Window Manager and for GTK (on Linux, FreeBSD, etc.). The GTK interface works on Windows or Mac OS X, but a native interface for these systems would give a better experience.

+

Skills required: C, Windows UI development or Mac OS X UI development

+

Difficulty: Medium

+

Existing code: Declarations of functions that each interface must implement, RISC OS specific code, GTK specific code

+

References:

+ +

Keyboard navigation

+

The browser currently requires a mouse to use. Keyboard shortcuts would move between and activate links, inputs, etc. The document structure is stored in a tree, and algorithms for walking through the tree to find the next link or input would need to be developed. A further improvement would be to take layout position into account and implement moving in 2D.

+

Skills required: C, HTML, CSS, usability

+

Difficulty: Easy

+

Existing code: Key press handling, Box tree structures

+

References:

+ +

Printing improvements

+

Printing is currently only available on RISC OS, and the output is difficult for the user to predict. Work could include implementing printing for GTK, print preview, intelligent paging or reformatting, support for print stylesheets, and user control over what parts of the page are printed. This might include writing a portable base and platform-specific layer.

+

Skills required: C, CSS, GTK, possibly Cairo, possibly Postscript

+

Difficulty: Hard

+

Existing code: RISC OS printing implementation

+

References:

+ +

PDF plotter

+

NetSurf's graphics output is abstracted through "plotters", which are a set of functions that render output to some destination. For example, there are plotters for RISC OS window, GTK window, and DrawFile (a vector graphics format) output. Implementing a PDF plotter would turn NetSurf into a general HTML to PDF conversion tool.

+
+

NetSurf already uses several Open Source libraries (cAres & cURL, IJG JPEG, OpenSSL, libXML2, zlib, etc), so it is likely that an existing PDF write-capable library can be found and used in this project. Firstly, research the possible candidate libraries, based on criteria like: supported programming languages, its platform independence, ease of use, licence and any other possible advantages (like support for writing other vector based file formats, etc). Such research will actually mean writing some test/prototype code using those libraries in order to get familiar with their interfaces.

+

It is unlikely that this project will involve developing a PDF writing library from scratch. We won't rule this out for certain, but would require some convincing arguments from you.

+

During the evaluation of PDF writing libraries, we expect the student to become familiar with the requirements of the NetSurf plotter interface, figuring out what the issues could be from NetSurf API point view and for the PDF write library candidates. A plan should then be devised to solve these issues.

+

After hooking the PDF write library into NetSurf and getting some useful PDF files from web pages, it will be time to come up with a strategy to test your code. As we tend to be lazy, at least sometimes, we won't buy the "Save as..." manual save and view in a PDF viewer approach.

+

It could very well be that this project involves working closely together with people assigned for the "Printing improvements" project.

+

These project boundaries are not set in stone. We think it is a well defined project but we're happy to hear suggestions from you to enrich the project or redefine certain aspects of it.

+
+

Skills required: C, graphics, PDF

+

Difficulty: Medium

+

Existing code: Plotter interface, RISC OS plotter, GTK plotter, DrawFile plotter

+

References:

+

Mentor: John Tytgat

+ +

Page reader

+

The web is a vast resource of information and services. Traditional browsers enable its access for people who can see. NetSurf attempts to help partially sighted users with a sophisticated scaling / zoom feature, however it could be improved further with a page reading option. Speech synthesis could be used to render pages as spoken output.

+

There are already several libraries for speech synthesis. This project would first involve enabling NetSurf to speak the textual content of a page. Further work would improve the usability of the system by consideration for such factors as:

+ +

Skills required: C, accessibility

+

Difficulty: Medium – Hard

+

Existing code:

+

References: eSpeak text to speech synthesizer

+ +

Dynamic pseudo classes

+

NetSurf currently has no support for CSS dynamic pseudo classes (e.g. :hover). The work would involve adding support for these classes to the CSS parser and selection engine and modifying the layout engine to handle dynamic style changes.

+

Skills required: C, HTML, CSS

+

Difficulty: Hard

+

Existing code: CSS parser, HTML handler and layout engine

+

References: CSS 2.1 specification

+ + +

Abstract RISC OS GUI code into a separate library

+

NetSurf's RISC OS user interface is rich and powerful. It supports many features such as editable toolbars, dialogue box handling and menu generation. If the interface code was abstracted into a separate library, other RISC OS applications could benefit from the availability of a sophisticated, tried and tested and style guide compliant GUI toolkit.

+

Skills required: C, RISC OS WIMP, OSLib

+

Difficulty: Medium – Hard

+

Existing code: RISC OS specific code

+

References: OSLib

+ +

Extracting the core into a library

+

NetSurf is currently conceptually split in two – the front-end (GUI) and the back-end (core):

+ +

These two parts are then statically linked together.

+

Ideally, the back-end part of the browser would be abstracted to a stand-alone library, which a front-end could provide a table of entry points to. This allows for more than one program to use NetSurf's abilities efficiently, as well as giving us a chance to rationalise and tidy up the current rather ad-hoc API.

+

Skills required: C

+

Difficulty: Medium – Hard

+

Existing code: See "Native Windows or Mac OS X ports" and "PDF plotter". Options code in back-end

+

References:

+ +

Improved inline element handling

+

NetSurf's handling of inline elements is particularly incomplete. This task would involve improving the way in which these elements are handled. Particular issues include:

+ +

Skills required: C, HTML, CSS

+

Difficulty: Hard

+

Existing code: Layout code, Documentation

+

References: CSS 2.1 specification

+ +

Improved GTK front end; tabs, downloads, etc

+

The GTK port, while capable of navigating the web and displaying web pages, lacks may of the features which would make it suitable for every day browsing. There are lots of features that could be added which would improve the user experience. These include:

+ +

Skills required: C, GTK

+

Difficulty: Medium

+

Existing code: GTK specific code, Core code for text selection, export, etc

+

References:

+ + + +
+ + +
+ +
+ + + diff --git a/developers/gsoc/2009ideas.en b/developers/gsoc/2009ideas.en deleted file mode 100644 index af111a9..0000000 --- a/developers/gsoc/2009ideas.en +++ /dev/null @@ -1,282 +0,0 @@ - - - -NetSurf | Google Summer of Code 2009 Ideas - - - - - - - - -
- - - -

Google Summer of Code Ideas

- -

This page lists our project ideas for Google Summer of Code 2009.

- -
-
Before applying for a project
-
-
    -
  • Join our IRC channel #netsurf on Freenode and introduce yourself. Also, subscribe to the developer mailing list.
  • -
  • Have access to a computer with supported OS (RISC OS, Linux, FreeBSD, BeOS, AmigaOS etc) or an OS relevant for the project you want to apply for (Windows, Mac OS).
  • -
  • Get up to speed with Git, as we use this for source control, and get the NetSurf source code.
  • -
  • Build NetSurf and enjoy using it. (Ask if you need help.)
  • -
  • Get familiarised with the source code – read the code documentation.
  • -
  • Consider submitting a patch to fix an issue on our bug tracker or feature request tracker
  • -
-
-
When applying for a project
-
-
    -
  • Tell us about yourself, your experience, and why you want to work with us.
  • -
  • Describe the project you want to do, and how you plan to go about doing it. Do not simply copy the project description from the ideas page.
  • -
  • Create a set of project milestones (ranging from a couple to maximum 10) with expected completion dates. This will be useful for you as guidance and for us to set our expectations right.
  • -
  • Describe how you will test your contributions.
  • -
  • Include your IRC nick in your application if you've spoken with us on #netsurf, so that we recognise you. We strongly recommend that you communicate with us before submitting an application.
  • -
  • We expect GSoC to be mostly equivalent to a full-time job. Therefore, please tell us if you have any other demands on your time.
  • -
-
-
During the project
-
-
    -
  • Most of NetSurf team communication happens via #netsurf IRC during evenings and nights (CET). We expect you to join in on a regular basis for help, discussions and project updates. Note that you're not restricted to speaking to your assigned mentor; the whole development team are willing to help wherever they can.
  • -
  • When improving NetSurf's layout engine, be able to create test cases and verify that existing test cases don't get broken.
  • -
  • Keep NetSurf's project goals in mind, especially the first point.
  • -
-
-
- -

There is some more information in the GSoC section of our wiki. Note particularly the student guidelines.

- -

Please get in touch if any of these ideas appeal to you or if you have your own idea for either NetSurf or one of NetSurf's sub-projects. Come and chat to the developers in the NetSurf IRC channel or post to the developer mailing list.

- -

All these ideas require knowledge of C, as NetSurf is entirely written in C.

- -

See the Feature Requests tracker for more ideas.

- -

Keyboard navigation

-

The browser currently requires a mouse to use. Keyboard shortcuts would move between and activate links, inputs, etc. The document structure is stored in a tree, and algorithms for walking through the tree to find the next link or input would need to be developed. A further improvement would be to take layout position into account and implement moving in 2D.

-

Skills required: C, HTML, CSS, usability

-

Difficulty: Easy

-

Existing code: Key press handling, Box tree structures

-

References:

- -

Page reader

-

The web is a vast resource of information and services. Traditional browsers enable its access for people who can see. NetSurf attempts to help partially sighted users with a sophisticated scaling / zoom feature, however it could be improved further with a page reading option. Speech synthesis could be used to render pages as spoken output.

-

There are already several libraries for speech synthesis. This project would first involve enabling NetSurf to speak the textual content of a page. Further work would improve the usability of the system by consideration for such factors as:

- -

Skills required: C, accessibility

-

Difficulty: Medium – Hard

-

Existing code:

-

References: eSpeak text to speech synthesizer

- -

LibDOM

-

LibDOM is an implementation of the W3C DOM. It currently implements a large proportion of DOM Level 3 Core. It is a work in progress and requires a fairly large number of fixes and additions before it can be integrated into NetSurf. Note that the scope of this project is quite large. We expect you to prioritise the parts you intend to implement.

-
-

Things that need doing include:

-
    -
  • -

    Use vtables rather than known function names + switching on node type

    -

    A vtable is a structure containing function pointers. Each node type will populate the vtable with the appropriate functions. These may then be called by any client without the client needing to know what the node type is.

    -
  • -
  • -

    Implement the rest of DOM 3/2/1/0, primarily:

    -
      -
    • Events
    • -
    • HTML
    • -
    • Other DOM modules
    • -
    -
  • -
  • -

    Test suite

    -

    The W3C provide a test suite for DOM implementations. It is stored in an XML format and currently, has transformations from this format to Java and JavaScript source code. Ideally, a transformation into C source code will be written so that LibDOM may be tested automatically.

    -
  • -
  • -

    Integration with NetSurf

    -
  • -
-
-

Skills required: C, DOM, XSLT (for the test suite)

-

Difficulty: Medium – Hard

-

Existing code: LibDOM sources

-

References: DOM specifications

- -

Layout engine improvements

-

The layout engine forms part of the core of the browser. It is responsible for calculating the position of each part of the page. It currently has a number of deficiencies which should be addressed. These include the following parts of the CSS specification:

- -

There are also other layout issues which could be tackled. For example in table layout some CSS properties, like height, are not handled for table rows.

-

Skills required: C, HTML, CSS

-

Difficulty: Medium – Hard

-

Existing code: layout engine, rendering code

-

References: CSS 2.1 specification, CSS 2.1 property index

- -

Automated layout test engine

-

When NetSurf's layout engine is modified there is a risk that the change may break other pages. When problems are found, we create test cases which demonstrate the problem and keep them as regression tests once the issue is fixed. Currently, it takes quite a lot of manual effort to test NetSurf against all these test pages manually.

-
-

This project will create a tool for automatically testing NetSurf's layout engine for regressions. There are three components that will make up the completed project:

-
-
Minimal test front end
-
-

The first task will be to write the code necessary to call NetSurf's core engine to fetch a page, perform layout on it and dump the page's box tree. The box dump specifies the x/y coordinates, width and height of every box in the render tree, as well as other pertinent information.

-

This will involve the implementation of a simple test "front end". Unlike the GTK, RISC OS or BeOS, etc front ends, it is not to be a usable web browser, but a command line tool. The minimal debug and framebuffer front ends can be used as example code.

-
-
A defined test data format
-
-

The existing test data is fine for manual testing. However, for automated testing to work, there needs to be some ground truthed comparison data for each test input. There also needs to be a way of determining which comparison data is associated with which test.

-

To ensure that the test front end is working correctly, some amount of test input and comparison data will need to be created. The existing test suite can be used as a starting point for this.

-
-
A test runner
-
-

This can be some kind of script that runs the NetSurf test code for each page in the test suite and compares the box dump NetSurf produces with the expected data. It can output the test name and then PASS or FAIL.

-
-
-
-

Skills required: C, HTML, CSS, scripting

-

Difficulty: Medium

-

Existing code: existing test case repository, box dump code – box_dump() (note that this is extremely verbose and contains much data that is of little use in automated testing), debug front end, framebuffer front end

-

References:

- -

Core UI enhancements

-

So that NetSurf can draw pages on different platforms, there is an interface between the core cross-platform code and the front end UI code that abstracts plotting. This interface is used to plot everything within the browser's content area.

-

There are parts of NetSurf's user interface which are common across platforms. However, each platform frontend has to implement these separately. This results in unnecessary duplication of functionality. Therefore, it would be good to move support for some of the common widgets into the core and draw them using the same plotting interface as used for the content area.

-

Initially, this will require:

- -

Further to the above, the way NetSurf's core implements HTML frames is not particularly portable. This could be addressed as an extension.

-

Skills required: C, Usability

-

Difficulty: Easy – Medium

-

Existing code: Core treeview interface, Core treeview code

-

References: plotters interface, textarea widget code

- -

Native Windows or Mac OS X port

-

NetSurf currently has user-interface layers for several systems including RISC OS, GTK (on Linux, FreeBSD, etc.), AmigaOS and BeOS. The GTK interface works on Windows or Mac OS X, but a native interface for these systems would give a better experience.

-

The existing front end implementations can be used as examples. Of these, the framebuffer front end is very self contained and the debug front end is the most minimal. For the rendering of NetSurf's content area, a set of plotters needs to be implemented for drawing primitives such as rectangles, plotting bitmaps and text.

-

Skills required: C, Windows UI development or Mac OS X UI development

-

Difficulty: Medium

-

Existing code: Declarations of functions that each interface must implement, plotters interface, RISC OS specific code, GTK specific code, BeOS specific code, AmigaOS specific code, framebuffer specific code

-

References:

- -

Improved GTK front end

-

NetSurf's GTK front end is fairly usable at present, but would benefit from enhancement.

-

Outstanding functionality includes:

- -

Skills required: C, GTK

-

Difficulty: Easy – Medium

-

Existing code: GTK specific code

-

References:

- -

Improved Haiku/BeOS front end

-

NetSurf's BeOS frontend is reasonably usable, but would benefit from some enhancement.

-

Outstanding functionality includes:

- -
-

Note: Any student interested in working on this front end should apply to both the NetSurf and Haiku organisations. The developer who would mentor this project is also a mentor for the Haiku organisation.

-
-

Skills required: C++, BeOS/Haiku UI toolkits

-

Difficulty: Easy – Medium

-

Existing code: BeOS specific code

-

References: Haiku organisation ideas

- -

Improved RISC OS front end

-

NetSurf's RISC OS front end is the most feature complete. There are various ways in which it could be improved. These include:

- -

Skills required: C, RISC OS Wimp programming using OSLib

-

Difficulty: Medium

-

Existing code: RISC OS specific code

-

References: OSLib

- - - -
- - -
- -
- - - diff --git a/developers/gsoc/2009ideas.html b/developers/gsoc/2009ideas.html new file mode 100644 index 0000000..af111a9 --- /dev/null +++ b/developers/gsoc/2009ideas.html @@ -0,0 +1,282 @@ + + + +NetSurf | Google Summer of Code 2009 Ideas + + + + + + + + +
+ + + +

Google Summer of Code Ideas

+ +

This page lists our project ideas for Google Summer of Code 2009.

+ +
+
Before applying for a project
+
+
    +
  • Join our IRC channel #netsurf on Freenode and introduce yourself. Also, subscribe to the developer mailing list.
  • +
  • Have access to a computer with supported OS (RISC OS, Linux, FreeBSD, BeOS, AmigaOS etc) or an OS relevant for the project you want to apply for (Windows, Mac OS).
  • +
  • Get up to speed with Git, as we use this for source control, and get the NetSurf source code.
  • +
  • Build NetSurf and enjoy using it. (Ask if you need help.)
  • +
  • Get familiarised with the source code – read the code documentation.
  • +
  • Consider submitting a patch to fix an issue on our bug tracker or feature request tracker
  • +
+
+
When applying for a project
+
+
    +
  • Tell us about yourself, your experience, and why you want to work with us.
  • +
  • Describe the project you want to do, and how you plan to go about doing it. Do not simply copy the project description from the ideas page.
  • +
  • Create a set of project milestones (ranging from a couple to maximum 10) with expected completion dates. This will be useful for you as guidance and for us to set our expectations right.
  • +
  • Describe how you will test your contributions.
  • +
  • Include your IRC nick in your application if you've spoken with us on #netsurf, so that we recognise you. We strongly recommend that you communicate with us before submitting an application.
  • +
  • We expect GSoC to be mostly equivalent to a full-time job. Therefore, please tell us if you have any other demands on your time.
  • +
+
+
During the project
+
+
    +
  • Most of NetSurf team communication happens via #netsurf IRC during evenings and nights (CET). We expect you to join in on a regular basis for help, discussions and project updates. Note that you're not restricted to speaking to your assigned mentor; the whole development team are willing to help wherever they can.
  • +
  • When improving NetSurf's layout engine, be able to create test cases and verify that existing test cases don't get broken.
  • +
  • Keep NetSurf's project goals in mind, especially the first point.
  • +
+
+
+ +

There is some more information in the GSoC section of our wiki. Note particularly the student guidelines.

+ +

Please get in touch if any of these ideas appeal to you or if you have your own idea for either NetSurf or one of NetSurf's sub-projects. Come and chat to the developers in the NetSurf IRC channel or post to the developer mailing list.

+ +

All these ideas require knowledge of C, as NetSurf is entirely written in C.

+ +

See the Feature Requests tracker for more ideas.

+ +

Keyboard navigation

+

The browser currently requires a mouse to use. Keyboard shortcuts would move between and activate links, inputs, etc. The document structure is stored in a tree, and algorithms for walking through the tree to find the next link or input would need to be developed. A further improvement would be to take layout position into account and implement moving in 2D.

+

Skills required: C, HTML, CSS, usability

+

Difficulty: Easy

+

Existing code: Key press handling, Box tree structures

+

References:

+ +

Page reader

+

The web is a vast resource of information and services. Traditional browsers enable its access for people who can see. NetSurf attempts to help partially sighted users with a sophisticated scaling / zoom feature, however it could be improved further with a page reading option. Speech synthesis could be used to render pages as spoken output.

+

There are already several libraries for speech synthesis. This project would first involve enabling NetSurf to speak the textual content of a page. Further work would improve the usability of the system by consideration for such factors as:

+ +

Skills required: C, accessibility

+

Difficulty: Medium – Hard

+

Existing code:

+

References: eSpeak text to speech synthesizer

+ +

LibDOM

+

LibDOM is an implementation of the W3C DOM. It currently implements a large proportion of DOM Level 3 Core. It is a work in progress and requires a fairly large number of fixes and additions before it can be integrated into NetSurf. Note that the scope of this project is quite large. We expect you to prioritise the parts you intend to implement.

+
+

Things that need doing include:

+
    +
  • +

    Use vtables rather than known function names + switching on node type

    +

    A vtable is a structure containing function pointers. Each node type will populate the vtable with the appropriate functions. These may then be called by any client without the client needing to know what the node type is.

    +
  • +
  • +

    Implement the rest of DOM 3/2/1/0, primarily:

    +
      +
    • Events
    • +
    • HTML
    • +
    • Other DOM modules
    • +
    +
  • +
  • +

    Test suite

    +

    The W3C provide a test suite for DOM implementations. It is stored in an XML format and currently, has transformations from this format to Java and JavaScript source code. Ideally, a transformation into C source code will be written so that LibDOM may be tested automatically.

    +
  • +
  • +

    Integration with NetSurf

    +
  • +
+
+

Skills required: C, DOM, XSLT (for the test suite)

+

Difficulty: Medium – Hard

+

Existing code: LibDOM sources

+

References: DOM specifications

+ +

Layout engine improvements

+

The layout engine forms part of the core of the browser. It is responsible for calculating the position of each part of the page. It currently has a number of deficiencies which should be addressed. These include the following parts of the CSS specification:

+ +

There are also other layout issues which could be tackled. For example in table layout some CSS properties, like height, are not handled for table rows.

+

Skills required: C, HTML, CSS

+

Difficulty: Medium – Hard

+

Existing code: layout engine, rendering code

+

References: CSS 2.1 specification, CSS 2.1 property index

+ +

Automated layout test engine

+

When NetSurf's layout engine is modified there is a risk that the change may break other pages. When problems are found, we create test cases which demonstrate the problem and keep them as regression tests once the issue is fixed. Currently, it takes quite a lot of manual effort to test NetSurf against all these test pages manually.

+
+

This project will create a tool for automatically testing NetSurf's layout engine for regressions. There are three components that will make up the completed project:

+
+
Minimal test front end
+
+

The first task will be to write the code necessary to call NetSurf's core engine to fetch a page, perform layout on it and dump the page's box tree. The box dump specifies the x/y coordinates, width and height of every box in the render tree, as well as other pertinent information.

+

This will involve the implementation of a simple test "front end". Unlike the GTK, RISC OS or BeOS, etc front ends, it is not to be a usable web browser, but a command line tool. The minimal debug and framebuffer front ends can be used as example code.

+
+
A defined test data format
+
+

The existing test data is fine for manual testing. However, for automated testing to work, there needs to be some ground truthed comparison data for each test input. There also needs to be a way of determining which comparison data is associated with which test.

+

To ensure that the test front end is working correctly, some amount of test input and comparison data will need to be created. The existing test suite can be used as a starting point for this.

+
+
A test runner
+
+

This can be some kind of script that runs the NetSurf test code for each page in the test suite and compares the box dump NetSurf produces with the expected data. It can output the test name and then PASS or FAIL.

+
+
+
+

Skills required: C, HTML, CSS, scripting

+

Difficulty: Medium

+

Existing code: existing test case repository, box dump code – box_dump() (note that this is extremely verbose and contains much data that is of little use in automated testing), debug front end, framebuffer front end

+

References:

+ +

Core UI enhancements

+

So that NetSurf can draw pages on different platforms, there is an interface between the core cross-platform code and the front end UI code that abstracts plotting. This interface is used to plot everything within the browser's content area.

+

There are parts of NetSurf's user interface which are common across platforms. However, each platform frontend has to implement these separately. This results in unnecessary duplication of functionality. Therefore, it would be good to move support for some of the common widgets into the core and draw them using the same plotting interface as used for the content area.

+

Initially, this will require:

+ +

Further to the above, the way NetSurf's core implements HTML frames is not particularly portable. This could be addressed as an extension.

+

Skills required: C, Usability

+

Difficulty: Easy – Medium

+

Existing code: Core treeview interface, Core treeview code

+

References: plotters interface, textarea widget code

+ +

Native Windows or Mac OS X port

+

NetSurf currently has user-interface layers for several systems including RISC OS, GTK (on Linux, FreeBSD, etc.), AmigaOS and BeOS. The GTK interface works on Windows or Mac OS X, but a native interface for these systems would give a better experience.

+

The existing front end implementations can be used as examples. Of these, the framebuffer front end is very self contained and the debug front end is the most minimal. For the rendering of NetSurf's content area, a set of plotters needs to be implemented for drawing primitives such as rectangles, plotting bitmaps and text.

+

Skills required: C, Windows UI development or Mac OS X UI development

+

Difficulty: Medium

+

Existing code: Declarations of functions that each interface must implement, plotters interface, RISC OS specific code, GTK specific code, BeOS specific code, AmigaOS specific code, framebuffer specific code

+

References:

+ +

Improved GTK front end

+

NetSurf's GTK front end is fairly usable at present, but would benefit from enhancement.

+

Outstanding functionality includes:

+ +

Skills required: C, GTK

+

Difficulty: Easy – Medium

+

Existing code: GTK specific code

+

References:

+ +

Improved Haiku/BeOS front end

+

NetSurf's BeOS frontend is reasonably usable, but would benefit from some enhancement.

+

Outstanding functionality includes:

+ +
+

Note: Any student interested in working on this front end should apply to both the NetSurf and Haiku organisations. The developer who would mentor this project is also a mentor for the Haiku organisation.

+
+

Skills required: C++, BeOS/Haiku UI toolkits

+

Difficulty: Easy – Medium

+

Existing code: BeOS specific code

+

References: Haiku organisation ideas

+ +

Improved RISC OS front end

+

NetSurf's RISC OS front end is the most feature complete. There are various ways in which it could be improved. These include:

+ +

Skills required: C, RISC OS Wimp programming using OSLib

+

Difficulty: Medium

+

Existing code: RISC OS specific code

+

References: OSLib

+ + + +
+ + +
+ +
+ + + diff --git a/developers/gsoc/2014ideas.en b/developers/gsoc/2014ideas.en deleted file mode 100644 index 6c00640..0000000 --- a/developers/gsoc/2014ideas.en +++ /dev/null @@ -1,173 +0,0 @@ - - - -NetSurf | Google Summer of Code 2014 Ideas - - - - - - - - -
- - - -

Google Summer of Code Ideas

- -

This page lists our project ideas for Google Summer of Code 2014.

- -
-
Before applying for a project
-
- -
-
When applying for a project
-
-
    -
  • Include your IRC nick in your application, so that we recognise you. We strongly recommend that you communicate with us on #netsurf before submitting an application.
  • -
  • Tell us about yourself, your experience, and why you want to work with us.
  • -
  • Describe the project you want to do, and how you plan to go about doing it. Do not simply copy the project description from the ideas page.
  • -
  • Create a set of project milestones (ranging from a couple to maximum 10) with expected completion dates. This will be useful for you as guidance and for us to set our expectations right.
  • -
  • Describe how you will test your contributions.
  • -
  • We expect GSoC to be mostly equivalent to a full-time job. Therefore, please tell us if you have any other demands on your time.
  • -
-
-
During the project
-
-
    -
  • Most of NetSurf team communication happens via #netsurf IRC during evenings and nights (CET). We expect you to join in on a regular basis for help, discussions and project updates. Note that you're not restricted to speaking to your assigned mentor; the whole development team are willing to help wherever they can.
  • -
  • Keep NetSurf's project goals in mind, especially the first point.
  • -
-
-
- -

There is some more information in the GSoC section of our wiki. Note particularly the student guidelines.

- -

Please get in touch our project idea appeals to you or if you have your own idea for either NetSurf or one of NetSurf's libraries. Come and chat to the developers in the NetSurf IRC channel or post to the developer mailing list.

- -

Update Core Web Technology Libraries

-

This is a project to improve and add features to the NetSurf project's core web-technology libraries. These libraries are MIT licenced and are available to, and used by, other projects. The libraries in question are:

- -

Note that this is a single project, and both phases are part of it.

-

Project Outline

-

Phase 1

-
-
LibDOM: Implement missing specialisations of HTMLElement
-
-

HTMLElement is the base class for representing HTML elements in the DOM. It contains the common data which applies to all HTML elements. Most elements, however, contain additional data or have specialised data processing requirements (for example, a Form element has an action attribute). These elements are represented in the DOM by specialised subclasses of HTMLElement.

-

In the LibDOM implementation, many of these specialised subclasses have not been implemented. This means that many elements are still represented by the base HTMLElement class and the specialised data and behaviours are not available.

-

The task in this phase, then, is to identify the missing/unimplemented HTMLElement specialisations in the LibDOM source tree, and provide implementations for them. The DOM Level2 specification defines the expected attributes and behaviours of the HTMLElement subclasses and should be used as a reference for the implementation.

-

We consider this task to be fairly easy to complete. The number of missing specialisations is quite large, so do not be surprised if it takes longer than expected! We do not expect this phase to fill an entire summer, however.

-

Expected outcome: a complete implementation of the HTMLElement DOM classes, which enable the HTMLElement tests in the LibDOM testsuite to pass.

-
-

Existing code: libdom/src/html.
Specification: Level 2 Document Object Model HTML, DOM Standard

- -
-

Phase 2

-

Either one of the following options. We expect the decision on the direction of this phase to be made by the student and mentors, depending upon the interests of the student, the ability demonstrated in completing Phase 1, and the time remaining. We do not anticipate that there will be time for a student to complete both items listed here, but the work is there if a gifted student makes good progress.

-
-
LibHubbub: Update to match current specification
-
-

LibHubbub is the NetSurf project's HTML parser. It is designed to implement the HTML5 parsing algorithm.

-

The current implementation of LibHubbub, however, is out-of-date with respect to the specification. This means that the DOM tree produced by parsing an HTML document using LibHubbub is not equivalent to that produced by a fully-conformant HTML5 parser.

-

This task involves identifying the differences between the behaviour implemented in LibHubbub and the expected behaviour defined by the specification. Once these differences have been identified, the implementation in LibHubbub should be brought in line with the specification.

-

We expect this task to require a great deal of attention to detail. The initial stage of identifying the places where LibHubbub's implementation does not match the specification is crucial to the success of this task.

-

Expected outcome: a detailed summary of the deficiencies in the LibHubbub implementation and a decent amount of progress towards rectifying them, with passing tests in the testsuite.

-

Existing code: libhubbub/src
Specification: HTML5 Parsing

-
-
LibCSS: add support for CSS 3 properties
-
-

LibCSS is the NetSurf project's CSS parser and style selection engine. It currently has support for parsing and selecting:

-
    -
  • CSS 2.1
  • -
  • CSS 3 Namespaces
  • -
  • CSS 3 Selectors
  • -
  • CSS 3 Color
  • -
  • CSS 3 Multi-column Layout (parsing only)
  • -
  • CSS 3 Writing Modes (writing-mode property only)
  • -
-

This task involves adding support for parsing and selecting properties defined in other CSS 3 module specifications. As CSS 3 is comprised of a very broad suite of components, the precise selection of which modules to target will be decided as part of the task definition with the student.

-

Expected outcome: a decision about which CSS 3 component modules to implement; an implementation of the relevant property parsing and selection rules, along with passing test cases for the LibCSS testsuite.

-

Existing code: libcss/src
Specification: CSS Specs

- -
-

Skills required: Experience of the C programming language
Skills desirable: HTML, DOM, CSS - -

Mentors

- -

For mentors we have five of NetSurf's core developers:

- - - - - -
- - -
- -
- - - diff --git a/developers/gsoc/2014ideas.html b/developers/gsoc/2014ideas.html new file mode 100644 index 0000000..6c00640 --- /dev/null +++ b/developers/gsoc/2014ideas.html @@ -0,0 +1,173 @@ + + + +NetSurf | Google Summer of Code 2014 Ideas + + + + + + + + +
+ + + +

Google Summer of Code Ideas

+ +

This page lists our project ideas for Google Summer of Code 2014.

+ +
+
Before applying for a project
+
+ +
+
When applying for a project
+
+
    +
  • Include your IRC nick in your application, so that we recognise you. We strongly recommend that you communicate with us on #netsurf before submitting an application.
  • +
  • Tell us about yourself, your experience, and why you want to work with us.
  • +
  • Describe the project you want to do, and how you plan to go about doing it. Do not simply copy the project description from the ideas page.
  • +
  • Create a set of project milestones (ranging from a couple to maximum 10) with expected completion dates. This will be useful for you as guidance and for us to set our expectations right.
  • +
  • Describe how you will test your contributions.
  • +
  • We expect GSoC to be mostly equivalent to a full-time job. Therefore, please tell us if you have any other demands on your time.
  • +
+
+
During the project
+
+
    +
  • Most of NetSurf team communication happens via #netsurf IRC during evenings and nights (CET). We expect you to join in on a regular basis for help, discussions and project updates. Note that you're not restricted to speaking to your assigned mentor; the whole development team are willing to help wherever they can.
  • +
  • Keep NetSurf's project goals in mind, especially the first point.
  • +
+
+
+ +

There is some more information in the GSoC section of our wiki. Note particularly the student guidelines.

+ +

Please get in touch our project idea appeals to you or if you have your own idea for either NetSurf or one of NetSurf's libraries. Come and chat to the developers in the NetSurf IRC channel or post to the developer mailing list.

+ +

Update Core Web Technology Libraries

+

This is a project to improve and add features to the NetSurf project's core web-technology libraries. These libraries are MIT licenced and are available to, and used by, other projects. The libraries in question are:

+ +

Note that this is a single project, and both phases are part of it.

+

Project Outline

+

Phase 1

+
+
LibDOM: Implement missing specialisations of HTMLElement
+
+

HTMLElement is the base class for representing HTML elements in the DOM. It contains the common data which applies to all HTML elements. Most elements, however, contain additional data or have specialised data processing requirements (for example, a Form element has an action attribute). These elements are represented in the DOM by specialised subclasses of HTMLElement.

+

In the LibDOM implementation, many of these specialised subclasses have not been implemented. This means that many elements are still represented by the base HTMLElement class and the specialised data and behaviours are not available.

+

The task in this phase, then, is to identify the missing/unimplemented HTMLElement specialisations in the LibDOM source tree, and provide implementations for them. The DOM Level2 specification defines the expected attributes and behaviours of the HTMLElement subclasses and should be used as a reference for the implementation.

+

We consider this task to be fairly easy to complete. The number of missing specialisations is quite large, so do not be surprised if it takes longer than expected! We do not expect this phase to fill an entire summer, however.

+

Expected outcome: a complete implementation of the HTMLElement DOM classes, which enable the HTMLElement tests in the LibDOM testsuite to pass.

+
+

Existing code: libdom/src/html.
Specification: Level 2 Document Object Model HTML, DOM Standard

+ +
+

Phase 2

+

Either one of the following options. We expect the decision on the direction of this phase to be made by the student and mentors, depending upon the interests of the student, the ability demonstrated in completing Phase 1, and the time remaining. We do not anticipate that there will be time for a student to complete both items listed here, but the work is there if a gifted student makes good progress.

+
+
LibHubbub: Update to match current specification
+
+

LibHubbub is the NetSurf project's HTML parser. It is designed to implement the HTML5 parsing algorithm.

+

The current implementation of LibHubbub, however, is out-of-date with respect to the specification. This means that the DOM tree produced by parsing an HTML document using LibHubbub is not equivalent to that produced by a fully-conformant HTML5 parser.

+

This task involves identifying the differences between the behaviour implemented in LibHubbub and the expected behaviour defined by the specification. Once these differences have been identified, the implementation in LibHubbub should be brought in line with the specification.

+

We expect this task to require a great deal of attention to detail. The initial stage of identifying the places where LibHubbub's implementation does not match the specification is crucial to the success of this task.

+

Expected outcome: a detailed summary of the deficiencies in the LibHubbub implementation and a decent amount of progress towards rectifying them, with passing tests in the testsuite.

+

Existing code: libhubbub/src
Specification: HTML5 Parsing

+
+
LibCSS: add support for CSS 3 properties
+
+

LibCSS is the NetSurf project's CSS parser and style selection engine. It currently has support for parsing and selecting:

+
    +
  • CSS 2.1
  • +
  • CSS 3 Namespaces
  • +
  • CSS 3 Selectors
  • +
  • CSS 3 Color
  • +
  • CSS 3 Multi-column Layout (parsing only)
  • +
  • CSS 3 Writing Modes (writing-mode property only)
  • +
+

This task involves adding support for parsing and selecting properties defined in other CSS 3 module specifications. As CSS 3 is comprised of a very broad suite of components, the precise selection of which modules to target will be decided as part of the task definition with the student.

+

Expected outcome: a decision about which CSS 3 component modules to implement; an implementation of the relevant property parsing and selection rules, along with passing test cases for the LibCSS testsuite.

+

Existing code: libcss/src
Specification: CSS Specs

+ +
+

Skills required: Experience of the C programming language
Skills desirable: HTML, DOM, CSS + +

Mentors

+ +

For mentors we have five of NetSurf's core developers:

+ + + + + +
+ + +
+ +
+ + + diff --git a/developers/gsoc/index.en b/developers/gsoc/index.en deleted file mode 100644 index 76725aa..0000000 --- a/developers/gsoc/index.en +++ /dev/null @@ -1,154 +0,0 @@ - - - -NetSurf | Google Summer of Code - - - - - - - - -
- - - -

Google Summer of Code

- -

Google Summer of Code 2014

- -

The NetSurf project has been accepted as a mentoring organisation for GSoC 2014. Any eligible students are encouraged to talk with us on IRC before submitting their application. Please have a look at our ideas list for details of the project we are proposing.

- -

Our previous involvement with Google Summer of Code is summarised here.

- -

Google Summer of Code 2009

- -

The NetSurf project was selected to participate in Google Summer of Code 2009 as a mentoring organisation. This year we are mentoring three students.

- -
-
Bo Yang
-
-
    -
  • Project: Add DOM support to NetSurf
  • -
  • Mentor: John-Mark Bell (jmb)
  • -
  • Details: Abstract
  • -
-
-
Paul Blokus
-
-
    -
  • Project: Core UI enhancements and keyboard navigation
  • -
  • Mentor: Michael Drake (tlsa)
  • -
  • Details: Abstract
  • -
-
-
Mark Benjamin
-
-
    -
  • Project: NetSurf GTK+ interface improvements
  • -
  • Mentor: Rob Kendrick (rjek)
  • -
  • Details: Abstract
  • -
-
-
- -

Our project ideas page for Google Summer of Code 2009 is still available.

- -

We ask students to keep NetSurf's project goals in mind, especially the first point. We also ask them to communicate with the developers as much as possible. More information for students is available on the development wiki.

- -

Google Summer of Code 2008

- -

NetSurf participated as a mentoring organisation in Google Summer of Code 2008. We ran four projects which are listed below.

- -
-
Adam Blokus
-
-
    -
  • Project: PDF Plotter and printing improvements
  • -
  • Mentor: John Tytgat (joty)
  • -
  • Details: Abstract, Introduction
  • -
-
-
Sean Fox
-
-
    -
  • Project: Abstract the Core Functionality to Stand-alone Libraries
  • -
  • Mentor: James Bursa (zamez)
  • -
  • Details: Abstract
  • -
-
-
Michael Lester
-
- -
-
Andrew Sidwell
-
-
    -
  • Project: Work on and integrate Hubbub
  • -
  • Mentor: John-Mark Bell (jmb)
  • -
  • Details: Abstract, Introduction
  • -
-
-
- -

Our 2008 GSoC ideas page is still available.

- - - - -
- - -
- -
- - - diff --git a/developers/gsoc/index.html b/developers/gsoc/index.html new file mode 100644 index 0000000..76725aa --- /dev/null +++ b/developers/gsoc/index.html @@ -0,0 +1,154 @@ + + + +NetSurf | Google Summer of Code + + + + + + + + +
+ + + +

Google Summer of Code

+ +

Google Summer of Code 2014

+ +

The NetSurf project has been accepted as a mentoring organisation for GSoC 2014. Any eligible students are encouraged to talk with us on IRC before submitting their application. Please have a look at our ideas list for details of the project we are proposing.

+ +

Our previous involvement with Google Summer of Code is summarised here.

+ +

Google Summer of Code 2009

+ +

The NetSurf project was selected to participate in Google Summer of Code 2009 as a mentoring organisation. This year we are mentoring three students.

+ +
+
Bo Yang
+
+
    +
  • Project: Add DOM support to NetSurf
  • +
  • Mentor: John-Mark Bell (jmb)
  • +
  • Details: Abstract
  • +
+
+
Paul Blokus
+
+
    +
  • Project: Core UI enhancements and keyboard navigation
  • +
  • Mentor: Michael Drake (tlsa)
  • +
  • Details: Abstract
  • +
+
+
Mark Benjamin
+
+
    +
  • Project: NetSurf GTK+ interface improvements
  • +
  • Mentor: Rob Kendrick (rjek)
  • +
  • Details: Abstract
  • +
+
+
+ +

Our project ideas page for Google Summer of Code 2009 is still available.

+ +

We ask students to keep NetSurf's project goals in mind, especially the first point. We also ask them to communicate with the developers as much as possible. More information for students is available on the development wiki.

+ +

Google Summer of Code 2008

+ +

NetSurf participated as a mentoring organisation in Google Summer of Code 2008. We ran four projects which are listed below.

+ +
+
Adam Blokus
+
+
    +
  • Project: PDF Plotter and printing improvements
  • +
  • Mentor: John Tytgat (joty)
  • +
  • Details: Abstract, Introduction
  • +
+
+
Sean Fox
+
+
    +
  • Project: Abstract the Core Functionality to Stand-alone Libraries
  • +
  • Mentor: James Bursa (zamez)
  • +
  • Details: Abstract
  • +
+
+
Michael Lester
+
+ +
+
Andrew Sidwell
+
+
    +
  • Project: Work on and integrate Hubbub
  • +
  • Mentor: John-Mark Bell (jmb)
  • +
  • Details: Abstract, Introduction
  • +
+
+
+ +

Our 2008 GSoC ideas page is still available.

+ + + + +
+ + +
+ +
+ + + diff --git a/developers/index.en b/developers/index.en deleted file mode 100644 index 6b6f0f5..0000000 --- a/developers/index.en +++ /dev/null @@ -1,153 +0,0 @@ - - - -NetSurf | Developers and Contributors - - - - - - - - - -
- - - -

Developer and Contributor Area

- -

People ask us how they can help the NetSurf project. This section of the site is here to help people contribute to the project. You should be able to find all you need here. If not, please contact us!

- -
- -

Contributing to NetSurf

- -

Everyone is very welcome to help NetSurf! There are all sorts of ways to contribute to the project.

- -
-
Publicity
-
Help spread the word! NetSurf needs user, contributor and developer participation to stay vibrant.
-
Provide feedback
-
If you'd like to be involved in the future direction of NetSurf's development you can help by making feature requests and bug reports. Discussion of what you like and dislike about NetSurf is useful to the developers.
-
Non-programming contribution
-
If you'd like to contribute directly to the project but can't program, there are still many ways for you to participate. Details in the contribution guide.
-
Programming
-
If you can program then you are welcome to join the developers! If there's some aspect you'd like to improve, or feature you'd like to implement, contact us via the developer mailing list or on IRC and go from there. Also, see the instructions for submitting patches.
-
- -

Take a look at the contribution guide for more ideas and information.

- -

Run bleeding edge NetSurf

- -

The most important way though which NetSurf users can contribute to the NetSurf project is by regularly testing the current development builds and providing feedback.

- -

RISC OS users can download a precompiled test build, which can be installed and run in exactly the same way as NetSurf releases. Users of other platforms can obtain the latest source code and follow the simple compilation instructions.

- -

Once running the latest build you can browse the web as normal and let us know if you run into problems. Does the browser crash? Can you reproduce the crash? Did it crash at a specific site? What was the URL? Do you like the new features of the development build? How could NetSurf's interface be improved? These and more are the sorts of questions we're interested in your answers to. Our goal is to make NetSurf a piece of software everyone loves to use, and to do that we need your input!

- -

The NetSurf documentation contains guidelines for making feature requests and reporting bugs.

- -

Submitting patches

- -

If you've developed a patch for NetSurf you can send it to us by either:

- -
    -
  1. Putting it on the patch tracker.
  2. -
  3. Posting to the NetSurf Development mailing list and attaching the patch.
  4. -
  5. Giving the patch to one of the developers in the NetSurf IRC channel.
  6. -
- -

If it is a tiny patch, the third option is best. Otherwise use the first or second.

- -

Our pictorial Style Guide (single-page PDF) shows our code style.

- -

Porting NetSurf

- -

We are always interested to hear from people porting NetSurf to different hardware or operating systems. If you are keen to port NetSurf to a new platform please get in touch. NetSurf's developers are keen to ensure NetSurf is highly portable, so feedback is appreciated.

- -

We would be especially interested in hearing from anyone who could implement the NetSurf user interface under Windows.

- -
- -
-
- -

Getting NetSurf source code

- -

The source is kept in a Git repository. To check the latest source out use the command provided in the developer documentation.

- -

The recommended compilers are GCC or Clang. Guides to building NetSurf for various platforms are available in the source tree.

- -

It is also possible to browse the source online via the web interface.

- -

Contact the other developers

- -

If you want to contribute to NetSurf, the best thing to do is to get in touch with the developers. NetSurf's core development team communicate a great deal via IRC and also via the developer's mailing list.

- -

If you speak with the developers, you may find someone has already started what you intend to do or already put considerable thought into how to do it.

- -

General information

- -

We intend to make new major releases of NetSurf every year or so. These will happen when there are enough new features in the development versions to justify a new release. Prior to releases, addition of new features will be halted, and only bugfixes will occur. Major new releases will be made when NetSurf is sufficiently stable and the development version contains significant features that have not yet been released.

- -

The progress page gives an indication of the current status of NetSurf's features.

- -
-
- - - - - -
- - -
- -
- - - diff --git a/developers/index.html b/developers/index.html new file mode 100644 index 0000000..6b6f0f5 --- /dev/null +++ b/developers/index.html @@ -0,0 +1,153 @@ + + + +NetSurf | Developers and Contributors + + + + + + + + + +
+ + + +

Developer and Contributor Area

+ +

People ask us how they can help the NetSurf project. This section of the site is here to help people contribute to the project. You should be able to find all you need here. If not, please contact us!

+ +
+ +

Contributing to NetSurf

+ +

Everyone is very welcome to help NetSurf! There are all sorts of ways to contribute to the project.

+ +
+
Publicity
+
Help spread the word! NetSurf needs user, contributor and developer participation to stay vibrant.
+
Provide feedback
+
If you'd like to be involved in the future direction of NetSurf's development you can help by making feature requests and bug reports. Discussion of what you like and dislike about NetSurf is useful to the developers.
+
Non-programming contribution
+
If you'd like to contribute directly to the project but can't program, there are still many ways for you to participate. Details in the contribution guide.
+
Programming
+
If you can program then you are welcome to join the developers! If there's some aspect you'd like to improve, or feature you'd like to implement, contact us via the developer mailing list or on IRC and go from there. Also, see the instructions for submitting patches.
+
+ +

Take a look at the contribution guide for more ideas and information.

+ +

Run bleeding edge NetSurf

+ +

The most important way though which NetSurf users can contribute to the NetSurf project is by regularly testing the current development builds and providing feedback.

+ +

RISC OS users can download a precompiled test build, which can be installed and run in exactly the same way as NetSurf releases. Users of other platforms can obtain the latest source code and follow the simple compilation instructions.

+ +

Once running the latest build you can browse the web as normal and let us know if you run into problems. Does the browser crash? Can you reproduce the crash? Did it crash at a specific site? What was the URL? Do you like the new features of the development build? How could NetSurf's interface be improved? These and more are the sorts of questions we're interested in your answers to. Our goal is to make NetSurf a piece of software everyone loves to use, and to do that we need your input!

+ +

The NetSurf documentation contains guidelines for making feature requests and reporting bugs.

+ +

Submitting patches

+ +

If you've developed a patch for NetSurf you can send it to us by either:

+ +
    +
  1. Putting it on the patch tracker.
  2. +
  3. Posting to the NetSurf Development mailing list and attaching the patch.
  4. +
  5. Giving the patch to one of the developers in the NetSurf IRC channel.
  6. +
+ +

If it is a tiny patch, the third option is best. Otherwise use the first or second.

+ +

Our pictorial Style Guide (single-page PDF) shows our code style.

+ +

Porting NetSurf

+ +

We are always interested to hear from people porting NetSurf to different hardware or operating systems. If you are keen to port NetSurf to a new platform please get in touch. NetSurf's developers are keen to ensure NetSurf is highly portable, so feedback is appreciated.

+ +

We would be especially interested in hearing from anyone who could implement the NetSurf user interface under Windows.

+ +
+ +
+
+ +

Getting NetSurf source code

+ +

The source is kept in a Git repository. To check the latest source out use the command provided in the developer documentation.

+ +

The recommended compilers are GCC or Clang. Guides to building NetSurf for various platforms are available in the source tree.

+ +

It is also possible to browse the source online via the web interface.

+ +

Contact the other developers

+ +

If you want to contribute to NetSurf, the best thing to do is to get in touch with the developers. NetSurf's core development team communicate a great deal via IRC and also via the developer's mailing list.

+ +

If you speak with the developers, you may find someone has already started what you intend to do or already put considerable thought into how to do it.

+ +

General information

+ +

We intend to make new major releases of NetSurf every year or so. These will happen when there are enough new features in the development versions to justify a new release. Prior to releases, addition of new features will be halted, and only bugfixes will occur. Major new releases will be made when NetSurf is sufficiently stable and the development version contains significant features that have not yet been released.

+ +

The progress page gives an indication of the current status of NetSurf's features.

+ +
+
+ + + + + +
+ + +
+ +
+ + + diff --git a/developers/publicity.en b/developers/publicity.en deleted file mode 100644 index 3065824..0000000 --- a/developers/publicity.en +++ /dev/null @@ -1,103 +0,0 @@ - - - -NetSurf | Publicity - - - - - - - - - -
- - - -

Publicity

- -

There isn't much here yet, except the NetSurf logo image in vector format.

- -
-
Full NetSurf logo
-
- -
-
NetSurf emblem (no text)
-
- -
-
- -

More coming soon.

- -

Web buttons

- -

Web banners

- -

Magazine adverts

- - - - - - - -
- - -
- -
- - - diff --git a/developers/publicity.html b/developers/publicity.html new file mode 100644 index 0000000..3065824 --- /dev/null +++ b/developers/publicity.html @@ -0,0 +1,103 @@ + + + +NetSurf | Publicity + + + + + + + + + +
+ + + +

Publicity

+ +

There isn't much here yet, except the NetSurf logo image in vector format.

+ +
+
Full NetSurf logo
+
+ +
+
NetSurf emblem (no text)
+
+ +
+
+ +

More coming soon.

+ +

Web buttons

+ +

Web banners

+ +

Magazine adverts

+ + + + + + + +
+ + +
+ +
+ + + -- cgit v1.2.3