Skip to content
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

3.2.0 -> 3.2.1 ... WTF? #1443

Closed
valeriyo opened this issue Sep 27, 2022 · 4 comments
Closed

3.2.0 -> 3.2.1 ... WTF? #1443

valeriyo opened this issue Sep 27, 2022 · 4 comments
Assignees
Labels
important 🔥 regression 💥 status:checking currently in analysis - discussion or need more detailed specs
Milestone

Comments

@valeriyo
Copy link

Pardon my French, but WTF is happening with Koin these days?

3.2.1 broke compatibility with 3.2.0:

  • delegate activityRetainedScope() replaced by method createActivityRetainedScope()
  • AndroidScopeComponent completely changed, became incompatible with KoinScopeComponent because of scope.

That's not how things are done, people.

@To6i
Copy link

To6i commented Sep 27, 2022

I have to agree with that completely.

We have seen incompatible / breaking changes with minor and even patch releases of Koin multiple times now. It makes updating the library an absolute nightmare. Koins version numbers have no meaning at all anymore. There is a reason why semantic versioning has been created in the first place.

We love Koin as a library, but the release handling makes it hard to stick to it.

@Pfoerd
Copy link
Contributor

Pfoerd commented Sep 27, 2022

Unfortunately I have to agree 100% too!

we're using Koin in a large scale Android project with multiple 100k locs now for multiple years and we actually love the concepts of Koin! Plagued by code generation with Dagger and bytecode manipulation/reflection orgies with Guice, Koin's straight-forward approach finally promises a maintainable, fast and robust solution for dependency injection in large projects.

But unfortunately the unsteady further development makes Koin now almost unusable in productive applications. Every update in the last years came with big problems for us:

  • a lot of migration effort because of breaking changes
  • a lot of pain because of implicit behavioral changes
  • a lot of regressions that have to be found and fixed with great effort

We have now reached a point where we are seriously considering whether a migration away from Koin to an in-house developed alternative or even back to Guice/Dagger/Hilt ( 😢 ) is a more effective option than jumping from bug to bug with each update.

Please do not get this wrong: we love Koin and the ideas behind it and really appreciate all contributors' work on it but currently it is really hard to argue for the usage of Koin in a large project!

What we would need in Koin:

  • strict semantic versioning
  • more tests to avoid regressions, especially for Android parts of Koin
  • focus on fixing bugs
  • a concept for backward compatibility
  • a clear roadmap for breaking changes / major versions

@arnaudgiuliani
Copy link
Member

Hey there,

Thanks, your feedback is really precious. 3.2.x was updated with minor changes.

From the last feedback, activityRetainedScope() was hard to catch with its lazy behavior. And then, lifecycle mapping was not good. The 3.2.2 proposal was to propose eager API. This change is clearly too breaking :/ my bad

I will prepare a patch in 3.2.3 to revert this.

@arnaudgiuliani
Copy link
Member

proposal -> 3.2.3 to revert "new" createActivityRetainedScope. If I can propose it without touching the current base, I will keep it.
Else it will be pushed in 3.3.x

@arnaudgiuliani arnaudgiuliani added the status:checking currently in analysis - discussion or need more detailed specs label Oct 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
important 🔥 regression 💥 status:checking currently in analysis - discussion or need more detailed specs
Projects
None yet
Development

No branches or pull requests

4 participants