diff options
authorMichael Drake <>2014-02-14 19:40:20 +0000
committerMichael Drake <>2014-02-14 19:40:20 +0000
commit346b24a7a2de6e453dd484548e6c92cd20dad534 (patch)
parenta43162d86e5a3e9b99385cf00ba98f533fee0973 (diff)
Add details about project idea.
1 files changed, 37 insertions, 16 deletions
diff --git a/developers/gsoc/2014ideas.en b/developers/gsoc/2014ideas.en
index 85f3d02..c3fd353 100644
--- a/developers/gsoc/2014ideas.en
+++ b/developers/gsoc/2014ideas.en
@@ -59,6 +59,7 @@
<li>Join our IRC channel <code>#netsurf</code> on <a href="">Freenode</a> and introduce yourself. Also, subscribe to the <a href="">developer mailing list</a>.</li>
+<li>Ideally students will have a dialogue with us about what they intend to do, before they make their application.</li>
<li>Get up to speed with <a href="">Git</a>, as we use this for source control, and get the NetSurf <a href="">source code</a>.</li>
<li><a href="">Build NetSurf</a> and enjoy using it. (Ask on IRC if you need help.)</li>
<li>Get familiarised with the source code &ndash; read the <a href="">code documentation</a>.</li>
@@ -68,11 +69,11 @@
<dt>When applying for a project<dt>
+<li>Include your IRC nick in your application, so that we recognise you. <strong>We strongly recommend that you communicate with us on <code>#netsurf</code> before submitting an application.</strong></li>
<li>Tell us about yourself, your experience, and why you want to work with us.</li>
<li>Describe the project you want to do, and how you plan to go about doing it. <strong>Do not simply copy the project description from the ideas page.</strong></li>
<li>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.</li>
<li>Describe how you will test your contributions.</li>
-<li>Include your IRC nick in your application if you've spoken with us on <code>#netsurf</code>, so that we recognise you. <strong>We strongly recommend that you communicate with us before submitting an application.</strong></li>
<li>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.</li>
@@ -99,26 +100,46 @@
<h3>Project Outline</h3>
<h4>Phase 1</h4>
-<p>This should be fairly easy, although perhaps time consuming.</p>
-<p>Implement remaining LibDOM html element specialisations. Some element specialisations, like <a href="">html_button_element.c</a> have implementations, while most like <a href="">html_anchor_element.c</a> do not.</p>
+<dt>LibDOM: Implement missing specialisations of HTMLElement</dt>
+<p>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.</p>
+<p>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.</p>
+<p>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.</p>
+<p>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.</p>
+<p>Expected outcome: a complete implementation of the HTMLElement DOM classes, which enable the HTMLElement tests in the LibDOM testsuite to pass.</p>
<p><strong>Existing code:</strong> <a href="">libdom/src/html</a>.<br><strong>Specification:</strong> <a href="">Level 2 Document Object Model HTML</a>, <a href="">DOM Standard</a></p>
<h4>Phase 2</h4>
-<p>Either one of the following:</p>
-<p>Bring Hubbub up to latest HTML5 parsing spec. This involves comparing the current implementation with the specification and updating our implementation where appropriate.</p>
+<p>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.</p>
+<dt>LibHubbub: Update to match current specification</dt>
+<p>LibHubbub is the NetSurf project's HTML parser. It is designed to implement the HTML5 parsing algorithm.</p>
+<p>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.</p>
+<p>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.</p>
+<p>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.</p>
+<p>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.</p>
<p><strong>Existing code:</strong> <a href="">libhubbub/src</a><br><strong>Specification:</strong> <a href="">HTML5 Parsing</a></p>
-<p>Add CSS3 properties to LibCSS. There many CSS3 properties that are now in widespread use. Support for these can be added to LibCSS.</p>
+<dt>LibCSS: add support for CSS 3 properties</dt>
+<p>LibCSS is the NetSurf project's CSS parser and style selection engine. It currently has support for parsing and selecting:</p>
+<li>CSS 2.1</li>
+<li>CSS 3 Namespaces</li>
+<li>CSS 3 Selectors</li>
+<li>CSS 3 Color</li>
+<li>CSS 3 Multi-column Layout (parsing only)</li>
+<li>CSS 3 Writing Modes (writing-mode property only)</li>
+<p>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.</p>
+<p>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.</p>
<p><strong>Existing code:</strong> <a href="">libcss/src</a><br><strong>Specification:</strong> <a href="">CSS Specs</a></p>
-<p>The decision on Phase 2 will be made by the student and mentors, depending on the interests of the student, ability shown in Phase 1, and time remaining. It is not anticipated that there will be time for a student to do both items of Phase 2, however the work is there if a gifted student makes good progress.</p>
<p><strong>Skills required:</strong> Experience of the C programming language<br><strong>Skills desirable:</strong> HTML, DOM, CSS