CodeRush 2022 Roadmap – Complete the Survey to Help Shape Our Development Strategy

News
10 February 2022

Table of Contents

Strategic Goals for DevExpress IDE Productivity Tools Going Forward

Goal #1: Saving DevExpress Customer Time Will Be Our Highest Priority

We want to accelerate frequently-performed DevExpress component tasks across a number of UI platforms and also reduce maintenance costs by automatically guiding developers toward best-practice usage scenarios with the DevExpress API. 

This is our #1 goal and where the CodeRush team will allocate most of its resources in 2022. For more information, see "DevExpress Customer Needs Validation" and complete the survey below so we can allocate resources to better meet your needs.

Goal #2: CodeRush Will Be the Fastest Productivity Tool for Visual Studio

Performance is an important, non-negotiable requirement for IDE productivity. Tools like CodeRush should never get in your way and should never make you wait. And so we will continue the work originally documented in Pursuit of Optimum Performance, made possible with our internal telemetry and also due to generous support from the Visual Studio team. 

Optimal performance can only be achieved with a relentless attack on the problem. With each release we improve and we learn more and we will simply never stop our efforts to make each release of CodeRush even faster than the one before.

Experienced CodeRush developers may sometimes notice our work here in the form of changing the default settings for a feature from enabled to disabled. This could happen when a feature appears to contribute to a performance or stability issues based on customer usage metrics. We did this a few sprints ago when we disabled Rich Comments and Image Embedding by default. We're still shipping and supporting the features (we're using them internally as well). A feature disabled-by-default feature just needs to be explicitly enabled if you want to use it.

We will also continue to allow customers to opt-in to our anonymous performance data analytics collection, which we use to determine how to best allocate our resources so we can have the broadest customer impact.

Finally, we also rely on your feedback and welcome reports with reproducible steps and/or actionable diagnostic information in the DevExpress Support Center. 
BACK TO THE TOP SURVEY 

Goal #3: Support the Latest C# and .NET Versions for the Highest Usage CodeRush Features

We will continue to support the latest C# language, .NET 6 and Visual Studio 2022 capabilities for our most-frequently-used CodeRush features. One example you may see when working with .NET 6 and C# 9 (suggested by several CodeRush customers): the ability to convert a class to the new record struct or record class types and back.

One of the challenges in building an extension for any IDE is what to do when the host environment introduces a new feature similar to one you've been shipping for years. You may have noticed the latest release of Visual Studio 2022 ships a number of features very similar to those in CodeRush. When this happens, these features lose some of their value, both to our customers, and to the team. Our response when this happens is to shift resources away from further development on the now redundant feature, unless we can justify continued investment.

