GuillaumeSalles / redux.NET

Redux.NET is a predictable state container for .NET apps. Inspired by https://github.com/reactjs/redux.
712 stars 86 forks source link

What's the status of this project? #69

Open sclarke81 opened 7 years ago

sclarke81 commented 7 years ago

Hi all,

I'm really interested in this project. I'm playing around with using react and redux in C# and, particularly after reading the V3.0 discussion, I think this project fits nicely with the way I'd like to work with redux. The ideas coming from @GuillaumeSalles, @cmeeren, @lilasquared and @dcolthorp are great. It's noticeable that in my research on redux in C# that I've come across many blog posts and comments from you guys.

So I'd potentially be keen to use redux.NET and to get involved and contribute, but I'm a bit concerned at seeing pull requests outstanding since October 2016. I'm not criticising, I get it, it's open source and we all have busy lives. I'm just trying to get a feel for what the status is.

Kind regards,

Stephen

cmeeren commented 7 years ago

I have no idea, and have been trying to find out too, see https://github.com/GuillaumeSalles/redux.NET/issues/51#issuecomment-298889221

That being said, I've moved away from using Redux for my app (it wasn't the best framework in my specific case), so I probably won't be contributing any more to this project.

sclarke81 commented 7 years ago

The lack of response to your comment was also part of my concern... I hoped that raising an issue would have a bit more visibility.

it wasn't the best framework in my specific case

Do you mind if I ask what brought you to that conclusion? I'm still in the early stages of research and testing different paradigms so any input would be gratefully received.

cmeeren commented 7 years ago

Do you mind if I ask what brought you to that conclusion?

Put simply, it was a pain to add a few new screens to my app, requiring adding new state, reducers, actions, and sagas (or whatever other async handlers one uses), i.e. a lot of boilerplate over just adding a view model. The pain was partly due to my using Redux as the sole source of state, instead of having view models with "view-local" state and only putting the global state in Redux. This was partly necessitated in a couple of views where a submit-button's enabled/disabled state depended on both the input values of the form fields as well as some global state, requiring me to either mix local and store observables in a way I found messy, or simply put all state (including input fields) in the store.

There were a few other reasons, too – getting animations to work correctly in all corner cases were messy – but mostly it was the absurd amount of boilerplate and indirection that did not really feel necessary. I decided to get rid of Redux altogether, though a more combined approach could also have worked, with only the truly global state in Redux and everything else in view models. In the end. however, I opted for keeping global state in separate "view models" (all implementing IObservable, so they are bindable), register them as singletons in the IOC framework, and inject them into whichever view models that needed them. In short, this means all state will have a single source of truth, without having to rely on the boilerplate of Redux.

sclarke81 commented 7 years ago

Thanks for taking the time to share your experiences. I've been writing TodoMVC examples in different ways and I'm already noticing the amount of boilerplate Redux involves. It's also tricky to find the balance of store and local state. So it feels like I'm hitting some of the same issues. I really like the Redux paradigm though. I also find Cycle interesting but I don't have enough of a handle on it yet to begin putting anything together to try it out.

sclarke81 commented 7 years ago

I've decided to open source my examples in TodoMVC.NET in the hope that they might help others. I'd like to replicate the original TodoMVC project, but for .NET. Feel free to take a look and let me know your thoughts.

GuillaumeSalles commented 7 years ago

Really sorry that I didn't take the time to answer sooner.

I don't have the motivation to work on Redux .NET anymore and I don't think it will change in the future. I didn't use .NET for the UI part professionally during the last 2 years so I don't think I'm the right person to maintains Redux.NET right now.

If some people are interested to make Redux.NET evolve in whatever the direction they want, I can move this repo to an organization and give them admin access to publish nuget packages.

sclarke81 commented 7 years ago

That's ok, I think we all understand what it's like.

I'm definitely interested in doing that. I'd be happy to help initially with the outstanding pull requests. Longer term it'll probably depend on what route I decide to take with my UI projects. If any of the others would join in that'd be great as I'm still new to react/redux.

cmeeren commented 7 years ago

I'll stay on the sidelines for this, since I'm not currently using Redux.NET myself.

codepunkt commented 7 years ago

The solution might be simple: Create a Redux.NET organization on github, move repository there and add some willing maintainers from this repo - that actually use the project, preferrably on a day to day basis.

sclarke81 commented 6 years ago

@GuillaumeSalles would you be happy to move this project to an organisation now? It's looking more likely that I'm going to make use of Redux.NET. I'd be keen to start addressing some of the pull requests and planning the future of the library.

Is anyone else up for joining in? @jackjwilliams, @Vazerthon, @codepunkt?

ridespirals commented 6 years ago

I've used this project at work and would like to use it more. I'm not sure what I can promise to be able to do but I am interested in helping wherever I can.

sclarke81 commented 6 years ago

@ridespirals I'm in pretty much the same situation. With work and family life I'm pretty busy, but I'd like to do what I can to take this forward.

Vazerthon commented 6 years ago

I've really only toyed with Redux.NET and I'm not actively working with it at the moment. That said, I'd be up for trying to help out on maintenance where I can. @sclarke81 are you hoping to take on ownership?

sclarke81 commented 6 years ago

I'm easy going... I'd like to have input into the future as well as working on maintenance. From what @GuillaumeSalles has said it looks like he won't have the time to run the project. It'd be great if we could get a few interested/opinionated people together to guide the future. I'm up for helping to drive it, or to take more of a supporting role. My main aim would be to see the library progress. Combined with Rx and ReactiveUI I think the current version works really well. Having said that, I think some great ideas have been raised I the issue backlog and I'd like to see them implemented.

JordanMarr commented 6 years ago

Does anyone have any recommendations for an alternative library that is actively maintained? Or is everyone just rolling their own?

cmeeren commented 6 years ago

Rolling my own (yes, I've moved back to using Redux, though in F#, which is a much better fit for the architecture). It's just 20-30 lines of code or so for what I need, so I don't really see the benefit of using a library.

JordanMarr commented 6 years ago

I would love to be doing this with F# because it is such a natural fit.
https://thomasbandt.com/fsharp-redux-store-for-xamarin-apps

Unfortunately my current project is too far along for swapping out to an F# domain model. My current design is very similar to what you mentioned: injecting a singleton VM with shared state into other VMs to provide a single source of truth where necessary.

Maybe I should just stick with what I have and go the F# route on the next project.

PostImpatica commented 5 years ago

I have an example for Xamarin using .Net Standard 2.0. You can find it here.

JoseFMP commented 5 years ago

Any news? I am willing to contribute. @helzgate your contribution is great but why not to provide a wide .NET solution instead of Xamarin only?