Rx.NET v6.0 & v7.0 high-level plan #1868
Replies: 23 comments 62 replies
-
I came from unity background and I would like to voice that real time app like 3D game is very much needed the reactive system. Event is everywhere and UI can have many state to fabricate together with game state Also I have some work with js so I wish that every RX platform should have same name for same functionality, especially not make conflict name (same name but have difference behaviour) and I would prefer that RX specific operator in dotnet should align with other platform, even it will cause breaking change |
Beta Was this translation helpful? Give feedback.
-
Thanks a bunch for stepping in as maintainers @HowardvanRooijen and @idg10! It’s great to see new sparks of life here and not having the project rot in silence. |
Beta Was this translation helpful? Give feedback.
-
I'm surprised I've not seen more examples of using RX.NET with dotnet/iot too. You might want to reach out to them! |
Beta Was this translation helpful? Give feedback.
-
Throwing out an idea: it would be good to cede the IX operators back into the BCL given the first class support for IAsyncEnumerable<T>. There’s been many discussions about why we’re not adding async LINQ to the BCL and it’s because this package already does that. While I have no problems in general with an IX dependency, it feels like something that should be built in now given the in the box (including compiler support) for IAE. |
Beta Was this translation helpful? Give feedback.
-
Let me say first thank you and that I think you're doing God's work here.
My question is how does all this fit in with Microsoft's Reaqtor project?
…On Wed, Feb 8, 2023 at 6:34 AM David Fowler ***@***.***> wrote:
Throwing out an idea, it would be good to cede the IX operators back into
the BCL given the first class support for IAsyncEnumerable<T>. There’s been
many discussions about why we’re not adding async LINQ to the BCL and it’s
because this package already does that. While I have no problems in general
with an IX dependency, it feels like something that should be built in now
given the in the box (including compiler support) for IAE.
—
Reply to this email directly, view it on GitHub
<#1868 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AZ6ZGLBD72TZVMTAMDSS3QLWWOVIVANCNFSM6AAAAAAUTSXILU>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
More and more software is becoming distributed. I'm having a hard time seeing RX getting more adoption unless it can help make streaming/messaging better (over the stuff .NET already provides). |
Beta Was this translation helpful? Give feedback.
-
I find the Rx pattern really powerful and it is fantastic news that this project is in the process of being revived. "At a very high level, we’d like to reverse the public opinion that “Rx (.NET) is dead”. How can we achieve this?" Unfortunately, any library that lands up 2 major releases behind is "dead". The only way to reverse that opinion is to make the project current and as you are doing provide a convincing Roadmap. Having been "dropped" by Rx.NET once I am now reluctant to use it support any major work, unlike RxJS which has remained current and has been prepared to make necessary breaking changes (yes they were really irritating at the time). |
Beta Was this translation helpful? Give feedback.
-
On the subject of source generators - does anyone have any links to issues/request/discussion of scenarios where they would be useful? |
Beta Was this translation helpful? Give feedback.
-
I looked into Rx/Ix a few times, and the biggest hurdle by far was figuring out which namespace and NuGet package contained a specific API. As I remember it, there are a bunch of NuGet packages not mentioned at all in the README. There are also mentions of breaking changes from earlier versions that are already surpassed by new breaking changes. Maybe other people use the libraries just fine, but for me it was an all round confusing experience and I was/am reluctant to try again. |
Beta Was this translation helpful? Give feedback.
-
📢 @idg10 has issued a PR - #1879 - which contains a roadmap for this year, and an ADR with the first set of proposed changes. Comments welcome! |
Beta Was this translation helpful? Give feedback.
-
I'm uncertain of how many outstanding UWP-specific bugs are in the backlog. A quick issue search for 'UWP' has 4 results, 2 of which don't appear to be bugs. So the concern of maintaining a UWP test suite is to ensure bug fixes that pass .NET / Framework tests also work when running on .NET Native. In a perfect world, there would be ongoing UWP support for bug fixes and new features, with a full test suite to ensure everything works flawlessly with (the long abandoned) .NET Native. However, in a practical world, it takes time and effort to get everything done. Converting the test suite away from XUnit, getting them to build & pass, maintaining it for years, writing new tests against every new bug and feature, splitting out UWP support into a new repo, and maintaining said repo & builds is all a non-trivial amount of work. RX.Net is now a community-supported project. So unless the community expresses a strong interest in UWP support, and/or volunteers step up to actually get all that work done (both in a timely manner for the next release, and also following releases), then I prefer the practical option of spending valuable developer time & effort on things that will provide the best ROI. |
Beta Was this translation helpful? Give feedback.
-
@idg10 has published the second PR #1879 and the third #1883 |
Beta Was this translation helpful? Give feedback.
-
🎉 https://www.nuget.org/packages/System.Reactive/6.0.0-preview.1 👏👏👏 @idg10 vs. |
Beta Was this translation helpful? Give feedback.
-
If you have some time to tag any easy "first issues" that the community might be able to tackle that don't require in-depth knowledge of the code base right off the bat, I'd be happy to contribute whenever I have the time to. |
Beta Was this translation helpful? Give feedback.
-
It would be nice to see some long-standing PRs revisited and hopefully merged for v6.x. Especially #1545 |
Beta Was this translation helpful? Give feedback.
-
I would like to ask which method would be used to release Rx in unity platform? Would it be nuget dll, or UPM package system, or anyway else? |
Beta Was this translation helpful? Give feedback.
-
For those interested in Async Rx.NET see the following ADR: #1896 |
Beta Was this translation helpful? Give feedback.
-
End of March 2023 Progress Update.@idg10 has been working hard this month, on Async Rx.NET, tackling more backlog items for Rx.NET v6 and triaging issues raised by the community. 📢 System.Reactive v6.0.0 Preview 9Available on NuGet: https://www.nuget.org/packages/System.Reactive/6.0.0-preview.9 Summary of changes:
Full changelog: https://github.com/dotnet/reactive/releases/tag/rxnet-v6.0.0-preview.9 |
Beta Was this translation helpful? Give feedback.
-
UniRx (https://github.com/neuecc/UniRx) is the Unity implementation of Reactive extensions with Unity utilities. In my opinion it is implemented well and has few bugs. Supporting Unity means netstandard2.1 and avoiding nuget "batteries not included" dependencies, like the Microsoft logging and configuration namespace libraries. Support between the two ecosystems' packaging is not tough, you can use https://openupm.com/nuget/ Also my opinion: the "zero allocation" emphasis in gaming libraries is more of a marketing issue. I would rather have a library that is high on correctness and implements all the operators and is tested, like Window, which UniRx currently lacks and is tricky for mortals like me to implement correctly. |
Beta Was this translation helpful? Give feedback.
-
📢 System.Reactive v6.0 Preview 13 📦https://www.nuget.org/packages/System.Reactive/6.0.0-preview.13 Consumer-visible changes since preview.9:
We've also cleaned up a lot of code that had conditional compilation directives for scenarios that are no longer relevant. (This has no impact for anyone using Rx, but streamlines ongoing development.) |
Beta Was this translation helpful? Give feedback.
-
As a newcomer, the lack of a documentation site makes it still feel like this library is dead. The markdown in the documentation folder also looks unkept. |
Beta Was this translation helpful? Give feedback.
-
Those following this discussion might be interested to know that we will soon be moving forward with the previous discussed plans for changing how UI-framework-specific features are packaged. See #2177 for details. |
Beta Was this translation helpful? Give feedback.
-
📢 UPDATE Rx .NET 6.0 is now available.
📢 UPDATE FREE Introduction to Rx.NET eBook is now available Online, On GitHub, as PDF and as EPUB
Our aim is to continue to promote Reactive Programming as one of .NET’s Superpowers. At a very high level, we’d like to reverse the public opinion that “Rx (.NET) is dead”. How can we achieve this?
Below is our high-level backlog covering the v6.0 and v7.0 releases, and we will flesh out each item with associated links to issues / discussions / PRs, and can amend based on feedback from the community.
To summarise:
🛠️ Becoming Project Maintainers:
Ian Griffiths (@idg10) and Howard van Rooijen (@HowardvanRooijen) from endjin have volunteered to become project maintainers.
These tasks are required to enable this transition:
🗺️ Roadmap & Architectural Decisions
🔁 DevOps & CodeOps
net6.0
TFM packages (Add Rx.NET 2023 roadmap, and tooling update ADR #1879, Upgrade to supported TFMs and SDK versions #1882)🪲 Features & Defects
SynchronizationContext
causes different code path to run; tests should run both with and withoutSynchronizationContext
💬 Community & Documentation
🚀 Releases
Rx.NET v6.0 Preview 1
📦https://www.nuget.org/packages/System.Reactive/6.0.0-preview.1
📄https://github.com/dotnet/reactive/releases/tag/rxnet-v6.0.0-preview.1
Rx.NET v6.0 Preview 9
📦https://www.nuget.org/packages/System.Reactive/6.0.0-preview.9
📄https://github.com/dotnet/reactive/releases/tag/rxnet-v6.0.0-preview.9
Rx.NET v6.0 Preview 13
📦https://www.nuget.org/packages/System.Reactive/6.0.0-preview.13
📄https://github.com/dotnet/reactive/releases/tag/rxnet-v6.0.0-preview.13
Rx.NET v6.0 Preview 16
📦https://www.nuget.org/packages/System.Reactive/6.0.0-preview.16
📄https://github.com/dotnet/reactive/releases/tag/rxnet-v6.0.0-preview.16
Rx.NET v6.0
📦https://www.nuget.org/packages/System.Reactive/6.0.0
📄https://github.com/dotnet/reactive/releases/tag/rxnet-v6.0.0.1
📖https://endjin.com/blog/2023/05/rx-dotnet-v6-released
Async Rx.NET v6.0 Alpha 3
📦https://www.nuget.org/packages/System.Reactive.Async/6.0.0-alpha.3
📄https://github.com/dotnet/reactive/releases/tag/asyncrxnet-v6.0.0-alpha.3
⏱️ Effort
We thought it would be useful to track the amount of time we're dedicating to this endeavour.
January 2023
February 2023
March 2023
April 2023
May 2023
June 2023
July 2023
August 2023
September 2023
October 2023
November 2023
December 2023
January 2024
February 2024
March 2024
April 2024
May 2024
Beta Was this translation helpful? Give feedback.
All reactions