Uploaded image for project: 'Pig'
  1. Pig
  2. PIG-1311

Pig interfaces should be clearly classified in terms of scope and stability

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.8.0
    • None
    • None
    • Hide
      Interfaces and important abstract classes in Pig's code have been tagged for both intended audience and stability. This tagging has been done via Java annotations.

      The audience tag has three options:

      Public: This interface is intended for use by anyone using Pig.

      Limited Private: This interface is intended only for some users of Pig. A
      complete list of those users is included with the annotation.

      Private: This interface is private to Pig and should not be used outside of
      Pig.

      The stability tag has three levels of stability:

      Stable: This means the interface is guaranteed not to change in a
      non-backward compatible way across minor releases. It can still change, as
      long as the change does not require users to rewrite their code, recompile
      their code, change semantics of a method, etc. It can change in non-backward
      compatible ways across major releases. Stable interfaces will not be removed
      without being deprecated for at least one minor release.

      Evolving: This interface is still under development and may change in a
      non-backward compatible way across minor releases. It will not change in a
      non-backward compatible way across patch releases. Evolving interfaces will not
      be removed without being deprecated for at least one minor release.

      Unstable: This interface is not stable and no guarantees are made as to its
      backward compatibility or existence across any type of release.

      Major releases are those that change the left most number, so Pig 0.x to 1.0
      will be a major release.

      Minor releases are those that change the number to the right of the major
      number. So Pig 0.7 to Pig 0.8 is a minor release.

      Patch releases change the number to the right of the minor release. So Pig
      0.7.1 would be a patch release.
      Show
      Interfaces and important abstract classes in Pig's code have been tagged for both intended audience and stability. This tagging has been done via Java annotations. The audience tag has three options: Public: This interface is intended for use by anyone using Pig. Limited Private: This interface is intended only for some users of Pig. A complete list of those users is included with the annotation. Private: This interface is private to Pig and should not be used outside of Pig. The stability tag has three levels of stability: Stable: This means the interface is guaranteed not to change in a non-backward compatible way across minor releases. It can still change, as long as the change does not require users to rewrite their code, recompile their code, change semantics of a method, etc. It can change in non-backward compatible ways across major releases. Stable interfaces will not be removed without being deprecated for at least one minor release. Evolving: This interface is still under development and may change in a non-backward compatible way across minor releases. It will not change in a non-backward compatible way across patch releases. Evolving interfaces will not be removed without being deprecated for at least one minor release. Unstable: This interface is not stable and no guarantees are made as to its backward compatibility or existence across any type of release. Major releases are those that change the left most number, so Pig 0.x to 1.0 will be a major release. Minor releases are those that change the number to the right of the major number. So Pig 0.7 to Pig 0.8 is a minor release. Patch releases change the number to the right of the minor release. So Pig 0.7.1 would be a patch release.

    Description

      Clearly marking Pig interfaces (Java interfaces but also things like config files, CLIs, Pig Latin syntax and semantics, etc.) to show scope (public/private) and stability (stable/evolving/unstable) will help users understand how to interact with Pig and developers to understand what things they can and cannot change.

      Attachments

        1. PIG-1311.patch
          7 kB
          Alan Gates

        Activity

          People

            gates Alan Gates
            gates Alan Gates
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: