question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

3.x: Single or split library.

See original GitHub issue

RxJava 2 is quite a beast with several foundational types (Flowable, ParallelFlowable, Observable, Single, Maybe, Completable) with extensive API surfaces and considerable jar file size.

Arguments for splitting:

  • Less conceptional weight due to the backpressure/no-backpressure difference between them.
  • Flow-supporting parts, such as Disposable, Scheduler, SimpleQueue and other support can be factored out.
  • Smaller download size.

Arguments against:

  • RxJava 2 ProGuards quite well
  • The need to introduce 4 artifacts: common, flowable, observable, interop. The interop is required as the flowable and observable can no longer reference each other.
  • Should they share the same version or have independent versions?

Issue Analytics

  • State:closed
  • Created 6 years ago
  • Comments:8 (3 by maintainers)

github_iconTop GitHub Comments

12reactions
artem-zinnatullincommented, Oct 3, 2017

I vote for not splitting for now.

Potential issues of splitting:

  • Users will sometimes pull different component versions into single project and have complicated compatibility issues (because of transitive deps for instance) and we’ll see issues here and questions on StackOverflow about that. It happens with Kotlin (different reflection-lib revision is particularly hard to figure out), it happens with Android support library (there is even a Lint rule that checks that now) & other projects, and it’s painful
  • It will make interop between rx types painful for Java users, they’ll have to use static methods. It’s RxJava, we have to think about Java users
  • It raises a valid question of splitting observable into observable, single, maybe, completable, but interop for Java will be even more painful then
  • If observable artifact will be much more popular than flowable, then it will potentially make RxJava more independent from Reactive Streams Spec (as 1.x was) which can lead to feature requests and internal changes that’ll be even less compatible with the spec and make maintenance harder
  • “Less conceptional weight” will most likely become “More conceptional weight”, because user will have to figure out which part of RxJava to use, how to interop and so on. People already misuse RxAndroid/RxKotlin/etc, split inside RxJava itself will make it even worse
2reactions
akarnokdcommented, Jun 19, 2019

I decided the library won’t be split in 3.x due to an excessive amount of additional maintenance costs. The moment Java adds extension methods, this split can be revisited again.

Read more comments on GitHub >

github_iconTop Results From Across the Web

How To Create A Library And Split A Program Across Multiple ...
How To Create A Library And Split A Program Across Multiple Files | C Programming Tutorial. 11,891 views11K views. Jan 4, 2022.
Read more >
Split and pool synthesis - Wikipedia
The split and pool (split-mix) synthesis is a method in combinatorial chemistry that can be used to prepare combinatorial compound libraries. ... a...
Read more >
SPLiT-seq reveals cell types and lineages in the developing ...
SPLiT -seq validation​​ To test SPLiT-seq's ability to generate uniquely barcoded cells (UBCs), we performed a species-mixing experiment. We mixed ...
Read more >
Train-Test Split for Evaluating Machine Learning Algorithms
It is a fast and easy procedure to perform, the results of which allow you to compare the performance of machine learning algorithms...
Read more >
How to use Split in Python Explained - KnowledgeHut
split () method is a beneficial tool for manipulating strings. It returns a list of strings after the main string is separated by...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found