Categories
Microsoft

Windows 11: Sun Valley

Windows Central: “The next major Windows update, known widely as Sun Valley, is expected to debut in October 2021. Microsoft is planning to unveil the next generation of Windows, and the teaser appears to suggest that a “Windows 11” could be announced.

I recently replied to a Jennifer Gentleman tweet asking if we’d stuck to a single OS more or less over the years. I was a Windows developer for years and years. From 1989 to 2006 I worked in Windows.

In 2006 I became a development lead for a small team and spent less time writing code. At that time work purchased me a MacBook Pro. I’d SSH to my Linux box and ran Windows in a VM. Even when I went back to being a contributor the same workflow was just fine. It even lead me to building a GDI based renderer for our media pipeline because DirectX wouldn’t work in a VM at that time.

I’ve been all in on Mac since 2006.

At some point Microsoft really shifted focus to web based messaging and I feel like they lost their messaging on the desktop. Now, to be fair, that could have been me falling out of touch with Microsoft and Windows as a developer. It seems like C#/.Net are the definitive language and runtime choice but what about the desktop framework? I’m old. I learned on Win32, AKA the Windows API. It was so simple and straight forward to develop with. Sure it was all C code. Sure it was procedural. None of that mattered. It provided base level functionality necessary to build a great Windows application. Heck, it was really easy to wrap in C++ to build your own framework. My 20 year old little framework still works to this very day.

So, what should you use today to do a great Windows Desktop application? Is it Win32, WinForms, WPF, UWP, or the latest offering, Windows UI 3? Oh, and don’t forget WinRT as a replacement for Win32.

My sincerest hope is Windows 11 is a rework of the Windows user interface that makes everything consistent and that it provides a clear and concise guide for all Windows apps moving forward. So, I’m thinking a combination of WinRT and Windows UI 3 are the way to go.

Here’s hoping Windows 11, or whatever it’s called, gives new life to Windows.

I’d love to build a Windows version of Stream after I complete the Mac version. To that end I’m building a C++ framework just for Stream that handles the network, feed processing, models, and database persistence. That framework will be coupled with a native Windows UI 3 user interface. At some point I believe I’ll bring all that code back to iOS and Mac.

We’ll see.

Categories
Development Uncategorized

Native Development on Windows

Yesterday I asked on Twitter…

I got one serious answer and some fun poked at the question, which is fine, but I think it points to a real problem on the Windows Desktop. 

Has Microsoft given up on native applications at a time when native on Apple Platforms and Android have never been more popular?

On Apple Platforms we have clear, well defined, native development tools for creating serious desktop applications. Think of apps like Photoshop, or more modern takes on graphics like Sketch, Acorn, Pixelmator, or OmniGraffle. Most of these applications are written in Objective-C against Cocoa (Apple’s Framework for writing applications.) Sure, Photoshop is the old guy in the mix and is built on a custom framework written in C++ that communicates down to Cocoa (and possibly some Carbon API’s?) also worth noting, with the exception of Photoshop, not a single app mentioned above is cross platform (I’m not including Mac to iOS as cross platform, many of the API’s are the same and the act of going from one to the other is much easier than going to a completely different platform.)

All that brings me back to the question of developing native applications in the vein of Visio or Photoshop on the Windows Desktop. I’ve seen plenty of talk about creating Universal Apps, but those seem geared toward a lighter weight style of application, singular purpose apps focused on lightweight tasks, like Twitter or Facebooks clients, not hard core productivity applications that need to perform well and provide their best experience on the Desktop.

We still have Visual Studio, C++, and the Windows API, as a development platform but it feels somewhat abandoned. I know the folks working on the C++ compiler would probably argue against that statement because Microsoft is definitely investing in C++, but what about OS level API’s? That is the level that sort of feels abandoned. We have WinRT today, which seems like it might be part of the story for native desktop development, but do you mix and match that with the Windows API to build a great native application, do you use WinRT alone, or do you just continue to plug away with the Windows API?

It seems that apps built for the modern Metro look should use WinRT? Based on that it seems the old tried and try combination of C++ and the Windows API would still be the best choice for hard core desktop development.

But what about C# and XAML? Maybe those are a good choice for serious desktop development? I’m unclear on that subject. I’ve heard that the Visual Studio IDE was rewritten in C# for Visual Studion 2012, but I don’t know if that’s true or not. If someone reads this post and can point to MS Office, Visual studio, or Photoshop class applications written in C#/.NET I’d love to hear about them. Worth noting is the wonderful toolset by the folks at Xamarin, it makes C#/.NET app development truly cross platform.

Being a long time C++/Windows API guy I still gravitate toward that toolset. Hey, I have a lightweight class library I wrote in 1993-94 that still works today; it builds with Visual Studio 2015 and runs fine on Windows 10, but it could certainly use some refactoring given the state of modern C++. Think C++14.

I’ve been working on a cross platform project recently using Qt, which has me think about portable C++ for Mac, iOS, Windows, and Android. Given C++14 as a starting point for most OS level services; file I/O, threading and synchronization, etc, what would it take to build a modern C++ library that handled native user interface creation and interaction and didn’t feel too constraining on the platform? Remember, most cross platform tools come at a price. They’re always a little behind, they tend to be least common denominator, and can feel non-native. Qt, for instance, doesn’t use native controls on Windows (NOTE: this may not be true today. This was true around 2008, the last time I looked), I find that terribly annoying. I’m sure any Mac, iOS, or Android developer worth their salt would also find it annoying. 

A nice new C++ framework for building native OS level user interfaces using modern C++ as a base would be great to see. I really wonder how long it would take to build such a thing?

Categories
Microsoft

Microsoft’s Future

TECHi: “What we are left with is a company that has no concrete plans for competing in the mobile industry. Microsoft has a smartphone platform, but they have no way to connect it to a tablet or desktop computer. They also have no operating system that is capable of competing on a tablet device — trust me, Windows 7 isn’t the solution.”

Don’t write Microsoft off as dead just yet. They still have a solid foundation, in the Windows Kernel, on which to build, and their new mobile OS isn’t so bad. Remember, back before Apple bought NeXT everybody had written them off, 11 years later we were given the iPhone, not to mention iTunes, the iPod, and OS X.

They’re definitely down, but not out.