This Blog


Favorite Posts


  • DevExpress Universal v16.1: Breaking Changes

    It must be a truism by now, almost certainly proclaimed by Arthur C Clarke, that Any sufficiently advanced software has breaking changes in a major release. Ours, regrettably perhaps, is no exception. 

    In this post, I’d like to emphasize the protocols we have for breaking changes and releases. I am embarrassed to say that we have, to put it mildly, not been very diligent at following them of late, for which I apologize on behalf of DevExpress. Rest assured that over the past few months we have been putting into place some stronger policies with our dev teams about how we expose breaking changes, how we try to avoid them, and how we publicize them.

    Fixing software...In essence: breaking changes will be limited to major versions only, as much as we are able. That’s point one. We are essentially saying: here’s a new release with some great new features but in order to provide them we had to refactor the infrastructure (our data classes are a strong example of what I mean), change the API, or modify the behavior somewhere. Changes due to some API being modified or retired or refactored will trigger “deprecated” warnings in your code for at least one major release, preferably two. So, as an example, if the FooBar control’s ShowMe property is being deprecated for a new Show() method in v16.1, then the property should be marked as obsolete in v16.1 and v16.2 (and still work as before) and will disappear in v17.1. We recognize that some customers do not automatically upgrade to a major version straightaway (probably due to breaking changes, sigh), but need some time to evaluate and test whether the upgrade is worth applying or not. I personally do not recommend skipping more than one major version. (In brief: Turn on warnings! Test, test, and test again!)

    As part of this effort, we are revamping how we report breaking changes. Prior to this, I’m afraid we could be a little too terse with the descriptions in our breaking changes list. This was bad in a couple of ways: first, it sometimes wasn’t at all obvious how to fix your code, and second, it increased the workload on our support team as the inevitable questions came in. So, from now on, you should see more complete details in our entries for the breaking changes page.

    I’ll expand on this by stating that we should formally publicize the changes somehow, rather than just sweeping them under the metaphorical carpet in a page that is hard to find. This could either be by email (although I would guess that the majority of recipients would not read it or even complain about spam) or as a blog post like this. Personally speaking, I would rather a blog post: it’s stays up and can be found in the future, it can be updated to expose more details if needed, it’s more conversational.

    Point two is that we recognize that bug fixes we provide in minor releases may also break code. A bug fix is, in and of itself, a breaking change, albeit a revision to repair unwanted behavior. However, we shall do our utmost in those situations to (a) minimize the impact and breadth of these required changes, and (b) to publicize them to our customers. Our overall aim is to make updating to the next minor release as uneventful as possible; after all, the biggest reason to update is to fix bugs that you may (or may not yet) have encountered.

    Point three is that undocumented classes, interfaces, methods, and properties are fair game. Please try not to use undocumented identifiers in your code. Assume they will change at a moment’s notice. If the support team supply a workaround that uses undocumented identifiers, we shall be putting a strong warning in the post that the workaround may break when the official fix is provided.

    Without further ado, here is the full list of breaking changes for Universal v16.1. You will see some that are API changes and that will possibly break your code, and some that are behavioral in nature (for example, the iOS theme in ASP.NET has changed) and should please your users. Note that this list is still being updated as far as details go – although we’ve released the beta, the release is still a week or so away – but you should not see any new changes being reported.

    I and my fellow members of the management team are interested in hearing your views on breaking changes. If you have feedback or comments, please comment here (we shall all see it) or email me at julianb@devexpress.com and I will circulate the responses among the team. As always, thank you for choosing DevExpress.

  • DevExpress Universal v16.1: Webinar schedule

    Given the recent blogging on these community pages, you may naturally have already come to the conclusion that Universal v16.1 is getting close to release. You are not far wrong: the finishing touches are being applied, the latest tests are being run, the final documentation is being written. The code is ready to beta if you are a Universal customer. Time then for some webinars to show you what’s new, how it looks, and how it works.

    If you visit our webinars page (it’s easy to remember: devexpress.com/webinars), you’ll see that we have set up four:

    6-Jun-2016, 10am Pacific. v16.1: What’s New for Windows Developers. Join Paul Usher and me to learn about the new products and features shipping inside our updated WinForms and WPF Subscriptions.

    7-Jun-2016, 10am Pacific. v16.1: What’s New for ASP.NET Developers. Join Mehul Harry and Don Wibier and learn about the new products and features shipping inside our updated ASP.NET Subscription.

    8-Jun-2016, 10am Pacific. v16.1: What's New for Reporting and Dashboards. Paul and I again, demonstrating all the new features DevExpress will introduce across the Reporting and Dashboard platforms.

    9-Jun-2016, 10am Pacific. v16.1: What's New for HTML5 and Mobile. Mehul and Don review the newest products and features shipping inside DevExtreme v16.1.

    There’s plenty of time to register, but remember it’s first come, first served. Spaces are limited so my advice is to register early to make sure of your seat. See you online in June!

  • DevExpress VCL Subscription supports RAD Studio 10.1 Berlin

    We recently released v15.2.5 of the DevExpress VCL Subscription to our subscribers. There were a couple of hidden new features in there, and I wonder how many people spotted them before reading this official announcement.

    The first new feature was support for RAD Studio 10.1 Berlin, which was released a day or so ago. So if you have already installed RAD Studio Berlin (or are about to), you can immediately download v15.2.5, install it, and be productive in moments.

    The second new feature is a new control, the Tile Bar Control. We were so pleased with the way this control turned out that we decided to publish it as part of a minor version so you could use it immediately in your applications, rather than having you wait for v16.1. So, what is a Tile Bar Control? Basically, the Tile Bar implements a tile-based menu. It consists of equal-sized tiles arranged in a single row.

    DevExpress VCL Tile Bar Control

    Furthermore any tile can have a dropdown associated with it. In this case, the tile displays a dropdown button on the side. In the image above the Products and Customers have this dropdown. Here’s the result of clicking the button:

    DevExpress VCL Tile Bar Control: dropdown

    As can be deduced from looking at the images, the Tile Bar control is fully touch-capable.

    To show how to use this new Tile Bar, we’ve added a new demo application: the Touch-enabled Hybrid sample application.

    Please download v15.2.5, install into RAD Studio 10.1 Berlin, and take a look at this new control. Let us know what you think.

  • DevExpress Scheduler controls: big changes are coming in v15.2

    One of the more popular controls we have in our platforms suites is the scheduler control. Not every app needs a scheduler, but when you’re having to worry about scheduling resources and appointments, it’s invaluable.

    Although everyone is pretty happy with the scheduler user interface, for a while now we’ve been getting feedback related to performance. Consequently over the past few months we’ve put in a lot of effort into speeding up the scheduler, especially with regard to rendering the layout and data (in this version) and laying down some infrastructural improvements ready for speeding up data retrieval (in a future version). Fairly early on with this exercise we determined that some of our data structures were not optimal and so had to redesign and refactor them.

    First the good news: we have managed to achieve a significant performance improvement by adjusting the way the layout is calculated. For day-view-based views (that is, Day View, Work Week View, and Full Week View) scrolling the views and switching between them is a snap because response times have been significantly decreased. Appointments now scroll smoothly. We’ve tested with as many as 5000 appointments in a view and performance is smooth and fluid. To minimize the occasional “freezing” that can affect the scheduler in your app, calculations are now executed in multiple threads. This advanced asynchronous mode can be switched off if desired; however, even in synchronous mode the layout calculations are faster than before.

    Unfortunately – and here comes the bad news – these changes to the scheduler’s performance envelope have had to be percolated up into the public Scheduler API. And that in turn means some breaking changes, although we have tried to minimize the number and extent of these.

    The biggest change is that several classes have been abstracted out as interfaces, and we’ve introduced several others as well. For example. the most frequently used classes, such as Appointment, Resource, AppointmentDependency are now interfaces; and we’ve added the ISchedulerStorage, IAppointmentStorage, IResourceStorage, IAppointmentLabel, IAppointmentStatus interfaces. This dual approach enables us to leave any legacy code intact (pretty much) while implementing new cross-platform features. For example, different AppointmentLabel and AppointmentStatus classes (which expose IAppointmentLabel and IAppointmentStatus interfaces) exist for each platform. However, the AppointmentViewInfo.Status property now returns an IAppointmentStatus object because the AppointmentViewInfo class instances are used for all platforms and in Scheduler Reports.

    Having laid the foundations for why we have breaking changes in v15.2, I do have to mention that overall the logic used in the Scheduler API has not changed, nor have most of the method and property names and their signatures. It is all very similar, such that the number and nature of the changes you will have to make in upgrading your app are small and easily made:

    • Appointment: no longer has a constructor since it’s now an interface. To construct an Appointment object use SchedulerStorage.CreateAppointment() instead .
    • Resource: no longer has a constructor since it’s now an interface. To create a Resource object, use the SchedulerStorage.CreateResource method. The static property Empty has been removed, and you should use ResourceEmpty.Resource or ResourceEmpty.Id instead, depending on the context.
    • AppointmentDependency: no longer has a constructor since it’s now an interface. You now use the SchedulerStorage.CreateAppointmentDependency method to create an appointment dependency object.
    • The AppointmentViewInfo.Status property now returns an object that implements the IAppointmentStatus interface instead of an instance of the AppointmentStatusBase class.
    • The Appointment.RecurrenceInfo property now returns an object that implements the IRecurrenceInfo interface.
    • Several properties and methods has been marked as obsolete and will be removed in a future major version. You should be aware that this is going to happen at some point and make plans to rewrite your code to avoid them. You can defer these changes until after the v15.2 major release though.
    • Until v15.2 the Appointment.StatusId and Appointment.LabelId properties were declared to be Int32s, since they were in essence an index value into the label and status collections. From the developer point of view, this choice made it really difficult to bind such labels and statuses to fields in an external database. From v15.2 onwards, the new AppointmentStatus and AppointmentLabel objects have their own Id object property which is no longer related to an index of a collection. These objects are returned by the Appointment.StatusKey and Appointment.LabelKey properties (and, obviously, can now be represented as rows in a table in a database). This should help developers who had to devise various workarounds to deal with the original problem.

    Now for the new features!

    1. A new feature is a Brush property for the status that enables the developer to define the brush used to visualize and display the appointment status. In fact the label color and status brush properties are platform-specific in order to utilize native brushes and colors for each platform.

    2. We have implemented a new default appointment form used by your users to create an edit appointment details. This has been designed to mimic the Microsoft Outlook appointment dialog.

    The new scheduler appointment form

    3. The Scheduler control now can indicate the current time by drawing a line in the view. In the Day, Work-Week, and Full Week views the horizontal line can go across the entire view, or it can be restricted to the current date.

    The new time indicator for the current time

    In the Timeline view however, the time indicator is a vertical line drawn down the view.

    The new time indicator for the current time

  • WinRT Live Tile Manager: it’s being deprecated

    Two years or so ago, we introduced a component that enabled you to start up and communicate with live tiles in Windows 8 from a WinForms application. So, you know, a non-Windows-RT application talking to a tile on the Start Screen. It was the WinRTLiveTileManager control.

    Let’s put it like this. It’s never been that popular. We can tell how well-used one of our controls is by just looking at tickets in the support center. The more people that use a given control, the more tickets we get about how to use it (our documentation needs improving, in other words), the more tickets we get about issues (our code needs fixing, in other words), and the more tickets we get about new features (our imagination needs a jolt, in other words ;) ). Much as we or any other control vendor would like to pretend, we don’t get things right first time. So in general “popular, widely-used control” means more support tickets. The Live Tile Manager has virtually none; the terms “popular” and “widely-used” don’t really apply.

    The issue for us is that Windows 8 has been replaced by Windows 10 and the Start Screen has gone away (and if I may make a personal comment here: Yessssss!). The desktop rules again and the weird dichotomy between desktop and Start Screen has gone. Ditto, the need for such a control has also pretty much gone. Corresponding to all this evolution in OS capabilities and UI, the “Live Tiles API”, if I may call it that, has drastically changed.

    The upshot of all this is that we have a little-used component, the need for it has pretty much disappeared, and the API has changed. Hence the decision is to not update it for Windows 10 at all and to deprecate it in v15.2. Although it will still be shipped with the install (at least to begin with), it will no longer be installed by default in the toolbox in Visual Studio. It will, in fact, only work with Windows 8:

    WinRTLiveTileManager Is For Windows 8 Only

    Of course, as with any announcements we make about features in our products, feedback is most welcome. Let us know what you think.

  • Developing for the Universal Windows Platform? We’ve got you covered.

    I’m proud to announce that today we officially released our suite of controls for the Universal Windows Platform (UWP). For those who are ready to develop native Windows 10 apps, or even prepare for developing apps for the future UWP form factors and devices, we now have a full suite of controls that will help you fulfill your goals.

    Examples of apps created with the DevExpress UWP suite

    Much as Windows 10 is a multi-faceted progression from the ideas first seen in Windows 8, we decided to leverage the work we had put into our Windows 8 controls in order to produce this new UWP suite. Over the past few months, pretty much every control was reevaluated for the new run-time, ported, optimized, and tested in production. Apart from the grid control and data editors (of course, we couldn’t say we properly support this new platform without having our famous grid present and correct!), we’re providing data visualization controls such as charts, gauges, a photo gallery, and a map control; app navigation controls such as the tile bar, tiles, and radial menu, together with page layout control; a ribbon; a PDF viewer; and much more. Windows 10 apps that allow for data entry and visualization, together with dashboard-type facilities should now be a breeze to create.

    For full details of the suite go to devexpress.com/Win10Apps.

    During the design process for the new suite, we naturally came to the point where we had to make a decision about the Win8 XAML control suite from which this new product was evolved. From everything we’ve seen and heard during the launch of Windows 10, it became readily apparent that Windows 8 as a target platform was going to rapidly become irrelevant. Windows 10 is a simple (and free!) upgrade to Windows 8, especially for retail customers – all of the laptops I personally look after are all now on Windows 10 – that it just made sense to discontinue the Windows 8 XAML product in our future major releases. Consequently, it will not be part of v15.2 when we release in December, whereas the Windows 10 Apps control suite will be. If you are still having to maintain a Windows 8 XAML app, the suite will still remain as part of v15.1, but no new features will be added. Our efforts in this space are going to be directed to the new form factors for UWP, as well as providing new features and controls for it.

    As usual, we’d love to hear your feedback about the new suite.

  • DevExpress VCL Subscription v15.1.5 released, with full support for Delphi 10 Seattle

    Just a quick note to say that we released v15.1.5 of the DevExpress VCL Subscription today. The main new feature of this release is adding full support for Delphi 10 Seattle (DX) and C++Builder 10 Seattle (CX), collectively known as RAD Studio 10 Seattle (RX). So download it today from your Download Portal if you are using DX, CX, or RX (and especially if you were using the “unofficial” support for them that had crept into v15.1.4).

    There are a couple of new enhancements as well.

    • The biggest one (and the one that delayed us a little in our full support for DX, CX and RX because of the extra testing we had to do) is we’ve added the capability to print the ExpressRichEdit Control.
    • The grid’s main improvement has been speeding up its export capabilities, especially when the layout information is not required.
    • There have been numerous other resolved issues as is usual when we release a minor version. See here for the full list.

    So, download, install, and enjoy!

  • Skinning WinForms: the Good, the Bad, and the Ugly

    This may come as a shock to you – it certainly did to me – but it seems we provide over 50 skins to choose from for your WinForms projects. Well, I knew there were quite a few – you should see the number of pizzas we have to ship in to the graphic designer team when we do a new major release so they can update them all – but frankly this has got a little out of hand.

    Consider this: we’ve been shipping skins now for some ten years, and over that time the general way we as computer/tablet/phone users view UI has changed dramatically. Like it or not, a modern flat style is de rigueur these days. All you need to do is look at Windows 10 and Office 2016, both very recently released, for what I mean. The problem is that pretty much all of the unique look-and-feel styles we ship at the moment (like, say, Halloween or Valentine) are very old-fashioned just from that particular perspective: they are decidedly not flat. And that’s what we hear from our customers about our skins: end-users want the same flat style they see in their smartphones and their tablets in the desktop apps they use every day. Yes, it’s a giggle to change to Halloween, say, but using that day in, day out, is not conducive to an efficient working environment.

    WinForms Skins are a-changing

    For us, we have a two–pronged issue when we publish a major release: first, we have to update the skins for the new release; and second, if we release a new control, we have to “skin” it for all of the skins we provide. This, frankly, is hard work for not much benefit, since I would guess the majority of our customers don’t actually use these older skins. Indeed I’d be willing to bet that a lot of customers “brand” a standard skin with their corporate colors and the other skins just aren’t exposed or used in any way.

    Apart from “flatness”, there is another huge issue with UI that is starting to really make itself felt. I am currently writing this on my new Dell XPS 13 with the Infinity display running at 3200×1800. I love the sharpness of the resolution, but with my old eyes I cannot run it at a standard DPI. With Windows 10 making it a lot easier to set text sizes and DPI settings, I can configure a great visual experience across the board, except with older programs. They’re … well … not so good visually, shall we say. Our older skins fall into the same category. We’re doing a lot to improve our WinForms controls to work much better visually on these high-DPI screens, but we are being held back because of the skins.

    So, what’s the plan?

    First off, we want to find out how you, our customers, are using the WinForms skins we provide. To that end, we have drawn up a survey and encourage you to go fill it out. The more info and detail we get, the better all round.

    Second, based on our current thinking, we’re going to reorganize our skin collection for v15.2.

    1. System/Application Skins. This will include the skins based on Microsoft Office and Windows, together with Mac OS: Office White, Office Dark Gray, Office Light Gray, McSkin. If Microsoft changes the Office theme in the future, for example, the relevant skins will be changed appropriately.
    2. High-contrast skin. For accessibility purposes.
    3. Holiday and seasonal custom skins. Spring, Summer, Xmas will be redesigned.  We’re planning on adding a Fall skin.
    4. A set of differently-colored skins, based on the same look and feel styles as above. These are going to replace all of the older skins: Blue, Black, Silver, Pink, Green, Coffee/Caramel.

    The other skins will be removed and no longer supported. Note that depending on the answers we get from the survey, this reorganization may be more (or less) drastic than I’ve outlined here.

    Third, if we see a cool new app with a cool new UI and we feel there’s going to be a high demand for replicating it, we may introduce a new skin. But in general we will just update the reduced number of skins in our collection to match changes in the general market. Our goal is to maintain and keep up to date the above selected skins only.

    Of course, this is highly dependent on your feedback. So, I wholeheartedly encourage you to fill out the survey form – that’s going to be the best way for us to collate and analyze the responses and understand how you use our skins. You can also leave your opinions about this change as comments here, if you wish.

  • DevExpress Universal support for Visual Studio 2015 released

    VisualStudio logo

    I’m sure that you can’t but helped to have noticed that Microsoft released the latest version of Visual Studio this morning. After completing its fairly lengthy beta, Visual Studio 2015 is now ready for download. There are three versions: Community (which is free for use, but with some licensing and other restrictions), Pro, and Enterprise. There’s lots of new functionality in there, especially dealing with mobile development and the like with UWP (Universal Windows Platform), and of course all of the familiar support for Windows Forms, ASP.NET, and WPF is still there.

    Now, I’m sure in being a DevExpress customer, you are at the forefront of technology and raring to go but there’s just one warning niggle at the back of your mind: can I install DevExpress Universal in it? The answer is of course yes, providing that you have downloaded the very latest versions. We released two new versions of DevExpress Universal this morning coinciding with Microsoft’s Visual Studio 2015 launch: v14.2.9 for those customers who are still using the v14.2 series, and v15.1.5 for those who have already upgraded to the v15.1 series. Both of these new versions (or later) will install into Visual Studio 2015 just fine.

    For those who are looking for our UWP controls, please be patient just a little while longer. Windows 10 for the desktop is due for launch on Wednesday, July 29 and Microsoft’s sudden withdrawal of the ability to install the betas on new machines has left us a bit in the lurch. Nevertheless, Paul Usher and I will be presenting a webinar this Thursday, 23 July on the new UWP controls, so do take a moment to register to reserve your place.

  • Silverlight and DevExpress Universal v15.1

    You may have noticed something peculiar once you’d installed v15.1: no Silverlight controls came as a part of the product and hence were no longer present on your machine. Wait, what?

    Back in December 2014, at the time of the v14.2 release, I announced that we were no longer going to update and enhance the Silverlight controls (Silverlight’s future at DevExpress). I’ll quote the relevant summary:

    …we made the decision to put our Silverlight controls into maintenance mode as well – in fact, we have already forked the code. We will not be providing any new functionality for our Silverlight controls but will provide maintenance updates to fix any issues as and when necessary. We have already stopped selling DevExpress Silverlight as a separate product (either as a new subscription or as a maintenance subscription) and it is now only available as part of DXperience or Universal.

    However, we then made a pretty big faux pas: we removed the controls completely from our products in v15.1, despite our promise to keep it available with DXperience and Universal subscriptions, and despite the fact that we made no announcement of such an action being contemplated, let alone made. The decision was made internally, but the fact that it was a breaking change and an action that required an announcement escaped everyone.

    Without further ado, I apologize to our Silverlight customers on behalf of DevExpress for this uncharacteristic oversight. We deeply regret this failure in communication.

    So what’s going to happen at DevExpress with regard to Silverlight now?

    1. If you have one or more Silverlight apps using our controls that you are maintaining, you will have to remain on v14.2. Possibly this might mean a separate development machine or VM. We do not plan to add the Silverlight suite back to v15.1.
    2. We shall continue to provide support and minor updates to our Silverlight controls until next June, when we release v16.1. In fact, let me be a little more precise: we will continue to update DevExpress Silverlight v14.2 with minor releases as and when needed, up to and including 30 June 2016. In essence, if you are an active customer, you will receive support and any updates we publish until that date.
    3. After that, that’s it. No more Silverlight. Now, should Microsoft subsequently make some breaking change to Silverlight (which, admittedly, is very unlikely – they’ve just done very minor updates for the last three plus years and the API can be considered as frozen), we shall revisit this policy, perhaps by making a hotfix available to repair whatever issue was brought up by Microsoft’s change. I will not, however, guarantee this.

    My recommendation, then? You should strongly consider moving or porting your Silverlight projects to another platform well before the next twelve months are up.

    By the way, I shall be making some efforts to ensure that such a situation does not occur again; that you, our customers, are informed well in advance of major changes like this that will affect your development and projects. Your loyalty and satisfaction are of great importance to us.

2 3 4 5 6 7 8 9 10

Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at info@devexpress.com or call us at +1 (818) 844-3383


DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2016 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners