Closed marcpiechura closed 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.
@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.
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.
@Silv3rcircl3 How many impls in Akka.Stream have you verified with this?
@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".
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).
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 :)).
@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.
I'd prefer the more passing impls the better before publishing it as final.
@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
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.
@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.
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?
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.
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.
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.
@Silv3rcircl3 Alright, +1 on my part. (FWIW since I am not the right guy to review .NET code :))
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 :)
Update. I've implemented a bunch of IProcessor
s and IPublisher
s 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 IPublisher
s: 21
Number of ignored IPublisher
tests: 0
Number of IProcessor
tests: 13
Number of unique IProcessor
s: 5
Number of ignored IProcessor
tests: 6
Overall test cases passed: 1446 Overall test cases skipped: 1127
There were issues with IProcessor
s not behaving like the TCK expected (thus currently ignored), see #29 and #30 for details.
@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.
Hi @Silv3rcircl3, I won't have time until on Friday.
I'll give it a look tonight.
@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.
Could you release an RC2 first?
+1 for RC releases still, since it seems we're still addressing some smaller issues here.
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.
So I merged the last outstanding PR and would create the release in the next few days, all fine with it?
@Silv3rcircl3 There's a 1.0.1 being shipped for reactive-streams-jvm
within a month ;-)
@viktorklang we don't want to wait any longer if possible, we have some demand for an stable Akka.Streams release ;-)
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?
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.
I'm only talking about the interfaces, the TCK will remain in beta.
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 :)
Ok cool, I'll release 1.0.0 in a few hours, thanks all for the feedback and work 👍
Did you upload it to nuget?
How many compliant implementations exist?