Skip to main content
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'...
Karl Bielefeldt's user avatar
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 ...
Flater's user avatar
  • 59.5k
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 ...
Bart van Ingen Schenau's user avatar
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 ...
Doc Brown's user avatar
  • 220k
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 ...
Doc Brown's user avatar
  • 220k
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 ...
mmathis's user avatar
  • 5,586
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 ...
amon's user avatar
  • 136k
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 ...
Christophe's user avatar
  • 82.2k
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 ...
amon's user avatar
  • 136k
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 ...
Doc Brown's user avatar
  • 220k
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 ...
Thomas Owens's user avatar
  • 85.9k
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 ...
Bart van Ingen Schenau's user avatar
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 ...
Ewan's user avatar
  • 84.4k
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 ...
Thomas Owens's user avatar
  • 85.9k
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 ...
Doc Brown's user avatar
  • 220k
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 ...
Dan Wilson's user avatar
  • 3,163
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 ...
Just a thought...'s user avatar
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 ...
Ewan's user avatar
  • 84.4k
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 ...
coteyr's user avatar
  • 2,583
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 ...
Michael Kay's user avatar
  • 3,599
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 ...
Steve Summit's user avatar
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 ...
l0b0's user avatar
  • 11.6k
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 ...
J_H's user avatar
  • 7,891
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 ...
FluidCode's user avatar
  • 831
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 ...
mouviciel's user avatar
  • 15.5k
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 ...
Hans-Martin Mosner's user avatar
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 ...
Jonathan Wood's user avatar
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 ...
Ewan's user avatar
  • 84.4k
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 ...
user1798707's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible