Searchfox prioritizes speed. So much so that in a past update of
sanding things down to keep searchfox streamlined, we sanded off the
icons on the context menu. But now they're back with more icons than
ever and UX-reviewed by a speedometer 3 performance expert.
A variety of enhancements have been made to the diagramming
functionality, including hierarchical clustering among multiple axes and
major progress in deriving an intermediary representation that we hope
will enable the next steps in making the diagrams accessible, a
necessary step for the diagrams to graduate from pre-alpha status.
(Currently you need to go to
https://searchfox.org/mozilla-central/pages/settings.html and change the
"Default feature gate" from "Release" to "Alpha". Alternately, there's a
"Diagramming feature gate" further down the page.) Right now the data
powers new and improved "scroll the diagram to the thing you wanted to
see" functionality, as well as "gaudy colors on hover that are helpful
if your diagram fits on one screen but otherwise confirm your suspicions
that the diagram is not useful because that edge just goes way off into
space somewhere off the page".
Additionally, major improvements to searchfox's data-model and
understanding of the code through the power of "writing heuristics and
labeling types with them" whack-a-mole[1]. The wins here are things
like diagrams that got very unhelpful once they got to
"SomeRunnable::Run" and thereby "nsIRunnable::Run" will now be like
"aha, an nsIRunnable subclass's Run method! I know that what the user
really wants is to see who created that runnable!". And this works well
as long as no one used MakeRefPtr, in which case searchfox gives up
because templates.
Blog posts with more details and screenshots and example links will be
forthcoming. In the meantime, here's a quick set of additional query
arguments that can be used to iterate on your diagrams and that will be
helpfully provided via some nice UI stuff in the future that does not
infuriate you and has smaug's UX seal of approval:
* hier:pretty - Default hierarchy based on pretty symbol name.
* hier:flat - Oh no, I hate this hierarchy stuff! Please go back to
the old way!
* hier:subsystem - Namespaces are great, but I love bugzilla and wish
the file mapping that tells us the bugzilla component for every file
could be used instead.
* hier:file - You know what? Forget bugzilla, I love the filesystem
and want fine granularity file-level hierarchy.
* hier:dir - That was too much granularity, just group by directories
please.
* graph-layout:dot - Default layout. It's the best!
* graph-layout:neato - That was too orderly, I want a diagram that
stresses me out using a force-directed layout sorta thing.
* graph-layout:fdp - That was good, but I'd like the edge lengths to
be either much longer or much shorter, depending on random factors I
have no control over.
* depth:N - I would like to limit the graph's traversal to this level
of depth. Now 1-based!
* node-limit:N - I saw a message about a limit being hit and I really
want more stuff in my graph. Alternately, maybe I want less stuff
in my graph but I want something less deterministic than limiting
the depth.
* path-limit:N - I saw a message about a node not being considered
because it had too many edges, but I really want that node expanded
so my graph can have a lot going on.
* calls-between:foo calls-between:bar - I wish there was a way to
intersect `calls-to` for multiple symbols to find the path between
one or more things.
* fmus-through-depth:0 - "field member uses" - If someone has a
pointer to the class I'm asking for a diagram of, I want the in
edges that come from that even though most of the time this is
complicates the graph too much. By setting a value of 0, I only
apply it to the depth 0 nodes in the diagram, preserving maximum
sanity. I understand I can set the number higher at significant
threat to the foundations of reality.
Also, there's now a synthetic "(file symbol)" at the end of the current
file's path bread crumbs. Diagrams triggered on this symbol let you
visualize our header include file graph. This is only useful with
`calls-between` because our include graphs are a lot.
Andrew
1:
https://github.com/mozsearch/mozsearch/blob/master/config_defaults/ontology-mapping.toml
--
You received this message because you are subscribed to the Google Groups
"dev-platform@mozilla.org" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to dev-platform+unsubscr...@mozilla.org.
To view this discussion on the web visit
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/f6555f76-765f-4715-b52d-a44d69d09a4f%40asutherland.org.