A search engine to compare packages and libraries in the Go ecosystem

The original post was published on Reddit with the title: "I created a search engine that helps you compare and determine quality, trends, and popularity in GO packages." It was used for early validation and feedback in the beginning of this project.

Explanation and features

I compiled 20,000+ packages from different sources as the ground truth for a search engine for Go modules.

The features for pkgindex.com are:

  • a rising popularity graph over time (GitHub stargazers per week) that signals continuous support and improvement from the creators
  • typo-tolerant search that matches names, descriptions, topics, and categories
  • an overview table with quality indicators and quick links to dive into the repository yourself

Sources

Important Go ecosystem packages

Web frameworks

Popularity trends over time: web frameworks

NameStarsForksDependentsDescription
gin72.8k7.8k24.0kGin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
fiber29.4k1.5k692⚡️ Express inspired web framework written in Go
echo27.1k2.2k3.7kHigh performance, minimalist Go web framework
kit25.7k2.5k4.1kA standard library for microservices.
iris24.5k2.5k959The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio 🚀
kratos21.8k4.0k181Your ultimate Go microservices framework for the cloud-native era.
chi16.0k9792.9klightweight, idiomatic and composable router for building Go HTTP services

Logging

Popularity trends over time: logging

NameStarsForksDependentsDescription
zap20.1k1.4k12.1kBlazing fast, structured, leveled logging in Go.
zerolog9.1k5214.0kZero Allocation JSON Logger
go-spew5.8k405169.0kImplements a deep pretty printer for Go data structures to aid in debugging
lumberjack4.4k5832.2klumberjack is a log rolling package for Go
glog3.5k95611.6kLeveled execution logs for Go

CLI

Popularity trends over time: CLI

NameStarsForksDependentsDescription
cobra34.3k2.8k21.2kA Commander for modern Go CLI interactions
bubbletea21.1k6531.6kA powerful little TUI framework ?
cli21.0k1.7k8.3kA simple, fast, and fun package for building command line apps in Go
termui12.7k787830Golang terminal dashboard
gocui9.5k648563Minimalist Go package aimed at creating Console User Interfaces.
color6.7k64014.2kColor package for Go (golang)

JSON

Popularity trends over time: JSON

NameStarsForksDependentsDescription
flatbuffers21.4k3.2k2.3kFlatBuffers: Memory Efficient Serialization Library
gjson13.1k8662.5kGet JSON values quickly - JSON parser for Go
go12.8k1.1k76.0kA high-performance 100% compatible drop-in replacement of "encoding/json"
quicktype10.9k9680Generate types and converters from JSON, Schema, and GraphQL
jsonparser5.3k4522.9kOne of the fastest alternative JSON parser for Go that does not require schema
easyjson4.2k41530.1kFast JSON serializer for golang.

Testing

Popularity trends over time: Testing

NameStarsForksDependentsDescription
testify21.0k1.5k72.3kA toolkit with common assertions and mocks that plays nicely with the standard library
mock9.1k65814.4kGoMock is a mocking framework for the Go programming language.
goconvey8.0k5987.2kGo testing in the browser. Integrates with `go test`. Write behavioral tests in Go.
ginkgo7.6k67212.5kA Modern Testing Framework for Go
go-sqlmock5.6k4333.2kSql mock driver for golang to test database interactions
mockery5.3k43251A mock code autogenerator for Go
gotests4.7k381122Automatically generate Go test boilerplate from your source code.
easyjson4.2k41530.1kFast JSON serializer for golang.

Databases

Popularity trends over time: Databases

NameStarsForksDependentsDescription
prometheus50.8k8.6k730The Prometheus monitoring system and time series database.
tidb35.3k5.7k259TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at: https://tidbcloud.com/free-trial
cockroach28.2k3.6k159CockroachDB - the open source, cloud-native distributed SQL database.
influxdb26.8k3.5k2.4kScalable datastore for metrics, events, and real-time analytics.
milvus24.4k2.6k0A cloud-native vector database, storage for next generation AI applications.
dgraph19.8k1.5k70The high-performance database for modern applications.
vitess17.1k2.0k410Vitess is a database clustering system for horizontal scaling of MySQL.

Data structures

Popularity trends over time: Data structures

NameStarsForksDependentsDescription
gods14.7k1.7k9.7kGoDS (Go Data Structures) - Sets, Lists, Stacks, Maps, Trees, Queues, and much more.
go-datastructures7.2k8701.2kA collection of useful, performant, and threadsafe Go datastructures.
golang-set3.6k2953.7kA simple, battle-tested, and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum, and Hashicorp.
gota2.8k308263Gota: DataFrames and data wrangling in Go (Golang).
fsm2.5k333458Finite State Machine for Go.
roaring2.2k256719Roaring bitmaps in Go (golang), used by InfluxDB, Bleve, DataDog.

ORM

Popularity trends over time: ORM

NameStarsForksDependentsDescription
gorm34.2k3.8k3.9kThe fantastic ORM library for Golang, aims to be developer friendly.
ent14.3k904181An entity framework for Go.
sqlboiler6.1k561183Generate a Go ORM tailored to your database schema.
pg5.5k405332Golang ORM with focus on PostgreSQL features and performance.
gorp3.7k4141.2kGo Relational Persistence - an ORM-ish library for Go.
bun2.6k173162SQL-first Golang ORM.

Not just limited to Go: Open source search engine alternatives

This is the comparison I used when choosing a typo-tolerant open source search solution. I picked Typesense because of ease-of-use and it had all what was required. GitHub stars give you an indicator but in the end you need to make a decision based on what you need.

NameStarsForksDependentsDescription
elasticsearch66.0k23.9kFree and Open, Distributed, RESTful Search Engine.
meilisearch40.1k1.5kA lightning-fast search engine that fits effortlessly into your apps, websites, and workflow.
typesense16.0k489Open Source alternative to Algolia + Pinecone and an Easier-to-Use alternative to ElasticSearch ⚡ ? ✨ Fast, typo tolerant, in-memory fuzzy Search Engine for building delightful search experiences.
zincsearch15.6k676ZincSearch. A lightweight alternative to elasticsearch that requires minimal resources, written in Go.

Inspiration

The search on pkg.go.dev is helpful but lacks in quality indicators. It shows "Imported by" as its sole quality or popularity indicator but any context to comparable packages is missing.

✨ Includes all packages from Awesome Go ✨ (some entries did not exist anymore)

Inspiration was npmtrends.com from the JavaScript ecosystem, i.e. making the information on pkg.go.dev and Awesome Go comparable.

Feedback

Hope you guys find this useful and let me know if you have any feedback!

Discussions

PKG Index logo

Subscribe to the newsletter

Free high-quality newsletter featuring overviews, analysis, and breakdowns of open source trends.

Latest Newsletters