Although much of Camino’s UI code is self-contained and abstracted from the underlying rendering engine, there are certain areas where the abstraction is incomplete or impossible (for instance, MainController and PreferenceManager both contain startup code that’s tied to Gecko’s startup and preferences APIs, as well as startup and general app-control code that’s independent of rendering engine). There may also be areas where the UI code may depend on the structure of the current abstraction code, which may have to change to account for differences between the Gecko and WebKit APIs.
As a result, we expect much of the UI code will be reuseable, but may still need small changes. The backend code/abstraction layer (much of which is contained in src/embedding, but some of which is in MainController, PreferenceManager, HistoryDataSource, and some of the classes in src/browser) will need to be rewritten in the whole or in part.
Camino 3’s alpha phase will start with the most basic of alphas, delivered when we can ship Camino that: browses the web, has tabs, has bookmarks (the current bookmark manager UI may not be 100% functional), interfaces with history (autocomplete hopefully, but likely doesn’t have a history manager), and has Camino icons in the toolbar.
The location bar will not need to be finished or include feed or security information to start. The location bar will likely be basic and may only pull from bookmarks (i.e., not include the entire algorithm we now use), though could pull from history as well. The search bar will not need to exist yet.
Steps to Alpha
- Disable (likely comment out) all Camino code except the minimum needed.
- It might be more expedient to create a series of temporary dummy files to bootstrap the dead-simple browser so that we know the structure required for a WebKit browser; then begin merging that code into existing Camino code (e.g., DummyMainController)
- Replace or modify src/embedding (as well as startup-related code in MainController and PreferenceManager) to use WebKit.
- Bootstrapped, dead-simple, pre-alpha browser with no features and no Camino look and feel, but built on top of some Camino code.
- Hook up basic UI (back, forward, reload, stop, location bar).
- If volunteer wishes to hook up search bar, it is likely not hard to do here, without the OpenSearch detection feature.
- Hook up basic history system using WebKit-provided interface.
- Hook up bookmark system using Camino method (unless we devise a new method).
- Hook up autocomplete in location bar using history and bookmarks (or just bookmarks for now).
- Hook up tabs system, possibly with a max tab limit to start.
"Basic" things likely missing:
- No import of old Camino data as of yet.
- No use of Keychain as of yet, unless it’s given for free by WebKit.
- No bookmark bar.
- Possibly/likely no status bar.
- Limited preferences UI (no cookies, pop-ups, certificates, etc.)