title: Should IObservable be preferred over events when exposing notifications in a library targeting .NET 4+
body: <p>I have a .NET library which, as part of an Object Model will emit notifications of certain occurrences.</p>
  <p>It would seem to me that the main <em>pros</em> of <strong>events</strong> are approachability for beginners (and simplicity in certain consumption contexts) with the main negative being that they are <a href="https://stackoverflow.com/questions/1212536/advantages-of-net-rx-over-classic-events">not composable</a> and hence are immediately forced into an <code>Observable.FromEvent</code>* if you want to do anything interesting without writing a code thicket.</p>
  <p>The nature of the problem being solved is such that the event traffic won't be particularly frequent or voluminous (it's definitely not screaming RX), but there is definitely no requirement to support .NET versions prior to 4.0 [and hence I can use the built-in <code>IObservable</code> interface in <code>System.Reactive</code> without forcing any significant dependencies on consumers]. I'm interested in <strike>some general guidelines</strike> some specific concrete reasons to prefer <code>IObservables</code> over <code>event</code>s from an API design perspective though - regardless of where my specific case might sit on the <code>event</code> - <code>IObservable</code> spectrum.</p>
  <p>So, the question:</p>
  <p><em>Is there anything concrete I'm making dramatically more difficult or problematic for API consumers if I go with the simplest thing and expose an <code>event</code> instead of an <code>IObservable</code></em></p>
  <p>Or, restated:  Aside from the consumer having to do an <code>Observable.FromEvent</code>* to be able to compose events, is there really not a single reason to prefer an <code>IObservable</code> over an <code>event</code> when exposing a notification in an API?</p>
  <p>Citations of projects that are using <code>IObservable</code> for not-screaming-RX stuff or coding guidelines would be ideal but are not critical.</p>
  <hr />
  <p>NB as touched on in the comments with @Adam Houldsworth, I'm interested in concrete things wrt the API surface of a .NET 4+ library, not a survey of opinions as to which represents a better 'default architecture' for our times :)</p>
  <p>NB this question has been touched on in <a href="https://stackoverflow.com/q/3186981/11635">IObserver and IObservable in C# for Observer vs Delegates, Events</a> and <a href="https://stackoverflow.com/questions/17020011">IObservable vs Plain Events or Why Should I use IObservable?</a>. The aspect of the question I'm asking has <em>not</em> been addressed in any of the responses due to SRP violations. Another slightly overlapping question is <a href="https://stackoverflow.com/questions/1212536/advantages-of-net-rx-over-classic-events">Advantages of .NET Rx over classic events?</a>. <a href="https://stackoverflow.com/questions/11189944/use-of-iobservable-instead-of-events">Use of IObservable instead of events</a> falls into that same category.</p>