mesa icon indicating copy to clipboard operation
mesa copied to clipboard

v1.0.0 Quartzsite release

Open jackiekazil opened this issue 3 years ago • 15 comments

Please review closed tickets currently associated with Quartzsite release. These will be used to build the history.

Also release to follow Quartzsite has been created - Safford.

Also - what version number do want to place on this?

jackiekazil avatar Jun 15 '22 03:06 jackiekazil

1.0.0 instead of 0.10.0, because there is a breaking change with batch_run defaulting to 1 CPU.

rht avatar Jun 15 '22 04:06 rht

I am under the impression that currently development is very active and so I would vote for 0.10.0., because I have the impression that there are a lot of moving parts right now and I would reserve 1.0.0 for a more stable version. But we should definitely have a discussion on when we are ready for 1.0.0. and hopefully achieve that soonish.

1.0.0 instead of 0.10.0, because there is a breaking change with batch_run defaulting to 1 CPU.

? I don't understand, could you clarify your logic here?

Corvince avatar Jun 15 '22 04:06 Corvince

As per semantic versioning, every time you introduce breaking API changes, you bump the major version.

Given a version number MAJOR.MINOR.PATCH, increment the:

MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards compatible manner, and
PATCH version when you make backwards compatible bug fixes.

rht avatar Jun 15 '22 04:06 rht

The batch_run defaulting to 1 CPU has a major impact on the tutorial simplification for Windows, and so can't be reverted easily if you want a release without breaking changes.

rht avatar Jun 15 '22 04:06 rht

Alternative interpretation: https://0ver.org/. In this sense 0.10.0, is still a major release.

rht avatar Jun 15 '22 04:06 rht

As per semantic versioning, every time you introduce breaking API changes, you bump the major version.

Semantic versioning is a great idea and the specification is a nice read. You should definitely read the whole document!

But there are several reasons why this doesnt require a push to 1.0.0. First of all we never stated we use semver. I think we definitely should, but there is currently no hard requirement to follow the spec (but again, we should). Next, a major version bump must happen when an incompatible API change happens. But batch_run changing its default argument is not one. The change is fully backwards compatible since it requires no code changes and it will produce the same outputs.

However, there have been some breaking API changes, e.g. https://github.com/projectmesa/mesa/pull/1333. There might be others. So the point remains valid. However, if you read Point 4 of the semver spec: With a major version zero, a public API should not be considered stable and anything may happen at any time.

Corvince avatar Jun 15 '22 06:06 Corvince

Nice catch. I forgot the existence of #1333 (I thought I was missing a breaking change, but couldn't pinpoint it).

First of all we never stated we use semver. I think we definitely should ...

We should use semver right away, because people might use the ~= operator for the version constraint in their requirements.txt (see https://peps.python.org/pep-0440/#compatible-release), and doing a bump to 0.10.0 will upgrade their Mesa dependency unknowingly.

But batch_run changing its default argument is not one. The change is fully backwards compatible since it requires no code changes and it will produce the same outputs.

This is probably a nitpick. As a modeler, I'd be wondering why my batch_run suddenly runs much slower with a single process.

However, if you read Point 4 of the semver spec: With a major version zero, a public API should not be considered stable and anything may happen at any time.

IMO the API is pretty stable with small exceptions (the batch_run defaulting to 1 CPU, and #1333). Anything "unstable" you have seen so far, e.g. upgrading Bootstrap, does not affect the API. We do have simplified namespace import now, but this is in addition to the existing import style, and so, not a breaking change. We still BatchrunnerMP if people still want to use it.

rht avatar Jun 15 '22 08:06 rht

This is probably a nitpick. As a modeler, I'd be wondering why my batch_run suddenly runs much slower with a single process.

I strongly disagree on this being a nitpick. The semver specification is specifically about API compatibility and this does not break API compatibility. On the contrary, the bootstrap upgrade is a breaking change, since users can implement custom visualization elements and rely on the exposed bootstrap version for that.

Anyway, I don't want to derail this discussion. Your original comment just made it sound like we somehow have to increase the version to 1.0.0 because of breaking changes. This is not the case. It might still be the right time for a 1.0.0. release, but breaking changes are not a valid reason. By definition of the semver spec, 0.x.y versions should not be considered stable and thus anything might happen without breaking semver compliance.

Corvince avatar Jun 15 '22 09:06 Corvince

I would just like to say amazing job!

Quartzsite will consist of of 111 pulls and in the past two weeks we have had 1065 unique visitors and 412 unique clones!

That is super cool

tpike3 avatar Jun 15 '22 09:06 tpike3

The semver specification is specifically about API compatibility and this does not break API compatibility.

The default value of an argument being changed in a public function in https://github.com/projectmesa/mesa/blob/c2103830cd9054bdb5437a712e1add1e474daf95/mesa/batchrunner.py#L39. That's an API breaking change no matter how you dice it.

rht avatar Jun 15 '22 09:06 rht

I have also stated my other reason to go 1.0.0, i.e. because of how people expect a version bump should happen in their requirements.txt when they do ~= 0.9.

rht avatar Jun 15 '22 10:06 rht

After today's dev discussion and taking these comments into consideration -- we decided 1.0 So, if this is 1.0 -- where do these tickets go? https://github.com/projectmesa/mesa/milestone/30 Untag and kill the milestone?

jackiekazil avatar Jun 19 '22 01:06 jackiekazil

@rht how should i document this PR - https://github.com/projectmesa/mesa/pull/1357? It still exists. I feel like it should be captured in some way in the history.

jackiekazil avatar Jun 19 '22 01:06 jackiekazil

That PR is merged into projectmesa:base_ci_cache_experiment, not the main branch, and so can be ignored.

rht avatar Jun 19 '22 03:06 rht

Great News! So now we officially adopt semantic versioning? Then we should document this somewhere, either in the readme or the contributing file

Corvince avatar Jun 19 '22 09:06 Corvince

v1.0.0 has been released, so I am going to close this ticket -- https://pypi.org/project/Mesa/

jackiekazil avatar Sep 27 '22 14:09 jackiekazil