[HN Gopher] Ask HN: Anyone use a code to mindmap/flowchart tool?
       ___________________________________________________________________
        
       Ask HN: Anyone use a code to mindmap/flowchart tool?
        
       Is there any really good code to mindmap tool? So that it can take
       a large codebase and split it into a mindmap?
        
       Author : Exorust
       Score  : 75 points
       Date   : 2024-02-24 14:57 UTC (8 hours ago)
        
       | a1o wrote:
       | Not sure, I have used for non-continuous use the NDepend
       | extension for visual studio to grasp a C++ code base in the past
       | and then exported manually to inkscape to manually rearrange
       | things in a readable way to come up with a single page codebase
       | cheatsheet for easing the onboarding of new devs to a specific
       | code base at work.
       | 
       | This is a legacy codebase that isn't expected to change
       | significantly.
        
       | wheelinsupial wrote:
       | What do you mean by mind map? What's the objective of this
       | exercise?
       | 
       | You may have better luck by searching for code to UML diagram
       | generator. There are probably too many UML diagrams, but there
       | are some ways to generate diagrams from the code. Once you have a
       | diagram or two, you can probably simplify it into a mind map that
       | you want to make.
        
       | Zolomon wrote:
       | Would Mermaid[1] suffice?
       | 
       | [1]: https://mermaid.js.org/
        
       | solardev wrote:
       | Jetbrains IDEs can generate a diagram of your
       | code...https://www.jetbrains.com/help/idea/class-diagram.html
       | 
       | I've never really understood the value of this, but it's there.
        
       | Towaway69 wrote:
       | I use Node-Red to create my mind map. It's a flow based
       | programming environment, so my mind map is actually executable.
       | 
       | All flows are just very large json files (array of objects), so
       | it's easy enough to generate working flows that can be imported
       | into Node-Red.
       | 
       | https://nodered.org
        
       | nipponese wrote:
       | Sounds like AI's killer app!
        
       | westurner wrote:
       | markmap: markdown + mindmap: https://markmap.js.org/
       | 
       | On why code LLMs should be trained on the edges between tests and
       | the code that they test, _that_ could be visualized as a mindmap
       | DAG with cycles
        
         | westurner wrote:
         | django_extensions/utils/dia2django.py:
         | https://github.com/django-extensions/django-extensions/blob/...
         | 
         | django_extensions/management/modelviz.py:
         | https://github.com/django-extensions/django-extensions/blob/...
         | 
         | viewflow supports BPMN: https://github.com/viewflow/viewflow
         | https://github.com/viewflow/cookbook/blob/main/guardian_perm...
         | 
         | Wikipedia mentions security concerns with low-code and no-code
         | apps; and it's rare to impossible for a tool to support round-
         | trip from code -> diagram UI -> code. And the test for
         | isomorphism or functional equivalenve after normalization.
         | 
         | https://news.ycombinator.com/item?id=39139198 :
         | 
         | > _All program evolution algorithms tend to produce bloated,
         | convoluted, redundant programs ( "spaghetti code"). To avoid
         | this, MOSES performs reduction at each stage, to bring the
         | program into normal form. The specific normalization used is
         | based on Holman's "elegant normal form", which mixes alternate
         | layers of linear and non-linear operators. The resulting form
         | is far more compact than, say, for example, boolean disjunctive
         | normal form. Normalization eliminates redundant terms, and
         | tends to make the resulting code both more human-readable, and
         | faster to execute._
         | 
         | "Elements of an expert system for determining the
         | satisfiability of general Boolean expressions" (1990)
         | https://dl.acm.org/doi/10.5555/100095 :
         | 
         | > _Neither the constraint calculus nor the satisfiability-
         | determination (SD) algorithm require that an expression be in
         | either Conjunctive or Disjunctive Normal Form._
         | 
         | IR: Intermediate Representation:
         | https://en.wikipedia.org/wiki/Intermediate_representation
         | 
         | How many ways can a compiler generate a code graph from a code
         | graph?
        
       | alunchbox wrote:
       | I just use excalidraw for free form drawings. Might not be what
       | you need, but the performance and utilities is perfect for my
       | workflow
        
       | supershobu wrote:
       | You can try codetoflow.com, it doesn't support full codebase but
       | is good enough for single code files.
        
       | itpcc wrote:
       | I use Mermaid[1]. I used to use Visual Paradigm but it seems
       | excessive (to me at least). Good enough for me, especially with
       | integration into Markdown.
       | 
       | [1] https://mermaid.js.org/
        
         | rpmisms wrote:
         | I do too, but there's no codebase to mindmap conversion, which
         | I think was the point of the OP's question. I think he's
         | looking for a code visualization tool.
        
       | swozey wrote:
       | I use UML quite a bit but it's never really what I'm after,
       | somnething more modern and fluid and gui driven that more people
       | can use where I don't have to manually input every single thing
       | and it can pull in far more complex information like github repos
       | and things of that nature.
       | 
       | Icepanel [1] looks really cool but I haven't tested it and I'm
       | not sure it really fits my use case. It seems like it's mostly
       | for api driven rpc/grpc/rest services when I kind of want to use
       | it to visualize backend/infra/terraform sort of things in maybe a
       | C4 style. A lot less microservices involved.
       | 
       | Might be interesting to you.
       | 
       | [1] - https://icepanel.io/
       | 
       | ANother cool tool for stuff like this I rarely see is swimm.io
       | for documentation.
        
       | xz18r wrote:
       | MindManager (https://www.mindmanager.com/)
        
       | tarasglek wrote:
       | I originally wrote https://chatcraft.org to help me generate
       | https://mermaid.js.org/ charts quickly. As an accident this
       | resulted in ability to do funny charts like
       | https://twitter.com/tarasglek/status/1656932246018748418
       | 
       | Just last week I discovered https://github.com/skanaar/nomnoml
       | which llms also seem to know too. It seems like a better mermaid
       | for UML type stuff, intend to integrate it into chatcraft too
        
         | arcanemachiner wrote:
         | Your website completely broke my back button.
         | 
         | The first page load was OK, but clicking the drawer made the
         | back button completely inoperable.
        
       | sandreas wrote:
       | I usually use mermaid.js...
       | 
       | From time to time I use svgbob[1]. Sometimes paired with
       | textik[2] or asciiflow[3].
       | 
       | Together with markdown and termsvg[4] these also can be handy for
       | documentation purposes.
       | 
       | 1: https://ivanceras.github.io/svgbob-editor
       | 
       | 2: https://textik.com/
       | 
       | 3: https://asciiflow.com
       | 
       | 4: https://github.com/MrMarble/termsvg
        
       | Exorust wrote:
       | I think my question was misunderstood (probably due to my poor
       | explanantion).
       | 
       | I was looking for a tool that could convert a codebase into a
       | mindmap. Sort of like:
       | https://resources.jetbrains.com/help/img/idea/2023.3/diagram...
       | 
       | https://www.jetbrains.com/help/idea/class-diagram.html#analy...
        
         | geor9e wrote:
         | I'm still not understanding what you want to visualize. I get
         | that you want to create a graph (or tree, the strictly
         | hierarchal subset of graphs). That's what a mindmap is. The
         | rabbit hole goes deep on theory
         | https://en.wikipedia.org/wiki/Graph_theory . But a lot of
         | different things have that data structure. Do you want to
         | visualize files in folders? You linked to a Java class diagram
         | - so you want the tool to interpret the code? Is it Java? Is it
         | an object-oriented language (i.e. a language with hierarchal
         | class structure)? Are you asking for an automated tool, or do
         | you want to draw the mindmap yourself manually?
        
         | OJFord wrote:
         | You might be able to do it with https://github.com/IBM/tree-
         | sitter-codeviews - though the screenshot in the readme is in
         | much more granular detail than class/ER diagram.
         | 
         | I'd be surprised if there isn't a nice way to do this with
         | tree-sitter or LSP, not to mention some language-(..theist?!
         | Not language-agnostic) ways.
        
         | Nezteb wrote:
         | I've asked a similar question in the past [1], perhaps we're
         | both asking about similar things? :D
         | 
         | [1] https://news.ycombinator.com/item?id=35603022
        
         | Arech wrote:
         | These links points to basically a (very simplified UML) class
         | diagrams.
         | 
         | Decent documentation tools, such as Doxygen could do this for a
         | codebase.
        
         | buescher wrote:
         | Understand from Scitools has nice graph generators, including a
         | dependency graph generator that might be what you are looking
         | for. Not free and not hobbyist-cheap, but relatively
         | inexpensive as commercial static analysis tools go.
        
           | analognoise wrote:
           | Scitools is amazing for looking through massive legacy
           | codebases. I wish it was free or there was an open source
           | alternative that was as good.
        
       | sprine wrote:
       | I wish something existed in this space. I used Coati Software's
       | Sourcetrail for a couple of years. Unfortunately it was
       | discontinued. It was a wonderful piece of software that indexed a
       | code repository, and exposed an interface to explore it
       | interactively. At least for me, it significantly improved the
       | understanding and legibility of code.
       | 
       | The code is in an archived state
       | (https://github.com/CoatiSoftware/Sourcetrail). Searching for the
       | software on Google shows some screenshots.
        
         | dannas wrote:
         | I'm still using Sourcetrail daily for inspecting C++ codebases.
         | Works great. I paid for the first beta and was very sad that
         | the company was not profitable. It really is a great product.
        
       | mouratoglou wrote:
       | I'd recommend you to check https://appmap.io/ a tool which
       | creates diagrams from code execution or tests...
        
       | elesiuta wrote:
       | Are you looking for something like a call graph?
       | 
       | There's pyan3 [1] which although doesn't support python 3.7+,
       | I've still had luck with v1.0.4 which works better for me than
       | its most recent version with python 3.11, but there can be some
       | weird issues though depending on your code style.
       | 
       | A quick search also turned up crabviz [2] which has support for
       | more languages than just python.
       | 
       | [1] https://github.com/Technologicat/pyan
       | 
       | [2] https://github.com/chanhx/crabviz
        
       | luke-stanley wrote:
       | For Python, Pyreverse is a subproject of Pylint and it can help
       | make diagrams:
       | https://pylint.readthedocs.io/en/latest/pyreverse.html It makes
       | class diagrams, it can even output Mermaid diagrams.
       | 
       | Also I saw that Aider.chat makes a text "repo map" for GPT-4 to
       | use using some tree-sitters. In the past, I ended up using the
       | Python AST module with LLM's to help me filter for what I was
       | looking for.
       | 
       | I was happy to find out recently that there is a way to make
       | Mermaid diagrams WYSIWYG / drag and drop editable that the open
       | source https://excalidraw.com has and did I mention it's open
       | source!? With a LLM, you can go full loop back to Mermaid again
       | after a few rounds of manual editing. "What a time to be alive!"
       | 
       | But what I would quite like is bi-directional syncing of code and
       | diagrams. Just as looking at black and white code with no syntax
       | highlighting is not so common, I think there are lots more visual
       | cues and contexts we can integrate in clever ways that use our
       | visual system better. There is a whole wide spectrum of
       | augmentation possible within bidirectional visual programming
       | languages, from auto-generating high level code maps with Mermaid
       | diagrams with LLM generated high level summaries and emojis
       | linking to different sub-systems, to being optionally able to
       | have an X,Y position for a function, perhaps moved somewhere more
       | visually convenient as part of a map.
       | 
       | You could probably ask Aider to make Markdown of code actually.
       | I'm not affiliated, I just saw it on here recently. Cool stuff's
       | happening!
        
       | cashcache wrote:
       | I'm working on this right now! The prototype for Python will be
       | out in a few weeks. https://valla.ai
        
       | tmaly wrote:
       | It you have the data, it can be accomplished pretty easily with
       | Graphviz, an open source graphing tool.
        
       ___________________________________________________________________
       (page generated 2024-02-24 23:01 UTC)