I'm really disinclined to invest in any of their technology because my headspace is finite and I want to deliver business value, not change the unworn carpets once a year.
The feedback loop is shit as well. Out falls a broken pile of shit for a CTP. No one accepts any feedback. It hits RTM, no one accepts any feedback. Two years down the line, the same bugs are open.
You should hear the partner reps wanting to cry when you report a bug in something that you NEED a fix for and are paying support for. You get fuck all other than a registry fix or a hack even if the mainline product is falling to bits across a thousand or so users (which is what happened to us).
Money where the mouth is as well. Typical shit:
https://github.com/Microsoft/SCVMMLinuxGuestAgent/issues/2 -> ignored. Regularly hoses our new VMs deploying windows on SCVMM.
https://github.com/dotnet/cli/issues/3093 -> fuck you go away we're just going to take your data unless you set a magic variable even though no one wants to give it away as indicated by the ticket and there are bugs in the configuration and it causes people massive audit problems.
> It's only a matter of time before some enterprising journalist looking for a scoop picks up on this. The headlines here are not good: "Microsoft caught with sneaky program to spy on companies"
Let me take care of that...
Edit: Wrote several of germanys biggest tech sites with focus on dataprotection aswell as the german ministry for cyber security with a link to that ticket. Let's see what happens
On a similar note if they get back to you, Mozilla is testing the waters with dumb privacy invasion stuff in Germany soon too:
https://www.ghacks.net/2017/10/06/mozilla-to-launch-firefox-...
They're probably across that already though, but if not it might be useful to point out to them. :)
The issue is well documented and explained: https://docs.microsoft.com/en-us/dotnet/core/tools/telemetry
I applaud your vigilance, but you are a bit late.
Most of the issues you mention are solved in .NET, WPF and UWP. COM is a breeze to use in Delphi, MFC/ATL, .NET, C++/CX.
Windows is much more than just Win32.
Apparently Windows event system is so bad, that the younger generation re-inventing it in the form of React.
Also Cocoa, UI Kit, Android and Qt are all better solutions than Web.
The tools and software for traditional windows app programming have long been neglected and the newer ones throw you into a niche — and still don’t provide a cohesive story.
I would much rather pick up react and produce a working product in less time it takes to troubleshoot XAML databindng and styles, for instance. If my windows app needed something like a map component, I can drop one in my macOS, iOS app - the same one baked into the os - and on the web have an assortment of components to choose from — with WebGL support baked in.
Also, there isn’t such thing as a DX only gfx card - it happily runs OpenGL games and apps just fine
Try to make a CRUD SPA as fast as a Delphi one, including a nice L&F by default, just with mouse clicks and setting a few properties.
> Also, there isn’t such thing as a DX only gfx card - it happily runs OpenGL games and apps just fine
This statement means you don't have much experience in graphics programming, at least regarding the fun of dealing with drivers and how OEMs classify GPU features.
So if you prefer I will rephrase it as "WebGL 2.0 on OpenGL 4.6 GPU".
Now feel free to compare what it means in GPU features.
Hint, WebGL 2.0 is basically OpenGL ES 3.0, which maps to OpenGL 4.3.
Use Bootstrap for the look and feel. The browser's painting stack is far faster than Delphi's '90s style GDI, so you don't have to do anything there.
I only used Delphi as an example, because in 2017 the Web is yet to produce anything that approaches it, even Web Components are yet to be fully done.
A RAD tool is much more than just rendering widgets, a simple CRUD application should be doable just by clicking and setting properties, including talking to the database backend.
Speaking of WebComponents, when will Mozilla support HTML Imports?
I wouldn't.
> Most of the issues you mention are solved in .NET, WPF and UWP.
I wasn't talking about .NET, WPF, and UWP. I was responding to the claim that Petzold-style Win32 apps are better than the Web.
> Apparently Windows event system is so bad, that the younger generation re-inventing it in the form of React.
Huh? React is not WndProc.
> Also Cocoa, UI Kit, Android and Qt are all better solutions than Web.
Disagree.
I've written the same WebGL app twice now, once in Cocoa/Objective-C and once on the Web, with a TypeScript and Webpack stack. Once I got over the initial hump of learning the technology, it was a much nicer experience than my experience with Cocoa. TypeScript is a better language for UI development than C++, Java, or Obj-C, and the fact that the browser implementation of WebGL smooths over the issues with OpenGL on Mac was a huge relief.
Apparently others with better knowledge of Web than me, think otherwise about React vs WndProc.
https://bitquabit.com/post/the-more-things-change/
As for your WebGL example, I would have used Swift with SceneKit instead, regarding productivity in native development on Apple systems.
Visual interface editor? Check.
Component-based UI model? Check. (It's all in Python, everything is an object, very Delphi-ish.)
Back-end communication? Check. (One-line RPC to call functions on the server.)
Database integration? Check.
(The built-in datastore runs on Postgres, and lets you do things like delegate views on a table directly to the client. Mix this with data bindings, and you can create CRUD apps with tiny amounts of code. Or you can start importing the appropriate Python libraries and go to town with your favourite DB.)
Win32 has warts on warts, but around the year 2000 the MS development space was a monoculture and the COM-to-GUI story was increasingly mature and integrated.
.Net came along and, on the one hand, positioned MS to be a whole different kind of tool provider (F# on dotnet core on linux in kuberernetes is niiiiice), but they also lost a few hundred man-years worth of local improvements to their platform. This without providing a credible replacement for Win32 ensuring it would be around for decades.
That fracture fractured again with XAML, again losing tons of maturity, and then fractured even further with the UWP/Silverlight/Metro/WhoKnows. I've never been a bigger fan of MS's product line, but can't justify or defend using much on the client other than html for fancy things or standard winforms for deployability.
19 years after the first release of apt-get and I'm still waiting for MS to give me something half as good.
I am of the opinion that if they had dropped the "use apps over the web" angle and focused on small-medium-enterprise continuous deployment they woulda had a true game changer on their hands... Click-Once dovetails naturally into something like Apples launchpad, its "turn it off and turn it on again" workflow was ideal for 'Sue in Accounting', its simplified publishing model is great for ISVs with lots of customers, and its sandboxy requirements are a natural fit for the way dotnet core is coming together.
And, yeah, that the Windows ecosystem is still worseoff than apt-get forever ago is a) shocking, b) further proof that Richard Stallman was right about everything ;)
perhaps doesn't solve your problems yet :)
Have you looked at chocolatey as a total replacement for apt-get? If you havent, be prepared for eye gouging disappointment! :(
I mean we can certainly point to examples where that's the case: Silverlight's a classic here, if that term's even appropriate, and then of course there's WP7, 8, and 10, as mentioned by the grandparent. And these are clearly not trivial examples.
Nevertheless, I must point out that large bodies of code I wrote in the mid-noughties are still running substantially unmodified today. What's perhaps interesting is that these codebases are desktop tools, where it can be argued that Microsoft have achieved true mastery (after WPF came out everything notably settled down, and unlike MFC and WinForms it really hasn't been replaced).
It tends to be other areas where the worst of the churn has occurred: web, mobile, database access (how many versions of EF to get it right?). Of course, these are areas that have seen significant growth over the past few years.
Still, even in their worst period Microsoft did not begin to approach the lunacy of framework churn in the JavaScript world.
My pet theory is that this is because the dev
tools department at Microsoft is not a pure cost
centre with the sole task of improving the platform,
they have Visual Studio licenses to sell.
This is the single most baffling thing about Windows to me, and it always has been. Why insist on trying to sell Visual Studio licenses, instead of maximizing the amount of software written for your platform(s)?It doesn't even seem like they're acting in rational self-interest by doing that.
I suppose their rationale is that they give a lot of development tools away for free, and you only really have to pay for the really enterprise-y editions. I guess? Still dumb to me.
Later, when the PC platform became what we know today, there wasn't really a channel for free (small f) software except shareware magazines and Microsoft surely would not be seen with that crowd! In those days, Microsoft wasn't concerned with losing the heads and minds to another platform but with losing the revenue to Borland. Since then, more and more has been made available (I still fondly remember laying my hands on the first Windows SDK day came with a free command line version of the MSVC compiler), but it is a culture shift that won't be rushed as long as there are no really pressing reasons.
For a while now they haven't been doing that. Community editions are just as good as paid ones and before that Express versions were still comparable if not better than open source IDEs.
Partnering with them gives rebates on their dev tools licenses and gives you kickback when you push your customers to buy for-realsies licenses.
VS is just the fishermans hook, the haul are the 600 SQL server CPU licenses you have ticking all day, every day.
There was a time when MS would detecting the binary name, and change core kernel functionality just to provide bug-compatibility to older versions of Windows. By that time they got an unbeatable market dominance...
Maybe it's fixed with the reinvigorated WPF on Win10. I don't care anymore, but I do caution anyone to ever use any MS Technology younger than 15 years.
In a way, I think it's harder to pick technologies today for large projects. It seems like if something isn't new and growing steadily, it's stale and fading fast. What are the tools and frameworks with a long, healthy middle age ahead of them? I'm learning Go right now because there are a couple of web services I need, but I'm not that confident that I'll be able to run the same code for the next 20 years.
If they had semvered the whole thing: Avalon => UWP 0.x, WPF => UWP 1.x, Silverlight => UWP 2.x, Windows 8.1 UAP => UWP 3.x, today's UWP ~=> UWP 4.x, I don't think any developer would have blinked, I feel like we'd have a lot fewer people feeling they dropped support for things... Then again, developers like to complain when their cheese is moved, it could be just like Python 2 versus Python 3 or VB6 versus VB7.
The only major thing: added Direct2D H/W accelerated backend to support high-DPI and multi-DPI systems. Yet incremental addition of CSS features.
Silverlight was mainly for apps embedded in the browser. It was very limited compared to WPF and not meant to replace it.
Similarly, Metro was not meant to replace WPF. It was extremely limited in what you can do. You couldn't build serious desktop apps with that.
The fact that all those technologies use XAML does not mean they're newer versions of the same thing. The difference in APIs is not what matters, it's the difference in what they can actually do and how that makes them different.
I think you can tell that WinRT/Metro/UWP was/is meant to replace WPF. It used to be extremely limited, but A) had a bigger cross-platform reach that WPF (ARM is/was a big deal), so started with the cross-platform subset, B) was essentially "Win64" from scratch so had a lot of pieces to build.
Starting next month-ish UWP supports .NET Standard 2.0 and the hard work of the re-convergence of classic desktop .NET and cross-platform .NET APIs has happened (huzzah), and it will be a lot harder to argue that UWP is "extremely limited" compared to WPF because 70% of NuGet will just work.
> I don't understand why they even needed UWP. Why not improve WPF?
The short story: 1) To first-class support more platforms/architectures (ARM). 2) To support C/C++ and other COM developers, bringing everyone COM [WinRT] [1] and Managed (.NET) to the same table. (Microsoft still has a lot of teams invested in C/C++; it shouldn't be a surprise that they couldn't just focus on .NET and leave C/C++ devs behind.)
The full story I think is pretty fascinating, but that's the executive summary.
[1] Crazy aside: the tech still sort of known as WinRT is closer to the original goal of .NET as a COM replacement than .NET became. It's also close enough to COM that I'm still surprised no one's admitted to building a UWP Delphi or VB6 app. (Not that I'd admit to doing so if I built such a beast.)
Somehow they seem to lack leadership.
It's easy to say in hindsight that they should have tried for something like what .NET Standard 2.0 is today earlier, but I, at least, can't blame them for attempting to try to clean house and remove terrible dev experiences like AppDomains and DataTable. Those APIs are terrible and should have died.
Again, I'm not sure how much clearer of an upgrade path you could want? If you have a WPF app today, everything but the XAML will work in Fall Creators Update UWP. The XAML may even be trivial to convert to UWP XAML, they are related like family.
Because that was the main limitation of Metro apps, you couldn't really do anything useful with them, you couldn't even access the hard drive normally or edit the windows registry. This is why you couldn't "upgrade". It wasn't an upgrade to any previous tech, it was a downgrade as the platform literally had less capabilities. It is, or at least was, basically a platform for making sandboxed mobile apps that you can run on the desktop...
This is why they clearly weren't (at least Metro, I haven't worked with UWP) an "upgrade" to anything. Silverlight wasn't an "upgrade" to WPF for the exact same reason. It was a more limited platform and you couldn't switch WPF apps over. So MS calling Silverlight or Metro a new version of WPF would have been retarded.
So, you still can't touch the registry by default, but why would you want to? There are much better places to store stuff.
The UWP is meant to be a replacement for Win32, so it shouldn't be a shock that a lot of Win32 components aren't available by default.
However, you can use the Desktop Bridge and request permission in your app manifest for more privileges, including things like registry access. The Desktop Bridge has a lot of examples out there on things you can do. You can use the Desktop Bridge to transition a WPF app slowly to UWP over time. For instance, you could launch UWP screens from your WPF app, allowing you to move piece-at-a-time if you wanted. There are even samples on how to migrate settings currently stored in the registry (ugh, why) over to Local AppData storage like a proper application, to transition away from Win32 bad practices. (Of course, the parts of the application that need the Desktop Bridge will only work on Windows with a Win32 subsystem.)
On the other hand Win8/10 apps don’t run on anything than the OS they were released on. Which is totally laughable because it means choosing the MS stack allow one to target less Windows OSes than third party tools. So these SDK were doomed from the beginning as thay couldn’t leverage the existing Windows userbase.
If it is old, it will be supported for a long time. If it is new, the odds are mostly on it not surviving. Ever wondered why so many people insist on using outdated stuff?
You get a better deal from open source. But even there you may not like the possible consequences of using non-mainstream things.
You can still run VB6 apps but try running a .net framework 1.0 app!
https://www.microsoft.com/de-de/download/details.aspx?id=162...
So realistically for most MS stack devs it was MFC -> VB -> WinForms -> WPF -> Metro -> UWP. And MFC was released 25 years ago. So they switched 5 times in 25 years. You could possibly add Silverlight in there (which is extremely similar to WPF so only half-counts for churn purposes).
Now, I agree that the Metro -> UWP part was unnecessary because they were doing the same thing twice so they should have gotten it right the first time (and I think the whole UWP concept is worthless anyway).
If we look at MFC -> VB -> WinForms -> WPF, all those technologies provided a lot of value to us and it was very useful to have them. Would you want to still be programming in MFC today? I am pretty sure you wouldn't. I do not feel any "churn" from this (note: I never switched to Metro/UWP because I considered it a step backwards, unlike the previous "switches", so I stopped at WPF when it comes to desktop), I can barely remember programming in VB 6.0 because it was such a long time ago.
Saying that's "exactly the same" as the situation with web is ridiculous.
WPF, Metra, UWP, and Silverlight in 2007 -> 2017 is 4 overhauls in 10 years or an overhaul every 2.5 years.
Also not fixing bugs in earlier tech creates a compulsion to switch to the next tech.
Not only are their incentives still out of alignment, the massive consultant eco-system they maintain is still incentivized to push the same-old lock in in a new costume.
SOAs are like partners in bed... it's not just about who you're sleeping with, you gotta think about who they have slept with too.
Object Pascal, Powerplant, Quickdraw, Java Bridge, Quicktime, QuicktimeVR, Carbon, OpenGL, ...
Apparently only Microsoft does it.