question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Breaking changes before official release

See original GitHub issue

After the announcement we have gotten a lot more people testing out Overmind. Especially the Vue and Angular (coming soon) views has gotten some amazing updates. But also smaller details on the API can be improved. In this issue we will list the breaking changes we want to make before the official release:

1. Separate value from configuration

In actions you receive:

const myAction = ({ state, effects, actions, value })  => {

}

This value does not really belong in the rest which is defined as “the configuration” of the app, it maps directly to the configuration. So we want to separate that out:

const myAction = ({ state, effects, action }, value)  => {

}

This is more intuitive, as you can think of the first argument as “the context” of the action, pointing to the Overmind instance.

Amount of work

  • Refactor devtools
  • Refactor website
  • Rewrite all documentation (there are a lot of examples)
  • The VueX video is wrong… though we can maybe add a note to it instead. I have not figured out how to add like “notes”… maybe we can use this link notifier and say: “API CHANGE” and link to the documentation… yeah, that could work

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Reactions:5
  • Comments:18 (6 by maintainers)

github_iconTop GitHub Comments

3reactions
christianalfonicommented, Feb 9, 2019

Okay, good, I understand what you mean by helpers now 😃

The sub context here for me is that I think we learned a lot from Cerebral. Overmind has been announced after an experimentation/development phase of over 6 months now. The API is locked. I think we pushed a lot of developers away from Cerebral because of all the changes we were making after the announcement and now we have a bigger responsibility because we have gotten a lot more attention. This makes me extremely defensive on making changes.

That said, even without this defensive default I would still disagree. Derived is a pure function of state. We should not make any changes that makes the derived function impure, which this suggestion does. Import your pure helpers and use them in the derived. There is no need for possibly hundreds of developers to refactor their code because of this. I do not see how this blocks you in any way.

I ❤️ you @gaspard and I feel shitty about working against you when you are inspired, but I do not see how I could ever budge on this. Effects is now a conceptual term in all articles, discussions, documentation, API and videos and I still think it is a really good term that helps developers separate their code in a healthy way. I am sure we would have great discussions on creating a different concept than effects earlier on, but this is what almost burned me out with Cerebral. Going back to all articles, docs, APIs and videos… explaining to everyone why we made the changes. I think it is wise of us to acknowledge that the window for these kinds of changes is passed.

I wanted Overmind to be a small API surface with clear concepts which people can build upon. I think we have achieved that and now is the time to help people use what we have built, not make more changes. If you want to use effects conceptually different that is perfectly okay, but we do not have the luxury of making radical changes anymore. It is not fair to all the others, making changes has a huge cost… something I feel really bad about in Cerebral.

1reaction
anna-buchercommented, Feb 9, 2019

I agree with you @christianalfoni. I upgraded (and worked) on Cerebral through so many API changes and type changes and then again with Overmind and we really need things to be cool or we will all burn 🔥😂.

I can live with the way Overmind works now and use this effects thing as it is, without needing it inside Derive. It just felt weird having a different argument order and types in Derive from the rest but it is not important.

From “baobab” Cerebral, it went from no types, to weird types, to Overmind which is something that is now very easy to understand and use and I am super proud of you and grateful for all the hard work you put into this 🙏. You are my hero !

Read more comments on GitHub >

github_iconTop Results From Across the Web

How to deal with minor and patch releases in pre-1.0 ... - GitHub
SwiftSyntax, meanwhile, explicitly states that all versions potentially have breaking changes during initial development. That means that consumers must tell ...
Read more >
How to Catch Breaking Changes Before They Happen
Simply put, a breaking change is an update that fails to maintain backward compatibility. With API development, this can be caused by a...
Read more >
Release cycle / version numbers / breaking changes
I think we should make it a rule that pull requests containing breaking changes can actually only be merged into master if it...
Read more >
Semantic Versioning 2.0.0 | Semantic Versioning
As soon as you realize that you've broken the Semantic Versioning spec, fix the problem and release a new minor version that corrects...
Read more >
What Are Breaking Changes and How Do You Avoid Them?
As the name might suggest, a breaking change to an API is any change that can break a client's application. Usually, breaking changes...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found