
What if I want my existing WinForms code
to run on Linux?
Microsoft has shipped preview 3 of its forthcoming .NET 6 framework with a bunch of updates including the addition of Windows desktop to its Multi-platform App UI (MAUI). As the first long-term support version of the supposedly unified framework, .NET 6.0 is expected to be completed in November. Like .NET 5.0, it is no longer …
Additionally, Microsoft has made progress on its plans for "hybrid desktop apps" based on embedding Blazor web controls into desktop applications. In this preview, developers can add BlazorWebView controls into WPF and Windows Forms applications running on .NET 6.0. Support for .NET MAUI is planned for a future preview. Microsoft is hyping this approach as a way of modernising existing desktop applications en route to becoming web applications, or cross-platform desktop applications. Blazor allows HTML5 controls and CSS styling to be programmed using C# rather than JavaScript.
We ran up a hybrid WPF and BlazorWebView application using a sample from developer Jorge Arteiro. It worked, but for an application running on the desktop on .NET 6.0, does it make sense to embed chunks of C# running on a separate .NET runtime delivered via web technology?
You know what? I think I'm just gonna give this whole thing a massive miss. I simply don't want anything to do with it. I like the C# language very much, but I simply cannot, and (more seriously, I suppose) will not learn all these new presentation frameworks/systems just to place some fucking GUI objects in a window.
I'm going to leave all this shit to someone else. I dunno - I just feel like we really need to get back to basics on this stuff. Surely the correct way to do this is for MS to produce one system, and have platform specific middleware that knows how to draw those objects on its host operating system. You know... Like Java did... 25 FUCKING YEARS AGO.
What the fuck are you doing, Microsoft?
</rant>
It doesn't even need much platform-specific middleware - you could do it with something very much like RDP.
Neither AWT or Swing were particularly well-liked as they either failed to match the look-and-feel of the native platform or resulted in the (notionally) same UI being different on different platforms. Given the preponderance of wildly different web-based UIs and the fact that there's no real consistency between even different versions of Windows, that's probably no longer of any real concern.
The correct way is to stop being lazy and just produce native UIs on each platform. Any attempt at cross platform ends up as lowest common denominator, or the use of non native UI components. The problem is through the web we started to put up with substandard UI to the point where everyone thinks it is normal.
Well, when it comes to web development, increasingly developers are seeing just an enveloping quagmire of tools, frameworks, and paradigms that all compete for their attention.
I have done the ASP.NET MVC thing and decided that I would either remain with the WebForms environment or wait until Microsoft redevelops Blazor back to something similar to WebForms, which it looks like it is already doing.
Microsoft is going in so many directions now for the development community, no one any longer knows what they can rely on to develop with. And this is not the way to create a stable development
community...
To me this all smells a bit Silverlight. Here one minute, gone the next.
As everyone else has said - make a choice, make it clear, and stick with it. People are developing apps that may have a long lifespan in the corporate world where there is little appetite to constantly keep updating the UI framework if it works.
Back in 2007 you could write Java so the GUI matched the native desktop. Any arbitrary Linux desktop, Windows Aero Vista or XP toned down to look like win9x/Win2K. It just worked. The ONE program distributed.
Maybe a little slow for some things, but it was a 1.8 GHz Mobile P4 I was using.
Since the advent of WPF (never finished), Vista, the pointless vb.net (c# was far better, anyone going from VB 6 was better to use C# for .net than VB.net) and .net has been a mess. UWP or whatever it's called this week was a better idea for PDAs & Phones than WinCE, was. But just as putting Win9x interface on a 320 x 240 device was brain dead, so was EVER putting mobile interface on Desktop Windows.
There are some good ideas in WPF and .net originally. They should have been in a new separate OS.
You need a different GUI for phones, big tablets (Android still bad on that), TVs/Setboxes and notebook/laptop/desktop. Android and iOS are optimised for smaller screens, no real keyboard, no mouse and consumption. Android TV is designed for streaming, games and desktop screens, abysmal for Satellite & Terrestrial broadcast or normal living rooms.
Desktop GUIs (Risc OS, Solaris, Linux Desktop Managers, Win3.x, NT/Vista/XP, Mac OS, Beos, Gem) use a keyboard and mouse. The Xerox WIMP concept has never been bettered and MS peak implementation was Win9x, NT4.0 to XP & Server 2003.
MS has lost the plot. So has Google with Android, but for completely different reasons and issues.
No you could not, it might have ended up looking similar, but the behaviour is never quite matched correctly so you end up in the uncanny valley, whether that be with java or whatever "cross platform" GUI method you use.
The modern equivalent is all these mobile "apps" that are just web interfaces and so while they may look like they are native they just don't act right.
Yay! Yet another incompatible API layer that Microsoft will stop bothering with after six months, finally start completely ignoring after a couple of years but won't bother killing off for some strange reason or another (either marketing, or someone rewrote Paint in it for all I know).
This despite the fact that they have garbage like WPF still lingering around like a bad smell (I don't care how shiny it is or how "nice" XAML is, it ignores system settings, it's a horror for usability, as a user it plays havoc with my dodgy eyesight and basically if I see your app uses it I will do everything in my power to ensure neither I nor my employer wastes a single penny on it)
...go back to Motif for desktop GUIs? Sure it's ugly as sin by whatever metric is used today for such things. At least I can tell what buttons, menus, tool bars, window frames, scroll bars, etc... actually are. This current idea that program content and UI should blend seamlessly into one amorphous blob confuses and irritates me. I'm probably just being a grumpy old git.
Nope, dead right. As more and more photoshop monkeys think they're "UX Experts", the worse it seems to get.It seems as if the minute someone calls it "UX" instead of "UI", you know you're in trouble.
Flavour-of-the-month visual design (most of which seems to be poorly implemented, probably because designers are trying, without the requisite skills, to poorly copy something they saw someone else do better in a blog the previous day), a complete and comprehensive lack of coherence or consistency across every section of the interface (which we can probably ascribe to card-dev-myopia from the infection of poor agile application just as much as we can ascribe to "UX" designer problems), and an almost wilful ignorance of just about any feature beyond the most drool-level single-finger, single-click kind of interaction in the system.
The majority of the now-historic wider platform conventions for cross-application cooperation are not there. Keyboard shortcuts if you're lucky. Multi-select following platform conventions? Forget it. Any kind of power user feature is stripped away leaving a bland, tasteless, white-space-wasting canvas of crap that's as pathetically inefficient, clumsy and irritating to use as the awful mobile app UIs from which all design is now derived. Most modern designers don't seem to be able to conceive of, or understand the utility of, a system which provides a richer array of input options than a fat finger. And that'd be fine if engineers implemented the designer's "look", but now they've been given control of the entire feature set and engineers turned into dumb drones that just do what's on the card and nothing else. The engineers are treated as if - and accordingly, increasingly seem to exhibit - no particular skill, no deep expertise, no creativity, no initiative and no interest. The outcome is inevitable.
Inmates running the asylum.