Searchfox Update: Searchfox's got settings!

Skip to first unread message

Andrew Sutherland

Jan 16, 2023, 12:50:08 AM1/16/23
It's a story as old as time.  You're using a piece of software and you
say to yourself: "Wow, this software is great, but I wish it was more

Well, good news, everyone!  Searchfox is now more complicated!

More seriously/with that successfully lampshaded, Searchfox now has a
settings page to provide a granular means of opting in to new
functionality and controlling orthogonal UI behavior.  It can
experienced by clicking on the gear icon to the right of the
"Navigation" which is also a hyperlink with the title "Go to settings
page".  It can also be experienced directly at the URL which has the
mozilla-central tree name in it only for logistical reasons; settings
are origin-wide.

If you remember my super cool Searchfox vision & roadmap blog posts[1],
there's hopefully a lot of cool new stuff that will be landing this
year.  Some functionality, like improved programming language support,
should be additive without being disruptive and smoothly integrate with
your "muscle memory".  But other functionality will change how you
interact with Searchfox and potentially be disruptive to your muscle memory.

For example, one of the first exciting new features to be exposed will
be the next iteration of the "calls-to" diagram mechanism.  I think we
can all agree that automatic diagrams are a great option to have, but
maybe you don't really want it in every context menu that pops up.  For
example, when I right-click on a C++ symbol in VS code, I get a popup
that's 29 rows high and takes up 1/3 of the vertical space on my
screen.  It would be very jarring to me if Searchfox started doing that
all of a sudden!

To this end, new searchfox functionality will be organized into features
and those features marked with the following quality levels:

- alpha: Actively under ongoing development, may have misleading
coverage gaps, and likely to change in response to feedback in
- beta: Largely stable, considered reliable where coverage exists, and
the experience is likely to undergo only minor refinement.
- release: Stable or it was infeasible to make this something that could
be conditional based on user preference.  (Searchfox's speed comes from
precomputation and caching, so there are limits to how configurable
things can be when it's more than a question of showing/hiding something.)

The settings UI lets you pick your default feature quality preference. 
The default for this default is "stable", ideally giving you the same
Searchfox experience for most of 2023 that you had in 2022.  If you want
to experience of all the new fancy functionality as it's developed, you
can pick "alpha".  If there are some alpha quality features that feel a
bit too alpha quality, there is also a per-feature quality gate setting
that you can change to "beta" to wait until the feature is more baked,
or "release" if you don't want to experience the feature until there's
no longer an option to not experience it!

But the settings page isn't just about the inexorable march of features
towards mandatory, it's also about letting you control how features
behave.  For example, in
I announced that Searchfox would try and do clever things with the page
title.  I don't know about y'all, but I have mixed feeling about the
"position: sticky" heuristic.  It's nice when I'm in the core of a
class/method, but it can be very misleading when there's some random
helper function/class at the top of the screen. Sometimes I wish I could
just turn it off!  And now I can.  And now so can you!  And more
significantly, we now have the means of experimenting with changes like
this without rolling things out to everyone[2]!

If you check out the settings page, you'll also see that I mention
widgets.  A lot of this is TBD, but the basic idea is that there will
shortly be a new (inherently opt-in) alpha quality sidebar called the
"fancy bar".  Have you ever wanted to see full declaration/definition
for the symbol/type you just clicked on and any block comments
associated with them, but without having to leave the current page and
also without having a massive pop-up block the code you're looking at? 
The fancy bar is the place we're chucking that stuff.  (I already tried
a massive header that wastes a lot of space and the massive pop-up that
blocks the code you're looking at.)



2: We have the ability to do "try" builds for searchfox, but it's very
analogous to try builds of Firefox where if you want to keep up-to-date
with what you'd be experiencing on nightly, it's much easier (and
cheaper) to land your functionality on trunk under a pref than it is to
run a new try build every day so that you're seeing an up-to-date
version of the tree.

Reply all
Reply to author
0 new messages