-
Notifications
You must be signed in to change notification settings - Fork 782
Add Rx.NET 2023 roadmap, and tooling update ADR #1879
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
Conversation
|
I don't know to what extent any of Rx's former contributors continue to have any interest in this project, but I thought it would be worth drawing these proposals to their attention. There might be historical folk knowledge that I don't have that would point against some of these suggestions. So to that end, I am tagging @bartdesmet @danielcweber @akarnokd @clairernovotny @shiftkey @bash @quinmars @RxDave @Daniel-Svensson @mattpodwysocki @ghuntley @LeeCampbell @SimonCropp @anaisbetts @NewellClark @RyotaMurohoshi @M-Zuber @briangru @marodev @aelij @theodorzoulias @ryanwersal @cdmihai @cabauman @dotMorten @joelhoisko @ltrzesniewski @hez2010 @PJB3005 @jkotas @eugbaranov @NickDarvey @ts2do @olevett @alfredmyers @TobBrandt-Work @NickCraver @tcberryoxinst @rytswd @Dixin @khellang @jamesdoran @MichalStrehovsky @najuqvt @martsyn @sblom @georgis in case any of them have an opinion on this. (I think that's everyone who ever made a commit in this repo that had a technical impact on Rx. Apologies if I missed anyway.) |
I'm planning to adopt Rx.Async in some form once it gets a release and would happily pick up contributing to this repo again (bug fixes, etc.). I still have write access to this repo from my batch of work back in 2018/9. |
|
|
||
| Over two years have passed since Rx 5.0 was released. Microsoft actively discourages the use of UWP, so why do we still target it? One obvious answer is that there has been no new release of Rx in the intervening time. However, it's not as simple as that. | ||
|
|
||
| Although Microsoft pushes people strongly in the direction of WinUI v3, the fact is that if you want to write a .NET Windows Store application today, certain Windows features are only available to you if you target UWP. For example, full access to the camera (including direct access to the raw pixels from captured images) is currently (February 2023) only possible with UWP. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm curious, which camera API specifically? CameraCaptureUI?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was using CaptureElement in XAML and a whole bunch of types from Windows.Media.Capture.
|
See PR #1882 |
|
See PR #1883 |
About platform independent rx, test sharing and UnityI just wanted to leave some information here in regards to IL2CPP compatibility and testing with Unity. In an attempt to reuse as much of the test code from this repository as possible and I've created a pretty unorthodox automation toolchain as part of the Rx.Unity repo. The main reason I am making this post is because I saw you, talking about sharing tests so adoptions for different platforms (like UWP) can keep running them after they've been moved out of the main repository. Thus I thought I'd share my approach to give you some insight, inspiration and in hopes for a good solution that'll be easily maintainable for everyone. Before I forget thank you so much for the work you've been putting in to bring Rx.Net back on track. I really appreciate it. While that (Rx.Unity) needs updating again, which I am still committed to getting back to. Why did I have to run all the tests? How the build works (only focusing on what's relevant for Rx.net):
Patching the sourcesBuild on gulp I've scripted out a few tasks to transform the tests from the dotnet/reactive repo so they run within Unity. Here are some of the things being done to rx sources themselves: Patch System.Reactive.csproj
Patch './Rx.NET/Source/src/System.Reactive/TaskObservable.cs'
Patch System.Reactive - Entire File replacementsI replace the following files with different ones or my own (Links lead to the replaced file):
Patch XUnit to NUnitUnitys tooling, as well as the runtime test runner I'm using only really works with NUnit. Adding too many additional dependencies is kind of painful (it would propobly work for assertations and I think I'll look if that's an option for when I'm adapting the now MS Test based sources.). Luckily a few replacements were enough to cover everything being used within the tests. Asyncronous Tests the trickiest here. Patches on Tests
Custom System.Reactive BuildBuilding is done with => Once the whole I'm only using the Sideloading partial classes from testsAlot of the test classes are being made partial and they are sideloaded with a custom SetUp/ TearDown-Methods specified in additional sources. Building and running tests in UnityOnly test code and the source for Rx.Unity is build within Unity itself but not System.Reactive itself. The required files are copied into the appropriate folder by my script. Unity tests are built and run in a via github actions. To ensure correct behaviour with IL2CPP an actual game is built including some framework that enables just running tests in that game. Then those tests are run via console. For Mac, iOS, Android and WebGL this isn't possible (or in the case of Mac I didn't get it to run that - I don't have a Mac so I couldn't troubleshoot it easily). Here an artefact with the build and a limited expiration is generated which can be manually downloaded, installed and run to verify all tests are working. |
|
@Fijo thanks very much for sharing that. We're very keen to enable better support for Unity, but it's an ecosystem we're unfamiliar with. If you're happy, we'll reach out to get your feedback when we get to those backlog items (most likely as part of v7 / v8) |
|
@HowardvanRooijen Are there any progress about changing default scheduler or anything to support other platform like unity at all? |
|
Hi @Thaina There are a number of things in flight at the moment, that we're trying to land in time for the .NET 9 launch (and .NET 6.0 going out of support, as well as giving Ix some TLC #2135 #2131 #2102) and general tidy up #2113 #2092 #2134 There was a big discussion around packaging... which would solve some of the problems we're facing #2038 - but I don't think we got to a consensus. We've been blocked for a couple of months as the .NET Foundation has mandated a move to Managed Identities for code signing auth. This is a great idea, but since Rx was the first project to attempt this, it took a while to work out how to get the config right (dotnet-foundation/projects#387). Ian got that working this week (#2167), with the help of Chris Sfanos from the DNF, so progress is moving ahead again. Ian has been looking at getting Async Rx into a better state:
We're hoping to do another yearly update either as part of .NET Conf or released independently at the same time. |
|
Thank you for your response |
|
@Thaina - you're welcome! There's lots of stuff going on, to try and get all the bits ready for the next release. Hopefully we'll be able to make this a little clearer and more cohesive over the next month as we head towards the November milestone. |
|
Thanks for the hard work you're putting into this, @HowardvanRooijen and team ❤️ |
|
@HowardvanRooijen Are there any progress about changing default scheduler or anything to support other platform like unity at all? Next month of September seem so long |
|
@idg10 is currently working on this and should have an update very soon (within the next week or so) |
|
Thank you very much |
@HowardvanRooijen Next week seem like forever |
|
Are you keeping track of #2268 ? Ian's current focus is getting the v7 release out with .NET 10 and recording a talk for .NET Conf 2025. |
|
@HowardvanRooijen Last week I have ask @idg10 and he said like it was actually unrelated
|
|
I think we're missing some useful context. For the avoidance of doubt, the v7 release is the thing we've been working towards for 2.5 years and that's to de-couple the platform specific dependencies, which should help solve a lot of these cross platform (Uno / Avalonia / Unity) problems. We're a couple of weeks away from this happening (.NET 10 release). Once this is done it will free up a HUGE amount of cognitive bandwidth, and will also clean up a number of open PRs which explored alternative approaches, which are cluttering up the repo. I would, as Ian suggests create a new feature request / issue, so this isn't buried in a 2.5 year old complex issue, and please be as detailed as possible, as Unity is not a workload we have any experience with. A sample project we can use to repro, with examples of the scheduler changes you propose would be very useful. |
|
@HowardvanRooijen My expectation of this project is that, I don't actually want this project to have anything to do with unity at all. I just want it to be compatible with .NET Standard 2.0 or 2.1 and so it's dll or even the code itself could be imported into unity directly And then the most important things is to have #1628 (comment). One way to remove all kind of dependency workload from reactive system is to allow us to specify default scheduler by ourselves for each platform we work with. So that I could always implement scheduler for each platform specifically |

As #1868 states, one of the steps in bringing Rx.NET 'back to life' is to "Publish a Roadmap for 2023 (covering the .NET 8.0 LTS release train) & beyond".
This PR addresses that by setting out a road map. It also provides an Architectural Decision Record (ADR) describing the first proposed step (updating the Rx.NET) in more detail, along with all the context that informs that part of our proposals.
Resolves #1880