Reactive Extensions 2013 Year in Review


This past year saw a number of changes with the Reactive Extensions (Rx).  The team, with the help of the community, MS Open Tech and others, we have been super busy.  We thought we’d take a little bit of time to recap the year, what we did and what we plan to do. 

Of course, it cannot be said that there wasn’t change with the Reactive Extensions Team, as Erik Meijer, the founder of the Reactive Extensions, LINQ and many other contributions, left Microsoft so that he could work on Rx on the outside, helping with adoption.  We continue as a team to work closely with him and the community on the future direction of Rx.

Going Open Source

As we announced back in November 2012, in conjunction with MS Open Tech, the Reactive Extensions for .NET, C++ and JavaScript were released as open source under the Apache 2 license on both CodePlex and GitHub.  Since that time, we’ve released a number of other languages which now include:

Some are more complete than others, but we’d love the community’s support with making these libraries better.  Contributing has never been easier to the Rx projects has never been easier.  You can contribute to Rx with examples, documentation, code, tests.  Simply sign the CLA and be a part of Rx!

RxJava

Another great result of our open source work has been the collaboration with such companies as Netflix.  The Netflix engineering team are big fans of the Reactive Extensions, and decided to port the Rx to the JVM in a project called RxJava so that their engineering teams can use Rx on both the client and the server.  It currently supports Java 5+, Clojure, Scala and Groovy.  The Netflix API takes advantage of RxJava, exposing all service methods to return Observable<T>, which allows for flexible composition, and concurrency safety. 

The RxJava project has enabled Netflix developers to leverage server-side concurrency without the typical thread-safety and synchronization concerns. The API service layer implementation has control over concurrency primitives, which enables us to pursue system performance improvements without fear of breaking client code.

Conferences

Late 2012 and through 2013 was a busy year for the Reactive Extensions team for presentations.  In addition, we’ll also be making an appearance at CodeMash in Sandusky, OH.

The Netflix team has also been quite busy giving presentations not only on RxJava, but also RxJS, which they frequently use as well. These are great presentations that show how a company with scaling needs such as Netflix uses Rx across all platforms and both on the client and server.

Release of Rx v2.2

This year also saw the release of Rx v2.2 for .NET, C++ and JavaScript, which was announced on this blog here and here.  What was great about these releases is that a lot of the material for this release was specifically driven by the community.  So, a big thank you to the community for participating and moving Rx forward! 

Promises for the New Year

This year, 2014, promises to be another great year for the Reactive Extensions team with a focus on many things such as:

  • Version 2.3 with ideas around backpressure and other concerns
  • Language parity with Python, Ruby and C++ versions
  • New languages supported
  • And yes, more blogging

Although we don’t blog as much, you can always catch us on Twitter at @ReactiveX!  We publish lots of information about Rx and what we’re up to, so follow us!


Comments (24)

  1. JDT says:

    Hi Rx Team,

    I and my team are really troubled by MS's apparent policy of Open-sourcing code from under our feet.

    We are in an industry with rather paranoid clients that contractually bar us from using Open Source software. We have immensely enjoyed using Rx but its open-sourcing threw us into turmoil.

    I feel like we have been betrayed, and will think twice before adopting some new Microsoft framework again, wary of it being Open Sourced later on without prior warning.

  2. Vince says:

    Name a single software product open or closed source which doesn't have vulnerabilities? The world's best software engineeres get things wrong sometimes.

    Don't think for a second that using strictly closed source is going to put you in a better position.

    I suggest you start educating your clients on the benefits of open source. If you don't your going to find it increasingly difficult to use any library from Microsoft, or any other software house, in the future.

  3. JDT says:

    @Vince: I completely agree with your first two paragraphs, but think your third is ridiculous.

    We serve our clients, not the other way around. If reality were different and we were in a position to educate our clients and change their behaviour, then we'd start by telling them that using Windows XP SP3 right up till support ends is a stupid thing to do.

    Surely you've heard the phrase "the customer is always right"?

    Anyway, I'm not getting upset about Open Source per se, but about the Open Source-ing of established products that we may then have to rip out of our codebase at great expense rather than lose more revenue by losing a big (if stupid) client.

  4. Brian says:

    @JDT – I appreciate the unfortunate position you're in but I think your clients are the one you should be complaining to…they're the ones on the wrong side of history.

  5. Domenic Denicola says:

    I just wanted to drop by to say thanks so much for open sourcing Rx! Many of our client projects are using them, and our clients don't let us use things without a permissive open-source license. Apache is perfect in that regard. It's been great being able to use Rx this year, whereas previously we were unable to because of its closed-source nature.

  6. Damian says:

    > Surely you've heard the phrase "the customer is always right"?

    Yes, and no, they are not always right.

    You better prepare yourself, a *whole* lot more of .NET ecosystem is going open source. Your company's best bet is to revert to coding in assembly on computers in a clean room with no network access or windows. And you personally need to stop using the internet, reading coding books, readin examples in documentation etc; you know, just in case read a line of code and put your clients at risk.

  7. Brian says:

    > Surely you've heard the phrase "the customer is always right"?

    The customer is also paying you to be the 'experts' at delivering solutions.  If they are asking you to do something dumb, it is your job to explain to them why it is dumb and offer smart alternatives so that your customer can make an informed decision.  If they still decide to move forward with the dumb decision, then you shouldn't have any problem explaining to them the costs and risks of more frameworks/runtimes being open sourced and the associated costs of ripping out the frameworks.

    You should be serving your customer and if you aren't educating them in regards to their idiotic ban on open source, then you are doing a disservice to them.

    I have worked for companies in the past that banned open source because there were little to no control regarding who could contribute code and people were contributing code that was not their own and was someone else's IP.  The story was that the company that had their code stolen sued everyone that used that open source project.  An outright ban on open source software is a knee-jerk reaction to this situation.

  8. Tridus says:

    The customer is not always right. The customer is paying you to do it because you know more than they do, and you do them a disservice when you don't give them your expertise.

    Open sourcing Rx had no negative impact on your project whatsoever, and removing it just because of an ignorant customer instead of educating that customer is foolish. If they REALLY want to pay extra to remove it, well, that's business for you.

    Microsoft is not going to stop open sourcing stuff because of a couple of oddballs like that customer.

  9. mkt says:

    Clients don't need "yes men/women".

    They need educated, intelligent, trusted people that can help advise them and guide them toward success.  If you aren't doing that you should be fired.

    The idea that you would have to pull code out of your system because it was open-sourced is hilarious.

  10. Joe says:

    Microsoft has used BSD licensed code in Windows since NT 3.5:

    http://www.kuro5hin.org/…/7357

    You're better off just writing your own OS to protect against this sort of transgression.

  11. Brennan says:

    @JDT A good consultant should always be educating their clients. I wrote up a blog post which you may find helpful.

    http://sstools.co/1ddWlCj

    I strongly suggest reading Mike Monteiro's book, Design is a Job. It applies well to anyone working for clients. I think your company should define their standards and clients have to accept those standards or go elsewhere. This is how Monteiro has grown his reputation and successful business.

    http://www.abookapart.com/…/design-is-a-job

  12. Glenn Block says:

    @JDT which version of RX are your clients using?

  13. Vince says:

    "the customer is always right", even though clearly they are wrong.

    Wow, I didn't think this attitude towards open source existed anymore…

  14. Brian Benz says:

    Hi JTD,

    Nothing really changed from a deployment point of view, Microsoft still provides signed binaries that you can deploy via nuGet via http://www.nuget.org/…/Rx-Main, so the fact that the source code is open source should not be a problem per se. On the other hand having the code open source is helping us to improve the libraries with the help of all the great developers that are using Rx today.

    I hope this can address the concerns you have about Rx being open source. Happy to continue the discussion.

  15. Andre says:

    It's time that we developers stand up for what we believe is right and educate our employers / clients / whatever regarding getting the best tool to do the job. It annoys me when tech is made political, especially by those who do not understand technology at all. I had the same issues with my former employer (in the financial industry), with such a backward view of open source. Opening some framework or library's source does not make it any riskier than any other closed-source library, nor does it mean that a home-grown framework or library is more secure and bug-free than open source software. I'd rather use something that's proven and tested by many, than one that's NIH just because people wish to avoid open source. I would understand issues with GPL and commercial software, but there's nothing wrong with what Microsoft did here and in fact their license terms are one of the most open in the industry.

  16. Mika76 says:

    If it's a contractual thing, why not just amend the contract. Include at least Microsoft "approved" or "led" open source projects in the contract. Contracts are there to protect both parties, and can be changed depending on communication. I suppose it's just up to you guys to "sell" the idea to conservative customers.

  17. Gbrancolini says:

    It's simple, if you don't like, do not use it. If you want really open source, please look for Apache software or other. Microsoft is a private company and with a BIG EFFORT has created a lot of product that at my ends, pays the bills for me and my family. If I do not like any product of Microsoft, I recommend to use another or even I combine different technologies to get what my clients are looking for.

    Asking a third person or company to give to the humanity what he/she has made with a lot of investment (money and/or time) is out of your mind.

    I'm sorry if I'm not agree, but is not very fair to ask this kind of things. We all pays our bills, there are a very few people who works on this as a hobby (we follow schedules releases, a lot of stress to be on track and coordinate our teams,…etc).

    PLEASE, if you don't like this, use another!!! YOU ARE FREE TO DO IT!, then DO IT!

  18. Robert Thau says:

    It may be worth it for JDT to explicitly inform the client that if they're using Windows, they are using open source software.  Several BSD-licensed components are acknowledged in the license paperwork for any version of Windows.  I drafted a note like that the one time a financial institution tried for a "no open source" clause, and we never heard another word about it.

  19. JDT, note that Rx versions 2.0.* and prior were closed source, so if that is the version of Rx that you are using, there is no need to remove it from your client's code. Changes to Rx since 2.0 were mainly new features rather than bug fixes (though you should check every bug fix and make sure you aren't affected), so you might be able to stay with Rx 2.0.

    As others have noted, many Microsoft libraries are being open-sourced these days (e.g., ASP.NET, Azure SDK), so your client may already be using Microsoft OSS, or have had other consultants use it.

  20. Kudos to the RX team for open sourcing all of the RX libs and for supporting multiple stacks!!!

    As to the question there's just a ton of FUD still out there about open source libraries that Microsoft is publishing. Saying companies should just get with the program doesn't make that go away. From what I have seen a lot of the fear is based on lack of education. Companies are afraid of liability and lack of support. The liability fears come from using code that has been contributed. Support because they want to know if they find issues that Microsoft won't leave them out in the cold.

    Reality is if you are using OSS libraries that Microsoft it shipping, these are both addressed.

    For the IP concern, Microsoft does a full legal scrub on any IP that is contributed. Any libraries that it uses it also does an evaluation on to see if there is any substantial risk.

    As to support, one any 3rd party code is accepted,  Microsoft agrees to support it just as if Microsoft engineers wrote it.

    The same even for 3rd party libraries, if Microsoft takes a dependency on a 3rd party library (ie jQuery, JSON.NET,  etc) and you use the version of the library that Microsoft ships in the official release (nuget, etc), then it is supported.

    The caveat to this is if you upgrade. For example if you use the JSON.NET version that ships with Web API you are covered, if you go then an update to a newer version of JSON.NET which did not ship with Web API and you find bugs, etc then unless those can be reproduced in the shipped version, they will not get supported.

    I recorded a podcast a while ago on this specific topic: http://www.buzzfrog.se/…/dev-cast-30-microsoft-and-open-source

  21. Yair says:

    @JDT This would never happen on Linux!

  22. shaggygi says:

    Hi Rx team,

    Great work on Rx.  I use it a good bit, but could use even more if it was improved as a Portable Class Library with iOS and Android.  Are there plans to make this possible?

    Thanks again

  23. abhair says:

    Good hair extensions improve your sex life and <a href="http://www.abhair.com/clip-in-hair-extensions">Clip On Extensions</a> are the best!!! Hair extensions give you confidence to experiment. When I asked my BF if I should cut my hair and he was horrified. That proves my point and I love my abhair!

  24. NextGen says:

    You're best off just writing your own OS to protect against this sort of transgression.

    http://www.nextgenappstore.us

Skip to main content