There's also another opportunity we're seeing here, and that is in the form of cohesive feature access. As the responsibility for maintaining a feature set shifts from DevExpress to Microsoft (due to Microsoft releasing features similar to those in CodeRush), we can make accessing these features universally easy across the shift. For example, we may give you a CodeRush shortcut to declare local variables, and that key would use the CodeRush Declare Local feature in situations where it was arguably better (or simply available when Visual Studio's declare local wasn't), but that same key could also provide access to the Visual Studio feature when it was arguably better (or available when ours wasn't). This is one example. For examples of more feature consolidation possibilities, see Caps as a Modifier. Cohesive feature access offers developers a smoother transition and makes future CodeRush feature adoptions much less disruptive and less painful.

But our primary focus will be on the most-used and most unique features of CodeRush that are more effective at addressing developer needs than those shipping in Visual Studio. As you know, our team is not comprised of infinite resources and so we must be wise about where to apply direct our momentum. If Visual Studio matches or leapfrogs a CodeRush feature, we'll let it go (e.g., disabled by default and in bug fix/maintenance mode only). If a CodeRush feature is just a bit better than a brand new Visual Studio feature, then we may also let that feature go. If a CodeRush feature mostly duplicates a standard Visual Studio feature but costs us in performance overhead, support and/or maintenance, we will consider disabling it (for instance, the former CodeRush Decompiller).

And moving forward, there are areas where we will not even try to compete with Visual Studio. For instance, we are unlikely to move into the space of AI-assisted development in 2022. We think the work Microsoft has pioneered in this space is a great start and we expect to see continued improvements in this area from the Visual Studio team. We are also considering limiting future investment in Visual Basic tooling and shifting more resources to focus on C#, primarily because implementing every CodeRush feature for VB.NET takes up about 25% of the CodeRush team's resources.

Following this strategy, the DevExpress code snippet helpers, error diagnostics and interactive training tutorials (we're teasing below), as well as new features introduced later this year are all expected to be implemented in C# exclusively, unless equivalent VB.NET support can be achieved at essentially no cost. Now with that said, our intention is to continue to support current VB.NET customers relying on existing CodeRush features.

Of course, our team wants to hear about your needs for other language support, like TypeScript, JavaScript and related IDE and CI/CD tooling. Let us know what we can do for you moving forward. 
BACK TO THE TOP | SURVEY

DevExpress Customer Needs Validation

As mentioned above, our intention is to help DevExpress customers more quickly and easily achieve success with our components in Visual Studio. And we also want to save our customers time building with our controls. To further explore these possibilities, we present seven hypotheses (with some supported by design prototypes) that we would like to get your feedback on. Please let us know what resonates with you the most in the survey or comments section below. Disclaimer: these are just ideas; not a roadmap yet.

Customer Need #1: Find Solutions to Common DevExpress API Tasks Faster

Problem Hypothesis

A large percentage of our support hits come from DevExpress customers with questions about common tasks (such as sorting, grouping, assigning a data source to a grid, etc.). What do you currently do when you have a question about a DevExpress control? Some of you search Google or DevExpress docs/Support Center, others head straight to a demo they bookmarked in the web browser or desktop, and a few search the DevExpress source and demo code. And many developers go after the challenge inside Visual Studio, using Intellisense, tooltips, and "trial-and-error". And if that all doesn't work they can always submit a new question to support. Regardless of path, when you have a question on the best approach to working with a DevExpress control, the research usually requires multiple attempts before you have the information you need to start solving the problem.

Solution Idea - Code Snippet Helper

With the Code Snippet Helper, DevExpress customers can get the following benefits:

  • Quickly search and insert code snippets containing examples for the top 50-100 tasks related to DevExpress products, all from the comfort of Visual Studio. Snippet popularity will be determined by metrics pulled from API popularity in docs, our Support Center, code examples, demos, and as well as contributions from experts.
  • Filter out irrelevant code snippets based on context (solution/project/file/class, etc.), adapt snippets to blend with your existing code (for instance, reference existing control names).
  • Allow you to create and share your own custom code snippets in specific categories.

For more information, check out this video and or test it live (using the instructions in point #2 below).
BACK TO THE TOP SURVEY

Customer Need #2: Create DevExpress Criteria Operators Quickly with Little Knowledge

Problem Hypothesis

As you may know, the CriteriaOperator API (and its associated Criteria Language) is a common feature that appears in a number of DevExpress controls and frameworks. The criteria language is similar to C# or VB.NET, SQL, but it's distinctive enough that it takes some time to master. And taking time to learn the Criteria Language can get in the way of a smooth first-time experience with our grid controls, reporting, dashboards, XAF, XPO, and many other DevExpress products.

Solution Idea - Visual Criteria Editor

The Visual Criteria Editor can be invoked directly from the Visual Studio to help you express your ideas with the DevExpress Criteria Language.

With the Criteria Editor in Visual Studio, DevExpress developers gain the following benefits:

  • Select a data filter context from your solution (currently, XPO classes are available for filtering)
  • Build criteria expressions of any complexity (with related collection and reference properties), select criteria operators and functions visually. 
  • Generate compatible C# code in the Criteria Language dialect of your choice (text-based, regular strongly-typed, and advanced LINQ-based) and insert it right into Visual Studio.

For more information, check out this video and/or test it live below. 


BACK TO THE TOP | SURVEY

To try out the criteria editor and code snippet helper live, follow these steps:

  1. Download this experimental CodeRush v21.2 preview (VSIX) for Visual Studio 2019 or Visual Studio 2022. Close Visual Studio, and install this VSIX extension.
  2. In Visual Studio, under the menu Extensions | CodeRush | Options, focus the node Quick Setup and enable the option DevExpress Code Helper & Criteria Editor (experimental), and click OK in the dialog.
  3. In the Code Editor, press Control + ~ OR Control + . (dot) to invoke these helpers as shown in the videos above. Read the preview note below for more details.

     
NOTE: This experimental option is disabled by default, because it contains early and incomplete design prototypes that may contain known bugs or be missing functionality. We are showing these design prototypes just to better explain and validate customer needs for this survey. Eventually, we intend to shape development plans based on customer feedback. Please disable this experimental option or avoid using these design prototypes for production development.

Customer Need #3: Best Practice Diagnostics & Fixes 

Problem Hypothesis

Currently, many DevExpress products come with best practices and/or troubleshooting guides: WinForms,  WPF, ASP.NET, Reporting, XAF, XPO, etc. These guides are typically lengthy documents, that are the most helpful when accompanied by a search for error messages or callstack content. Even if you searched and found the right guide, it's going to take time to understand the content and figure out a fix.

But guides can't find coding mistakes or less-than-best-practice implementations that have no immediate effect at compile time or runtime. But this is technical debt, and it (and the costs associated with it, such as brittle code, hard-to-read code, performance hits, or memory leaks) can accumulate over time.

Solution Idea - Best Practice Diagnostics

In theory, any code that resides in C#, XAML, CSPROJ, CONFIG, JSON, RAZOR, HTML, JavaScript, etc., can be validated. This opens up interesting possibilities for advanced heuristics and best practice pattern matching (as well as anti-pattern detection), focused on DevExpress and third-party APIs.

With Best Practice Diagnostics, DevExpress customers gain the following benefits:

  • Check their solutions for typical DevExpress usage errors across a number of platforms, powered by Roslyn Analyzers and/or the built-in CodeRush Code Issues engine.
  • View a detailed error report locally, or integrate our diagnostics into your CI system. Issues found will include a link to the online documentation with the correct usage guidelines, allowing you to correct the code manually.
  • Issues found will also offer auto-fixes or specific code suggestions based on context where possible. 

For illustration, here's a sample of DevExpress XAF/XPO-specific code and project diagnostics:

xaf code analysis

Here's a screenshot from our WPF design prototype: 

 BACK TO THE TOP | SURVEY

Customer Need #4: Customize DevExpress ASP.NET Core and Blazor Components Visually

Problem Hypothesis

We see that certain WinForms and ASP.NET WebForms customers love the power of the design-time property grid to quickly configure DevExpress controls. We also see customers who migrate from these technologies to ASP.NET Core (for instance, to MVC, Razor Pages or Blazor), BUT there is not yet a property grid for controls in Razor markup. And the built-in Razor markup editor doesn't stop you from specifying incorrect values, and it is not always clear what values should be there.

Solution Idea - Razor Property Grid

With the Razor Property Grid, DevExpress customers gain the following benefits:

  • Set DevExpress component properties visually and much faster than it takes to manually edit Razor markup.
  • Learn more about different property modes and value possibilities using rich hints that appear in the property grid.
  • Reduce manual typing mistakes that would otherwise occur in the Razor editor, because the property grid validates settings.

For an example, here's a rough mockup of a dialog that can be shown if you place a cursor on Blazor DxGrid in a *.RAZOR file or `Html.DevExtreme().DataGrid()` in a *.CSHTML file.


BACK TO THE TOP | SURVEY

Customer Need #5: Get Rich Help on DevExpress API Directly in Code Editor

Problem Hypothesis

As only a few probably know, you can already place the cursor on a DevExpress API in the Visual Studio Code Editor and hit F1 to view relevant help topics directly within your web browser (learn more). Currently, this feature has very low discoverability - you must know about this feature and its shortcut.

The built-in Visual Studio hint with plain-text information for an API type or member when you hover with mouse is more noticeable, but it still has limits on the quality of information it can present to developers inside Visual Studio.

Solution Idea - Documentation Preview Helper

  • At minimum, we can make this hidden F1 gem more discoverable for DevExpress API with some visual clues or icons. Many help topics include code examples that you can copy - a potential time saver.
  • At maximum, we can display a rich text documentation based on the DevExpress online documentation. With all the information you need, you could learn about proper API usage and even copy code snippets from the help topic without ever leaving Visual Studio.

Here's an illustration of the idea from https://www.kite.com/copilot/:


BACK TO THE TOP | SURVEY

Customer Need #6: Learn DevExpress Faster without Leaving Visual Studio

Problem Hypothesis

Video and text-based tutorials are great, but they require developers to leave the working IDE environment often during the learning process - you jump between the web browser (to check instructions) and your IDE (to replicate the code you just learned and/or copied). Also, tutorials often include steps that have nothing to do with writing code like "add an assembly reference X", "install a NuGet package Y" or "invoke the wizard Y", which can sometimes be missed unless the instruction is emphasized or accompanied by a screenshot.

Solution Idea - Interactive Training Tutorials

CodeRush can provide an experience that is very similar to what you can see in online JavaScript learning platforms. CodeRush lessons are a combination of source code, comments, interactive training steps, images, and buttons that can open other source files, copy text to the clipboard, and/or bring up Visual Studio tooling.

With Interactive Training, developers gain the following benefits:

  • No more switching between your IDE and a browser. Developers stay and learn in Visual Studio. Learn one focused step at a time. Instead of scrolling down through a lesson in a web browser, CodeRush lessons tend to be broken into small pieces that easily fit into a screen.
  • Focus only on what you need to learn. Arrows show you where to look and what to change. More quickly realize what's important. Once you complete a step, click the button to move on to the next step.
  • Avoid mistakes and stay on track, because CodeRush can immediately provide feedback or generate the rest of the boilerplate code from the lesson for you. Bring up relevant Visual Studio tooling (like the NuGet Package Manager or a Console Window) instantly just by clicking a button in the code or help you paste the correct code when you are stuck.

For more information, please check out these screenshots that illustrate how the XPO getting started tutorial (or any other product tutorial) CAN be reimagined with CodeRush interactive lessons:

BACK TO THE TOP SURVEY

BACK TO THE TOP SURVEY

BACK TO THE TOP SURVEY


BACK TO THE TOP | SURVEY

Customer Need #7: Load Only the Parts of CodeRush You Need

Problem Hypothesis

Every developer who sees the CodeRush Test Runner loves it. It is arguably the fastest test runner in the world, and it can run tests that other test runners can't. And it supports a wide range of test frameworks. So if running tests is your thing, you definitely want the CodeRush test runner. But what if running tests is the only thing you do? What is you want only the test runner, but no other feature of CodeRush?

Well, it's not easy to manually disable the rest of CodeRush (it requires multiple interactions in the Options dialog), and even if you did, you would still might incur memory and/or performance hits as those disabled engines load into Visual Studio.

Our Solution Idea - Prebuilt Setting Schemas

These schemas will allow CodeRush users to enable or disable groups of related features all at once, as well as import or export option schemas for exchange with the team or community. With Prebuilt Setting Schemas, DevExpress customers can get the following benefits:

  • Speed getting started with CodeRush and increase overall adoption with lightweight setting schemas like "Top 20 Features as Rated by the Community". Select the schema that matches your style and needs, like "Test Runner-only", "CodeRush Expert", "Refactoring Pro", "Issues Manager".
  • Access the DevExpress Code Snippet Helper and Visual Criteria Editor even if you are using third-party IDE productivity tools. For instance, developers can enable the schema "DevExpress Helpers & Diagnostics Only" and avoid potential conflicts with other IDE tooling or have it work in Visual Studio without loading the rest of CodeRush.
  • Faster startup times. Use less memory.

If we move in this direction, we intend to keep our existing Options Layers mechanism and build on the knowledge gained from the old CodeRush Classic product where this functionality was available.
BACK TO THE TOP  SURVEY

opStart

ChangeSettingsScheme

NOTE: The information contained within this blog post is being shared for INFORMATIONAL PURPOSES ONLY and does NOT represent a binding commitment on the part of Developer Express Inc. The ideas and design prototypes listed within it are subject to change and cancellation, should we experience technical feasibility risks OR receive insufficient customer need confirmation through the survey below and other channels. You should NOT rely on or use this information to help make a purchase decision about Developer Express Inc products.

Complete the Survey to Help Shape Our Development Strategy!

Thanks,
Dennis
Principal Product Manager
BACK TO THE TOP

Free DevExpress Products – Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We’ll be happy to follow-up.
Akin GUNES
Akin GUNES
Great enhancements. Congratulations!
11 February 2022
MatthewHughes_
MatthewHughes_
Very smart direction to go.
15 February 2022
Michail
Michail

Since I missed the survey, I'll write my opinion right here.

I would appreciate to see a good implementation of JavaScript/TypeScript/HTML/CSS/SCSS/SASS formatters / linters / etc. or a bridge to use existing formatters / linters used in Visual Studio Code, like JSHint, Prettier, JS-Beautify, unifiedjs, etc. 

They are far better than the language services in Visual Studio itself. And there are no good extensions for Visual Studio out there... :-/ This is really annoying and crazy, because for VS Code and its extensions you pay nothing and for Visual Studio and its extensions you pay a lot and they are only half baked... :-D

And a better formatting experience for WebForm-pages, regarding the ASPX-side not the VB- or C#-code-behind file. ;-)

14 May 2022

Please login or register to post comments.