ReactiveUI Design Guidelines

rx rxui akavache ghfw 7 comments suggest edit

GitHub for Windows (often abbreviated to GHfW) is a client WPF application written in C#. I think it’s beautiful.

This is a credit to our designers. I’m pretty sure if I had to design it, it would look like


To keep our code maintainable and testable, we employ the Model-View-ViewModel pattern (MVVM). To keep our app responsive, we use Reactive Extensions (Rx) to help us make sense of all the asynchronous code.

ReactiveUI (RxUI) combines the MVVM pattern with Reactive Extensions to provide a powerful framework for building client and mobile applications. The creator of RxUI, Paul Betts, suffers through the work to test it on a huge array of platforms so you don’t have to. Seriously, despite all his other vices, this cross-platform support alone makes this guy deserve sainthood. And I don’t just say that because I work with him.

It can be tough to wrap your head around Reactive Extensions, and by extension ReactiveUI, when you start out. As with any new technology, there are some pitfalls you fall into as you learn. Over time, we’ve learned some hard lessons by failing over and over again as we build GHfW. All those failures are interspersed with an occasional nugget of success where we learn a better approach.

Much of this knowledge is tribal in nature. We tell stories to each other to remind each other of what to do and what not to do. However, that’s fragile and doesn’t help anyone else.

So we’re making a more concerted attempt to record that tribal knowledge so others can benefit from what we learn and we can benefit from what others learned. To that end, we’ve made our ReactiveUI Design Guidelines public.

It’s a bit sparse, but we hope to build on it over time as we learn and improve. If you use ReactiveUI, I hope you find it useful as well.

Also, if you use Akavache, we have an even sparser design guideline. Our next step is to add a WPF specific guideline soon.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



7 responses

  1. Avatar for Kevin Kuebler
    Kevin Kuebler August 5th, 2014

    This is an awesome idea, thanks! I look forward to seeing what other guidelines you guys have to share and really like the idea of the WPF specific guidelines. I work on a large, complex WPF app now. The code is ... well, let's just call it "legacy". I'm planning on introducing the team to MVVM and Rx, and hope to introduce ReactiveUI into the app soon. This kind of thing will be helpful not only as a reference for me as someone who has built apps with the MVVM pattern and frameworks like Caliburn.Micro and RxUI, but especially to those who are brand new to some of these concepts.

  2. Avatar for Rafael
    Rafael August 6th, 2014

    Credit to your designers too, it looks nice. Now, about you, don't steal my designs

  3. Avatar for sk8tz
    sk8tz August 6th, 2014

    Is this an open source app

  4. Avatar for tic
    tic September 29th, 2014

    It is a nice looking application, it's just a shame that it has so many errors and problems. It's nearly impossible to use it alone without resorting to googling errors and switching to command prompt.

  5. Avatar for Halofreak1990
    Halofreak1990 October 24th, 2014

    The only issue I have with the GitHub for Windows client is when conflicts arise, or when I've rebased stuff. Luckily for those cases, there's the command-line.

  6. Avatar for tic
    tic December 5th, 2014

    The GUI should be a replacement for the command line, but I find that there is no point using the GUI if you constantly have to revert to the command line. Good UI design, but little to no UX unfortunately.

  7. Avatar for Daniel Krikun
    Daniel Krikun September 28th, 2015

    Great looking, beautiful application!
    Few points:
    1. Would be real nice to learn from its sources
    2. GitX is still more usable, sorry to say that. It's less surprising.