fsprojects / fsprojects/FsHttp
Guard semantic versioning for major changes using binary compat checks in .fsproj
Nobody has claimed this yet.
- Dominant language
- F#
- Stars
- 498
- Forks
- 41
- PR merge metrics
- No merged PRs in 30d
Description
I couldn't find this documented, not in a release-notes, and not in the PR where it happened (#167). Several functions were updated with extra arguments (namely: cancellationToken) that cause existing code to break at compile time (in my source code in 100+ places, it's a non-trivial effort to fix):
I understand the need to update public functions, but introducing backwards compatibility should be done with the biggest restraints, and prevented if at all possible. My suggestion would be to link to an update page where the changes are highlighted, or first have a version that marks functions as obsolete (ObsoleteAttribute), which you can use to explain users what to use instead, going forward.
I know, it is OSS and I shouldn't be too fuzzy about all of this, we're all volunteers out here :). In fact, I'm currently in a similar situation with F#'s TaskSeq (see: https://github.com/fsprojects/FSharp.Control.TaskSeq/issues/179, https://github.com/fsprojects/FSharp.Control.TaskSeq/issues/167 and https://github.com/fsprojects/FSharp.Control.TaskSeq/discussions/188). Meaning, I need to support cancellation tokens but ideally without introducing backward compat issues.
Rants aside, I really appreciate this library, it has made our lives a lot easier!!! ❤️
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the repository's .fsproj configuration and PR #167 to understand the public API changes involving cancellationToken. Compare the available binary-compatibility checks with the requested semantic-versioning guard; done means major public API breaks are detected or prevented during the project workflow.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- fsharp
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100