We will discuss that on a black board at ESUG. A release is a release and when you release code you do not want to rely on something that somewhere could change. Christophe told me that they are doing that in Java world and this is working. Now for development you load your baseline and you load symbolic version of foreign code. Stef
I agree. This is why I also think that released should point to version and not symbolic version. I strongly disagree. A configuration should only change when there is a meaningful change. Changes in dependencies that do not change relevant behavior should not propagate.
We achieve that by using #'releasex.x' style versioning. Changes that are not supposed to change observable behavior and bug fixes get new numbered versions within the release. #development versions are updated in place This is the purpose of symbolic versions to avoid propagation.
In Moose we did not encounter a situation where a month-old numbered version configuration was still loadable in the latest Pharo.
???
There is a use case for snapshots of exact versions. They don't belong in configurations.
I do not get what you mean. Now if I want to deliver exactly the same version I do not see how we can avoid versions. And this "nothing observable changes" is a nice idea but what I see is that often pharo breaks because of a nothing observable change.
Focussing improvements in Versioner on releasing more often numbered versions is counter productive. It just generates more work to keep configurations working.
I do not think so - in dev you use baseline for you and development for foreign code - when releasing you freeze. With nice tool support I do not see why this would not work.
I have been fixing lots of configurations on ci, and nearly all problems have to do with not using #'releasex.x' style symbolic versioning.
I did not get it so you should explain it better :)
There are two problems: - Configurations using numbered versions. They break as soon as a dependent project changes functionality or does a bug fix, often as a result of underlying code in Pharo changing. - Configurations using #stable, where the dependent project does a new release. Most of the projects on Jenkins are not there to work against release but day to day changes in this case they should load latest.
Now Seaside, Grease and Magritte have switched to this style of versioning, the number of problems has reduced drastically.
Stephan