reactive-streams / reactive-streams-dotnet

Reactive Streams for .NET
MIT No Attribution
198 stars 28 forks source link

1.0.0 stable release #28

Closed marcpiechura closed 7 years ago

viktorklang commented 7 years ago

How many compliant implementations exist?

akarnokd commented 7 years ago

Does this mean you change it to proper release on NuGet? I can't release with prerelease dependencies due to NuGet rules.

marcpiechura commented 7 years ago

@viktorklang afaik only Akka.Streams for the TCK, Reactor only uses the interface but @akarnokd may correct me on this part.

@akarnokd yup, we have the same issue.

akarnokd commented 7 years ago

Reactor-Core-DotNet is based on RC1 and it is currently a partial library in terms of functionality and we have only 1 TCK test (that passes). However, its design doesn't conform fully to the RS spec and needs to be reinforced (the same §3.9 problem that RxJava had). Unfortunately, I don't have time right now to fix it plus the API the library provides is outdated relative to the Java variant.

viktorklang commented 7 years ago

@Silv3rcircl3 How many impls in Akka.Stream have you verified with this?

marcpiechura commented 7 years ago

@viktorklang we have ported the Akka.Streams.TCK project too, so all impls that are verified on the jvm, if that is what you mean by "impls".

ktoso commented 7 years ago

It' more about if you only checked "one publisher" or all kinds of stages you have. These are the ones we cover for example: https://github.com/akka/akka/tree/master/akka-stream-tests-tck/src/test/scala/akka/stream/tck

All are executed by the same engine, but we wanted to test the various stages independently anyway in case it'd uncover some undesired behaviours (and AFAIR it did quite a few times, and then we fixed the engine).

akarnokd commented 7 years ago

Two questions:

If you could wait a few days, I can allocate some time and check the TCK with some of the more complicated ReactiveX operators (or the other way around :)).

marcpiechura commented 7 years ago

@ktoso that's what I meant, forgot the .Test part on the project name. https://github.com/akkadotnet/akka.net/tree/dev/src/core/Akka.Streams.Tests.TCK

@akarnokd nothing has changed since the RC, also notice that only the interfaces are compiled against .Net Core , we first need to wait for NUnit to support .Net Core. So we would release another version with .Net Core support for the TCK.

What we could do instead

And if all looks good from your side we can release a stable TCK maybe even with .Net Core support, depending on how fast NUnit supports it.

viktorklang commented 7 years ago

I'd prefer the more passing impls the better before publishing it as final.

ktoso commented 7 years ago

@ktoso that's what I meant, forgot the .Test part on the project name. https://github.com/akkadotnet/akka.net/tree/dev/src/core/Akka.Streams.Tests.TCK

Cool, thanks! That clarifies things :)

I wonder if a 3rd impl will appear - what's your general experience with the .NET OSS community and this specific area? Is anyone else working on an impl, is it likely to see another one? @Silv3rcircl3

marcpiechura commented 7 years ago

TBH I don't expect to see any other implementation in the near feature, except for Reactor. Most devs still simply use what Microsoft offers, so the .Net OSS community is not as big as the jvm one and many projects are a port of a famous library from a different stack. But there is hope ;-) It seems that Microsoft sees the value in a grown OSS community and has OSS'ed many parts of the stack, also some of the newest features from VS 2017 are working directly with OSS frameworks, like "live unit testing" works with MsTest, XUnit and NUnit from the beginning.

But I'm only active in the OSS world for around to years so my experiences are a little bit limited.

Aaronontheweb commented 7 years ago

@ktoso @viktorklang IMHO, if Akka.NET and Reactor.IO make some headway in evangelizing the Reactive.Streams specification I'm sure it will get picked up elsewhere in the .NET ecosystem. As @Silv3rcircl3 mentioned, there's still a pall of "not invented in Redmond" that stymies adoption of open standards in .NET. That's changing with the new direction in which the entire .NET platform is going, but there's 15 years of inertia to be accounted for still.

ktoso commented 7 years ago

Yeah, I somehow was assuming this indirectly... I think it's unrealistic to require as many full impls as the JVM version had at launch, but at least lets spread the word once more a bit in case someone wants to chime in before calling the 1.0?

