JaroslavTulach: /* Real vs. Ideal */ - 2012-11-07 01:51:54

Real vs. Ideal

←Older revision Revision as of 01:51, 7 November 2012
Line 25: Line 25:
Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]]. Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]]s a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).
Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]]. Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]]s a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).
-
[[Semantic versioning]] should still remain the basic (and ideal) approach for classification of incompatiblities. However, when there is an error in the [[StabilityhOfAPI]] classification, there are [[RangeDependenciesAnalysed|ranges]] to help everyone to recover from it.
+
[[Semantic versioning]] should still remain the basic (and ideal) approach for classification of incompatiblities. However, when there is an error in the [[StabilityOfAPI]] classification, there are [[RangeDependenciesAnalysed|ranges]] to help everyone to recover from it.

JaroslavTulach: /* Real vs. Ideal */ - 2012-11-07 01:51:36

Real vs. Ideal

←Older revision Revision as of 01:51, 7 November 2012
Line 23: Line 23:
While the [[TransitivityOfIncompatibleChange]] is a clearly understandable feature of [[semantic versioning]], in real, [[clueless]] world we can get further by giving the ultimate power of deciding whether something is or is not [[compatible]] to users of [[API]] modules.
While the [[TransitivityOfIncompatibleChange]] is a clearly understandable feature of [[semantic versioning]], in real, [[clueless]] world we can get further by giving the ultimate power of deciding whether something is or is not [[compatible]] to users of [[API]] modules.
-
Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]].
+
Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]]. Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]]s a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).
-
Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]]s a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).
+
[[Semantic versioning]] should still remain the basic (and ideal) approach for classification of incompatiblities. However, when there is an error in the [[StabilityhOfAPI]] classification, there are [[RangeDependenciesAnalysed|ranges]] to help everyone to recover from it.

JaroslavTulach: /* Real vs. Ideal */ - 2012-11-07 01:48:44

Real vs. Ideal

←Older revision Revision as of 01:48, 7 November 2012
Line 21: Line 21:
== Real vs. Ideal ==
== Real vs. Ideal ==
-
While the [[TransitivityOfIncompatibleChange]] is a clearly understandable feature of [[semantic versioning]], in real, [[clueless]] world it we can get further by giving the ultimate power of deciding whether something is or is not [[compatible]] to users of [[API]] modules. Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]].
+
While the [[TransitivityOfIncompatibleChange]] is a clearly understandable feature of [[semantic versioning]], in real, [[clueless]] world we can get further by giving the ultimate power of deciding whether something is or is not [[compatible]] to users of [[API]] modules.
 +
 
 +
Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]].
Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]]s a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).
Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]]s a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).

JaroslavTulach: /* Transitivity in Semantic World */ - 2012-11-07 01:44:47

Transitivity in Semantic World

←Older revision Revision as of 01:44, 7 November 2012
Line 11: Line 11:
# we go against the motto of [[semantic versioning]]
# we go against the motto of [[semantic versioning]]
-
The interface of <math>N</math> are re-exported and thus basically part of the public signatures of <math>M</math>. As there was an incompatible change in these interfaces, [[semantic versioning]] urges us to increment the major version of module <math>M</math>. The [[incompatible]] change in <math>N</math> [[TransitivityOfIncompatibleChange|transitively]] influences <math>M</math>. Its author should release <math>M_{2.0}</math>!
+
Some parts of interface of <math>N</math> are re-exported and thus basically part of the public signatures of <math>M</math>. As there was an incompatible change in these interfaces, [[semantic versioning]] urges us to increment the major version of module <math>M</math>. The [[incompatible]] change in <math>N</math> [[TransitivityOfIncompatibleChange|transitively]] influences <math>M</math>. Its author should release <math>M_{2.0}</math>!
== When Things Go Relative ==
== When Things Go Relative ==

JaroslavTulach: /* Transitivity in Semantic World */ - 2012-11-07 01:43:49

Transitivity in Semantic World

←Older revision Revision as of 01:43, 7 November 2012
Line 5: Line 5:
Imagine you have a module <math>M_{1.0}</math> which re-exports [[API]]s provided by module <math>N_{1.0}</math>. The re-exported [[API]]s of module <math>N</math> become part of the [[API]] of module <math>M</math> as they may be visible in <math>M</math>'s own class signatures as parameter or return types, or super types.
Imagine you have a module <math>M_{1.0}</math> which re-exports [[API]]s provided by module <math>N_{1.0}</math>. The re-exported [[API]]s of module <math>N</math> become part of the [[API]] of module <math>M</math> as they may be visible in <math>M</math>'s own class signatures as parameter or return types, or super types.
-
Let's now continue by showing envisioning that the author of module <math>N</math> decides to release new, [[incompatible]] version. According to rules of [[semantic versioning]] the version should have different major version - e.g. let it be called <math>N_{2.0}</math>.
+
Let's now continue by envisioning that the author of module <math>N</math> decides to release new, [[incompatible]] version. According to rules of [[semantic versioning]] the version should have different major version - e.g. let it be called <math>N_{2.0}</math>.
Often, the producer of module <math>M</math> would like to run on the most recent version of module <math>N</math>. As such it may consider creating new version of own module which would depend on <math>N_{2.0}</math>. Can this version be called <math>M_{1.1}</math>? Well, if we allow it to be called <math>M_{1.1}</math>, then:
Often, the producer of module <math>M</math> would like to run on the most recent version of module <math>N</math>. As such it may consider creating new version of own module which would depend on <math>N_{2.0}</math>. Can this version be called <math>M_{1.1}</math>? Well, if we allow it to be called <math>M_{1.1}</math>, then:

JaroslavTulach: /* Transitivity in Semantic World */ - 2012-11-07 01:43:30

Transitivity in Semantic World

←Older revision Revision as of 01:43, 7 November 2012
Line 3: Line 3:
== Transitivity in Semantic World ==
== Transitivity in Semantic World ==
-
Imagine you have a module <math>M_{1.0}</math> which re-exports [[API]]s provided by module <math>N_{1.0}</math>. The re-exported [[API]]s of module <math>N</math> become part of the [[API]] of module <math>M</math> as they may be visible in <math>M</math>'s own class signatures as parameter or return types, etc.
+
Imagine you have a module <math>M_{1.0}</math> which re-exports [[API]]s provided by module <math>N_{1.0}</math>. The re-exported [[API]]s of module <math>N</math> become part of the [[API]] of module <math>M</math> as they may be visible in <math>M</math>'s own class signatures as parameter or return types, or super types.
Let's now continue by showing envisioning that the author of module <math>N</math> decides to release new, [[incompatible]] version. According to rules of [[semantic versioning]] the version should have different major version - e.g. let it be called <math>N_{2.0}</math>.
Let's now continue by showing envisioning that the author of module <math>N</math> decides to release new, [[incompatible]] version. According to rules of [[semantic versioning]] the version should have different major version - e.g. let it be called <math>N_{2.0}</math>.

JaroslavTulach at 01:42, 7 November 2012 - 2012-11-07 01:42:50

←Older revision Revision as of 01:42, 7 November 2012
Line 1: Line 1:
-
[[TransitivityOfIncompatibleChange]] happens when reusing [[API]]s provided by others as described in [[Chapter 10]]. However [[TransitivityOfIncompatibleChange]] is only meaningful when using [[semantic versioning]] - in case of general [[RangeDependencies]], it looses its meaning.
+
[[TransitivityOfIncompatibleChange]] happens when reusing [[API]]s provided by others as described in [[Chapter 10]]. However the whole concept is only meaningful when using [[semantic versioning]] - in case of general [[RangeDependencies]], it looses its meaning.
== Transitivity in Semantic World ==
== Transitivity in Semantic World ==

JaroslavTulach at 01:42, 7 November 2012 - 2012-11-07 01:42:11

←Older revision Revision as of 01:42, 7 November 2012
Line 1: Line 1:
-
Happens when reusing [[API]]s provided by others as described in [[Chapter 10]]. However [[TransitivityOfIncompatibleChange]] is only meaningful when using [[semantic versioning]] - in case of general [[RangeDependencies]], it looses its meaning.
+
[[TransitivityOfIncompatibleChange]] happens when reusing [[API]]s provided by others as described in [[Chapter 10]]. However [[TransitivityOfIncompatibleChange]] is only meaningful when using [[semantic versioning]] - in case of general [[RangeDependencies]], it looses its meaning.
== Transitivity in Semantic World ==
== Transitivity in Semantic World ==

JaroslavTulach: /* Real vs. Ideal */ - 2012-11-07 01:41:51

Real vs. Ideal

←Older revision Revision as of 01:41, 7 November 2012
Line 23: Line 23:
While the [[TransitivityOfIncompatibleChange]] is a clearly understandable feature of [[semantic versioning]], in real, [[clueless]] world it we can get further by giving the ultimate power of deciding whether something is or is not [[compatible]] to users of [[API]] modules. Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]].
While the [[TransitivityOfIncompatibleChange]] is a clearly understandable feature of [[semantic versioning]], in real, [[clueless]] world it we can get further by giving the ultimate power of deciding whether something is or is not [[compatible]] to users of [[API]] modules. Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]].
-
Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]] a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).
+
Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]]s a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).

JaroslavTulach: /* When Things Go Relative */ - 2012-11-07 01:40:56

When Things Go Relative

←Older revision Revision as of 01:40, 7 November 2012
Line 19: Line 19:
{{:StabilityOfAPI}}
{{:StabilityOfAPI}}
 +
== Real vs. Ideal ==
 +
While the [[TransitivityOfIncompatibleChange]] is a clearly understandable feature of [[semantic versioning]], in real, [[clueless]] world it we can get further by giving the ultimate power of deciding whether something is or is not [[compatible]] to users of [[API]] modules. Expressing [[dependencies]] as [[RangeDependenciesAnalysed|ranges]] is an ideal tool to achive that. The meaning of [[TransitivityOfIncompatibleChange|transitivity]] then gets more fuzzy and less clear, but that may be a natural consequence of the complexity of real world module [[dependencies]].
-
[[TBD]].
+
Rather than impossing [[semantic versioning|idealistic rules]] on [[API]] designers, it is more beneficial to give users of those [[API]] a right to vote (e.g. to select narrow or wide [[RangeDependenciesAnalysed|range]]).