Upsource: A Platform

Hadi Hariri

Last week at JetBrains Day we talked a little bit about Upsource, a new platform we have been working on. In this post, we’d like to give you a bit of a deeper dive into it.

For the past year or more we have been working hard behind the scenes to modularize the IntelliJ platform. As it stands now, IntelliJ IDEA provides a very extensible and rich platform. In fact, all of our different IDEs, as well as Google’s Android Studio are built on the IntelliJ platform and most of the functionality each flavor provides is nothing more than a series of plugins.

However, we needed to take this one step further, and make it available in a headless way, opening the door to a lot of potential, one of which is Upsource, a server-based platform in itself.

image

 

All your code, every single commit, at your fingertips

Upsource is, among other things, a code browser. At any time we can click on a specific commit and browse the code

Browse Code

which gives us a tree view of our Project

Tree View

From there we can navigate to any file. Source code files provide us not only with syntax highlighting but also advanced navigation. We can click on any symbol to navigate to the declaration or find usages

Find Usages

and have Upsource offer us navigable results, thus making code navigation fast and efficient.

Result Find Usages

In addition it allows us to navigate to a specific symbol much like we can in a desktop IDE.

Symbol Lookup

 

Code Diffs

Apart from browsing through a commit, we can also use Upsource to view differences between commits. Clicking on a specific commit provides us with information about the changes

Code Review

which is also available in a side-by-side format

Side by Side Diff

It also helps when it comes to collaborative code review. We can simply select a piece of code and create a URL which we can then send to someone else

Copy Paste

 

highlighting exactly what we want to focus on

Highlight Code

Finally there is also an Annotation view which provides a left pane with information about the commits

Annotations

 

Beyond browsing: Code Analysis

All of these are good features for both individual browsing as well as collaborative code review. However, Upsource does not stop there. You may have noticed in one of the screenshots that on the right margin there was a little yellow square. Now if you’re used to our tools, either IntelliJ-based IDE’s or ReSharper, a little square in your gutter normally means you’re either good to go (Green), have some issues (Yellow) or you’ve got problems (Red).

Yes. You guessed it. That square is no less than IntelliJ IDEA Code Analysis engine, analyzing your source code and detecting the same issues you see in your IDE, in the browser.

Code Analysis

In terms of Navigation and Code Analysis, Upsource currently supports Java but there are plans on supporting other languages in the near future. Much of the groundwork to do this, which was separating the required parts from the IntelliJ platform has been done, so this opens up the door to supporting most of the languages we currently support.

Try it now

While we do not have a public EAP program yet, Upsource is available to try out as a hosted solution right now. You can navigate to upsource.jetbrains.com and browse through two projects on there: IntelliJ IDEA Community Edition and Kotlin. In addition, you can also navigate through a bunch of common JVM libraries, including the entire Android SDK.

Comments below can no longer be edited.

32 Responses to Upsource: A Platform

  1. Upsource: A Platform from JetBrains – Code Browsing and more | Rocketboom says:

    September 18, 2013

    […] Upsource: A Platform from JetBrains – Code Browsing and more Source: https://blog.jetbrains.com/blog/2013/09/18/upsource-a-platform/ 0    […]

  2. Arturs says:

    September 18, 2013

    Any idea when we can expect this to be launched and other languages (like PHP) to be added? Rough estimate is fine (next month, this year, beginning next year).

    • Hadi Hariri says:

      September 18, 2013

      Unfortunately we can’t give any estimate right now but I can tell you that web-based languages, such as JavaScript / HTML, etc. are on our priority list.

      • manole says:

        September 18, 2013

        Nice to hear that!

        JavaScript FTW!

  3. Hongya Cui says:

    September 18, 2013

    Is it designed for open-source software only?

    • Hadi Hariri says:

      September 18, 2013

      It points to a repository. This can be public or private.

  4. Marat B. says:

    September 18, 2013

    Kick GitHub to add this feature to him! It is great to see Idea engine in browser! Very cool!

  5. Carlo bertini says:

    September 18, 2013

    503 Service Unavailable

    No server is available to handle this request.

    • Hadi Hariri says:

      September 18, 2013

      It should be fine now. We had a minor glitch, accompanied by being on front page of Hacker News 🙂

  6. Vetle says:

    September 18, 2013

    What’s the relationship between Upsource, Fisheye, Stash and Bitbucket?

    • Vetle says:

      September 18, 2013

      Actually, nevermind. I’m confused.

  7. codescaling | Mozilla, Upsource, SVG.js and Bluetooth LE – Snippets says:

    September 18, 2013

    […] The world of collaborative coding platforms is getting more interesting with the news that JetBrains are developing Upsource. JetBrains are the creators of IntelliJ IDEA Java IDE, with its open source community edition along […]

  8. Semih Akalin says:

    September 18, 2013

    This is great. I can see them going for a revision control system next and build the complete eco system.

    • Hadi Hariri says:

      September 18, 2013

      We announced that we are working on a OSS version control system at JetBrains Day. Think Continuous Version Control.

  9. Tom Davis says:

    September 18, 2013

    As a platform, will this have public APIs we can use to integrate the IntelliJ platform into other environments? For instance, I currently use Emacs to write Java and get some functionality through a rather hacky Eclipse bridge that exposes some Eclipse functionality via the command line. Will Upsource provide HTTP APIs to functionality like completions, source generation, imports, etc?

    • Evgeny Pasynkov says:

      September 19, 2013

      We are not going to develop the “Code altering” features in the Web for the nearest future. Instead, we are focusing code reading and browsing, and here we have the full set of RPC API (HTTP is far not enough here, so we’ve moved to web sockets)

  10. lzap says:

    September 21, 2013

    Wow, I hope you will host open-source projects for free 😀

  11. Public bookmarks 10/10/2013 (a.m.) | Cong's Blog says:

    October 10, 2013

    […] Upsource: A Platform | JetBrains Company Blog […]

  12. Siva says:

    November 28, 2013

    Is Upsource open source? Are there any plans?

    • Hadi Hariri says:

      November 28, 2013

      It’s not OSS and there are no plans to make it OSS at this point.

  13. Early Access to JetBrains Upsource, a New Repository Browser and Code Review Tool | JetBrains Company Blog says:

    August 7, 2014

    […] been almost a year since we first announced that we were working on a new web-based platform for viewing and exploring source […]

  14. Moisei says:

    September 23, 2014

    Great tool, thank you very much.
    I have a prblem with indexing of new revisions: it just stucks on “Indexing in progress”.
    Who can help me on this?

    • Jura Gorohovsky says:

      March 31, 2015

      I recall the team has been in touch with you regarding indexing issues. Hope these are resolved by now.

      • Alexander Zdanevich says:

        August 10, 2015

        I’ve faced with “Indexing in progress” problem. Restarting Upsource didn’t help. I’m using version:
        bundle.build.number=0.4.734

  15. sadegh says:

    December 2, 2014

    How to enable Code Analysis for C# or other languages ?

    • Jura Gorohovsky says:

      March 31, 2015

      Code analysis is only available for Java at the moment. We’re hoping to eventually support more languages, meanwhile you can vote up the corresponding feature requests if you like to.

  16. Moayad Abu Jaber says:

    March 30, 2015

    This is good, and looking to prepare environment based on upsource! I have question regarding the user management there is any support for that through the upsource?

    if not, are you plan to added it for next versions?

    • Jura Gorohovsky says:

      March 31, 2015

      User, group and permission management is available in Upsource through a bundled component called Hub, which serves exactly this purpose. Hub is also used in YouTrack. It’s also going to eventually be used in TeamCity and as a separate product. This would help manage permissions across multiple installations of JetBrains team tools if necessary. To learn more about Hub, see Setting up users, groups, roles and permissions

  17. Ents says:

    June 11, 2015

    Hi!
    How to speed up indexing of new revisions?

    Now it takes about 15 minutes to index a new revision. And server does not have any load during indexing. It seems exists a timeout between adding a new revision and starting indexing

    Thanks!

    • Ents says:

      June 11, 2015

      Вот строка из лога:

      [2015-06-11 11:12:09,667] INFO S_CONTENTS_CLUSTER-2 whotrades eImpl$Drive
      rWrapperWithLogging – Finished: ‘vcs-contents’ OLD DEP-{ revision: RevisionId{wh
      otrades, fa8edee327095dac8395015657d8bd0b68359af4} @ ~ 2015 may 2 16:34:31}-clus
      ter=VCS_CONTENTS_CLUSTER in 824s

      Как понять на что ушло указанные 824 секунды ?

  18. SRJ says:

    January 20, 2016

    We would switch from Fisheye/Crucible to Upsource in a second, except that JIRA will automatically show commits in each ticket for Fisheye/Crucible but not for Upsource.

    Do you have plans to allow integration? (I know you let Upsource pull from JIRA – but what’s really needed is for JIRA to pull from Upsource, like it can pull from nearly every other alternative – see https://answers.atlassian.com/questions/18811060/does-jira-have-integration-support-with-jetbrains-upsource-tool for example)

  19. Oded Goldberg says:

    April 25, 2016

    can i use other IDE and still enable Code Analysis for Java , ?

    I mean can i still enable Code Analysis if i am not using Intelji as my IDE?