Wipe out code review roadblocks with Upsource

Do you practice code review in your team? Considering it? Tried it before but quit for some reason? One way or another, you know what code review is. The jury is still out on how much exactly code review increases code quality and whether it can help catch enough subtle issues that static code analysis and unit tests won’t detect. All too often it is perceived as an obsolete practice full of bureaucracy that only slows down the development lifecycle. Still, many people, including us at JetBrains, seem to agree that code review helps spread knowledge, enrich team collaboration and communication, and build up collective code ownership. Finding issues and potential problems comes as a pleasant bonus.

We’ve looked at some roadblocks that developers encounter while making code reviews work. We’ve also imagined what might stop us from doing code reviews at JetBrains. Putting two and two together, we figured out that this problem, like many others, can be solved by using an appropriate tool. So we created this kind of tool—for ourselves and for those who’re not happy with the current state of code reviews. We’ve wiped out the roadblocks, and by using Upsource so can you.


Roadblock #1: Code reviews bring a lot of bureaucracy.
The Upsource solution: Who said you need to tighten the screws?

Code reviews date to the times when some of us weren’t even born yet. Back then developers would gather in a conference room and discuss someone’s code projected on a screen. Later, they used email threads. Now the market is full of software tools that let you perform code reviews. But while technology has evolved, one thing seems to persist in many outfits and teams: bureaucracy, with its dull, hard-to-follow procedures, which often nip in the bud any kind of collaboration.

It doesn’t have to be like that. Code review workflow can be as easy and relaxed as you make it. Upsource, for example, doesn’t impose any strict workflow, leaving your team a large room of choices for your code review policy.

  • You can leave a comment on a line of code that looks weird to you, or a symbol, or even any selection (saves time to explain what exactly you mean). The code author(s) are automatically notified of your comment. No strings attached. No cumbersome code review created.
  • Comment-on-selection

  • If you comment on a whole revision, the author will see your comment.
  • If you want to get more formal, create a review, either from one or multiple revisions. Upsource will help you assign reviewers by taking into account the file history and the history of past reviews.
  • If your team uses feature branches, you can even create a branch review that will track future revisions until the branch is merged.

In short, Upsource is flexible. If you don’t need or want bureaucracy, no one will force it on you. If you do, well, more power to your elbow!

Roadblock #2: Code reviews slow my work down, I have to wait for feedback.
The Upsource solution: Everything happens in real time!

As soon as there is any activity that concerns you—like a code review assigned to you, a comment on a change you’ve made, a mention of you, and so forth—you see it instantly in your News Feed, much like in a social network. You can also choose to receive nicely formatted email notifications, or even be alerted right in your IDE.

News Feed

Then, get back to what you were doing while Upsource tracks which revisions have already been seen and approved. When any new revisions are added to the code review, a reviewer will only see the diff of those revisions, without having to inspect previous changes once again.

Roadblock #3: Complex changes are difficult to understand outside of their context, so reviewers typically provide only general feedback.
The Upsource solution: Here’s all the context you need, and more!

Since code doesn’t mean much outside of its context, Upsource helps you discover it. Similar to how you do it in your IDE, you can search for symbol usages, navigate to a declaration, or view inheritance hierarchy. Upsource comes with unique Java code insight that you’re not likely to see anywhere else. Except, of course, IntelliJ IDEA.

Java code insight

Roadblock #4: Code review means another tool, and switching makes me lose focus.
The Upsource solution: Plug-in and play!

Most of us would rather not leave our IDE unless absolutely necessary. To help you stay in your comfort zone, Upsource 2.0 introduces a new code review plugin for IntelliJ IDEA and other JetBrains IDEs. Go ahead and discuss code without leaving your IDE!

Check out this video introducing the Upsource plugin for IntelliJ IDEA-based IDEs:

Having the roadblocks removed we are now able to practice efficient, transparent and intuitive code reviews, and have real-time straightforward discussions with our teammates about one thing we have in common – solving problems by writing better code.

To download and install your own Upsource instance, go to www.jetbrains.com/upsource/download/.
Note that it comes at no cost for small teams with 10 users or less.

Review code with pleasure!

This entry was posted in Guest Post and tagged , , . Bookmark the permalink.

14 Responses to Wipe out code review roadblocks with Upsource

  1. Sergii says:

    Question:
    Is Upsource supposed to be used only on IDEA based projects? (i.e. the ones that have *.iml files and the .idea directory checked into the version control)

    • Maria Khalusova says:

      You can use it for any kind of project, perform code reviews and browse repositories. Java code insight is available though only for IDEA, Maven, or Gradle- based projects.

  2. Sergei Ivanov says:

    I am curious if you are planning to roll out your web-based services (Upsource, YouTrack) in the cloud, possibly with GitHub/GitLab/BitBucket integration, ideally free for open-source public repos and with a one-off or a subscription-based fee for private repos. Essentially, adopting a model similar to what Travis CI and many other cloud based services are offering these days. Have you ever considered it?

    • Maria Khalusova says:

      YouTrack already has an InCLoud edition, as for Upsource, we don’t have fixed plans for the cloud edition yet.

  3. Anton Koscejev says:

    I’ve been to the JetBrains presentation in Prague a while ago and Upsource looked very promising. It has the features that I find really hard to do code review without, such as IDEA-grade static analysis and context information. Adding IntelliJ IDEA integration to it just sounds too awesome. However, the general idea behind it doesn’t seem to suit our workflow at all.

    Code review workflow can be as easy and relaxed as you make it.

    This is the main difference – we don’t want it to be relaxed, but rather strict. Our desired workflow includes a mandatory code review from at least one senior developer, not an optional one. And we always want a code review to happen before any code is allowed to be merged from a feature branch to the development branch.

    Is there any way to achieve this with Upsource? (Some kind of permission management on top of git that many other products, such as Stash, provide.) And if not, do you have any plans to do this?

    • Maria Khalusova says:

      At the moment, there’s no way to automatically create reviews based on a commit/branch and assign reviewers. So far it’s only light ad-hoc code reviews, however we have plans to implement features to support scenario described by you in the near future. Stay tuned! It shouldn’t take too long.

  4. Gabriel says:

    Unable to install on Windows 8.1 Pro (x64)
    The process hangs after login. All I can see is animated circle with text “Loading Upsource”…

    Any idea what to do?

  5. Chris says:

    Do you have any plans for C# support or to bring IDE-level integration to Visual Studio alongside Resharper? I looked at your roadmap but didn’t see anything planned in this direction.

    • Maria Khalusova says:

      Not just yet. There’s a request for that you can vote up – https://youtrack.jetbrains.com/issue/UP-4138
      There more people request it, the higher priority it will get.

      • evgeny says:

        Please confirm – are c# (ASP.NET) projects supported by Upsource? I understand that no integration with Visual Studio is available yet.

        • Maria Khalusova says:

          As a general-purpose repository browser and code review tool, Upsource can be useful to any developer team that uses Git, Mercurial, Subversion or Perforce, irrelevant of whether they write applications in C#, C++, Ruby, Python or any other language. The difference is that there’s no *code insight* for languages other than Java and JavaScript yet.

  6. Olav says:

    What do you need to use it? Do you need an external server, as with Jenkins/Hudson, or is it somehow checked in together with the code?

Leave a Reply

Your email address will not be published. Required fields are marked *