Remove dependency search
Created by: mrnugget
Short version
We currently don't have the time and resources to properly invest in dependency enough to make it both a feature that's useful for customers and one that meets our technical bar.
We use version control. There's no advantage to keeping code around "in case we need it again" (we can always restore using git
), but multiple disadvantages (people stumble on this code and wonder whether/how it's used, it needs to be maintained, its tests take up runtime, ...).
So that's why we're removing it.
Longer version
As @sqs announced, dep search is one of the "things we are saying NO to as we look to 4.0".
It might come because, because we're saying No "(until it can be done solidly, which is not now)".
I’ve had multiple conversations with @sqs about this in the past week and we came to the conclusion that in order to make dependency search a useful feature we’re proud of, we’d need to invest a lot more time and resources. But now is not a good time to do that. We have other problems to solve right now that are higher-priority than adding a new feature we’re unsure about.
Even if I were to continue working on Dependency Search for the next, say, 6 months, it’s unclear whether Dependency Search in its current “architecture” (in the product and in the technical sense) is what would solve some important customer problems. We would maybe need to rethink it from the ground up. For example: focus on reverse-dependency search from the beginning, or focus more on “search dependency relationships” instead of “search inside dependencies”. Or, in the words of @eric Fritz: “the lego bricks don’t seem to line up”.
So, here we go, let's remove the code :)
Technicalities
-
It drops all of the database tables used by dependency searchIt keeps the tables around until the next release, to be backwards-compatible. - It removes all of the code used for dependency search: backend, frontend, ...
- It removes docs
- It removes the feature/site-config flag
- It does NOT remove the code in
./internal/codeintel/dependencies
that's used for packages.
Test plan
- Manual testing of flows
- Existing tests
-
Create main-dry-run
build for this branch