Development:Summer of Code 2006:Proposal

From Camino Wiki
Jump to navigation Jump to search

You can view this page as a PDF document (original web version of this proposal)

Name: Desmond Elliott
Contact: d.elliott at sms dot ed dot ac dot uk
Title: Improvements to the Camino tabbed-browsing experience
Proposed Mentor: Mike Pinkterton
Note: This proposal has been edited slightly to attempt to protect e-mail addresses from being harvested and to remove the link to my CV which contains personal information.

Benefits to the Mozilla Community:

The Camino browser currently attempts to position itself as the safer, innovative, open-source alternative to Apple's Safari browser. Mozilla's software offerings have appealed to users for 2 reasons: they are built from the core to be as transparently secure as possible, and they provide a user experience that is innovative whilst retaining an achievable learning curve.

Draggable tabs have proven to be a desirable feature in both Colloquy and Adium; in Colloquy, draggable tabs make the IRC experience much more interactive than having static channel tabs. This is a feature that has been a filed bug for over four years. A request to extend this functionality to drag tabs between windows has been a filed bug for 6 months.

Closely related to the aforementioned is a filed bug relating to how to deal with tab overflow and a filed bug on an alternative way of dealing with tab overflowing. Although there is no working suggestion in place yet, it would be my proposal to implement the ticker-bar implementation as discussed in the bug discussion. This enhancement to Camino would further the innovative user experience that Mozilla products have commanded to date.

The Camino browser has no active tabbed-browsing developer, Geoff Beier - the previous developer - has ceased to continue to contribute to the project.

Project Details:

Jasper Hauser - the primary concept and visual designer for Camino's current tabbed browsing experience - has generously allowed me to use mock-up images that he produced whilst working with Geoff Beier to illustrate my proposal in further detail.

Tab overflow control:
A representation of how overflow handling might look.

The current system for overflow control is awkward and it has been proposed that tabs should have a fixed minimum size. When there are more tabs than the width of the browser, a pair of arrows at either side of the tab bar will allow the user to cycle through open tabs. The currently active tab would always be left-most for consistency. I plan to make the tab-bar 'circular' to allow wrap-around.

A representation of how a seperate window for overflow handling might look.

An alternative, or perhaps a co-existing approach, would be to implement control via a window that stores a list of tabs that are currently in use. This feature was requested at the MozillaZine Forums and the picture above was provided by the user who suggested it.

Tab dragging:
A representation of how tab dragging might be implemented.

This would be an entirely new feature for Camino. A user would use this to re-order open tabs according to their preferences. When a user clicks on a tab they are able to horizontally drag it to a new position. An extension to this feature is to allow users to 'tear' tabs out of a window and create a new window with them. This is a feature that Mozilla would be able to integrate into their range of browsers.

The Open Source Usability Group would prove to be an essential tool at this stage to help gauge how user-friendly the proposed implementations are. It would benefit the community to have independent analysis of the work I have undertaken to ensure that the new Camino tabbed-browsing experience is as innovative and user-friendly as it can be.

Project Schedule:

  • Weeks 1 - 2: Engage in further conversation with Japser Hauser to ask his thoughts or ideas with respect to my proposal. Become thoroughly familiar with how tabbed-windows are currently implemented in Camino and brush up on my Obj-C programming skills.
  • Week 3: Produce a plan of what needs to be done to implement the tab re-ordering implementation, the tab dragging implementation and the window pane for tabs so that my activities should be as transparent as possible to the community.
  • Weeks 4 - 8: Work on implementing tab re-ordering within a single window with the intention of committing significant progress at the end of every week. Assuming that progress allows, it would be ideal to be able to start on overflow control and the window pane for tabs.
  • Weeks 9 - 12: Start a series of OSUG tests to receive independent feedback concerning my implementation - ask for feedback from fellow developers too. Start the necessary work to allow users to drag tabs across browser windows.
    During these final 4 weeks I may take 4 days off to attend WWDC in California - I am currently being considered for a Student Scholarship.
  • Post-SoC: Continue to work with the Camino developers on any features and functions that I did not manage to implement.


I am a third year Computer Science student at Edinburgh University. This year I was involved in 3 major programming projects, 2 of which were group orientated. The System Design Project required me to work in a team to produce an automated mine clearing robot, where I was responsible for writing the A.I. control system. My dissertation topic is to solve the Sports Elimination Problem, you can find our more about my self-proposed project at

I have written coursework software for 3 years in Java - including a P2P filesharing system using the Chord protocol and software simulating the physics of evacuating a room. I also have 1 year of C experience which included modifying the Linux Kernel Scheduler and implementing the SSCOP protocol.

I would be delighted to be offered the opportunity to work with the Mozilla community to help it reach a wider range of users. I have already been in contact with the Camino development team through their IRC channel and they appear keen to see somebody work on these improvements to the tab system. I have already spoken with Jasper Hauser about how these improvements were originally envisaged, and he has told me that he shall be creating new mockups of what he thinks it should look like in the coming week. I always take a progressive, positive attitude to education and I believe that what I lack in experience I make up for in determination, enthusiasm, and willingness to learn. The prospect of learning new skills and working with a great team of people excites me.

Gillian Hayes, gmh at inf dot ed dot ac dot uk, my System Design Project Mentor has offered an Academic Reference should you wish an academic opinion of my suitability for this proposal.