Strategic Goals for DevExpress IDE Productivity Tools Going Forward
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 Survey" (below) and complete the survey so we can allocate resources to better meet your needs.
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.
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.
DevExpress Customer Needs Validation Survey
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).
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.
To try out the criteria editor and code snippet helper live, follow these steps:
- Download this experimental CodeRush v21.2 preview (VSIX) for Visual Studio 2019 or Visual Studio 2022. Close Visual Studio, and install this VSIX extension.
- 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.
- 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.
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:
Here's a screenshot from our WPF design prototype:
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.
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/:
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:
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.
Complete the Survey to Help Shape Our Development Strategy!
Thanks,
Dennis
Principal Product Manager
dennis@devexpress.com