Tuesday, April 22, 2008

I've been accepted!


Benefits to the Community

Improving the GTK interface of the NetSurf browser will bring its low footprint and high speed capabilities to a larger, more diverse community; this will help to fulfill Netsurf's goal of Portability. Since there are currently no other fully functional, small-footprint browsers available for GNOME, and because NetSurf was previously only available for RISC OS based systems, this project will open the door for many more users to join the NetSurf community. This project also aims to fulfill another of NetSurf's goals, that of a Superior User Experience. Combining the tried and tested GNOME interface with NetSurf will provide the perfect mix of usability and speed. Improving upon nsgtk will ensure that any GNOME user who adopts NetSurf will find it completely usable and consistent with the rest of his (or her) desktop environment.

Deliverables Summary

* Improved GTK UI that is completely GNOME standards compliant
* Fully functional browser for *nix based systems (and BSD)

Motivation

Perhaps the most important component of a GSoC project is the students motivation to complete it. I know that this will not be an issue because having already met and talked with most of the development team, I am already very excited to contribute to the NetSurf project. UI development has always interested me, and I look forward to applying the knowledge I gained from my recent reading of Andrew Krause's “Foundations of GTK+ Development”. Furthermore, I will be perpetually motivated by the fact that I myself have also been looking for a less resource intensive browser, so in a way I am working on NetSurf GTK for myself. (Which anyone can tell you is almost always the best motivation).

Project Details

My first goal is to bring NetSurf GTK up to the standards detailed in the GNOME Human Interface Guidelines 2.0 [1]. Next I plan on implementing all (or most) of the features required for nsgtk to be considered fully functional. Any remaining time will be spent improving the UI and adding extra features such as tabs and customizable toolbars.

A more specific outline is detailed here:

* Various GUI Fixes
Fix the about and preferences dialogs to comply with Gnome Interface Guidelines[1]. Provide options to show toolbar buttons as text, graphics or both. Also provide an option to return all toolbars to the control center default for this setting. Fix right click menu so that it displays only the most often used actions (But if the menu bar is disabled it will remain the same as it is now). For accessibility purposes, make sure every toolbar action has an equivalent menu item.

* Text Selection and “Find” toolbar (Early June)
Implement the text selection functionality from the core code. Add ability to copy/cut/paste selected text. Add find ability via toolbar, with live search (if its not too expensive), similar to Firefox.

* Downloads Capability (Late June)
Implement downloads using the current “mock-up” design. Once working, redesign downloads dialog perhaps using the Transmission torrent client as inspiration.

* Bookmarks (Early July)
Implement by using folders and tree view. Add “Bookmarks” menu and create “Edit Bookmarks” and “Add Bookmark” dialogs. If enough time remains, reorganize using tags (similar to Epiphany) or investigate other ways of bookmark organization.

* Save/Export (Mid July)
Save page as index file with CSS, Java, and images. Export as text, HTML, and PDF (among other formats). This will most likely involve rewriting the GTK plotters to rely entirely on Cairo rather than GDK, which will present the most elegant solution as Cairo can plot to SVG and PDF easily.

* Simple Printing (Late July)
Setup a working printing dialog that is able to print both the full page or text only. Attempt to add more advanced options such as “Print background images/colors” and selection-only printing.

* More GUI features (Remaining Time / Post GSoC)
Tabbed browsing is an often requested feature and should not take long to implement. Add extra functionality to the location entry by making it double as a bookmark/web search. For instance, if one enters “burgers” as the location, it should first check if it is the name of a bookmark, but if not then query DNS (as usual, to check for local hostnames), but if nothing is returned query the default search engine (to be specified in preferences). Implementing customizable toolbars will open the door to other features like a bookmarks toolbar. I would also like to add a contextual right-click menu (right clicking on an image gives the option to "Save Image As"). If no one else picks up the project, Keyboard Navigation (mostly tabbing between forms) is a definite (but perhaps optimistic) goal.

By the end of the summer I will deliver a fully functional and desktop standards compliant browser.

Project Schedule

I will be maintaining a daily log of my activity, not only what additions and fixes I make, but also what I learn and the problems I'm having. This will help me keep clear track of my goals as well as allow my mentor to know exactly where I am in the process.

Biography

I will be (most likely) attending Purdue university next year to pursue my undergraduate degree in Computer Science. I discovered Linux when I was 14 and began programming in C that same year during a summer program at Vanderbilt University. My first chance to contribute to the open-source community which had fostered my curiosity all throughout high school came this past winter with the advent of GHOPC, the Google Highly Open Participation Contest. During GHOPC I worked under the GNOME Project to develop several patches for programs such as gThumb. I concluded the program with a new appreciation for what open-source meant, as I had never had anyone that I was able to study programming/computer science under. Although while in high school my programming interests were centered mostly around games, I programmed a remake of Asteroids for my AP Java class which earned me AP computer science student of the year, I have lately become more interested in UI development, especially since my participation in GHOPC and my reading of “Foundations in GTK+ Development”. Since this winter I have been eagerly searching for an outlet to further develop my abilities.

Closing Note

Although I am young, I do not doubt my ability to complete this project and look forward instead to the vast amount of experience that it will afford me. One thing is for sure, gentlemen, my skills will pay the bills. I look forward to continuing my work with the most excellent community of NetSurf developers that I have come to know over the past few weeks. Thank you for your time, and I hope this application has earned your serious consideration.

Best regards,
Michael Lester

(It should also be noted that I do plan on continuing to work on nsgtk well after GSoC has ended)

Links to Further Information
[1] http://library.gnome.org/devel/hig-book/stable/

No comments: