summaryrefslogtreecommitdiff
path: root/gsoc_2014_ideas.mdwn
blob: d2c0e673dee84580e8ddf8f7f94cececcd0c1503 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
[[!meta title="GSoC 2014 Ideas"]]
[[!meta author="Tlsa"]]
[[!meta date="2014-02-14T15:04:04Z"]]


[[!toc]] This is the
[NetSurf](http://www.netsurf-browser.org/) project's ideas page for
Google Summer of Code 2014.

This page lists our project ideas for **[Google Summer of Code
2014](http://code.google.com/soc/)**.

General Information
-------------------

### Before applying for a project

-   Join our IRC channel `#netsurf` on [Freenode](http://freenode.net/)
    and introduce yourself. Also, subscribe to the [developer mailing
    list](http://www.netsurf-browser.org/lists/netsurf-dev).
-   Get up to speed with
    [Git](http://wiki.netsurf-browser.org/Documentation/GettingCoding),
    as we use this for source control, and get the NetSurf [source
    code](http://www.netsurf-browser.org/documentation/develop#SourceControl).
-   [Build
    NetSurf](http://www.netsurf-browser.org/documentation/develop#Compiling)
    and enjoy using it. (Ask if you need help.)
-   Get familiarised with the source code – read the [source
    code](http://source.netsurf-browser.org/).
-   Consider submitting a patch to fix an issue on our [bug
    tracker](http://bugs.netsurf-browser.org/)

### 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](http://en.wikipedia.org/wiki/Central_European_Time)). 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](http://www.netsurf-browser.org/about/#ProjectGoals) in mind,
    especially the first point.

There is some more information in the [GSoC
section](http://wiki.netsurf-browser.org/google-summer-of-code) of our
wiki. Note particularly the [student
guidelines](http://wiki.netsurf-browser.org/gsoc-student-guidelines).

Please [get in touch](http://www.netsurf-browser.org/contact/) if our
project idea appeals to you or if you have your own idea for either
[NetSurf](http://www.netsurf-browser.org/) or one of NetSurf's
[sub-projects](http://www.netsurf-browser.org/projects/). Come and chat
to the developers in the NetSurf IRC channel or post to the developer
mailing list.

Project: Update Core Web Technology Libraries
---------------------------------------------

This is a project to improve and add features to the [NetSurf
project](http://www.netsurf-browser.org/)'s core web-technology
libraries. These libraries are MIT licenced and are available to, and
used by, other projects. The libraries in question are:

-   [LibHubbub](http://www.netsurf-browser.org/projects/hubbub/) - HTML5
    Parsing library
-   [LibCSS](http://www.netsurf-browser.org/projects/libcss/) - CSS
    Parser and Selection Engine
-   [LibDOM](http://www.netsurf-browser.org/projects/libdom/) - Document
    Object Model library

### Project Outline

-   Phase 1 (Easy)
    1.  Implement reamining LibDOM html element specialisations.
        **Existing code:**
        [libdom/src/html](http://git.netsurf-browser.org/libdom.git/tree/src/html)
        Some, like html\_button\_element.c have implementations, while
        most like html\_anchor\_element.c do not.  
        **Specification:** [Level 2 Document Object Model
        HTML](http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/idl-definitions.html)
-   Phase 2 (One of the following)
    1.  Bring Hubbub up to latest HTML5 spec. This involves comparing
        the current implementation with the specification and updating
        our implemenation where appropriate.
        **Existing code:**
        [libhubbub/src](http://git.netsurf-browser.org/libhubbub.git/tree/)  
        **Specification:** [HTML5
        Parsing](http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html)

    2.  Add CSS3 properties to LibCSS.
        **Existing code:**
        [libcss/src](http://git.netsurf-browser.org/libcss.git/tree/src)  
        **Specification:** [CSS
        Specs](http://www.w3.org/Style/CSS/specs.en.html)

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.

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