-
Notifications
You must be signed in to change notification settings - Fork 929
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
update history for 2.2.0 release #1917
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #1917 +/- ##
==========================================
+ Coverage 77.35% 79.62% +2.26%
==========================================
Files 15 15
Lines 1007 1124 +117
Branches 220 244 +24
==========================================
+ Hits 779 895 +116
- Misses 197 198 +1
Partials 31 31 ☔ View full report in Codecov by Sentry. |
Thanks for writing it up! I know it's a bit ironic since I pushed for a quick release earlier, but it might be worth waiting to see where the discussion in #1912 goes. The most important thing is that we might want to let This is an good example of where an experimental release policy would help (#1909). Maybe we just want every feature to be experimental for (for example) two months and at least one minor release, whichever is longer (this is how Rust does is AFAIK). So if we do want to release 2.2.0 in the short term I would suggest making both |
(don’t need to close, maybe mark it as draft) |
What I think needs to be done before release:
Edit: All features are in, ready to start the release process! Move to next release:
|
That's quite a substantial list, but if we check all those boxes it is going to be one of the most exciting releases imho |
I just ran some of the mesa-examples to test the reimplementation of the scheduler. Not all of them work with the current master branch. The key problem seems to be that it is now required to call |
Yes, I also noticed this. It's a bit weird you inherit from Model, it has an init, but it isn't always ran. But yeah, this is breaking behavior, so we should announce it clearly. Because the fix is so easy if we put it at the top at the release notes it should be fine for a minor release I think. |
@jackiekazil sorry I just saw your note on closing this, however, I updated it so we can 2.2.0 release |
Oh that's bad. No I strongly oppose to squeeze this into a minor release. If it is already breaking the examples I think it is very clear that it will also break user models. Not everyone reads release notes and while right now it would be easy to spot in the release notes, of someone would move from say 2.1 to 2.5 it will be hard for them to spot the breaking change. And we are committed to semver, so users have a legitimate expectation that we don't break their models in minor releases. This shows that we should really ramp up our ci to automatically run the examples as part of our tests. For the schedulers I wonder if we could build them in a way that they check if _agents exist and if not create them on the fly? Together with a warning that users should instantiate their models properly and this will be required in 3.0 (when we remove this extra bit of code) |
This is indeed an easy fix for the scheduler. The better fix is to handle it in the Agent class because the error starts with instantiating agents that then try to register themselves with the model. This fails because Also, there is currently still a bug in Master currently has def get_agents_of_type(self, agenttype: type) -> AgentSet:
"""Retrieves an AgentSet containing all agents of the specified type."""
return AgentSet(self._agents[agenttype].values(), self) which should be |
^^ I like the change, but I agree with this. Maybe it is time to plan 3.0 formally and push the rest of the stuff through on a minor release. |
Agreed, we should be following SemVer. With full hindsight, we probably jumped to 1.0 too quick. But we have to deal with that now. @quaquel could you open a PR for the fix? Curious what it looks likes. I would think if we can add a deprecation warning for subclassing |
Now that Corvince shouted "PositionSet!" the genie is out of the bottle and I can't supress this very intrusive thought any longer. So while - ironically - the PropertyLayer lead to agent movement, leading to agent selection, leading to agent sets, I'm proposing we delay the PropertyLayer (#1898) to the next release. I would like to research both PositionSets as how to apply it on a ContiniousSpace, and both require a major effort. That means - from my perspective - all features for 2.2.0 are in and we can start the release process. It will be an amazing release! (I'm willing to help with the release, if desired. I've developed a really nice workflow we use at the EMAworkbench, which I could demonstrate) |
@jackiekazil and I quickly discussed the 2.2.0 release. #1925 was merged, which makes generating the release notes a lot easier. This is a checklist for the 2.2.0 release.
I will write the section for step 5, @jackiekazil can you take care of the other steps? (I can't since I'm not a maintainer) |
Happy new year everyone! Assuming we're including #1898, I wrote a draft for the 2.2.0 release Highlights. They can be inserted in the release notes in step 5 of the steps above. |
Apologies for the delay, I was on vacation and did not have my computer. However, my understanding is to release 2.2.0 we need to merge: Then we can do the release using the new release set up by @EwoutH Also we should have another update for the visualizations via #1902 in the next 2 weeks. As our next dev session is 13 Jan, what if we go over the release then and then release at that time? @EwoutH , @jackiekazil , @quaquel, @Corvince , @rht thoughts? |
I am OK with this but I will hold on sending the note to the user group until we get the visualizations integrated. I would say one critical thing to do prior to the release is can you update the tutorial so it uses the new space and AgentSet features. Does that make sense to you? On that note (and we can talk at the Dev meeting) is now we need to update all the examples to reflect these very awesome updates. So @jackiekazil for the Dev meeting....
|
I would suggest only updating the main tutorials with stable features. In think for experimental features the docsting + PR description should be enough. It would also undermine the quick and lean development flow for experimental features if tutorials need to be updated immediately. |
Hmmmm, this seems to be a catch-22 we need to add new features and we need users to try them out, but they are experimental. What if we add a new tab to the docs called "New features" or similar and use the introduction tutorial as the pivot so once/if those features become permanent we can just make that the new introduction. I am open to ideas, let me know your thoughts. |
The current tutorial shows the basics of working with MESA. It thus should reflect the current best practices of using the library, even if this best practice reflects something currently still experimental. There is already precedence for this with the visualization tutorial. For example, currently, the tutorial does not call Are there other places to reflect new best practices in the tutorial? Yes, in I can't answer for the space side of things and leave that to @EwoutH. But if there are places in the current tutorial for which there is a new, even experimental, but better way of doing it, this should be reflected in the tutorial. |
I would at least not require the tutorials to be needed to be updated, to keep a quick pace. But maybe it can be done optionally. I’m a bit in doubt what it then even means for a feature to be experimental. |
|
I would imagine the readthedocs site as the main reference for users to know how to use Mesa. It's hard to expect users to go through source code and all examples to figure out new cool experimental features. As an example, Seaborn introduced extensively their new experimental IMHO it's better to have a dedicated page in readthedocs for all experimental features, not just to gain users' attention and collect feedbacks, but also for ourselves to keep tract of them in case we forget their existence. (By the way, would it make sense to group all experimental code into the I would, however, try not to mix them with main tutorial as much as possible. Being experimental by definition means they are unstable (I might be wrong about this) and could potentially be removed completely. If they become mature enough then we can move them out of experimental and update the main tutorials accordingly. As @tpike3 mentioned, having a page for experimental features may ease the transition process. |
Oh I forgot to mention that I don't think these documentations for experimental features are release blockers, even if we choose to write them. And as always, I'm open to more discussions : ) |
I think this is the key point and I also think it is different for all things we have experimental here. For example the solara Frontend should definitely be the future, but it lacks experience and some features, so in that sense it's experimental. The property layers add a lot of new functionality and I am sure there are some bugs or corner cases that aren't properly addressed yet, so that's experimental in that sense. And the new model.agents property and AgentSet in general is just new and also not tested a lot, but I expect it to stay and be incorporated in different building blocks. |
Maybe we need different categories or stages of experimental features. But also don’t make it too complicated. Anyway, now that #1898 is in, can we do the release? |
#1756 needs to be merged, while we still have the chance. |
Updates history and init for 2.2.0 release.