Reinventing Landmarks at glacial speed


tl;dr: Some big new features are planned, and in progress, for the Landmarks browser extension. Delivering them requires re-organisations of the code and UI, and presents some unexpected—but ultimately beneficial—challenges. As I continue learning to bring my software development into the 21st century (though inspired by UNIX and similar philosophy), the more agile practice of making several smaller, focused, releases promises to keep this a smooth process—for users too, hopefully :-).

To add a bit of colour to the development process, here’s the slightly more detailed story (with links to various GitHub issues and other things, for even more info)…

There’s been a relatively long period of gradually refining Landmarks since the big migration to the cross-browser WebExtensions API a couple of years ago (the first 2.x release was the first WebExtension—now generally referred to as “browser extension”—release). Whilst there have been some significant developments, such as the test suite and support for dynamic pages, the pace of change has been relatively sedate, and the UX has remained similar. Recently, several ideas for new features that are useful, but could also change the nature of the extension, have come about. The most fundamental would be to support HTML heading navigation, inspired by extensions such as a11y-outline.

This alone is a daunting task. It would require consideration what heading navigation really means [issue 1 comment]. A significant piece of the existing GUI, the hierarchical list of buttons representing landmark regions, would need to be replaced with a clear and easy-to-use tree control. Keyboard shortcuts would need a lot of thought, particularly regarding familiarity for existing users [issue 156 comment]. Further, the options UI needs to be kept as simple as possible; something I’ve worked hard on over the years [issue 157].

Currently around 1,250 people use Landmarks—not a huge number in the grand scheme of things, but I’ve never known for sure that so many people are using something I wrote—so a lot of research and imaginary beard stroking has to go into these decisions!

But wait, there’s more

As heading navigation would be such a big change, including probably changing the name of the extension a bit, and refreshing the extension’s “store-front” pages [issues 118 and 184], it seems like a suitable 3.0.0 release. This prompted some thought on what other big user-facing changes may be possible for such a big release, such as…

In order to support these, and to ensure performance is as good as can be, some re-working of the structure of the extension would also be required…


On top of all the above feature suggestions and required foundational work, during research on how to achieve these, and initial development, some big surprises came up…

At this point, with all this scope creep—or even explosion—the idea of a 3.0.0 release started to loom over me, rather than being something aspirational, until…

Little and often / the UNIX philosophy / Agile

It dawned on me that the best way to deliver these features would be gradually, throughout the 2.x series, as has already been done with the as-and-when refinements and minor new features already settled there. Then, in a while, it’ll be time to flip the switch and make a big 3.0.0 release when the keystone—headings—is in place, having built on all the groundwork laid before it.

Of course this is what real developers do as best practice these days, and it should result in a much smoother pace of development that would actually feel faster for users, as the features will be delivered over time. (For game nerds, it also reminds me of Valve lamenting that the “Half-Life 2: Episode X” games should’ve been named Half-Life 3—though the polarity is different in that example.)

Landmarks 2.4.0 will include the sidebar and landmark inspection via the DevTools features, and future 2.x releases will add more of the above features over time—the aim being to always add a significant feature, but maybe only one, in each new release. A tree control, re-vamped splash page and artwork may also arrive later in 2.x, to prepare for the switch-over to supporting headings too.

Most importantly, and especially given the number and size of the changes to be made, I hope it will help those of you using Landmarks adjust and give you the opportunity to provide feedback along the way. Thanks for using this extension and feedback is always welcome, either via GitHub issues or Twitter.


programming, landmarks, web and accessibility