My apologies if some details here are deliberately vague, I don't want to get side-tracked by the specifics of the language, frameworks, third-party API, etc.
Some months ago, I developed some code to ease working with a specific third-party API. As the code seemed to be something that I, even if no-one else, would use again, I published it as a Nuget package.
When I wrote it, I was working within a specific web framework, and as the code needed some configuration before it could be used, I used the web framework's configuration methods to get the settings. I knew that this would prevent the package from being used with other frameworks, but I wasn't sure how else to do it at the time.
Now I've found out how I should have done the configuration, I want to change the code to do it that way, as it will open it up to being used from a much wider range of (web and non-web) frameworks.
This wouldn't be a problem, except that for some reason I don't understand, my Nuget package has had over 1500 downloads. Obviously that doesn't in any way translate into 1500 usages, but it does make me think that other people are using the package. If I introduce this change, it's going to break their code. Obviously, I have no way of knowing who has downloaded the package, and who (if anyone) is actually using it.
The main problem is that it's not going to show up as a compiler error, that would be OK (if a little anti-social), as it would be obvious that something had changed. The code will still compile and run, but will throw an exception when it tries to access the third-party API, as the settings will not have been set. If the consumer of my package upgrades to the new version, and tests everything, then they will find the problem, and (hopefully) work out what happened.
Realistically however, it's very likely that they may not test everything, and just deploy. I don't really want to be responsible for someone else's production code breaking.
I've seen suggestions about producing MyPackage.V2
and so on, but I'm not sure that's a line I really want to go down. I don't anticipate making this sort of change again, and would prefer to keep just the single package. It's not like this is an enterprise package that will change many times. I doubt I would ever need to do much to it again.
Anyone able to suggest what I do? I should point out that I published the package (and made the code open source) on the understanding that it is presented as-is, with no guarantees, but I still feel bad about doing something that I know will cause problems.
Any advice would be welcome.