Hey Micah,

npm allows you to set the version to anything you wish, but semantic versioning[1] is the convention. A few large-ish packages don't follow this (closure-compiler uses a timestamp as its version), but the tooling strongly nudges package owners and consumers towards semver.

1.0.0 releases are a significant milestone to npm. Before 1.0.0, npm enforces strict versioning -- users who depend on `^0.8.0` will receive 0.8.0, even if there's a `0.9.0` or `0.9.1` available. After 1.0.0, users who depend on `^1.0.0` will receive any newer minor and patch releases (but not major version bumps). In this sense, Arrow doing major version bumps is fine, if a bit foreign to most node devs.

I worry more about releasing a 1.0.0 with type definitions that require library consumers use a TypeScript compiler that's a year old (aka a decade in JavaScript-years ;]). Bumping to 1.0.0 communicates a level of maturity the JS project still needs to achieve IMO.

I'm personally ambivalent and will defer to the Arrow community on versioning, but these are the general expectations of larger packages in the node community as I understand them.

Best,

Paul

1. https://docs.npmjs.com/about-semantic-versioning


On 7/9/20 10:34 PM, Micah Kornfield wrote:
Hi Paul,
I'm not sure if this was ever resolved, but I think the plan going forward is to start bumping major versions on each release.  Would NPM allow such changes in that case?

Cheers,
Micah

On Wed, Jul 1, 2020 at 9:23 AM Paul Taylor <ptaylor.apa...@gmail.com <mailto:ptaylor.apa...@gmail.com>> wrote:

    The TypeScript compiler has made breaking changes in recent releases,
    meaning we can't easily upgrade past 3.5 and projects on 3.6+ can't
    compile our types.

    I'm working on upgrading our tsc dependency to 3.9. The fixes could
    include a few backwards-incompatible API changes, and might not be
    done
    in time for the general Arrow 1.0 release.

    JS shouldn't block the 1.0 release, so can we exclude JS from 1.0
    if the
    fixes aren't ready by then? npm's semantic versioning allows breaking
    changes in any version before 1.0, but not between minor versions
    after
    1.0. I've heard directly from some of our JS users who'd prefer if we
    made these changes before bumping to 1.0 on npm.

    Thanks,

    Paul

Reply via email to