fsprojects / fsprojects/FsHttp

Guard semantic versioning for major changes using binary compat checks in .fsproj

Open
#194 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

breaking change enhancement
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):

image

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.