As I spent time last week updating my Callisto library for Windows 8.1 I realized it was a long time between the last release. Well, I’ve finally updated it for Windows 8.1 release which is now available. This is a major, yet minor release…allow me to explain.
Windows 8 Support
As of the Callisto 1.4.0 release, Windows 8 support ends. Support in the non-commercial Open Source world is a bit of a funny term as the support has always been provided by myself and Morten. I wrestled for a few days trying to keep a source code base, NuGet packages and Extension SDKs in sync with minimal impact. After that exercise I realized this was just not going to be worth it. Windows 8.1 developer platform has way more to offer and I just want to move forward. I’ve locked the Windows 8 release at 1.3.1 (last one) and kept archives of the NuGet/Extension SDK bits on my GitHub project. The latest code and packages are for Windows 8.1 only. If you are working on a Windows 8 app and see a notification of a NuGet/SDK update, you should NOT update to 1.4.0. The tools should block you here, but in case it doesn’t you will be broken in some cases. I realize this may be an inconvenience to some, but I just couldn’t justify the extra support time for me in this regard.
Windows 8.1 version – first release
So what’s new in the Windows 8.1 version of Callisto? Well, to be honest, not much. This primarily is a release to get it on the platform, produce supported bits for Windows 8.1 and .NET Framework 4.5.1 for apps moving forward. There actually are no new controls in this release but it does bring some minor updates.
Morten was able to check-in our first iteration of Designer support for the controls. You’ll see all custom properties represented in property panes, have a better drag-and-drop experience, and be able to re-template using Edit Template. I’ll have a principle moving forward that new controls should have this as the minimum bar for designer support. Unni has been a tremendous help in motivating Callisto to do this as well as rapid-response help in working through some kinks. The designer support is only provided in the Extension SDK installation as designer metadata and toolbox usage is not supported in NuGet.
As a new feature in Windows 8.1, XAML now compiles to XAML Binary Format (XBF). XBF brings performance gains to startup of your application. As a result of this I’ve prioritized your apps’ performance over developer convenience in some areas. What this means is that the SDKs ship the XBF version of the toolkit’s generic.xaml. This gets packaged in your application and helps app startup performance. For NuGet, what this means is that you don’t get “Edit Template” support in Visual Studio. If you are using the NuGet package and want to re-template one of the controls, you’d need to grab the template from source and copy it into your project. This may be an inconvenience but few people re-template Callisto controls and the performance benefits of XBF are prioritized here. There may be a time in Visual Studio’s release where they will support generating the XBF from the NuGet package, but that is not currently supported. For the Extension SDK version, I ship the design-time generic.xaml for the control so this is not a problem…and you still get the XBF benefits when your package is built.
In addition to this designer goodness and basic platform support, the 1.4.0 release deprecates a few controls.
Yes, as a part of Windows 8.1, new controls were provided in the base XAML platform and Callisto versions aren’t necessary. The list of deprecated Callisto controls include:
- Flyout – now provided in Windows.UI.Xaml.Controls.Flyout
- Menu – now provided in Windows.UI.Xaml.Controls.MenuFlyout
- SettingsFlyout – now provided in Windows.UI.Xaml.Controls.SettingsFlyout
- DynamicTextBlock – now provided by the TextTrimming=”CharacterEllipsis” in Windows 8.1
- WatermarkTextBox – now provided by the PlaceholderText property provided in Windows 8.1 on input controls
It is a sad day when some of your most-used and proud controls aren’t used anymore, but this is a good thing for developers. The XAML team worked hard to address the feedback and close the gap in these areas. As a part of this, some of the planned work around Date/Time pickers was stopped as those are also now provided in Windows 8.1 (and global calendars supported!). The bugs that exist in the deprecated controls won’t be addressed.
How do I migrate from the Callisto deprecated controls?
Great question! In a follow-up series of blog posts I’ll show how to migrate off of these Callisto controls to the included ones for Windows 8.1. Please subscribe to this blog or follow me on Twitter for notification of when I send out the migration articles. Here are the migration guides for the deprecated controls:
Please help me and others by posting comments if you find more migration gotchas that people should know about!
What is Callisto’s future then Tim?
It is bright. I love development and I love helping people. In my view there are still some compelling needs that I see app developers having that are higher level than what the platform provides. I’ll be still driving forward with Pivot and DataGrid (under testing right now) as well as looking at some other interesting helpers to existing controls by way of some clever attached properties. If you have suggestions, please log a suggestion on the GitHub site for consideration!
I have a lot of fun doing community/Open Source development and will continue to do so. I hope this post helps understand the Callisto roadmap!