Skip to content
This repository has been archived by the owner on Apr 20, 2018. It is now read-only.

How important is compatibility across implementations? #1

Open
jspahrsummers opened this issue Oct 21, 2013 · 3 comments
Open

How important is compatibility across implementations? #1

jspahrsummers opened this issue Oct 21, 2013 · 3 comments

Comments

@jspahrsummers
Copy link

In @ReactiveCocoa, we've basically followed a scorched earth policy with regard to Rx compatibility, on the following basis:

  1. Most users (and especially potential users) of RAC do not have experience with Rx, so any commonalities are lost upon them
  2. LINQ terminology is often less intuitive than ML-inspired naming for our users (which may be surprising given Objective-C's Smalltalk ancestry)
  3. We care a lot about doing things The Right Way™, and correcting perceived mistakes in previous versions of RAC or Rx, even at the expense of backwards compatibility
  4. We incorporate a lot of ideas from @paulcbetts' ReactiveUI, which we're able to integrate holistically due to our complete control of the implementation
  5. Objective-C is a highly dynamic language, so we can emphasize patterns that are simply not possible in other languages — e.g., the ability to observe arbitrary method invocations lessens the need for subjects

I mention all of this because others have emphasized consistency (across implementations) to a degree that we haven't really been interested in. It might be worth talking about this in more detail at a summit, and deciding whether our approach is good or needs adjustment.

@joshaber

@mattpodwysocki
Copy link
Member

I don't think it's super important in the case of RAC because it really is on its own. RxJS for example treads on locations that Rx.NET cannot handle as well. I imagine the same would apply to Ruby, Python, etc. As long as we have a core understanding of some of the fundamentals and The Right Way such as:

  1. Core objects of Observable/Observer
    • Enforced grammar of OnNext (0-N) | (OnError | OnCompleted)
  2. Composition Operators
  3. Notion of Schedulers to allow for changing of concurrency model at any point.

From there, everything else should be fair game.

@anaisbetts
Copy link

Save it for the Summit! :)

@jspahrsummers
Copy link
Author

@paulcbetts Though it wasn't my intention, I don't think there's anything wrong with having these discussions asynchronously. Frees up more in-person time, and makes the results highly visible.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants