Skip to content

Semantic versioning; safely breaking Lwt (proposal) #293

@aantron

Description

@aantron

I suggest:

How breaking changes will be done:

  • An API that is being changed will be versioned. So, if Lwt_unix.foo is to be changed, there will be Lwt_unix.Versioned.foo_1 and Lwt_unix.Versioned.foo_2. A detailed deprecation annotation on foo will say:

    • If you don't wish to risk refactoring your code, use foo_1 – an alias for the current foo.
    • To get the new functionality immediately, use foo_2.
  • This can be released right away.

  • I (or other maintainer(s)) will notify the maintainers of any packages in OPAM that are using foo.

  • After being released deprecated for at least, say, 3 months, foo will become an alias for foo_2 instead of foo_1, during a major release. This will be clearly noted in the change log.

  • foo_1 and foo_2 will be marked deprecated, and will be guaranteed to persist in Lwt for at least, say, one more major release. After that, each will remain indefinitely, unless/until further maintenance becomes an unreasonable burden. This also applies to APIs that are deprecated but not broken (i.e. whose names are not being reused).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions