Microsoft

The future of Microsoft MAUI (and Xamarin Forms)

Oliver Brown
— This upcoming video may not be available to view yet.
Xamarin
Xamarin

Since Google seems to like my post about the future of Xamarin Forms so much (and I have a slight history of such posts), I’d figure I’d post an update about interesting things happening in the Xamarin Forms repo specifically related to MAUI.

Renaming

The change that actually made me write this post - a large PR with 5000+ changed files that changes the Xamarin Forms name to MAUI.

Not much of a thing for actual functionality, but a significant symbolic milestone.

Handlers and the great big architecture shift

.NET MAUI will completely change the way renderers are handled in Xamarin Forms. There are many advantages of doing it the new way, but the mechanics of how it is done are fairly complex. This video by Javier Suárez covers it well.

Interacting with this video is done so under the Terms of Service of YouTube
View this video directly on YouTube

This is all happening right now in the main-handler branch.

Update

While I was writing this, work officially moved to the dotnet/maui repo and it is accepting pull requests directly.

AppHost and Microsoft.Extensions

Originally an ASP.NET concept, that then migrated its way to Windows client development, this provides a common way to provide dependency injection, logging, and lots of other infrastructure stuff. In isolation, the pattern and implementation is good and will make it easier to override certain things in MAUI (such as handlers). It’s also useful in a wider sense since it will make configuring different styles of .NET apps more similar.

Single project

Over the past couple of years there has been a move towards producing Xamarin libraries (and .NET libraries in general) using a single multi-targeted project. The most significant is probably Xamarin Essentials. This PR adds support for creating applications following the same pattern.

Merging in Xamarin Essentials

There is a lot of functionality in Xamarin Essentials that Xamarin Forms would like to use. Likewise there is some functionality in Forms that is useful when not using Forms. This lead to some overlap in functionality (and occasionally overlap in APIs but not a perfect match in functionality).

There was an attempt to add Essentials as a dependency of Forms but it faced some problems, and there was a “change of plans”.

Now the solution is to have Forms and Essentials in the same repo. I hope Essentials remains available as its own Nuget package (and it looks like that will be the case).

Resizetizer.NT

Resizertizer.NT, like its predecessor Resizetizer, is a package for generating platform specific images in all the right sizes at build time.

Managing image assets across iOS and Android (and using Visual Studio) has always been an unpleasant process. This tool makes it much easier and will be included in MAUI by default.

The future of Xamarin Forms

Oliver Brown
— This upcoming video may not be available to view yet.

Microsoft have just announced the future of Xamarin and Xamarin forms - the .NET Multi-platform App UI (or MAUI for short). As a name, it’s not great. The highlights are as follows:

  • It’s an evolution of Xamarin Forms. It basically is Xamarin Forms, but finally accepting some breaking changes. To be honest, I’m hoping for a lot since there is a lot of weirdness in Xamarin Forms that has been holding it back.
  • Single project, multi-targeted. It took a long time to get to the point where this was possible. From shared projects, to PCL projects, through .NET Standard. This should make things a lot easier.
  • Still based on platform renderers using native controls. This is a mixed bag. Using native controls has long been a selling point of Xamarin (with or without Forms). With the rise of Flutter this has been shown to be less important. Many people have been asking for consistent platform agnostic renderers instead.
  • The end of “Xamarin” as a name. Some time in the .NET 6 timeline (end of 2021) Xamarin.iOS will become .NET for iOS and Xamarin.Android will be .NET for Android. I have mixed feeling about this since this was a fairly succinct way to describe by top skillset.

I also already have my own enhancement issue submitted.

Windows Vista

Oliver Brown
— This upcoming video may not be available to view yet.

Well for various reasons I now have Windows Vista. I installed it myself and to be honest everything went smoothly. That’s not to say everything went perfectly, but nothing unsurmountable happened.

The first problem was the fact that I bought the upgrade version. I’d previously bought Windows XP Media Center Edition 2005 but I was doing a clean install. Previous version of Windows just asked for you to pop the disk of the previous version in this situation - Vista didn’t. It would only let me install from Windows. So I had to install Media Centre first.

Then once I had installed Vista it didn’t have drivers for my network card or my sound card (and no network card meant no internet and therefore no video drivers and therefore horrible resolution (at the wrong aspect ratio no less). Well luckily I have another computer with internect access so I got the network drivers (and then the video and sound drivers).

Beyond that, I haven’t done much with it yet. The Aero glass lucks cool and stuff and the new games it comes with are at least as entertaining as the old ones were when I first saw them.

PS. User Account Control really is as annoying as they say it is for at least two reasons: Firstly it seems to ask you everything twice. Second since I have administrator access anyway it doesn’t really provide any security (it happens so often that you just click accept straight away without reading it).

Internet Explorer 7 Beta 2 review

Oliver Brown
— This upcoming video may not be available to view yet.

Well since I tend to use Firefox here at work I figured I could install IE7 without too much risk. And I must say it’s actually quite good.

Initial impressions

The most obvious feature is thye really minimalist chrome. The back and forward buttons are a little smaller and now to the left of the address bar; refresh and stop are to the right and then underneath that are tabs. By default there is no application menu (File, Edit, View etc). which strikes me as odd. But to the right of the tabs are other buttons to do common things that you’d normally use the menu for. Speaking of opening new tabs, there is a special thin blank tab to the right of the others that you click to open a new one.

Conditional tags

IE has a special feature called conditional tags that let you specif markup just for IE that other browsers ignore. This doesn’t seem to work in IE7. Unfortuantely this means a 1px rendering error is present on my blog. The irony being I’m assuming it’s been taken out because they think they don’t need it anymore…

Zooming

The zoom feature is snazzy and most of all, actually works. It scales everything properly and still renders text as vectors. Even better is that the tab preview (thumbnails of all the tabs) just use zoomed out versions of the page. This means the thumbnails are completely live. Well almost. It seems you get snapshots of plugins (although they work fine when viewing a normal zoomed page, not the overview thingy).

It also works with the dev bar add on I installed.

Tabbed browsing

New to IE and probably the most requested feature (beyond standards compliance :P). And it works. There are some subtle differences between it and Firefox which will take a little geting used to. For example IE puts the cross to close a tab on the tab itself instead of on the right. And newly opened tab appears immediately to the right of the currently opened one instead of at the end of the list.

Acid2

The acid test was invented to test a web browsers CSS standards compliance. Acid2 is it’s sequel. Well IE7 fails the Acid2 test miserably. I mean it’s truly awful. In Firefox and Opera you can at lest tell what you’re supposed to be looking at.