Define "package" #127

Closed
opened 2026-02-17 11:19:21 -06:00 by GiteaMirror · 11 comments
Owner

Originally created by @ecki on GitHub (Mar 27, 2014).

In the Java and OSGi world "package" is a term with a specific meaning. (And especially in OSGi you could even have a version number on seperate packages inside a bundle). I would therefore recommend you define that with package you actually mean "deliverable" or "deploymet unit" and not "java package". Or you define that the granularity at which you apply the version number might be on "API", "(osgi) package", "packages", "operation" or "deployment unit" or "application" level.

Originally created by @ecki on GitHub (Mar 27, 2014). In the Java and OSGi world "package" is a term with a specific meaning. (And especially in OSGi you could even have a version number on seperate packages inside a bundle). I would therefore recommend you define that with package you actually mean "deliverable" or "deploymet unit" and not "java package". Or you define that the granularity at which you apply the version number might be on "API", "(osgi) package", "packages", "operation" or "deployment unit" or "application" level.
Author
Owner

@crazedsanity commented on GitHub (Mar 27, 2014):

Can you give a better explanation of where the versions generally live in a Java deliverable? It would be useful to explain in a way that does not require in-depth, Java-specific knowledge.

@crazedsanity commented on GitHub (Mar 27, 2014): Can you give a better explanation of where the versions generally live in a Java deliverable? It would be useful to explain in a way that does not require in-depth, Java-specific knowledge.
Author
Owner

@ecki commented on GitHub (Mar 30, 2014):

Sure I can, but I guess it is not really in scope for the semver (main) document. Java has no notion of versions of classes (other than the binary compatibility version of class files). In a Java Archive (JAR) you can have a manifest, and there it is possible to specify a implementation version. This is mostly informative, but can be queried on a Java package level.

If you go to OSGi those Java Archives have the role of a OSGi bundle. They can have a explicite Bundle-Version in the Manifest. This version can be used declarative and descriptive. But typically dependencies are done by requiring or exporting java packages with a OSGi version attribute (also in the Manifest).

My bug report is simply about the fact, that the semver main document does not define what it means with package (and in the java or OSGi world it can mean something entirely unrelated).

