ReactiveUI v8.0.0 released

We never want to do a release this big ever again. A lot of time and effort went into this release from dedicated folks in the community.

One of the biggest factors in this release was that Microsoft changed their toolchain three times over and ReactiveUI was in the centre of that change. Dear Microsoft, never again please. We're happy with the end result however please take a peek out how the source code of ReactiveUI is now structured on the fileystem and how we multi-target multiple platforms using single projects and Directory.build.prop. Life for maintainers that target multiple platforms with dotnet is much better now than ever before. We were able to eliminate so much msbuild technical debt.

Big thank-you to Olly Levett who did the bulk of the conversion. Mate - you are like Mike Rowe - you did the dirty job and if you take a peek at Prism, MvvmCross and other upcoming projects you'll see that they followed your lead. Be proud of what you have accomplished.

Thank-you to Oren Novotony for your guidance, Immo Landwerth for your educational guidance on netstandard and David Kean who helped immensely with troubleshooting Visual Studio 2017 stability problems we encountered way back in the early days during this time of epic change. Rob Relyea please keep the communication channels open with the community because how we release software will be changing within the next month or so to a continuous delivery model. The ReactiveUI community has grown, we have new maintainers and our testing automation has matured to a point where will be releasing faster from this point onwards because we can. Consumers of ReactiveUI will no longer need to use our MyGet feed.

ICYMI - At MVP Summit, the community met with Microsoft and with their support and encouragement we forked control of System.Reactive. Head on over to this blog post for specifics as to what this means for the future of Reactive Programming on .NET.

You may or may not know this but ReactiveUI is maintained by unpaid volunteers. We put up a big marketing front but at its core is a couple of passionate folks. Open-source as it is today is unbalanced and broken. If you’re relying on open-source software for your business and you haven’t secured your supply chain, you’re negligent. For the longest time the software industry has talked about open-source software in the terms of user freedom, but we have never stopped to think about the cost. The cost is too high. Lana Montgomery, thank-you for sponsoring Geoff's attendance to LinuxConfAu where it was confirmed that this is indeed a cross ecosystem and industry wide concern.

❤️ Thank-you for your support. What you have authored below is the essence of opensource. We do this stuff for others like yourself, we trade favours, we find things that annoys us & we fix it. Helping out transforms the relationship dynamic. If you have an idea, dig in and do it. https://t.co/uMPSqg9ex3

Thank-you to our backers who are making sustainable open-source a reality:

Thank-you to every single person who shipped a pull-request into this release.

Alexey Zimarev

Benjamin Tam

Damien Doumer Tohin

David Nelson

Dominik Mydlil

Geoffrey Huntley

Giusepe Casagrande

Glenn Watson

Grzegorz Kotfis

Jeremy Koritzinsky

Jon Stødle

Kent Boogaart

Martin Björkström

Olly Levett

Oren Novotny

Robert

Rodney Littles II

Shane Neuville

Stefan Moonen

Taylor Buchanan

Tim Jones

If you can't (or won't) help out financially, then please donate your time. Join the conversation over at https://reactiveui.net/slack and ask how you can help. Thanks for any support you can offer if you decide to - Geoffrey Huntley

New Features

We kept getting reports from folks who want to contribute to the project but their employer has a restrictive list of pre-approved licenses and MSPL isn't on that list. So what if we enabled those to help us? It would be much easier than making them go through internal corporate bs. So that's what we have done - ReactiveUI is now available under the MIT licence. This means we are now fully compatible with the GPL and are in alignment with .NET Core, CoreCLR, CoreFX, Roslyn and Xamarin Forms.

This is a housekeeping release to ensure that ReactiveUI is in a good position going forward. We have removed a massive amount of maintainer technical debt. The public API surface of ReactiveUI has not regressed in any way and we added automatic tests that validate this as part of the release. We will be adding additional features such as automated on-device, end-to-end integration tests in the coming months to make the source more accessible and safer for folks to contribute to the project.

We have added netcoreapp20 as a supported platform. You can use ReactiveUI on the server-side. Maintainers are super excited about the future of WebAssembly and it allows you to unit test ReactiveUI using dotnet core unit test libraries.

We also fixed that niggling problem that prevented folks from writing unit tests for ReactiveUI applications using Visual Studio for Mac.

Upgrading

This is a big release so it's up to you to decide when it is best for you to upgrade. We don't recommend holding off on upgrading because of changes in the .NET toolchain. It is now impossible to compile previous releases below this release. Know that the maintainers and community of ReactiveUI have been running 183 editions of alpha releases in production over the last eight months. Yesterday we went through and manually tested every platform and are only weeks away from adding full end-to-end regression tests. To us, it's risker to hold off upgrading - we recommend that if you haven't started your netstandard upgrade spike that you do it so now. The longer you hold off on the upgrade the more pain you will experience consuming opensource in the post netstandard world.

When you install ReactiveUI we will bring in the correct version of System.Reactive (currently 3.11) as part of installation as a transitive reference. You'll need to manually remove/upgrade all references to the Reactive Extensions that are below 3.11 that aren't netstandard. Do not attempt to do binding redirects from 2.x to 3.x series. It won't work. It's not worth it. You'll end up with nothing but being unhappy and have a wasted afternoon.

ReactiveUI is now netstandard20 compatible. We have dropped support for portable class libraries. You may be able to install netstandard20 into your portable class library but both Microsoft and the maintainers of ReactiveUI strongly recommend against doing this as you'll be fighting an uphill battle. The correct path to take is File -> New -> Netstandard library and drag your code into the new project. Then install the netstandard compatible versions of any dependencies that you have.

The first thing you'll notice after creating your netstandard20 class libraries is that the name of the ReactiveUI packages on NuGet have subtly changed. Instead of using - we now use . in our package names. We did this because it allows the maintainers to reserve the namespace of ReactiveUI on NuGet and provide you guarantees that if it's in the ReactiveUI.* namespace then it is an official package that was produced by us. Look for the Blue Tick (tm). The documentation has been updated with instructions of which packages you should install on each platform.

If you target the WPF platform you now need to install the WPF specific package otherwise schedulers won't be wired up and you'll be greeted with an appropriate exception. The documentation has been updated. We had to make this change prevent Visual Studio for Mac from exploding when it encountered an automatically imported reference to Windows.Presentation which prevented these folks from being able to unit test their applications with Visual Studio for Mac.

The .NET toolchain has evolved quite a bit over the last year which provided an excellent opportunity to remove legacy platforms such as Silverlight and Windows Phone 8.x.

ReactiveUI now uses monoandroid80 as the minsdk but you'll be able to target earlier versions of android by specifying the targetsdk compilation option.

The minimum version of .NET framework is now net461 which means you'll need to adjust your unit test projects and WinForms/WPF applications. We chose net461 as it's in alignment with Microsoft's official support policy and net461 is now the default option provided in Visual Studio 2017 when scaffolding File -> New Project.

The minimum version of UWP is now 10.0.16299 aka Fall Creators Update. The maintainers picked this as it felt like a reasonable baseline to us and it helps reduce the amount of SDK's one needs to have installed to be contribute to ReactiveUI. If you need to target anything earlier than this then you will need to compile from source. It's as simple as Right Click -> Change Target -> Compile.

The minimum version of Xamarin forms is now 2.5.1.444934. We picked this because it was the latest version available on NuGet when we were publishing the release. If you need to target an older version then you will need to compile from source.