ReactiveX / RxSwing

RxJava bindings for Swing
Apache License 2.0
98 stars 23 forks source link

RxJava2 support tactics? #60

Closed Petikoch closed 7 years ago

Petikoch commented 7 years ago

Hi @mikebaum and @akarnokd ,

I talked with a friend (@UeliKurmann) about RxSwing and RxJava2 compatibility. RxSwing builds currently on RxJava 1.x.

The discussion raised a more general question... what's the way to go for projects like RxSwing to support RxJava2?

There are basically two options IMO

1) Create a "RxJava2 branch" and migrate everything to RxJava2, release it from that branch using a different artifact group id and different java packages. Maintain then afterwards both branches... with manual merges between the branches

2) Use https://github.com/akarnokd/RxJava2Interop and build something like a "RxSwingRxJava2Interop" project which offers "SwingObservable2", "SwingScheduler2", ... and let the user take care about picking "the right" (new) Observable, "the right SwingObservable2", ... This would be far more easy to maintain for the RxSwing library developer(s), but is more confusing for the users of the library

What do you think?

Best regards, Peti

akarnokd commented 7 years ago

I'd go for ReactiveX/RxSwing2 and io.reactivex.rxjava2:rxswing:2.0.0 but if you think you can live with branch switching, opening a 2.x here and updating the maven address like above is preferred.

Petikoch commented 7 years ago

Thanks @akarnokd for the fast response.

Another thought... I think RxAndroid does branch switching. What are your experiences @JakeWharton , what do you suggest? Branch Switching or separate ".2" Project?

JakeWharton commented 7 years ago

I would only do branching if you think that one version will slow down in development and the majority will continue on the new version. If you think that development will continue in parallel and that design and development will be done in parallel the overhead of branching and user confusion will bit higher (but not unmanageable). For RxAndroid specifically it hasn't seen a lot of week-to-week changes so managing two branches is fine, and we expect to switch 2.x to the default in a few weeks. For other projects that we manage we're just switching to 2.x on master and stopping 1.x releases. Only if a problem arises with the 1.x version will be accept a change and make another 1.x release, but I think that will rarely–if ever–happen.

Petikoch commented 7 years ago

Thanks @JakeWharton for your feedback.

@mikebaum , what do you think about the future concerning RxJava2 and RxSwing?

@UeliKurmann, what do you think about publishing your RxJava2 migration of RxSwing to the public (https://github.com/UeliKurmann/RxSwing/tree/rxjava2) ?

Best regards to all, Peti

mikebaum commented 7 years ago

@Petikoch Hey Peti, thanks for bringing this forward. Sorry for the delay, I'm in San Francisco right now at a software conference. Personally I'd go for the RxSwing2 option, rather than separate branches. I imagine that most development would happen on this new project. The only downside is that users would be forced to use RxJava2 and Java 8. This doesn't seem so bad, because personally I'd much prefer working with Java 8 for the obvious reasons (lamdas).

@akarnokd I'm not sure how to proceed to create a new Rx project, can you provide any guidance?

Thanks, Mike

akarnokd commented 7 years ago

Done https://github.com/ReactiveX/RxSwing2 . Let me know if who else to invite and what rights you need.

UeliKurmann commented 7 years ago

Should I publish my initial migration? (https://github.com/UeliKurmann/RxSwing/tree/rxjava2) Where should I create a pull request? It isn't perfect, but could be a good starting. The project compiles and all tests are green.

akarnokd commented 7 years ago

@UeliKurmann You have to update the maven address specification too:

// somewhere at the beginning of build.gradle
group = 'io.reactivex.rxjava2'
jutoft commented 7 years ago

I have dropped a pull request that supports java 1.6

skiranoglu commented 7 years ago

Hi, Are there any plan for publishing rxswing on maven repository, that is compatible with rxjava2. Is there further development plan for rxswing branch? Or can i use it directly? By the way, readme section of ...RxSwing/tree/rxjava2 is misleading.

Best regards to all, Seckin

Petikoch commented 7 years ago

The problem with RxSwing is, as I see it, that there is at the moment no active maintainer of the project.

The project is stalled. Or what do you think @mikebaum ?

The work for porting RxSwing to RxJava2 is already done. Twice, once by @UeliKurmann and once by @jutoft. But nobody is pulling in the changes and releasing them.

I guess, the project must be "unstalled" first.

akarnokd commented 7 years ago

I can take over managing RxSwing but is there any contributor left willing to ramp up the remaining listener iplementations, for two versions?

skiranoglu commented 7 years ago

I would like to be contributor in the future. I can be volunteer for that job. Currently i m learning what have u done until now. And i m really happy to see bind approach in swing.

By the way, i plan to use rxswing in product development. Do you have any important advice to me? What re the remaining listener implementations? I can implement them and i will be happy to support that rxswing project.

mikebaum commented 7 years ago

@akarnokd @petikoch @skiranoglu

Sorry guys if I can help I will. Right now I'm on vacation in Jamaica till this coming Saturday. I'll follow up then.

akarnokd commented 7 years ago

I did it my own way: https://github.com/akarnokd/RxJava2Swing

Petikoch commented 7 years ago

Closing, since there is now an excellent solution from @akarnokd https://github.com/akarnokd/RxJava2Swing