6 ms·
Show HN: Sourcebot, an open-source Sourcegraph alternative
Hi HN,
We’re Brendan and Michael, the creators of Sourcebot (https://github.com/sourcebot-dev/sourcebot https://github.com/sourcebot-dev/sourcebot). Sourcebot is an open-source code search tool that allows you to quickly search across many large codebases. Check out our demo video here: https://youtu.be/mrIFYSB_1F4 https://youtu.be/mrIFYSB_1F4, or try it for yourself on our demo site here: https://demo.sourcebot.dev https://demo.sourcebot.dev
While at prior roles, we’ve both felt the pain of searching across hundreds of multi-million line codebases. Using local tools like grep were ill-suited since you often only had a handful of codebases checked out at a time. Sourcegraph (https://sourcegraph.com/ https://sourcegraph.com/) solves this issue by indexing a collection of codebases in the background and exposing a web-based search interface. It is the de-facto search solution for medium to large orgs, but is often cited as expensive ($49 per user / month) and recently went closed source (https://news.ycombinator.com/item?id=41296481 https://news.ycombinator.com/item?id=41296481). That’s why we built Sourcebot.
We designed Sourcebot to be:
- Easily deployed: we provide a single, self-contained Docker image (https://github.com/sourcebot-dev/sourcebot/pkgs/container/sourcebot https://github.com/sourcebot-dev/sourcebot/pkgs/container/so...).
- Fast & scalable: designed to minimize search times (current average is ~73ms) across many large repositories.
- Cross code-host support: we currently support syncing public & private repositories in GitHub and GitLab.
- Quality UI: we like to think that a good looking dev-tool is more pleasant to use.
- Open source: Sourcebot is free to use by anyone.
Under the hood, we use Zoekt (https://github.com/sourcegraph/zoekt https://github.com/sourcegraph/zoekt) as our code search engine, which was originally authored by Han-Wen Nienhuys and now maintained by Sourcegraph (https://sourcegraph.com/blog/sourcegraph-accepting-zoekt-maintainership https://sourcegraph.com/blog/sourcegraph-accepting-zoekt-mai...). Zoekt works by building a trigram index from the source code enabling extremely fast regular expression matching. Russ Cox has a great article on how trigram indexes work if you’re interested: https://swtch.com/~rsc/regexp/regexp4.html https://swtch.com/~rsc/regexp/regexp4.html
In the shorter-term, there are several improvements we want to make, like:
- Improving how we communicate indexing progress (this is currently non-existent so it’s not obvious how long things will take)
- UX improvements like search history, query syntax highlighting & suggestions, etc.
- Small QOL improvements like bookmarking code snippets.
- Support for more code hosts (e.g., BitBucket, SourceForge, ADO, etc.)
In the longer-term, we want to investigate how we could go beyond just traditional code search by leveraging machine learning to enable experiences like semantic code search (“where is system X located?”) and code explanations (”how does system X interact with system Y?”). You could think of this as a copilot being embedded into Sourcebot. Our hunch is that will be useful to devs, especially when packaged with the traditional code search, but let us know what you think.
Give it a try: https://github.com/sourcebot-dev/sourcebot https://github.com/sourcebot-dev/sourcebot. Cheers!
- jmakov 2y agoCan somebody share the use case of this? Why not just use your IDE?
- bshzzle 2y agoyea it's a fair question - an IDE is often more convenient when you have the code checked-out locally. This becomes a pain when you work in a organization with potentially hundreds of repositories that you need to search across (e.g., a org stores their 100+ microservices in separate repos, and you need to find all places where they make a request to your service).
- Hackbraten 2y agoI use ghorg in tandem with ripgrep to address that problem. The former is for checking out the main branches of all repositories, the latter to perform the actual search.
- metadaemon 2y agoFinding examples of how others implement similar logic is my biggest use case for code searching, but since GitHub copied SourceGraph, I don't have much of a need for these self-hosted solutions.
- rafaelgoncalves 2y agoyeah, github has a nice search now, the only complaint is that you need to be logged on to use, besides this is really nice.
- eptcyka 2y agoI cannot run Xcode on Linux, I cannot run Visual Studio on Linux, I might not have an IDE set up for the language that I want to inspect. Many reasons. Also, some languages practically require arbitrary code execution to make a build, which I'd much prefer to shove into an isolated VM.
- ashobeiri 2y ago