No idea about timeline, rather weeks I guess so all you guys can check it with the latest and then move towards releasing. Though I don't understand the NuGet question here so I may be missing something?

akarnokd commented 7 years ago

I've (re)implemented a couple of sources and operators with RC1 in my own repository with plain .NET C# (no fancy Core or Standard as I couldn't setup the project properly locally or on CI).

So far, the TCK seems to be working properly and detected mistakes in my code.

viktorklang commented 7 years ago

IF things seem to work fine, and there's been multiple eyes on things, I'm OK with having it marinate for a week or two and then calling it a wrap.

marcpiechura commented 7 years ago

Though I don't understand the NuGet question here so I may be missing something?

@ktoso the "problem" is that Nuget doesn't allow a stable release if one of your dependencies is still in beta, so we can't release a stable Akka.Streams version as long as the Reactive.Streams package is still in beta.

viktorklang commented 7 years ago

@Silv3rcircl3 Alright, +1 on my part. (FWIW since I am not the right guy to review .NET code :))

ktoso commented 7 years ago

Though I don't understand the NuGet question here so I may be missing something? @ktoso the "problem" is that Nuget doesn't allow a stable release if one of your dependencies is still in beta, so we can't release a stable Akka.Streams version as long as the Reactive.Streams package is still in beta.

Thanks for explaining, didn't know that - interesting that the beta etc concept is baked into the infra :)

akarnokd commented 7 years ago

Update. I've implemented a bunch of IProcessors and IPublishers and here is how things turned out:

https://github.com/akarnokd/Reactive4.NET/tree/master/Reactive4.NET.Test

Number of IPublisher tests: 45 Number of unique IPublishers: 21 Number of ignored IPublisher tests: 0

Number of IProcessor tests: 13 Number of unique IProcessors: 5 Number of ignored IProcessor tests: 6

Overall test cases passed: 1446 Overall test cases skipped: 1127

There were issues with IProcessors not behaving like the TCK expected (thus currently ignored), see #29 and #30 for details.

marcpiechura commented 7 years ago

@viktorklang @ktoso could you take a look and @akarnokd remarks ?

IMO the TCK looks stable from a technical POV and could be released after the remarks are resolved and #32 is merged.

viktorklang commented 7 years ago

Hi @Silv3rcircl3, I won't have time until on Friday.

ktoso commented 7 years ago

I'll give it a look tonight.

marcpiechura commented 7 years ago

@viktorklang @ktoso #29 and #30 still need some feedback, would be cool if we could get a release done over the weekend or next week.

akarnokd commented 7 years ago

Could you release an RC2 first?

ktoso commented 7 years ago

+1 for RC releases still, since it seems we're still addressing some smaller issues here.

29 merged, #30 Viktor addressed it seems.

marcpiechura commented 7 years ago

Sounds reasonable, I could create a RC2 for the TCK after #36 is merged. I would also release the interfaces as stable package to address the issue that Akka.Streams and Reactor can't be released as stable as long as the interfaces are still in beta.

marcpiechura commented 7 years ago

So I merged the last outstanding PR and would create the release in the next few days, all fine with it?

viktorklang commented 7 years ago

@Silv3rcircl3 There's a 1.0.1 being shipped for reactive-streams-jvm within a month ;-)

marcpiechura commented 7 years ago

@viktorklang we don't want to wait any longer if possible, we have some demand for an stable Akka.Streams release ;-)

akarnokd commented 7 years ago

I'm in the process of proposing/posting changes and fixes to the JVM version, most of it relevant to this language variant as well (such as resolution to #30). If you ship 1.0.0, will you have the capacity to do 1.0.1 near the JVM release?

viktorklang commented 7 years ago

Shipping the .NET 1.0.0 on parity with JVM 1.0.0 seems appropriate. We can then do the 1.0.1 releases in relative concert.

marcpiechura commented 7 years ago

I'm only talking about the interfaces, the TCK will remain in beta.

ktoso commented 7 years ago

That plan sounds good, 1.0.0 .NET on-par with existing 1.0.0 JVM makes sense. Then we'll keep at it while we add the improvements and to on-par 1.0.1 then :)

marcpiechura commented 7 years ago

Ok cool, I'll release 1.0.0 in a few hours, thanks all for the feedback and work 👍

akarnokd commented 7 years ago

Did you upload it to nuget?