See the prototype at https://howsmydriving.pages.dev/
- How’s my driving? is a Postgres driver scorecard.
- It should eventually cover security capabilities (like channel binding support), features, and performance.
- It should ultimately include all drivers listed in the Postgres wiki across a range of languages.
- And it should update automatically every night.
The idea is that this is a resource that’s useful to the community and helps moving the ecosystem forward, encouraging maintainers to keep their drivers updated and secure. It’s similar in spirit to https://pgscorecard.com/, but for Postgres clients, not servers.
- It’s generated on my laptop (not automated overnight).
- It covers a range of JavaScript, Python, Go and Ruby drivers.
- It tests for channel binding support by examining the traffic between the driver and the server.
- It also presents a transcript of that traffic, which can surface interesting things … for example, that Postgres.js starts every connection by running a big query for array type OIDs ... or that Bun.sql defaults to making a pool of 10 connections as soon as you run a query.
- An initial list of driver names, languages and GitHub URLs is extracted from the Postgres wiki as a JSON file.
- Metadata on each driver (e.g. number of stars and latest commit date) is retrieved from the GitHub API.
- Postgres is run in a Docker container
- Snippets of JavaScript, Python, Ruby and Go code — making use of each driver — also run in short-lived Docker containers
- Elephantshark runs locally and captures all traffic between the two.
- The metadata, plus what we learn from the captured traffic, is processed into static HTML files.