[GH-ISSUE #607] does losing backwards compatibility for a suckless-style config amount as major version? #1295

Closed
opened 2026-04-16 10:40:36 -05:00 by GiteaMirror · 4 comments
Owner

Originally created by @al-caveman on GitHub (Aug 14, 2020).
Original GitHub issue: https://github.com/semver/semver/issues/607

so i have an app that i modified such that:

  • the cli arguments did not change. same arguments and same behaviour.
  • the database format did not change. same thing.

what is changed is this:

  • removed some redundant prompts by making the app remember the previous choices. so the user is no longer asked to enter same input again. this does not warrant a major version, right? i guess only a minor version increment?
  • variable names and value syntax in configuration file. now, this is the tricky part, because the app does not have have a configuration file. its configuration is in the source code itself, typical to suckless apps, such as st (where user modified source code, then recompile app).

so, my question is:

  • is configs-in-source-code considered a configuration file? or is it considered without configuration file?
  • where do i fit for changing configuration variable names and their values' types?

if a user goes into the older version, copies part of the source code which is intended to store configs, and pastes it in the same region in the new app, the app will crash, because variable names have changed, as well as their value types.

what does semver think?

Originally created by @al-caveman on GitHub (Aug 14, 2020). Original GitHub issue: https://github.com/semver/semver/issues/607 so i have an app that i modified such that: - the cli arguments did not change. same arguments and same behaviour. - the database format did not change. same thing. what is changed is this: - removed some redundant prompts by making the app remember the previous choices. so the user is no longer asked to enter same input again. this does not warrant a major version, right? i guess only a minor version increment? - **variable names and value syntax in configuration file**. now, this is the tricky part, because the app does _not_ have have a configuration file. its configuration is in the source code itself, typical to suckless apps, such as `st` (where user modified source code, then recompile app). so, my question is: - is configs-in-source-code considered a configuration file? or is it considered without configuration file? - where do i fit for changing configuration variable names and their values' types? if a user goes into the older version, copies part of the source code which is intended to store configs, and pastes it in the same region in the new app, the app will crash, because variable names have changed, as well as their value types. what does semver think?
Author
Owner

@ljharb commented on GitHub (Aug 14, 2020):

removed some redundant prompts

arguably either one; if the user wants to be able to enter the info every time, it'd be breaking for them; otherwise minor.

changing the config format is absolutely a breaking change, because that is a part of your API.

<!-- gh-comment-id:674187550 --> @ljharb commented on GitHub (Aug 14, 2020): > removed some redundant prompts arguably either one; if the user *wants* to be able to enter the info every time, it'd be breaking for them; otherwise minor. changing the config format is absolutely a breaking change, because that is a part of your API.
Author
Owner

@al-caveman commented on GitHub (Aug 14, 2020):

i see. just to confirm. breaking change = major version bump?

<!-- gh-comment-id:674267591 --> @al-caveman commented on GitHub (Aug 14, 2020): i see. just to confirm. breaking change = major version bump?
Author
Owner

@ljharb commented on GitHub (Aug 14, 2020):

Yes.

<!-- gh-comment-id:674270640 --> @ljharb commented on GitHub (Aug 14, 2020): Yes.
Author
Owner

@al-caveman commented on GitHub (Aug 14, 2020):

Thanks. Makes sense.

<!-- gh-comment-id:674271265 --> @al-caveman commented on GitHub (Aug 14, 2020): Thanks. Makes sense.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/semver#1295