git-of-theseus
dep-tree
git-of-theseus | dep-tree | |
---|---|---|
13 | 9 | |
2,362 | 1,256 | |
- | - | |
4.3 | 9.3 | |
6 months ago | 29 days ago | |
Python | Go | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
git-of-theseus
-
I Parsed Git Statistics
https://github.com/erikbern/git-of-theseus
- The half-life of code and the ship of Theseus
-
Show HN: Visualize the Entropy of a Codebase with a 3D Force-Directed Graph
A tangentially related tool you can use to look at a repo over time is Git of Theseus[1]. It shows things like "what percentage of the code in this repo survives 6 months.
[1]https://erikbern.com/2016/12/05/the-half-life-of-code.html
-
The Road to 128 bit Linux
There're some more in the presentation article: https://erikbern.com/2016/12/05/the-half-life-of-code.html#:...
A kernel line has half-life 6.6 years.
-
How to look at familiar codebase with “fresh” eyes again
Look at the codebase with Git of Theseus or Codescene
-
Rich Hickey – open-source is Not About You
I guess one good example (that was mentioned just yesterday here on HN) would be Flask vs FastAPI: https://news.ycombinator.com/item?id=31953470 - "There are no open issues or pull requests on Flask "
Quick count finds that FastAPI has 48422 lines of code, while Flask has 9995. Flask just achieved "Zero standing issues/PRs" while FastAPI has 1.1K open issues and ~500 open PRs.
Large surface area/API quickly leads to be overwhelmed when you're trying to maintain it. Adding new features/fixing existing ones becomes harder as well.
Best bet to make sure something is maintainable over time is to add as little as possible to it, and if you really have to, make sure you're also removing something at the same time.
Otherwise you need a massive team just to be able to "survive" and not making things rot.
There is this blogpost as well about the "half-life of code": https://erikbern.com/2016/12/05/the-half-life-of-code.html
Someone run that tool on the Clojure codebase as well, and it really shows how well the Clojure codebase has been written, as most code that was initially written is still there and does what it needs, without having to be rewritten.
- Show HN: Git Timeline Generator – Visualize contributions to any Git project
-
Do you think it's possible to automatically detect Technical Debt from the source code?
Some parts of technical debt, you can find with https://github.com/erikbern/git-of-theseus or https://codescene.com/
- Git-of-Theseus – Analyze how a Git repo grows over time
dep-tree
-
Show HN: Visualize the Entropy of a Codebase with a 3D Force-Directed Graph
The portion of the code in charge of rendering lives inside the `internal/entropy` (https://github.com/gabotechs/dep-tree/tree/main/internal/ent...).
Force-directed is an algorithm for displaying graphs in a 2d or 3d space, which simulates attraction/repulsion based on the dependencies between the nodes, the wikipedia page explains it really well https://en.wikipedia.org/wiki/Force-directed_graph_drawing
> Love it, I think dependency trees are super underused data for static analysis.
Definitely, specially for evaluating "the big picture" of a codebase
- Show HN: I Made a Tool for Visualizing the Entropy of a Code Base in the Browser
- Show HN: I Made a Tool for Visualizing the Entropy of a Code Base
-
About Software Complexity...
If you like Dep Tree, feel free to stop by the GitHub repository and give it a star. Check out the README and you will find out that Dep Tree is far more than just a cool visualization tool; it can actually help you enforce your code base decoupling!
- Show HN: Render your JS or TS project's file dependency graph in the terminal
-
Rendering a Rust project's file dependency tree in the terminal
I am working on dep-tree, a CLI tool for rendering and linting source code file dependency trees, https://github.com/gabotechs/dep-tree, and I recently added support for the Rust language (previously, only TypeScript and JavaScript where supported).
- dep-tree - a tui application for rendering your TS/JS project's dependency tree written in Go
What are some alternatives?
Gource - software version control visualization
protolint - A pluggable linter and fixer to enforce Protocol Buffer style and conventions.
pre-commit - A framework for managing and maintaining multi-language pre-commit hooks.
typex - [TOOL/CLI] - Filter and examine Go type structures, interfaces and their transitive dependencies and relationships. Export structural types as TypeScript value object or bare type representations.
compojure - A concise routing library for Ring/Clojure
slack-term - Slack client for your terminal
pre-commit-hooks - Some out-of-the-box hooks for pre-commit
viddy - 👀 A modern watch command. Time machine and pager etc.
ts-macros - A typescript transformer / plugin that allows you to write macros for typescript!
do - ⚙️ A dependency injection toolkit based on Go 1.18+ Generics.
yesql - A Clojure library for using SQL.
warp - A super-easy, composable, web server framework for warp speeds.