Split platform specific schedulers into separate packages
- Dominant language
- C#
- Stars
- 7.2k
- Forks
- 798
- PR merge metrics
- No merged PRs in 30d
Description
After the great Rx reunification the four main assemblies (Rx-Core, Rx-Interfaces, Rx-Linq, Rx-PlatformServices) were merged into a single assembly and package for more consistent versioning.
While it is definitely reasonable to unify Core+Interfaces+Linq into one assembly, I feel the step to fold the PlatformServices assembly into the mix might be causing more issues than it solves. Below is a list of open issues which can all ultimately be traced back to this design decision:
- https://github.com/dotnet/reactive/issues/1059
- https://github.com/dotnet/reactive/issues/1476
- https://github.com/dotnet/reactive/issues/1628
- https://github.com/dotnet/reactive/issues/1651
- https://github.com/dotnet/reactive/issues/1745
Especially when considering the large number of platforms that Rx tries to target, I feel the platform-specific schedulers make everything more complicated both for consumers who just want to make their own libraries of platform-agnostic operators, and for app developers who may end up inadvertently with a more confusing dependency tree.
It also makes everything more confusing when the surface of an API significantly changes depending on which platform you target.
Going forward I propose that we separate out the platform-specific schedulers into independent packages for each UI framework (e.g. WinForms, WPF / UWP, etc) and have them be explicitly installed on a per-project basis rather than bundled in with `System.Reactive` depending on specific target frameworks.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.