<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki.apidesign.org/skins/common/feed.css?116"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>StabilityOfAPI - Revision history</title>
		<link>http://wiki.apidesign.org/index.php?title=StabilityOfAPI&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.12.0rc1</generator>
		<lastBuildDate>Sat, 11 Apr 2026 13:07:14 GMT</lastBuildDate>
		<item>
			<title>JaroslavTulach at 01:48, 7 November 2012</title>
			<link>http://wiki.apidesign.org/index.php?title=StabilityOfAPI&amp;diff=6260&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:48, 7 November 2012&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble is that we live in [[clueless]] world and most of the people (including [[API]] designers) don't have time to fully evaluate negative influence of their changes. When producers of up-stream library make a mistake, there should be a way for the consumers of such [[API]] to recover and shield themselves. From this thought there is just a small step to the idea of giving the users of an [[API]] right to classify [[netbeans:API Stability|stability]] of the [[API]] they use. Here the [[RangeDependenciesAnalysed|range dependencies]] come into the play.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble is that we live in [[clueless]] world and most of the people (including [[API]] designers) don't have time to fully evaluate negative influence of their changes. When producers of up-stream library make a mistake, there should be a way for the consumers of such [[API]] to recover and shield themselves. From this thought there is just a small step to the idea of giving the users of an [[API]] right to classify [[netbeans:API Stability|stability]] of the [[API]] they use. Here the [[RangeDependenciesAnalysed|range dependencies]] come into the play.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Should there be a repository of modules and their [[dependencies]] including module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; in versions &amp;lt;math&amp;gt;1.1, 1.2, 1.5, 2.0, 2.5, 3.0&amp;lt;/math&amp;gt;. If majority of other modules having a dependency on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; uses range &amp;lt;math&amp;gt;[1.1,2.0)&amp;lt;/math&amp;gt; (e.g. the classical range for [[semantic versioning]]), then we can deduce that the owner of module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; is doing good job keeping [[BackwardCompatibility]]. If many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use for example &amp;lt;math&amp;gt;[1.1,1.5)&amp;lt;/math&amp;gt;, then we can deduce that something unnatural (from the point of [[semantic versioning]] happened in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;) and that the owner of the module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; underestimated the impact of changes in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;. On the other hand, if many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use range like &amp;lt;math&amp;gt;[1.1,3.0)&amp;lt;/math&amp;gt; then  the incompatible change was probably not as incompatible as it might have seen.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Should there be a repository of modules and their [[dependencies]] including module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; in versions &amp;lt;math&amp;gt;1.1, 1.2, 1.5, 2.0, 2.5, 3.0&amp;lt;/math&amp;gt;. If majority of other modules having a dependency on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; uses range &amp;lt;math&amp;gt;[1.1,2.0)&amp;lt;/math&amp;gt; (e.g. the classical range for [[semantic versioning]]), then we can deduce that the owner of module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; is doing good job keeping [[BackwardCompatibility]]. If many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use for example &amp;lt;math&amp;gt;[1.1,1.5)&amp;lt;/math&amp;gt;, then we can deduce that something unnatural (from the point of [[semantic versioning]] happened in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;) and that the owner of the module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; underestimated the impact of changes in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;. On the other hand, if many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use range like &amp;lt;math&amp;gt;[1.1,3.0)&amp;lt;/math&amp;gt; then  the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;incompatible&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;change was probably not as &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;incompatible&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;as it might have seen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The beauty of analysing the overall dependencies on a module is that it clearly expresses the statistical probability of [[BackwardCompatibility]] as seen by all users. It also allows the users to '' be sure application really runs as expected'' if the dependency is satisfied. Of course, the author of such [[API]] should set the expectations up by using [[netbeans:API Stability|stability category]], but the ultimate decision remains in the hands of the [[API]] users.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The beauty of analysing the overall dependencies on a module is that it clearly expresses the statistical probability of [[BackwardCompatibility]] as seen by all users. It also allows the users to '' be sure application really runs as expected'' if the dependency is satisfied. Of course, the author of such [[API]] should set the expectations up by using [[netbeans:API Stability|stability category]], but the ultimate decision remains in the hands of the [[API]] users.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 07 Nov 2012 01:48:06 GMT</pubDate>			<dc:creator>JaroslavTulach</dc:creator>			<comments>http://wiki.apidesign.org/wiki/Talk:StabilityOfAPI</comments>		</item>
		<item>
			<title>JaroslavTulach at 01:47, 7 November 2012</title>
			<link>http://wiki.apidesign.org/index.php?title=StabilityOfAPI&amp;diff=6259&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:47, 7 November 2012&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble is that we live in [[clueless]] world and most of the people (including [[API]] designers) don't have time to fully evaluate negative influence of their changes. When producers of up-stream library make a mistake, there should be a way for the consumers of such [[API]] to recover and shield themselves. From this thought there is just a small step to the idea of giving the users of an [[API]] right to classify [[netbeans:API Stability|stability]] of the [[API]] they use. Here the [[RangeDependenciesAnalysed|range dependencies]] come into the play.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble is that we live in [[clueless]] world and most of the people (including [[API]] designers) don't have time to fully evaluate negative influence of their changes. When producers of up-stream library make a mistake, there should be a way for the consumers of such [[API]] to recover and shield themselves. From this thought there is just a small step to the idea of giving the users of an [[API]] right to classify [[netbeans:API Stability|stability]] of the [[API]] they use. Here the [[RangeDependenciesAnalysed|range dependencies]] come into the play.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Should there be a repository of modules and their dependencies including module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; in versions &amp;lt;math&amp;gt;1.1, 1.2, 1.5, 2.0, 2.5, 3.0&amp;lt;/math&amp;gt;. If majority of other modules having a dependency on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; uses range &amp;lt;math&amp;gt;[1.1,2.0)&amp;lt;/math&amp;gt; (e.g. the classical range for [[semantic versioning]]), then we can deduce that the owner of module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; is doing good job keeping [[BackwardCompatibility]]. If many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use for example &amp;lt;math&amp;gt;[1.1,1.5)&amp;lt;/math&amp;gt;, then we can deduce that something unnatural (from the point of [[semantic versioning]] happened in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;) and that the owner of the module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; underestimated the impact of changes in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;. On the other hand, if many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use range like &amp;lt;math&amp;gt;[1.1,3.0)&amp;lt;/math&amp;gt; then  the incompatible change was probably not as incompatible as it might have seen.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Should there be a repository of modules and their &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;dependencies&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;including module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; in versions &amp;lt;math&amp;gt;1.1, 1.2, 1.5, 2.0, 2.5, 3.0&amp;lt;/math&amp;gt;. If majority of other modules having a dependency on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; uses range &amp;lt;math&amp;gt;[1.1,2.0)&amp;lt;/math&amp;gt; (e.g. the classical range for [[semantic versioning]]), then we can deduce that the owner of module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; is doing good job keeping [[BackwardCompatibility]]. If many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use for example &amp;lt;math&amp;gt;[1.1,1.5)&amp;lt;/math&amp;gt;, then we can deduce that something unnatural (from the point of [[semantic versioning]] happened in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;) and that the owner of the module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; underestimated the impact of changes in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;. On the other hand, if many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use range like &amp;lt;math&amp;gt;[1.1,3.0)&amp;lt;/math&amp;gt; then  the incompatible change was probably not as incompatible as it might have seen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The beauty of analysing the overall dependencies on a module is that it clearly expresses the statistical probability of [[BackwardCompatibility]] as seen by all users. It also allows the users to '' be sure application really runs as expected'' if the dependency is satisfied. Of course, the author of such [[API]] should set the expectations up by using [[netbeans:API Stability|stability category]], but the ultimate decision remains in the hands of the [[API]] users.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The beauty of analysing the overall dependencies on a module is that it clearly expresses the statistical probability of [[BackwardCompatibility]] as seen by all users. It also allows the users to '' be sure application really runs as expected'' if the dependency is satisfied. Of course, the author of such [[API]] should set the expectations up by using [[netbeans:API Stability|stability category]], but the ultimate decision remains in the hands of the [[API]] users.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 07 Nov 2012 01:47:00 GMT</pubDate>			<dc:creator>JaroslavTulach</dc:creator>			<comments>http://wiki.apidesign.org/wiki/Talk:StabilityOfAPI</comments>		</item>
		<item>
			<title>JaroslavTulach: New page: How one specifies how stable just published API is? The semantic versioning suggests to treat all releases up to changed major version (e.g. up to 2.0.0) as being [[BinaryCompatibl...</title>
			<link>http://wiki.apidesign.org/index.php?title=StabilityOfAPI&amp;diff=6247&amp;oldid=prev</link>
			<description>&lt;p&gt;New page: How one specifies how stable just published &lt;a href=&quot;/wiki/API&quot; class=&quot;mw-redirect&quot; title=&quot;API&quot;&gt;API&lt;/a&gt; is? The &lt;a href=&quot;/wiki/Semantic_versioning&quot; title=&quot;Semantic versioning&quot;&gt;semantic versioning&lt;/a&gt; suggests to treat all releases up to changed major version (e.g. up to 2.0.0) as being [[BinaryCompatibl...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;How one specifies how stable just published [[API]] is? The [[semantic versioning]] suggests to treat all releases up to changed major version (e.g. up to 2.0.0) as being [[BinaryCompatible]]. The [[netbeans:API Stability|NetBeans API Stability]] proposal allows each [[API]] to be attributed as '''stable''', '''devel''' or '''private'''. The [[netbeans:NbmPackageStability]] goes even further and suggests to use different ranges for different stability of the [[API]]. Is this the right approach?&lt;br /&gt;
&lt;br /&gt;
In ideal, [[rationalistic]] world, it is. Under the assumption that [[API]] designers are rationalistic and understand the versioning issues and the importance of proper [[dependency]] management, it is fine to expect that they will do everything to follow principles of [[semantic versioning]] (or [[netbeans:NbmPackageStability]] guidelines) and either keep [[BackwardCompatibility]] or bump the major version. In [[rationalistic]] world, it is enough to ''believe our application will sort of work and at least link'' and the rest will be achieved by the good work of the other, [[rationalistic]] people.&lt;br /&gt;
&lt;br /&gt;
The trouble is that we live in [[clueless]] world and most of the people (including [[API]] designers) don't have time to fully evaluate negative influence of their changes. When producers of up-stream library make a mistake, there should be a way for the consumers of such [[API]] to recover and shield themselves. From this thought there is just a small step to the idea of giving the users of an [[API]] right to classify [[netbeans:API Stability|stability]] of the [[API]] they use. Here the [[RangeDependenciesAnalysed|range dependencies]] come into the play.&lt;br /&gt;
&lt;br /&gt;
Should there be a repository of modules and their dependencies including module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; in versions &amp;lt;math&amp;gt;1.1, 1.2, 1.5, 2.0, 2.5, 3.0&amp;lt;/math&amp;gt;. If majority of other modules having a dependency on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; uses range &amp;lt;math&amp;gt;[1.1,2.0)&amp;lt;/math&amp;gt; (e.g. the classical range for [[semantic versioning]]), then we can deduce that the owner of module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; is doing good job keeping [[BackwardCompatibility]]. If many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use for example &amp;lt;math&amp;gt;[1.1,1.5)&amp;lt;/math&amp;gt;, then we can deduce that something unnatural (from the point of [[semantic versioning]] happened in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;) and that the owner of the module &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; underestimated the impact of changes in version &amp;lt;math&amp;gt;1.5&amp;lt;/math&amp;gt;. On the other hand, if many dependencies on &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; use range like &amp;lt;math&amp;gt;[1.1,3.0)&amp;lt;/math&amp;gt; then  the incompatible change was probably not as incompatible as it might have seen.&lt;br /&gt;
&lt;br /&gt;
The beauty of analysing the overall dependencies on a module is that it clearly expresses the statistical probability of [[BackwardCompatibility]] as seen by all users. It also allows the users to '' be sure application really runs as expected'' if the dependency is satisfied. Of course, the author of such [[API]] should set the expectations up by using [[netbeans:API Stability|stability category]], but the ultimate decision remains in the hands of the [[API]] users.&lt;/div&gt;</description>
			<pubDate>Wed, 07 Nov 2012 01:22:34 GMT</pubDate>			<dc:creator>JaroslavTulach</dc:creator>			<comments>http://wiki.apidesign.org/wiki/Talk:StabilityOfAPI</comments>		</item>
	</channel>
</rss>