I worry that optimistic updates is going to become trendy and applied to more software, but without any plan for the "sad path" - failed to sync, sync conflict, etc. Get ready for a whole new era of race conditions and frustration!
> optimistic updates [...] without any plan for the "sad path"
based on my experience, this is a great description of the sync implementation in many already widely deployed products (say, off the top of my head, OneNote, OneDrive)
Don't you have the same problems with basic CRUD apps? Also you need to handle the sad path for every single request instead of having the sync engine do it all in one place.
Correct but the feedback is usually more immediate. Save a change to your issue and it fails - You will get an error toast and probably stay on the form.
In the local first world you might have navigated away already and created 3 more issues of which 2 more failed because of schema drift or other conflicts. And you might have edited one that was deleted. And now you need to figure out what exactly to tell the user - or what not to tell them.
Well the sync engine can figure out if there's an issue fast, say <500ms, if you build it that way. Then you can just make a toast telling the user there are issues and anything they do will be saved locally only for the time being.
Warn the user that if they leave the website their changes won't be saved remotely.
I agree. I just argue that you would still want your app to handle those with as little data loss as possible and in a way that's understandable to the user.
You can have it in one place without using background sync.
Our application uses classical "foreground update" paradigm, but each API call automatically shows an error to the user and returns him/her to the same place where error originated to fix the input and/or retry. As a bonus, we also automatically show progress indicator for any HTTP request that takes more than 1s (which is rare).
- If that request succeeds, you know that the new name has been durably committed to the database.
- If it fails because the new name is not unique, the user sees the error, and can then enter a different name before retrying. The key is that the UI context is preserved during API failure, so everything the user had entered is still on the screen.
- If it takes more than 1s, the user sees a progress indicator which he/she can click to cancel the operation. This also returns him/her to the original UI.
The magic is in the `rename` itself - it was auto-generated from our back-end API such that it wires into our error reporting and progress UI.
The issue that I foresee is that the point of error becomes decoupled from the UI and the UI doesn't handle a delayed error. Especially if retrofit into existing products.
well it has been the standard for non critical feedback.
I would not implement optimistic resolution in key information, prices, for example. They live in the server and backend should keep the total control in the client side, even feedback response time.
From experience: I work on a small team maintaining build infrastructure for my entire company. My goal, as much as possible, is to maintain a single build environment that can serve all purposes.
But it has proven quite the challenge to support old Linux distros. We have tried using nix to pin deps, but this easily leads to new issues: hardcoded RPATHs leaking into binaries, glibc compatibility issues, etc.
If we instead fork the build environment and use an old Ubuntu for building our Linux app, then my life gets harder, because now I have two targets for a whole lot of internal tooling that my team maintains, and that tooling needs to be deployed to both build environments. Again, its the same shit: glibc mismatches, missing/different shared libraries, etc. Just causing problems in a different place.
There is certainly some element of skill issue at play. But I wouldn't call it easy.
This is why I said bundle your libs. If you bundle ALL of your libs you can't possibly run into an issue if your install script is run as root. Unless it's an extremely eccentric non desktop oriented system at which point that's kind of on them.
If you wanna cover 99.9% of Linux you build fedora, ubuntu, debian, nixos, arch and have a tar.gz as your overflow. For each target the lowest available LTS and don't waste time on distros that aren't getting security updates. It's not reasonable to ask for binaries built against your specific 11 year old gcc.
edit wanted to add one more thing.
I'm a big believer in having your tar.gz and install script inform your deb, rpm, aur, etc. It should be basically the same exact thing as your tar.gz just done in the format those distros want.
Couldn't the need for Zones have been solved with ARP-like probing? I.e. if you don't know on which interface to route a link local address, try pinging the address from each interface, and see which one responds.
Has wealth been distributed from exploiter to exploited? Doesn't seem like it. It just seems like the 99% are being exploited a little more evenhandedly.
That's a highly creative interpretation of events. The software license agreement usually upfront covers what can or cannot not change. It is pretty rare in most countries to see successful legal action for changed features, but best of luck.
They will just fine them into oblivion; they are known to fine companies AUD10M to AUD50M for this sort of thing, and from 1st April this year they can now fine up to AUD100M.
Will this mean that Bambu will withdraw from the Australian market? Possibly maybe probably, but the ACCC takes a very hard stance against bait and switch.
The largest ACCC fine to date for a company undertaking anti consumer practices is $483m against an educational provider for misleading students.
I'd be reasonably happy to lodge a complaint if I could find a version that's reasonably articulated. As a Bambu customer in Australia I switched my printer to local mode and its been great.
It's a whole lot better than the US, but AUD100M isn't enough to scare a lot of companies. A law with real teeth would go after an increasing percentage of their revenue for each offense.
As a percentage of global revenue, sure, it's not much. But as a percentage of what that company is likely to make in the Australian market, it can be significant.
Taking functionality away from a product after you bought it is a scum move. If the law lets them get away with it, the law should be changed.
When I buy a product, I look at reviews and make my purchasing decision on the features and functionality at the time of sale. If a software update later ruins that, I want the option to get my money back.
No, it’s not creative at all, it’s what happened — I have first hand experience to corroborate this.
Regardless, at least in the US, not only are software-based ToS becoming unenforceable, but there’s a large upswing towards “right to repair” legislation, which, I think, is what you’re arguing against here… and I really think you’re going to be on the wrong side of history with your current line of thinking (despite what Bambu Labs does).
No, it is with you -- the legislators are doing "fine" (and, again, are heading in a fine direction wrt RTR and software ToS).
I have no idea why you think copyright violations apply here? You seem to be throwing legal terms around without regard for their actual meaning. It's clear you're here to argue for the sake of argument, but I'd really encourage you to reflect and think about why you're so loyal to a corporate entity instead of your fellow consumers (of which there are many in the parent and sibling comments... hint: you may be on the wrong side).
Just for fun, pretend you bought a propane grill for cooking on Monday. On Tuesday, you cooked some bbq chicken and some corn. Later on Thursday, and without your knowledge or authorization, the grill no longer allowed you to use the propane apparatus for cooking non-meats unless you call a special telephone number and said a magic word whenever the call was answered. As a minimum, I feel, it'd be very confusing because, even though you're doing the exact same thing as Tuesday, the outcome is not the same.
Your freedoms have been restricted by someone else; if you are okay with that, then have fun licking boots. The rest of us will still be here advocating for your freedoms.
The "agreement" is at best coerced, and under blackmail of hardware you bought and paid for.
At worst, its a fraudulent indefinite rental masquerading as a 'sale'.
And lets discuss 'updates that fuck over your hardware'. In dwcent countries, thats hacking, and a serious criminal charge. But lol, companies are somehow exempt.
Maybe legally, but morally “you have permanent physical access to this but don’t ’own’ it” and anti-circumvention are debatable.
There’s a small benefit of anti-circumvention where businesses sell hardware for cheaper with restrictions and a TOS that prevents bypassing them. But even that doesn’t apply here because Bambu changed the software after purchase.
This reminds me of RMS and GPLv3. Now I personally don't use GPLv3, but this here is literally a case-in-point, and it is not even only limited to the "cloud-only". Because this now includes a company threatening to sue a developer. If they sue one developer, they, by proxy, sue all of them in principle. So RMS was kind of right.
> If you want to use Bambu's software against their TOS
How does the TOS get involved here? I don't use their TOS. Why would or should they be able to enforce it? Note that it also depends on the jurisdiction. For instance, Microsoft's EULA never had any legal bearings in the EU.
"Bambu's software" is forked from an AGPL project and is therefore itself AGPL. I have a right to fork, modify, and use it how I wish subject to the terms of the AGPL. Bambu's TOS is irrelevant. Their TOS is superceded by the terms of the AGPL.
It would have been so easy for Bambu to embrace freedom and privacy and continue to enjoy our loyalty all the way to the bank, but apparently they've got to burn down what they've got.
I've got an a1 mini myself, and I'm not aware of anything comparable on the market, but there's a clear need for some competition now.
For the market overall this is great: Bambu is forcing the other manufacturers to innovate on features, ease of use and affordability in order to keep up. At the same time Bambu's antics prevent them from completely dominating. Any new printer that can compare to a Bambu (or exceed it in interesting ways) gets rewarded with customers that want anything but Bambu
It's a much more interesting and dynamic place than before Bambu's market entry
I find it interesting that many commenters here do not regard anything as 'competitive' unless it offers the same price/performance, while completely disregarding these lock-ins and privacy invasions. It seems that the reason we have all these restrictive and otherwise problematic companies is that you folks just do not assign a cost to their behaviour.
I was not aware of this behaviour when I bought it.
But you raise a good issue: are they selling these at a loss in order to leverage some sort of lock-in? If that's the reason they're so cheap, that's important to know.
I honestly wouldn't mind paying twice as much for something that's more open. But it's also an issue I haven't looked very deeply into. For my first 3d printer I just wanted something cheap and foolproof.
I do not want to be in a business relationship with a company for a trivial amount of money, be it $29.99/yr or $69.99/yr or $249.99 lifetime. None of that is real money. You have no leverage, you do not own your own destiny. Complaining about the price hike is missing the whole point - Plex does not care about any individual customer, and that's the real problem (and the problem with just about every B2C business).