Here at SmartLogic we use a handful of core libraries in our applications. Most of those projects have a single maintainer that we can directly support via GitHub Sponsors.
As members of the programming community, we recognize the value these libraries have as an integral support tool for everyone. These tools help us in our professional work, and we hope that others will be encouraged to contribute to this vital aspect of our open-source resources. In a recent post, Jose Valim reminded us that "building an ecosystem is like growing a garden, and we do it together, tree by tree." Please feel free to reference these gardens below, help us water them, tend to them, and spread the appreciation for our shared work by helping each other where you can!
Wallaby
We use Wallaby for integration testing. Integration testing is very difficult to keep up and maintain because browsers like to break things. We sponsored Mitch Hanberg, the current maintainer, to help him keep up on the changes required.
PromEx
We use PromEx to help get metrics out of our Phoenix applications. We've tried several ways previously of exporting metrics from Elixir applications, none of them were as easy as PromEx was.
Sometimes the harder part of metrics were the dashboards to make sense of metrics. PromEx handily ships with several Grafana dashboards to help with this. We ended up adjusting the dashboards fairly heavily since we're a consultancy. We now can select clients and environments from the top of the dashboard and let it update. This required a change in PromEx and Alex was very helpful in getting that merged.
Vapor
We use Vapor to help wrangle application configuration. Before using Vapor we had everything in config/config.exs
or config/releases.exs
and it was kinda out of hand. After trying out Vapor we're able to take almost everything out of the config folder and move it into the application lifecycle.
Phoenix and Ecto include hooks to modify their configuration before final boot so we can hook into that to load runtime config without compiling it into the application. Similarly we have a Config
module that caches application specific config in :persistent_term
to make reads very quick.
Photo Credit: NeONBRAND