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

Things to obsolete before v1.5 #1695

Closed
Horusiath opened this issue Feb 8, 2016 · 2 comments
Closed

Things to obsolete before v1.5 #1695

Horusiath opened this issue Feb 8, 2016 · 2 comments

Comments

@Horusiath
Copy link
Contributor

For some time we were talking about things that we should probably drop when 1.5 will came out. Until that time, there was an idea to inform about incoming changes in form of marking necessary classes as Obsolete when possible, and where the changes are not explicitly visible in the code - in form of warning log. This could look similar to the JVM akka note about JavaSerializer usage.

List of things to change

Note: not all of these changes can be made at the present moment, as some parts are still WIP.

  • Obsoleting TypedActor - they are considered very bad for the performance reasons and heavily limit some of the Akka features (like Finite State Machines).
  • Obsoleting Inbox - it has a very limited usage and can be easily replaced with other mechanisms. Effectivelly just like in case of TypedActor it's a legacy feature.
  • Switching default serializer from Newtonsoft.Json ⇒ Wire - JSON.NET was source of many issues. Ultimately it's not able to fit Akka.NET requirements. It's performance in this specific scenarios is also very questionable. Therefore we already encourage people to change it to dedicated serializers and are going to stop using JSON.NET due to number of issues it caused already.
  • Replacing our internal immutable collections library with System.Collections.Immutable (see Unify immutable collections #1676) - this also becomed a leagacy code, as we're already using System.Collecions.Immutable in most of the core plugins.
  • Replacing Helios transport layer with DotNetty (see [WIP] DotNettyTransport #1465) - ultimately Helios didn't create such community as Akka.NET, making it expensive to maintain and develop. In the meantime Azure team has already open sourced it's DotNetty library, which perfectly serves our purpose.
  • Upgrading Akka.Persistence (see Akka.Persistence - update code base to akka JVM v2.4 #1402) - current version of this plugin is compatible with it's JVM counterpart from v2.3. From that time things have changed. There is a possibility for the breaking changes on that field as well.
  • Changing Dependency Injection API (see Redesign the Dependency Injection API #1675) - as already discussed, current DI API lacks some features. Modifying it will be also a breaking change.

Why on 1.5?

To make it clear - Akka.NET is not using SemVer at the moment. The reason behind choosing version 1.5 to introduce changes was, that not all akkadotnet team members were convinced, that they are major API breaking ones - most of them is concerning underlying stack, not API itself - to require a major number version change. While we have some plans for v2.0 API already, we decided to follow the convention introduced by .NET team to introduce similar kind of changes in X.5 version.

@Aaronontheweb
Copy link
Member

Per the Akka.NET contributor's meeting today - won't be deprecating the DI API just yet. Not until a new design has been chosen, which will happen after 1.5.

@sean-gilliam
Copy link
Member

see #2557

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants