Odysseus

12th December 2017 — Adrian Cochrane

Release Cleanup: Day 6

Today I scheduled towards cleaning up all of Odysseus’s “traits”. To my surprise they were all simple enough that they hardly needed tidying up at all. Sure there’s some FIXMEs in the error reporting trait, but I’m not sure how to fix them at the moment, they’re not serious bugs, and the code remains clear regardless. The biggest thing I did there was to extract the singleton code for a WebKit.WebContext out into a new “service” whilst keeping most the configuration in a trait. This was done to maintain an ideolized dependency graph between my Model, Services, Traits, & UI layers.

To lay this ideal out:

This ideal doesn’t quite apply, and I don’t plan for it too, but it’s extremely close to the reality.

Organizing traits

The biggest change I had to make was in adding some organization to the traits, for which I decided to group them by the extension mechanisms they use. This organization scheme, for example, may not suite bookmarks and history extensions, which would have components in both the autocompletion and navigation groups (in addition to their own internal webpage). But then maybe it’s good to seperate out those components.

The simplest of those groups was the concept of autocompleters. These extend the AddressBar via the Completer service rather than a WebView, and include the DuckDuckGo integrations as well as logic for implying an “https://” prefix on web addresses.

In the remaining there seemed to be two distinct groups. Navigate traits register to WebView signals related to page navigation and doesn’t do much to the UI other than to navigate to a different webpage, if it even does that. Decorate traits on the other hand listen to a variety of other WebView signals and they often respond by customizing the WebTab.


Wow, this blog post looks longer than my diff files today! I guess there was a bit to discuss about my thinking on these changes.

@ 2017-12-12 10:16:59 +0000


Talk Page for 12th December 2017 — Odysseus Development Blog