←Older revision |
Revision as of 14:07, 4 April 2018 |
Line 40: |
Line 40: |
| | | |
| There is however a hidden assumption: one needs an ''instant access to all the code'' and perform the whole change at once. This is far from reality when it comes to [[APIDesign]] and maintaining frameworks. [[API]]s are like [[Star]]s and building them feels like building Universe, not a house. You never know who's watching (e.g. using) your [[API]] and you can't fix all the usages at once. | | There is however a hidden assumption: one needs an ''instant access to all the code'' and perform the whole change at once. This is far from reality when it comes to [[APIDesign]] and maintaining frameworks. [[API]]s are like [[Star]]s and building them feels like building Universe, not a house. You never know who's watching (e.g. using) your [[API]] and you can't fix all the usages at once. |
| + | It makes no sense to claim: ''Everything is OK, my [[ContinuousIntegration]] server is green''! It may be, when you had to fix your tests. If your [[API]] is any popular, there are tons of code similar to your tests out there and there is nobody to fix them as part of your [[refactoring]]. Better to learn and investing in keeping a bit of [[BackwardCompatibility]]. |
| | | |
- | As a result of that [[API]] maintainers need to invest in defining and following proper [[lifecycle]] of their [[API]]. On one side, there is a strict request to keep [[BackwardCompatibility]], on the other side there is a [[deprecation]] (as a notice) followed by some period of time to give downstream projects a chance to adopt to the [[API]] change. Both approaches satisfy the major goal and are certainly better than [[Big Bang]] rewrites. | + | As a result of that [[API]] maintainers need to invest in defining and following [[API]]-like [[lifecycle]] of their framework: |
- | | + | * they can stick to strict keeping of [[BackwardCompatibility]] - [[I|my]] favorite, of course |
- | It makes no sense to claim: ''Everything is OK, my [[ContinuousIntegration]] server is green''! when you had to fix your tests. If your [[API]] is any good, there are tons of code similar to your tests out there and there is nobody to fix them as part of your [[refactoring]]. Better to learn and investing in keeping a bit of [[BackwardCompatibility]].
| + | * or at least use [[deprecation]]s as a notice to give downstream projects a chance to adopt to the [[API]] changes. |
| + | Both approaches satisfy the major goal of avoiding complete [[Big Bang]] rewrites and provide some interval when downstream code works with multiple [[version]]s. |
| | | |
| == Conclusion == | | == Conclusion == |