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.

Reply via email to