-
Notifications
You must be signed in to change notification settings - Fork 772
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:
- Weird UWP reference in unexpected places #1059
- Package System.Reactive.Windows.Threading 5.0.0 is not compatible with net462. #1476
- Discussion: Changing SchedulerDefaults in a 3rd party lib to support Unity Engine #1628
- Feature Request: Add support to ObserveOn WinUI 3's DispatcherQueue. #1651
- Adding System.Reactive to WinUI3/MAUI app increases package size by 44MB because it includes WPF and WinForms references #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.