A New Home for nhooyr/websocket

author avatar
Ammar Bandukwala
 on August 9th, 2024
Updated on August 10th, 2024

TL;DR:

  • Coder adopted nhooyr/websocket and will continue to maintain it as an open-source library in our own GitHub organization.
  • websocket will stay permissively licensed and cater to a broad user base, not just Coder. No breaking API changes are planned, except for updating the import path to github.com/coder/websocket.
    • If you find this disruptive, you may continue using the nhooyr.io/websocket import path as it's quite complete for most use cases.
  • We welcome contributions in the form of issues and PRs here.

nhooyr/websocket is a minimal, idiomatic, and performant WebSocket library for Go. Its quality is proven by an official recommendation by the Go Authors and a long list of dependents including Traefik, Vault, and Cloudflare.

For library users, we do not plan on making any breaking API changes. The project’s high level goals remain the same, and we will focus our development efforts on bug fixes and performance improvements.

In the post-xz world, supply chain security and open source sustainability is top of mind for many of us. We believe that governance changes in popular libraries should be clearly explained.

A Note From nhooyr, Library Author

The concept for nhooyr.io/websocket came to me when I was working at Coder in 2018 on their collaborative cloud editor. I had implemented an operational transformation websocket protocol in Go with gorilla/websocket.

It worked but I was not a fan of gorilla's API surface nor the callback approach for receiving pongs. I had much spare time back then and those two minor issues gave me the impetus to build a library suited to my minimal tastes.

I want to be clear though that I very much appreciate and respect the incredible impact the Gorilla project has had and continues to have on the Go community. ⁠Maintaining high quality open-source software for years without compensation is not easy.

I began work in March 2019. Coder even let me work on it after hours in their Austin, Texas office. I released v1 in June 2019. It had an excellent debut on hackernews. I've since added many more features and fixed many, many embarrassing bugs.

But alas it has been 5 years and it is now 2024. It will be clear to anyone paying attention to the issue tracker that I haven't been able to keep up despite my best efforts. My life, dreams and ambitions are very different than they were in 2019. I still deeply enjoy software but there is much else to life that I have also come to enjoy and wish to first develop mastery over.

One day many years from now I will return but right now I must let go.

To that end I am happy to hand the reins for nhooyr.io/websocket to Coder. I've known the founders and engineers at Coder for a very long time. I fully trust them to preserve the minimal and idiomatic nature of my library.


Sincerely, nhooyr

A Note From Ammar, Coder Co-Founder and CTO

We dedicate a small portion of our engineering resources to building and maintaining libraries with zero intrinsic commercial value. We see this open source work as good for the community, good for business, and plain fun.

As our projects become popular, they translate into new customers and more talented developers in our team. So, websocket will continue to be permissively licensed and designed with the needs of the broader user base (not Coder) in mind. We see the drivers of this library’s success as stability, reliability, and performance in that order.

We are grateful for nhooyr’s trust and are honored to serve the Go community. We welcome contributions in the form of issues and PRs here.

— Ammar

Subscribe to our Newsletter

Want to stay up to date on all things Coder? Subscribe to our monthly newsletter and be the first to know when we release new things!