-
-
Notifications
You must be signed in to change notification settings - Fork 142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Plans for API stability or stable releases? #450
Comments
Yeah, it appears major versions are used frequently because it's easier than having to deal with backwards compatibility. Some major versions just change syntax without no underlying improvement, similar to point 1 in your list. For example, #438 (reply in thread) is where I expressed how a recent major version has required me to have to update code across multiple repos for a syntax change in the API that did not improve the code logic in any way and could've been easily backwards-compatible. Really hope some more thought goes into backwards-compatibility in future developments of the package. |
On one hand, I appreciate that Slonik introduces opinionated structure around making safe queries to the database. On the other hand, I do agree with some sentiments around sudden major backwards breaking changes introduced throughout the past year. Constant backwards breaking API changes hurts the community and the ecosystem around the library. I myself have built packages that depended on Slonik and having to release major version changes just to stay compatible with latest sudden changes to the API surface has been challenging to keep up. If you dig around, it's not a secret that it's been putting people off from wanting to develop an ecosystem around Slonik: I think @liujimj did a great job of being solutions oriented when he brought up the problems he perceived with the project so in the same spirit, I would like to expand on that with several more.
Finally, I understand that it's not easy to run an open source project as a single individual and some of the options I proposed above requires dedicated group of core maintainers. Honestly, it's amazing how much work @gajus has put in and building out a library like this from scratch. Heck, he didn't need to open source it but did it anyways. Looking at his BuyMeACoffee profile, he's barely getting any monetary support to continue working on it. Regardless, he keeps pushing code anyway even if it comes at the cost of breaking changes. So I understand he is passionate about the impact he's making with his code. But I when I see feedback like this, it's usually a sign that an open source project is maturing and it has a group of passionate followers that feel strongly about the project one way or the other to provide the feedback. If Slonik wasn't a compelling library for anyone to care, I doubt people would bother leaving feedback like this. So I do hope that he takes the community feedback to heart. PS: Just to be clear, I don't think Gajus is in any way obligated to listen to our feedback. He's not getting paid for this and nothing stops you from forking this project if you don't agree the direction Slonik is heading. That's the beauty of open source. :)
¹: CentOS itself lost a lot of community goodwill when they were put upstream of RHEL by Red Hat which resulted in mass community exodus to Rocky Linux and AlmaLinux. The community understandably felt that they turned into unpaid beta testers for RHEL with introduction of CentOS Stream.
|
Thank you for your input. All great points and valid observations.
It is definitely not an "intention". However, Slonik development has always been driven by learning from integrating it into new projects (most recently Contra, a company I co-founded), and hearing feedback from the community. It is an iterative process, and every layer of improvement has revealed a new milestone. So it is not an "intention" to continue with breaking changes, but neither do I want to commit to no breaking changes (as this is how innovation dies). That being said, I am personally aware of at least a handful of large companies using Slonik as their primary PostgreSQL client. So it may require rethinking the project governance structure, and I am open to it. Andrew shared some great suggestions. However, they all have a significant overhead or tradeoffs. I personally cannot commit to them, but I will talk with a few people that I know who maintain open-source projects professionally and get their opinion about it. There could be a path to creating more structured governance with financial incentives to participants. In the interim, there are a few things that I can commit to. Namely, I can be more pro-active in starting conversations about ideas for future improvements. I've already tried that with a few more recent changes. However, they did not get much engagement. I am open to ideas how to execute this better. I am also aware that the documentation for breaking changes when they do happen needs to be better and must include a migration guide. Finally, as we continue to search for the path forward, just to give some confidence about the near- to medium-term future of Slonik – I have personally no plans to make further breaking changes to the API. We have been using it in a very large codebase for a while, and are very happy with how everything comes together. |
Reposting my comment from slonik tools here. |
As I noted in a separate discussion, the documentation doesn't seem to incorporate the various changes in syntax so slonik just seems broken for the user/developer. |
What's an example? I am not aware of documentation being out of sync with the API. |
Closing as there is no active work here to be done. |
Have you given any thought to slowing the pace of breaking changes in the future, or is the intention to continue with 5+ major versions per year?
For context, we have a moderately-sized codebase that was migrated from
node-pg
toslonik@27
. We love many of Slonik's out-of-the-box features (e.g. transaction retries, nested transactions mapping to savepoints) and have generally had a great experience!However, keeping pace with later releases has been a bit of a slog. Some of the larger changes that has affected our team:
sql<T>
tosql.type(zodValidator)
suddenly made non-zod usage unergonomic (this was beforesql.unsafe
was introduced, which we would've used instead for a less disruptive migration path).sql
fragments which now require manual annotation assql.fragment
main
in multiple entry points.Again, we think Slonik is a great project, and would only get better with some clarity on the roadmap, or ways for users to upgrade without forcing large refactors.
Just as a point of comparison, similar projects have generally had fewer major versions / year:
While this depends on how rigorously semver is applied, it may serve as a rough gauge of stability.
The text was updated successfully, but these errors were encountered: