Thrift
  1. Thrift
  2. THRIFT-274

Towards a working release/versioning process

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.9.1
    • Component/s: None
    • Labels:
      None

      Description

      The current thrift version is virtually useless because it's not getting updated when backward compatibility is broken (it's always 20080411-exported on all the snapshots,) I can't just tell people to use the trunk and not breaking things due things like namespace changes etc. Many projects maintain a reasonable versioning scheme even when system is in alpha state.

      Thrift overall is stable enough to warrant a working versioning scheme. Can we at least start to discuss a version scheme, e.g., major.minor.patch or major.minor.micro.patch, where patch number changes are bug fixes and minor or micro are backward compatible changes and major changes indicate breaking backward compatibility or just marketing hype.

      I propose that we call the current thrift version 1.0.0.0 after all the namespace changes and stick to a reasonable scheme instead of using suffixes (like beta<n>/rc<n> etc.) as it's much friendlier to other components that uses thrift.

        Issue Links

          Activity

          Hide
          Michael Greene added a comment -

          I would personally like a x.x.x.x system. Other Apache releases do have dated releases or milestone (i.e. M3) style versioning.

          The existing Python library shows up as version 1.0 on PyPI so it would be nice if a new release were 1.1, as someone wanting to upgrade to the latest version would pull down the correct version.

          There are some additional reasons I would be strongly in favor of getting a release out the door:

          1. The moderate difficulty getting a compilation environment setup on Windows for new users
          2. The inability to get new builds into other Apache releases (see https://issues.apache.org/jira/browse/HADOOP-3754?focusedCommentId=12620772#action_12620772 )
          Show
          Michael Greene added a comment - I would personally like a x.x.x.x system. Other Apache releases do have dated releases or milestone (i.e. M3) style versioning. The existing Python library shows up as version 1.0 on PyPI so it would be nice if a new release were 1.1, as someone wanting to upgrade to the latest version would pull down the correct version. There are some additional reasons I would be strongly in favor of getting a release out the door: The moderate difficulty getting a compilation environment setup on Windows for new users The inability to get new builds into other Apache releases (see https://issues.apache.org/jira/browse/HADOOP-3754?focusedCommentId=12620772#action_12620772 )
          Hide
          Roger Meier added a comment -

          What about the SemVer approach? => simple & clear!

          # The API version (NOT the product version), composed as a dot delimited
          # string with major, minor, and patch level components.
          #
          #  - Major: Incremented for backward incompatible changes. An example would
          #           be changes to the number or disposition of method arguments.
          #  - Minor: Incremented for backward compatible changes. An example would
          #           be the addition of a new (optional) method.
          #  - Patch: Incremented for bug fixes. The patch level should be increased
          #           for every edit that doesn't result in a change to major/minor.
          #
          # See the Semantic Versioning Specification (SemVer) http://semver.org.
          const string VERSION = "0.4.0"
          

          This snippet comes from http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.thrift?view=co

          no more magic 1.0! every digit has a clear and simple definition

          Show
          Roger Meier added a comment - What about the SemVer approach? => simple & clear! # The API version (NOT the product version), composed as a dot delimited # string with major, minor, and patch level components. # # - Major: Incremented for backward incompatible changes. An example would # be changes to the number or disposition of method arguments. # - Minor: Incremented for backward compatible changes. An example would # be the addition of a new (optional) method. # - Patch: Incremented for bug fixes. The patch level should be increased # for every edit that doesn't result in a change to major/minor. # # See the Semantic Versioning Specification (SemVer) http: //semver.org. const string VERSION = "0.4.0" This snippet comes from http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.thrift?view=co no more magic 1.0 ! every digit has a clear and simple definition
          Hide
          Jake Farrell added a comment -

          Agree with Roger on this, Major.Minor.Patch with optional -snapshot or -dev to describe non-released versions.

          Show
          Jake Farrell added a comment - Agree with Roger on this, Major.Minor.Patch with optional -snapshot or -dev to describe non-released versions.
          Hide
          Roger Meier added a comment -

          I think we can close this issue. What do you think?

          The only additional thing I would like to have is a buildnumber.

          We can add the jenkins variable BUILD_NUMBER via main build job:
          https://builds.apache.org/view/S-Z/view/Thrift/job/Thrift/

          Show
          Roger Meier added a comment - I think we can close this issue. What do you think? The only additional thing I would like to have is a buildnumber. We can add the jenkins variable BUILD_NUMBER via main build job: https://builds.apache.org/view/S-Z/view/Thrift/job/Thrift/
          Hide
          Jake Farrell added a comment -

          I agree with that, but also want to try and clean up some versioning where
          possible (im working on java right now and updating all java components to
          maven to improve testing, versioning and common functionality).

          -Jake

          Show
          Jake Farrell added a comment - I agree with that, but also want to try and clean up some versioning where possible (im working on java right now and updating all java components to maven to improve testing, versioning and common functionality). -Jake

            People

            • Assignee:
              Jake Farrell
              Reporter:
              Luke Lu
            • Votes:
              5 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development