neuecc / UniRx

Reactive Extensions for Unity
MIT License
7.07k stars 893 forks source link

Discussion: commnutity driven development #325

Open neuecc opened 6 years ago

grofit commented 6 years ago

The Problem

As someone who has moaned about this for about the past year we currently have a GREAT project and it is very popular, but you (@neuecc are a very busy person), we have until recently been in a situation where there were a myriad of good quality PRs building up with no one able to action them.

There has also been a big shift in the Unity/.Net landscape over the past year or so where things are shifting to .net standard, and Unity is starting to support a newer version of .net as well as their new package manager etc.

Given the large amount of change it has meant that people have started to wonder if they can use this library because no one was able to provide fixes outside of the owner, and there was no roadmap/guidance on if we were going to be able to start taking advantage of some of the newer features coming out.

How to solve it?

Not entirely sure, so currently I would say it would be best to move UniRx (and related projects) into an organisation on github (its free to do for public repos) and then see if any of the community would be willing to become a maintainer. This would need to be someone who has experience with the library, has used it in depth and the owner would trust to make decisions if they were unable to do so.

Given the community is generally a bit quiet these days I am not sure if you would find many people but at least you have the ability to delegate some responsibility to others so if you are unable to maintain the library for a period there will be others who can help out.

This would require more communication between those maintainers though to agree on the roadmap and the direction of the lib, so the quality and responsibility of the framework does not get eroded too much.


This is all easier said than done, but I really think that this library has a large potential user base in the game dev community (not just in unity) but this could only be realized if there is a community behind it not just a single person.

(Also just want to say thank you very much for your time and efforts so far @neuecc although myself and others may complain from time to time it is a time consuming and often thankless endevour making open source frameworks for others, so thank you for coming back to us and taking the time to discuss these points).

grofit commented 6 years ago

If anyone wants to put themselves forward to potentially become a maintainer please post so we can take numbers of who would have the time/knowledge to assist with the backlog of PRs and ongoing direction of the lib.

RDeluxe commented 6 years ago

Hello ! I would be ready to give a hand here as I'm using UniRx daily at work.

RDeluxe commented 5 years ago

I'm sorry @neuecc , but shouldn't we take a look at this ?

JamesYFC commented 4 years ago

I hope this doesn't die, what a great project.

A few thoughts:

It's probably quite difficult to find people who:

all while filling in the big shoes of @neuecc's work so far.

Plus, we have the higher level dilemma of how the project should go in relation to System.Reactive.

I agree with what @grofit says in #324 about possible long term goals of the project involving splitting and refactoring out a lot of stuff, but of course that brings another massive chunk of long-term thought and work to the table.

I'm not sure that a single extra dedicated maintainer will cut it with everything considered, but it's a good first step at least. Though it's been two years and still no response at all despite @RDeluxe stepping up and volunteering themselves (though there has been a small amount of maintenance by @neuecc), so I'm not sure what we can do.

grofit commented 4 years ago

The problem here is that almost everything outside of unity uses rx.net with varying success depending on deployment platform, it also is a lot faster than it originally was when neuecc first made unirx, and unirx is GREAT inside of unity as it has loads of helpers that make using rx far simpler.

This is only now becoming a problem as unity has opened its ecosystem up a bit more so a lot of devs can now use .net standard dlls etc, and there are plenty of open source rx related projects which could now be useful in unity.

From what I remember previously rx.net works fine in desktop apps with unity and other JIT deployment scenarios, but falls over with IL2CPP or AOT scenarios without major headaches (Which I think someone got working to some extent in one of the related issues here), so my hope was that we could get some focus on isolating and well documenting the issues with getting rx.net working on unity (with most operators etc, we have a repo over here for testing stuff https://github.com/grofit/unity-rx-test) then we could look at seeing what parts of unirx are super valuable to devs (like EveryUpdate etc) then see if we can somehow build them on top of rx.net, this way less unirx code to maintain as the core/linq parts go away and we use default ones (assuming no optimised versions needed), then unirx becomes less of a headache to manage as its just rx.net with more stuff, rather than it being a bespoke rx.net implementation with more stuff.

I think it would be great to get some more maintainers who can action pull requests etc but as a long term goal I think unirx could better serve the community as extensions rather than a full library (also this opens up doors for making similar extension libs for other engines/frameworks like monogame/godot etc).