.NET Tools How-To's

Why Your Ticket May End Up in a Different Tracker

All JetBrains IDEs rely on the IntelliJ Platform to provide the basic features of a proper IDE. In addition, JetBrains’ .NET IDEs rely on both the IntelliJ and the ReSharper Platforms. In this blog post, we’ll take a look at how Rider depends on IntelliJ and ReSharper. 

The IntelliJ and ReSharper Platforms

When you’re using Rider, you’re not just using Rider. You’re harnessing the power of the IntelliJ and ReSharper platforms. This product base contains the essentials needed for software development in general as well as .NET development.

When several products are created from the same single codebase (platform) like this, it’s called a software product line or product family. A product line consists of a common codebase with features that are specific or customized for each product in the line. This common codebase isn’t simply shared components between products. It’s an entire product that can function independently, plus extensions and features that are tailored to make each individual product in the family. At JetBrains, our (not so) secret formula for our product line is:

Platform + plugins = super awesome IDEs for a variety of languages.

Rider uses the IntelliJ Platform for standard IDE features such as VCS (GitHub, Mercurial, SVN, etc…), basic file manipulation, interacting with compilers, debugging, unit test harnesses, and features you expect to see in nearly any IDE. But Rider also relies on ReSharper to provide .NET specific features such as C#, F#, and VB.NET editing.

The following graphic illustrates the use of the shared codebase of the platform across the IDEs, as well as where Rider fits in by taking advantage of both platforms.

A look at the IntelliJ Platform and how the IDEs all belong to a product family.
The IntelliJ and ReSharper product lines

Note: This graphic shows only IDEs, not the .NET developer tools (dotPeek, dotTrace, dotMemory, dotCover). However, the .NET tools also are part of the product family.

Because the IntelliJ Platform is open source, anyone can create plugins or even entire IDEs. Designing product families using the “platform + plugins” strategy makes programming with these platforms feel similar to building software with Lego bricks. Start with the platform as your base and add on the modules. We’ve even created templates so plugin and IDE authors have ready access to the platform so they can focus on building the (Lego-style) modules.

The JetBrains IDE family and tracking issues

JetBrains uses our own issue tracker, YouTrack, to log defects and feature requests. We have issue trackers that target each product in the product family as well as for the major areas of IntelliJ and ReSharper platforms, for example, the runtime, GUI, the SDK, etc… This categorization means that we can track issues more efficiently. It also means that we sometimes need to move or re-categorize issues to keep things running smoothly.

We move and/or duplicate issues because it’s important to aggregate everything into a central issue to analyze the feedback as we try to keep all our IDEs consistent. Although your issue may have been moved, the QA and Support teams generally continue to monitor the issue. This way we can ensure the platform and products are covered, and your issue won’t get lost or be forgotten.

Here are a few examples demonstrating tickets that have been moved so that we can properly track defects across the product family: 

Blazor – Incorrectly reporting unused using statements. This ticket focuses on a bug where Rider incorrectly labeled using statements as not in use. However, the code that handles using statements is part of the ReSharper Platform code and isn’t specific to Rider. The customer filed the ticket in Rider’s tracker, but it’s no problem for our QA and Support folks to move it to the ReSharper tracker so it can be centrally managed and tracked for all ReSharper-based IDEs. 

Rider 2021.3 EAP 4 consistently crashes when trying to search across files. The customer noticed this problem when the writing F# code in Rider. However, this particular problem is actually with the Java runtime, not Rider, so a different team is responsible for correcting this. Because both users of Rider and IntelliJ noticed this issue, there were multiple issues logged across each tracker. It’s nice to check for duplicate issues and add your experiences to them before logging a new bug, but don’t worry too much about logging duplicate issues. Our QA and Support teams consolidate the issues into the correct issue repository and mark them as duplicate for proper management. 

Notes on filing bug reports and feature requests

Some users have mentioned that they’re unsure where to report bugs and feature requests. No problem! The answer is to report them in the tracker that corresponds to the product you’re using at the time, and we’ll make sure they are tracked correctly. What helps us more is providing enough information and context to reproduce and fix the issue. Check out our blog post titled File bug and feature reports effectively and easily to ensure you have all the information so we can fix the issue for you as fast as possible.

Conclusion

JetBrains provides several IDEs for a wide range of programming languages, and all IDEs share the same core codebase – the IntelliJ Platform. Therefore, some defects and features need to be moved to the appropriate teams for the best possible outcome. By managing our set of products as a product family, we’re able to accomplish this.

Discover more