-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Nx 19.7.0+
: Custom remote caches aren't respected with relevant NX_*DB*
flags enabled
#28150
Comments
Check the latest blog posts from Jeff and Juri. https://nx.dev/blog/evolving-nx Sadly your hunch is right, custom runners are going the way of the dodo in order to push people towards paying for a commercial license for Nx Powerpack. The custom caching is one of the new paid-for features. To answer your third question, they're deprecated in v20 and removed in v21: I understand the reasons, but this is going to cause a lot of headaches for a lot of enterprise users. |
I'm going to weigh in on this. I love NX, but I think it's an absolutely terrible decision to force people to pay for something that was already possible. I'm not against the NX Power Pack—it's a great idea—but I believe users should be able to pay for just the module they need. The pricing might suit enterprises, but it's expensive for small to medium-sized businesses that are losing functionality just so you can rightfully make money. Victor mentioned that custom task runners are not feasible because of a shift towards Rust. However, these packages should still be accessible through nx.json. It should then be up to independent developers to figure out how to make a WASM or JS solution work with NX. Again, I'm fine with a paywall, but removing existing features only to add them behind a paywall is unacceptable. PR for this #28170 Also for now i released a patch file https://gist.github.com/Jordan-Hall/5743969938cefc4fa462c86c96b5c3d0 Edit: I believe this is on the same level as Wordpress VS WP Engine. Removing functionality unless you pay up. |
@eliellis i think title should change to "Reintroduce support for community remote cache" or something like this |
I have had some time to read through the blog posts now, and I am having a heartbreaking time trying to craft any response that is understanding to the good of the Nx team and their livelihood and understanding of the community that has brought this level of success to our favorite build tool. In particular these two bullet-points stand in stark contrast and are difficult to take at face value given that previously-free features do seem to be getting repealed: I do believe that without generous reframing, things are certainly being put behind a paywall that were previously free. Well-known, and free, implementations of remote caching for Nx have existed in the open for a while now, so much so, that despite the first bullet point, there is an implicit acknowledgement that existing custom remote caches will cease to work as of Nx 21: In conjunction with the second written bullet point, I am not sure how to interpret any of this.
On this point, I agree. The community has invested time and energy into building on top of Nx thus far, and if these extension points are not taken away, but merely transitioned to a state to support more performant implementations, I don't doubt the community will gladly jump in to find the right solution, being able to continue to channel their enthusiasm and support for Nx, championing the point being made in the second bullet point from above. On a more technical note, I do find it somewhat difficult to understand how both generators and, in particular, executors can continue to exist in their current capacity if the internals of Nx transition more completely to Rust. If they are intended to continue functioning similarly (e.g. in the form of Typescript / Javascript), then I do not understand exactly how Rust plays a role in this story, but again, I do not have access or understanding of Nx's own internal roadmap, so there may be more yet to come on that front. As it stands however, even if nothing is done, there is actually a bug in the current "transitional" implementation. The moment this PR lands, counter to the language in blog posts, remote caches will cease to function. Because of the way that this check is written, remote caches passed through to the In any event, I again would implore the Nx team to re-consider some components of this transition, trying to work with the community on this–be it a license change, a head nod and some holes poked through in whatever capacity makes the most sense for performance reasons, or an outright slamming of the gavel in plain language so that we (and future readers) have crystal (no pun intended) clarity about what to expect at this time, and moving into the future with Nx. |
so this will be not true anymore... https://nx.dev/concepts/turbo-and-nx#nx-and-turborepo
|
The change in strategy and contradiction to what was previously stated is quite unfortunate and disappointing. I would think that if the Powerpack feature set has value to NX users, they will purchase it. Regardless of whether there is an alternative way to set up a custom cache. The Nx team should reconsider removing existing open source functionality that many teams depend on. |
i guess your forcing a fork of NX core and keep 1 to 1 but with the API for all. this is not good for the community |
It feels like Nx is trying to get the advantages of having an open-source software (i.e. community development) while simultaneously building a walled garden (i.e. pay us or lose critical functionality). This feels very against the ethos of a open source project and I'm surprised someone like @JamesHenry is ok with this given his passion for the open-source community. If Powerpack adds substantial value then people will pay for it on it's own merit, forcing people onto paid solutions is the wrong approach. Cypress took a similar approach and many people are migrating away from it as a result. If a product doesn't provide a potential offramp it makes it very difficult to justify investing into it and potentially putting oneself into a state of vendor lock-in. If the product is good enough people will stay, and I do believe Nx has a great product but they have introduced a pretty substantial amount of risk to partnering with them with this change. |
Frankly been looking for any response by the team on Git and Discord, is there any so far? Timely response would really help address the community’s concerns and potentially improve perceptions imo. Coming from an announcement two weeks ago and this quite respectful thread, a sign of acknowledgment would be appreciated. |
I've stayed quiet regarding the limited conversations I've had with Victor, but out of respect for the open-source community and the NX community, which has helped us all thrive, I'll share the discussion here as it relates to this issue. This is due to the lack of any 'public' response, and these matters should not be handled behind closed doors. The conversation is from my X inbox: Victor:
Response: (yes i use chat GPT to fix my grammar and spelling hence the mistake in reponse.
VIctor:
Response:
Victor:
Response:
Victor:
response:
Victor:
I thought i make this public its not something that should be handle behind close doors. It appears their wont change course its pay up or stick on a older version. API will eventually come but how long a piece of string :/ even offered to help implement anything. Im sure their plenty in here that would do the same thing! |
This is the boat we are in, there seems to be a missing tier between hobby and pro. We would be happy to spend a little money each year, but we are a small organisation with 4 devs and < 100k operations... we do not need or can not justify the cost of $250/month for something scaled for 3 times our size. |
Appreciate the insights @Jordan-Hall, got my personal views on some of the remarks. Mainly on deprecation vs the communicated removal of |
Hi folks, I'm sorry for the delayed response. Many people on the core team have been off due to our annual conference and today's Canadian public holiday. Having said that, I should have written something last week. I apologize. This is the relevant information from me and the Core team: I'm going to close this issue. Thank you! |
Current Behavior
With
NX_DISABLE_DB=false NX_DB_CACHE=true
, a user's ownRemoteCache
(orRemoteCacheV2
) implementation is not respected.Expected Behavior
With
NX_DISABLE_DB=false NX_DB_CACHE=true
, a user's ownRemoteCache
(orRemoteCacheV2
) implementation is respected.GitHub Repo
https://github.com/eliellis/nx-remote-cache-with-db-cache-repro
Steps to Reproduce
DB not enabled
npm ci
npm run build:without-db
DummyRemoteCache
prints the expected highlighted text to the terminalDB enabled
npm ci
npm run build:with-db
DummyRemoteCache
is not used, and therefore no highlighted text is printed to the terminalNx Report
Failure Logs
Package Manager Version
NPM 10.2.0
Operating System
Additional Information
Ultimately, I would like some guidance here about what to do and what to expect in the future.
I have been using Nx since the early days (since v8). I love how Nx has grown and all the bells and whistles that have been added since then. Project Crystal has been huge for DX. I'd like to consider myself both an early adopter and advocate for Nx to anyone who has the problems something like Nx can solve. Obviously I am also the character that likes to dig around and understand the systems I'm using a little more, hacking on things when they're there to be hacked on. In that spirit, I would love to assume good faith on the part of the Nx team. As I previously commented here, it seems like this breakage may be intentional and points in the direction that the future of Nx development is headed.
With the recent changes to the relevant code, especially with the introduction of Powerpacks, I am assuming the days of custom runners and providing your own remote cache implementations are going to be behind us at some point as Nx hackers.
On that note, if I may, I would implore the Nx team to reconsider closing off these extension points. There are lots of us out there who either cannot afford Powerpacks, are not comfortable with Nx Cloud, cannot afford Nx Cloud at the relative scale we are operating at, just plain want control over our own build processes to whatever extent we can, or some variadic combination of all of these. Many build systems adjacent to Nx, like Rush, Pants, Bazel, TurboRepo, and (soon) Moonrepo offer the ability to implement your own remote cache extension points to those who are so inclined and in whatever capacity makes the most sense for the tooling. The great thing about Nx is that we've already enjoyed this offering up until now! I genuinely hope that this can continue.
With all that said:
Thank you for all your hard work. I appreciate everything that Nx has enabled for me personally and the JS community. All the best.
The text was updated successfully, but these errors were encountered: