187
votes
Why do library developers deliberately break existing code?
A major version upgrade literally means they intend to break things. You shouldn't upgrade to a new major version unless you're prepared to deal with it. Most build systems have a way to specify you'...
55
votes
Why do library developers deliberately break existing code?
My point, and question, is: Why do library developers knowingly break existing code like this? Why not at least have it default to either true or false, whichever is the most reasonable?
Because ...
20
votes
Accepted
Hiding non-user-facing executables for Windows applications?
There are easier ways to achieve the desired effect for the overwhelming majority of your users.
Clearly write in your documentation that the set of internal tools that get shipped is subject to ...
12
votes
Why do library developers deliberately break existing code?
Some good answers already, however, let me add my two cents from some real-world experience.
More than often, though usually acting in good faith, some API designers are pretty ignorant what kind of ...
8
votes
Accepted
Question about ethical auto-updates
I see only one ethical aspect here: when you (or your company) abuse the silent auto-update feature to change a "harmless" application into a malicious one, which first establishes a large ...
6
votes
Accepted
What should my next SemVer version number be?
Use version 3.10 since it is a backwards-compatible new feature. Semantic versioning does not limit you to only 10 revisions of a particular major/minor version. I'm using version 1.73.0 of VS Code ...
6
votes
Accepted
Managing releases (binaries and othert build artifacts) using Git
Git is not a deployment mechanism. It is a distributed source control tool. You are creatively using the “distributed” part to manage and deploy your artefacts, but that is not playing to Git's ...
5
votes
Accepted
How to explain a software bug to a child
When I buy a house or a car, the product is already completely ready. It's very seldom that an error will be noticed later by the customer.
That’s a wrong assumption. In all the countries I have ...
5
votes
Accepted
Convince people not to use an "end-of-life" Python 3.X version
The software development lifecycle is more than development – it also involves maintenance and decommissioning or replacement of the software. So asking “what about in X years” is generally a sensible ...
4
votes
The pros and cons of incremental update/deployment on granularity of *files* (not on *services*)
The four articles you mentioned talk about deploying new versions of services "as a whole" because services must obviously be updated completely - or not - with all their files, otherwise ...
4
votes
What should my next SemVer version number be?
Semantic Versioning is intended to version public APIs, usually in the form of packages or libraries. It is not designed for use in versioning applications. This will prevent you from strictly ...
3
votes
Accepted
What are the common design patterns for updating user data of a desktop/mobile application?
What you describe is a fairly standard way of handling backwards compatibility in file/database formats. The process of reading an old file format and then storing the data in the latest format is ...
3
votes
Accepted
When reconstructing file B from file A and a binary difference B-A, given that A and B-A are correct, do we still need to verify the integrity of B?
The key thing to consider is: How will you handle the situation when this unlikely scenario occurs?
If you just get and error and can regenerate b some other way, well the impact is going to be very ...
3
votes
Question about ethical auto-updates
If your application needs to be up-to-date, then I don't see why an auto-update feature would necessarily be problematic. I use several applications with different types of automatic update ...
3
votes
Accepted
"Support branches" and major tech update
I would first try to make a statistics:
how many hours did your team invest in bug fixing for older releases, let us says, last year, and how much time was invested to transfer those bug fixes to the ...
3
votes
Is it ever ok not to update VMs without external IP running in the cloud?
Yes, every VM connected to a network should be updated!
Let's flip your arguments around:
security breaches would create some downtime for our service
security breaches can break things
time spent ...
2
votes
How to prevent my executable being treated from AV like bad or virus?
To add to what Jan Doggen said, other anti viruse softwares also do heuristic scans.
Anti Virus scanning is not just looking whether a specific executable is the exact copy of a known virus.
That can ...
2
votes
How to update version when only dependencies are updated?
I agree with you that keeping dependencies up to date is a good idea, even though you are risking an otherwise needless release.
I would simply update the build/patch number unless your code is a ...
2
votes
Is it ever ok not to update VMs without external IP running in the cloud?
Updating properly does indeed take a large number of resources. You have to test it, apply it, and deal with any downtime, or issues the update may have caused. For the truly concerned you also need ...
2
votes
Why do library developers deliberately break existing code?
One of the few things I remember from my CS undergraduate course - now 50 years ago - is David Wheeler's quote "compatibility means deliberately repeating other people's mistakes". Over time ...
2
votes
Why do library developers deliberately break existing code?
Ultimately this comes down to the elusive and controversial goal
of backwards compatibility.
As a developer of application A, you would like to spend your
time doing three things:
adding features
...
2
votes
Are mature dependencies less risky than state of the art ones?
There are many factors at play to choose between "fast" or "slow" upgrades. The main one is that unless you have an absolutely gigantic budget (time, people, expertise) you will ...
1
vote
When reconstructing file B from file A and a binary difference B-A, given that A and B-A are correct, do we still need to verify the integrity of B?
release process
At a bare minimum,
you must produce b.tar from binary patches in CI/CD
and automatically verify that its hash matched the desired hash.
This mitigates the risk of seldom-triggered bugs ...
1
vote
Question about ethical auto-updates
A forced auto-update is a can of worms. Already some users pointed out the security risk, but that is not the only problem. You have no idea of what is the situation on the device when the app is ...
1
vote
Question about ethical auto-updates
It depends.
One one hand, as a user, I am happy with modern browsers self updating automatically and fixing security breaches and privacy leaks.
One the other hand, as a developer, I need to fully ...
1
vote
Question about ethical auto-updates
TL;DR: The one thing that you can't ethically do is update the app "behind the user's back".
There are a few things to consider apart from ethics, which probably help to clarify which kind ...
1
vote
Why do library developers deliberately break existing code?
As someone who's authored dozens of libraries on Nuget and Github, I can tell you that backwards compatability is an important consideration.
Despite some other answers here, I don't believe most ...
1
vote
"Support branches" and major tech update
Cherry picking is a lie. Anytime you do it you risk and have to test for compilation and other errors you may have introduced. Updating shouldn't add qualitatively to the problem.
Instead of cherry ...
1
vote
Accepted
Besides the obvious is there any good reason to version separate components under one general release?
If every component is actually separate, reusable and not tightly coupled to the app that uses it, the version of the components should be updated when a bug fix or a new feature is released.
Imagine ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
software-updates × 69automatic-update × 10
deployment × 8
security × 6
versioning × 6
release-management × 5
software-patches × 5
c# × 3
database × 3
web-development × 3
web-applications × 3
version-control × 3
libraries × 3
windows × 3
software × 3
third-party-libraries × 3
java × 2
terminology × 2
objective-c × 2
code-reuse × 2
client-server × 2
python-3.x × 2
semantic-versioning × 2
desktop-application × 2
delphi × 2