As this was raised recently again at https://github.com/fastai/fastai/issues/1739, I will share my thoughts on this subject matter.
History is usually a good predictor of the future.
Therefore given that Sylvain and Jeremy are always at the cutting edge and often are a bit ahead of it, it’s very unlikely that the API will ever get stable. So unless you want to stifle their creativity you should just accept that. The core API may get more stable, but some parts of it (think domain-specific API) will always be in the flux. DL is a baby and as it grows fast it constantly needs new clothes if that helps as a metaphor from the physical world. Perhaps in 10-20 years it’d be easy to come up with stable APIs.
Currently the only solution to not need to rewrite your application code every few weeks is to pick a version and stick to it. Of course, this is not a great solution, since it prevents you from getting bug fix updates w/o breaking your code.
The better solution would require several knowledgeable people to become stable branch maintainers who will backport bug-fixes from the dev branch, but will not change the API. This is how it’s done in all big projects. There is no need to reinvent the wheel.
That way Jeremy and Sylvain can continue going full speed at being creative and innovative, and someone else will be sorting out how to keep the stable branch great and stable at the same time.
So that the ideal situation is where the lessons always rely on the unstable master branch and the production code on the stable branches.
Documentation also has a problem right now, since the docs always match the git master branch and not any previously released version, so it’s hard to rely on such docs if you are forced to use some older version (or even the last released version). So the docs will also need to be branched to match the code and the website updated to reflect that.
One more thing will be github Issues and PRs - it’ll be a mess trying to use the same github repo for dev and stable branches. So most likely either these will need to become forks and not share the same Issue/PR entry points, or perhaps these can somehow be setup to make it clear to the submitters that this way is to a stable branch 1.2.x and this one is for cutting edge master 1.3.x. I’m sure we can copy what other projects do.
Bottom line is that if you want stability, this project needs a bigger team of knowledgeable dedicated developers/maintainers. There is no way Jeremy and Sylvain will be able to be able to give you the best in this domain and support older versions at the same time. I’m sure they would have liked to be able to do that too, but there is that problem of having only that many hours in a day.
These are of course my thoughts alone. It’s quite possible that Jeremy and Sylvain will disagree with everything or parts of what I have shared.