@ecki commented on GitHub (Mar 30, 2014): Sure I can, but I guess it is not really in scope for the semver (main) document. Java has no notion of versions of classes (other than the binary compatibility version of class files). In a Java Archive (JAR) you can have a [manifest](http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Main_Attributes), and there it is possible to specify a implementation version. This is mostly informative, but can be [queried](http://docs.oracle.com/javase/7/docs/technotes/guides/versioning/spec/versioning2.html#wp89936) on a Java package level. If you go to OSGi those Java Archives have the role of a OSGi bundle. They can have a explicite [Bundle-Version](http://wiki.osgi.org/wiki/Bundle-Version) in the Manifest. This version can be used declarative and descriptive. But [typically](http://wiki.osgi.org/wiki/Use_Import-Package_instead_of_Require-Bundle) dependencies are done by requiring or [exporting](http://wiki.osgi.org/wiki/Export-Package) java packages with a OSGi version attribute (also in the Manifest). My bug report is simply about the fact, that the semver main document does not define what it means with package (and in the java or OSGi world it can mean something entirely unrelated).
Author
Owner

@crazedsanity commented on GitHub (Mar 31, 2014):

A "deliverable" might have a specific meaning in some other context just as "package" does for Java. It seems like obfuscating the wording for the sake of being language-agnostic would be counterproductive. I'd be interested to hear other's thoughts on it, though, as I am far from an authority when it comes to this repository/document.

@crazedsanity commented on GitHub (Mar 31, 2014): A "deliverable" might have a specific meaning in some other context just as "package" does for Java. It seems like obfuscating the wording for the sake of being language-agnostic would be counterproductive. I'd be interested to hear other's thoughts on it, though, as I am far from an authority when it comes to this repository/document.
Author
Owner

@ecki commented on GitHub (Apr 1, 2014):

@crazedsanity yeah I somewhat agree, might be a too big task to find the better word. However the title of the bug still holds, the term "package" used without any definition is a problem. And I am willing to contribute a formulation for a definition (once I am sure what the actual meaning is).

I would think that "deliverable" or "artifact" would be a good alternative in situations where actually an API/implementation is defined in terms of those products. But it might not cover situations with a unusual lifecylce.

@ecki commented on GitHub (Apr 1, 2014): @crazedsanity yeah I somewhat agree, might be a too big task to find the better word. However the title of the bug still holds, the term "package" used without any definition is a problem. And I am willing to contribute a formulation for a definition (once I am sure what the actual meaning is). I would think that "deliverable" or "artifact" would be a good alternative in situations where actually an API/implementation is defined in terms of those products. But it might not cover situations with a unusual lifecylce.
Author
Owner

@bartlettroscoe commented on GitHub (Dec 7, 2014):

A "Package" should follow the rules of Packaging Principles. One key principle of course is "Reuse-release equivalence principle (REP)" but there are other that should be considered as well.

We are trying to work on a maturity model that addresses backward compatibility that defines when applying strict "Semantic Versioining" is appropriate. In particular, late stage "Production Growth" and "Production Maintenance" is where one would apply strict "Semantic Versioning". See The TriBITS Lifecycle Model.

@bartlettroscoe commented on GitHub (Dec 7, 2014): A "Package" should follow the rules of [Packaging Principles](http://en.wikipedia.org/wiki/Package_principles). One key principle of course is "Reuse-release equivalence principle (REP)" but there are other that should be considered as well. We are trying to work on a maturity model that addresses backward compatibility that defines when applying strict "Semantic Versioining" is appropriate. In particular, late stage "Production Growth" and "Production Maintenance" is where one would apply strict "Semantic Versioning". See [The TriBITS Lifecycle Model](http://web.ornl.gov/~8vt/TribitsLifecycleModel_v1.0.pdf).
Author
Owner

@ecki commented on GitHub (Dec 8, 2014):

So the question is somewhat unanswered: what does semver mean when it speaks of package? is it more a deployment unit, a project or a language construct?

@ecki commented on GitHub (Dec 8, 2014): So the question is somewhat unanswered: what does semver mean when it speaks of package? is it more a deployment unit, a project or a language construct?
Author
Owner

@jwdonahue commented on GitHub (Dec 6, 2017):

@ecki, I have always assumed that when a specification does not provide its own definition of a word, the "standard dictionary" for the language the spec is written in, provides the definition. In this case try looking at http://www.dictionary.com/browse/package?s=t and assume the SemVer spec intended a liberal application of those definitions, or to quote @mojombo's own words from the introduction:

I call this system "Semantic Versioning." Under this scheme, version numbers and the way they change convey meaning about the underlying code and what has been modified from one version to the next.

Unless you have further questions or wish to issue a PR, please close this issue at your earliest possible convenience.

@jwdonahue commented on GitHub (Dec 6, 2017): @ecki, I have always assumed that when a specification does not provide its own definition of a word, the "standard dictionary" for the language the spec is written in, provides the definition. In this case try looking at http://www.dictionary.com/browse/package?s=t and assume the SemVer spec intended a liberal application of those definitions, or to quote @mojombo's own words from the introduction: > I call this system "Semantic Versioning." Under this scheme, version numbers and the way they change convey meaning about the underlying code and what has been modified from one version to the next. Unless you have further questions or wish to issue a PR, please close this issue at your earliest possible convenience.
Author
Owner

@ecki commented on GitHub (Dec 6, 2017):

the dictionary link does not help when one(?) for programming language where the spec is applied its a different terminology. But I open a request with what I understand. The FAQ format is better than trying to shoehorn it into the formal definition. It is just a good thing to acknowledge that not all eco systems understand package as an term deployment unit. (And deployment unit might not always be the unit of versioning, think Web API or with modules)

@ecki commented on GitHub (Dec 6, 2017): the dictionary link does not help when one(?) for **programming language** where the spec is applied its a different terminology. But I open a request with what I understand. The FAQ format is better than trying to shoehorn it into the formal definition. It is just a good thing to acknowledge that not all eco systems understand package as an term deployment unit. (And deployment unit might not always be the unit of versioning, think Web API or with modules)
Author
Owner

@jwdonahue commented on GitHub (Dec 6, 2017):

Now that's a really good start! I think you should issue a PR to semver/semver.

@Haacked (FYI).

@jwdonahue commented on GitHub (Dec 6, 2017): Now that's a really good start! I think you should issue a PR to semver/semver. @Haacked (FYI).
Author
Owner

@jwdonahue commented on GitHub (Oct 8, 2018):

@ecki , if you intend to carry this forward, you need to issue PR here on semver/semver. Otherwise, please close this issue at your earliest possible convenience.

@jwdonahue commented on GitHub (Oct 8, 2018): @ecki , if you intend to carry this forward, you need to issue PR here on semver/semver. Otherwise, please close this issue at your earliest possible convenience.
Author
Owner

@ecki commented on GitHub (Oct 17, 2018):

Looks like I am the only one struggling with the definition.

@ecki commented on GitHub (Oct 17, 2018): Looks like I am the only one struggling with the definition.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/semver#127