Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement] Dump MAUI and Adopt Flutter with C#/Blazor #160

Closed
JohnGalt1717 opened this issue Jun 25, 2020 · 31 comments
Closed

[Enhancement] Dump MAUI and Adopt Flutter with C#/Blazor #160

JohnGalt1717 opened this issue Jun 25, 2020 · 31 comments

Comments

@JohnGalt1717
Copy link

JohnGalt1717 commented Jun 25, 2020

Summary

Flutter has the momentum, Google has asked for help, and the adoption of Chromium for Edge has proven that this works for Microsoft. It's now or never for Microsoft in both end user developer space and end user in general. Xamarin in any form (Maui or otherwise) isn't going to move the needle. Flutter already has 50,000 apps in the stores that all become quality Windows apps if Microsoft properly supports it.

Benefits to Microsoft:

  1. 50,000 apps already there that simply have to be recompiled for windows. The Windows store becomes viable quickly and new apps will come to Windows at the same time as iOS and Android
  2. A pixel-perfect rendering engine that allows devs to target all platforms. As a result, if done right, Microsoft can break the Duopoly and make Windows a viable alternative because devs will go where the no-compromise write once, render anywhere is and if Windows is free doing that, then Microsoft wins.
  3. Google is doing work to benefit Microsoft just like Chromium Edge which has Google scared because Edge is finally gaining traction and taking from Google Chrome. The same would happen with Flutter.
  4. Porting C# and the underpinnings of Xamarin to Flutter's rendering engine is a MUCH smaller lift than making Xamarin/Maui compete with flutter. @SteveSandersonMS already proved this out with his Blazor Flutter bindings. This is doable and doable in the .NET 5 timeframe if Microsoft has the will.
  5. Microsoft can then provide the best developer experience for flutter while still supporting Dart on flutter and thus beat google with their own tooling.
  6. The apps produced will be of exactly the same quality as those on iOS and Android. No trash Windows apps that are often worse than no app at all.
  7. Windows 10X then works flawlessly with these apps because of the approach and Microsoft finally gets the sandbox they need and want and ARM on Windows becomes a reality.

What Microsoft Needs to Do:

  1. Go all in. Get Panos Panay on board and have the Windows team drive this forward and commit the resources to it to get this done by November.
  2. Take what @SteveSandersonMS proved and make it reality with flutter.
  3. Enable the Xamarin iOS remote simulators and direct deploy/debug to iOS devices. (we know this is possible because the old Cordova functionality in VS.net 2017 worked fine with these)
  4. Give away free iOS remote simulators as part of MSDN so that Windows devs don't need a Mac.
  5. Give away free App Center and Azure Devops support for building and publishing directly to the iOS store so devs don't need a mac even for publishing and make it absolutely trivial to get setup to publish. This should extend to all Flutter platforms to just read your git project and automatically configure Azure Devops to just work.
  6. Provide the very best experience for the flutter renderer on Windows. That means DirectX accelerated support.
  7. Add a WinUI rendering system like Cupertino on Flutter.
  8. Add building of Flutter plugins not just for windows in C# but also for ios/android using the Xamarin tooling.
  9. Make Flutter plugins for windows creatable on C# with UWP access so that we don't have to write win32 because things like Video playback with DRM, captions etc. is brutally hard with win32 and trivial with UWP so way more plugins will be available and reach parity if C# devs can write them for windows, ios, android etc. (And don't try and make it work on the dead Windows 7. Make this UWP driven on Windows 10+)
  10. Dump the Blazor Bindings for Xamarin and move on.
  11. Provide first class tooling in both VS Code and Visual Studio so that this just works and works WAY better than Android Studio.
  12. Port the WebAssembly Blazor engine to the flutter web rendering system. This will make Web faster with flutter and ensure that most plugins can be written in Blazor and consume blazor controls and 3rd party libraries and not require Javascript (and allow the same as Dart:js)
  13. Make a public commitment and explain why Xamarin Forms is going on life support (including Maui going away). Barely anyone is really using Xamarin Forms compared to even Flutter and even Microsoft people internally don't use Xamarin. Explain why and why this is a huge benefit to Windows Devs. Make this the primary go forward "green-field" environment for Windows recognizing that Win32, WPF, UWP, Winforms are all legacy and dying as more and more of those apps are ported to Web. Keep them going and doing well, but just adopt flutter and stay there all in. That means all new projects in Microsoft use Flutter and it's made to work with all apps the very best possible.
  14. Make this your Internet moment of the 1990s and your Azure moment of the 2000/2010s. This needs to be an all-hands-on-deck commitment from the CEO on down.

By doing the above, Microsoft gets all of the work from Google going forward for free (i.e. iOS, android, web and Linux will likely be done by Google making dev so much easier for Microsoft and everything they do just makes Windows apps better and more devs use Flutter thus making more Windows Apps exactly like what's happening with Edge Chromium). Microsoft gets 50,000 (mostly) quality apps quickly that work with what Panos' vision. Microsoft has a clear communicable go forward for developers and everyone else in the consumer space. Microsoft internally gets a development platform that allows them to be vastly more productive if their .net and windows dev teams are focused on this, because now they can write Outlook as an example, once and it works everywhere they need to be and the feature set reaches parity on all platforms at all times. And by making development trivial on Windows, Microsoft gets apps that are developed for Windows first again which makes Microsoft the dominate platform again quickly.

There is no downside to this approach other than fiefdoms within Microsoft will have to be broken and the honest conversations that the Edge team had switching to Chromium. And leadership needs to lead to make that happen and ensure anyone that isn't 100% on board with this vision leaves the company because Microsoft's future outside of Azure depends on this approach. Nothing else saves the end user half of the business. Only this approach has a good shot of doing so in the timeframe that ensures that Microsoft doesn't have to walk away from consumer/frontend business on Windows.

Please Microsoft, take this seriously. We want you to succeed but you're not thinking strategically and no one has a plan on how to get you where you need to go. This is that plan, or at least the start of one.

@fisforfaheem
Copy link

Thanks, For all The time taken by you to write Awesome details.
I really hope #microst understands this and let people not port apps but make single apps that run everywhere!

Also in order to reach more people i would like you to add this post to REDDIT and message, WINDOWS CENTRAL AND THE VERGE TOO... it would be so great!

@fisforfaheem
Copy link

fisforfaheem commented Jun 25, 2020 via email

@JohnGalt1717
Copy link
Author

@fisforfaheem
Copy link

I am trying to reach everyone...from @panospany to @windows central

@tomasfabian
Copy link

I think that healthy competition is good for the (IT) market. Microsoft please keep going on with MAUI... and If possible collaborate with the Uno platform. Thanks

@amartens181
Copy link

I think that healthy competition is good for the (IT) market. Microsoft please keep going on with MAUI... and If possible collaborate with the Uno platform. Thanks

I would prefer developing for a super-fleshed out platform than developing for 2 platforms that aren't as good as they could be.

@JohnGalt1717
Copy link
Author

JohnGalt1717 commented Jun 25, 2020

@tomasfabian The competition is with Google and Apple. Uno (good people but still), Xamarin Forms/Maui don't compete. Their niche at best. And it doesn't matter what incrementalism MS brings to Maui that isn't going to change. That ship has sailed. Yes, provide support for that ever shrinking market.

But the reality is that Microsoft is done in consumer and that means consumer development too in 18 months if they don't get a plan that is cohesive and provides best of breed developer tools that work cross platform. They've proven they can't do it with Xamarin for many reasons and Flutter has already done it and is asking for help to do it for Windows.

You save Windows as a consumer platform, if you adopt Flutter. You create another stop gap to the demise of Windows if you continue to focus on Xamarin/Xaml/Uno/Reunion/WinUI. It may slow it slightly but it doesn't reverse it. And if .NET and C# development goes away for Consumer and Windows does too, then .NET itself will collapse in time too instead of being the powerhouse language it can and should be.

@fisforfaheem
Copy link

Flutter, in less than 6 months could give you superior greenfield apps, better than UWP, WPF/Winforms and enormously better than Xamarin Forms/Maui.

The point is that Microsoft should be investing its time in Flutter compatibility for Windows and porting C# to the flutter rendering engine and not doubling down on dead technology that is virtually not used. (i.e. in 2 years since the beta of flutter, there are more Flutter apps in ios/android stores than the Windows Store, and more flutter developers than 10 years of Xamarin existence and that keeps growing.

@ccarlo88
Copy link

It's a quite funny topic because Edge was dropped in favor of Chromium to reduce development resources for sure, that is quite clear. Anyway, the best browser in the market is definitely Firefox, which proves that a "follow Google" is a bad idea.
50,000 "hello world" apps also doesn't say much. It's not a matter of number, it's a matter of what the app does.

@Happypig375
Copy link
Member

Anyway, the best browser in the market is definitely Firefox, which proves that a "follow Google" is a bad idea.

You cannot use an opinion to prove a fact.

@RyoukoKonpaku
Copy link

More options is probably better overall for the ecosystem, as competition is usually better in the long run. The new slim renderer architecture for MAUI would make it at least possible for the community to create a flutter based renderer if one wanted or even a Skia based one (which has been raised is this repo quite a bit) and render their own controls pixel by pixel like Flutter and directly compete that space.

While my it's just my opinion, I still prefer a cohesive platform where everything looks and integrates well for that platform, that means on Windows it'll likely be using UWP controls with it's distinct style with Fluent design, and on iOS with it's design language. Not all apps nor devs have the resources to create branding to make a unified UI for all platforms for their apps. Some actually leverage the platform's design language and focus more on the value they want to introduce for their app, apps like. myTube from the UWP community discord looks really clean and it uses the platform's design language to do so. Most IOS apps are also like these and they fit pretty nicely into their ecosystem while the bigger ones go one step further and create a unified brand for their UI.

@MhAllan
Copy link

MhAllan commented Jun 25, 2020

Xamarin, MAUI, Flutter, or Skia .. It doesn't matter. I hope your messages reached.

Requests for Flutter and Skia simply mean that, .Net developers are not feeling safe if MAUI came similar to XF in being: too buggys (ships bugs than features), too slow evolution (maybe we can take photo by XF without plugins in 2045?) weird prioritising (work on trivial features while leaving crash reports and important features pickled for years), and of course consistency across different platforms (have you tried to make TabbedPage tabs stretch over the width of the window on UWP like it does on Android?)

@ccarlo88
Copy link

ccarlo88 commented Jun 25, 2020

@Happypig375 Just test by yourself. I've used along the years more or less in this order: IE, Opera, Chrome, Edge and finally Firefox. If you try Firefox for one week you never go back to another browser. (Didn't test any other ones besides the ones listed). Maybe it has subliminal messages. 😵 😆

@Happypig375
Copy link
Member

too buggys (ships bugs than features)

weird prioritising (work on trivial features while leaving crash reports and important features pickled for years)

There was an official response to these two on #109.

@Happypig375
Copy link
Member

@Happypig375 Just test by yourself. I've used along the years more or less in this order: IE, Opera, Chrome, Edge and finally Firefox. If you try Firefox for one week you never go back to another browser. (Didn't test any other ones besides the ones listed)

Are you seriously trying to back up opinion with more opinion?

@Beelzenef
Copy link

Beelzenef commented Jun 25, 2020

@Happypig375 Just test by yourself. I've used along the years more or less in this order: IE, Opera, Chrome, Edge and finally Firefox. If you try Firefox for one week you never go back to another browser. (Didn't test any other ones besides the ones listed)

I used Firefox for almost a month and then back to Edge... your opinion is not a fact 🤷

EDIT: sorry, I know this is not the point of the issue, looking forward to reading more opinions on the main topic

@ccarlo88
Copy link

Are you seriously trying to back up opinion with more opinion?

That's not what this issue is about? Opinion with more opinion? 😆

I used Firefox for almost a month and then back to Edge... your opinion is not a fact 🤷

Interesting! I just tested Chrome recently so I will definitely try Edge again then. Thanks for the feedback, 😃

@JohnGalt1717 JohnGalt1717 changed the title [Enhancement] Dump MAUI and Adopt Flutter [Enhancement] Dump MAUI and Adopt Flutter with C#/Blazor Jun 25, 2020
@tomasfabian
Copy link

tomasfabian commented Jun 25, 2020

Back to the topic in a subjective world viewed as an objective one.
I have to admit that I don't understand why should Microsoft actually care about cross-platform development. What kind of income does it have from it? From developer tools, patents?
From a not interested/not business person viewpoint it is a mystery.
Why does Google care about Win Store apps success?

@JohnGalt1717
Copy link
Author

JohnGalt1717 commented Jun 25, 2020

@tomasfabian Here's the death spiral:

  1. iOS and Android controls the market for new apps.
  2. Developers buy Macs so that they can compile to iOS because Apple can dictate terms for admission to the store.
  3. Web apps are good enough for most LoB apps on Windows that don't use low level hardware. (the vast majority)
  4. Web apps get you macOS too.
  5. Developers stop making Windows Desktop apps
  6. Developers stop using Windows Machines because why spend another $2500 on a Windows machine when you already had to spend $3000 on mac?
  7. Businesses realize that their Windows machines that cost MS dollars for every machine have Office and a web browser installed and start to wonder if the vast majority of people could just use a web browser and Office 365 and/or an iOS/Android device.
  8. End users realize the same and don't use Office much, so they start buying Chromebooks and linux machines (as has happened in education)
  9. Windows loses more and more relevance.
  10. Fewer and fewer apps target Windows desktop.
  11. Because fewer and fewer developers care about Windows at all, it becomes harder and harder for Microsoft to innovate in Hardware (i.e. duo and neo) because it requires developer adoption which won't happen if they are using macs every day.
  12. Microsoft loses hardware dominence on desktop like they did on mobile. (remember before iPhone came around Windows was the dominate Mobile platform)
  13. Windows becomes a tax and office isn't justification enough for businesses so they switch to a browser that happens to have an OS and Android/iOS app because that's where the demand is.
  14. Windows goes away.

Microsoft recognized this death spiral on server side and created .NET Core and WSL to address it. (WSL was really Windows Phone Android emulation that they made into something on Windows but the reasoning stands) This prevented the server side devs from jumping to Linux because they target Linux and stopped the .net bleed because linux was cheaper on server side thus no one wanted to pay the massive Windows Server tax just for .net when they could do just as well with node.js (at the time) without paying the bill.

They recognized this with IE/Edge too. So they adopted Chromium to stop the bleed and create a viable browser that they could focus on other things than keeping up with Chromium's rendering engine and get Google's features for free and make a better UI than Google with better privacy protections than Google making a win/win which is now chopping into Google Chrome's market share enormously.

What they haven't recognized is that they MUST do the same thing if they don't want to exit the consumer space. (aside from Xbox which they'll exit if the new xbox this fall isn't successful) For Windows to maintain relevence they have to reverse the spiral:

  1. They have to eliminate the REQUIREMENT to own a Mac to develop end user apps in the platforms people care about right now.
  2. They have to provide developers a reason to target windows apps so that there is more to it than just a browser.

To do that they must:

  1. Put up free developer iOS simulators in the cloud.
  2. Make Azure App Center deploy to stores free.
  3. Have a compelling cross platform development tool that allows developers targeting iOS and Android to click a button and target windows too. (And if it does Web as well then that is a serious win) This is literally the ONLY way that Microsoft can get developers back to Windows.
  4. Make that cross platform experience best on windows both for the developer and the end user while making it work great where they already are. This eliminates the app gap and makes Windows the preferred place to be over time.
  5. By making the development experience low friction and eliminating the write many times to target multiple platforms as is required right now and not feasible for the 90% of software development houses that are 5 or fewer developers, developers will come to that platform to be more productive and target more platforms meaning that in less than 5 years Windows will reach virtual parity in apps with the other platforms as apps are rebuilt to save time by having one set of code for iOS, Android and Web (and as an aside windows). This is the key assumption but it's borne out in the data of React Native and Cordova and even Flutter's current rise in popularity even with Web support still in beta.
  6. Then and only then can Panos Panay make serious inroads on hardware by saying "hey we have this really great idea, your app already runs on windows, and we've made it super easy for you to add XYZ feature while still supporting the other platforms, please give a try". Right now windows hardware innovation like duo and neo is "Hey we really have this great idea, you don't have an app at all, write it for us too please. (ya right, like that is going to happen) which forces them to use Android ceding more power to Google instead of less like my plan does, and then they still aren't moving the goal posts forward of breaking the duopoly they're just accommodating it.

While it is in theory possible for Microsoft to make Xamarin Forms/MAUI into this platform, the time required and massive overhead in developing and maintaining that level of functionality across at least 5 platforms is enormous and clearly not viable given how long MS has been trying with varying levels of dedication to make this happen. (You can write a hello world app in Xamarin Forms in iOS, Android, Windows UWP, Windows WPF, macOS, Linux and Tinzen right now, but that's about all you can do on all of those platforms and you can't do web.)

As Steve Baulmer said "Developers! Developers! Developers!". He was right. Microsoft has lost the developers and has to get them back. Short of a miracle with Xamarin Forms that Maui doesn't provide, they have no plan to get the developers back. They need one yesterday, because they have it on server side and web but not consumer/business consumer.

So if Microsoft wants to ignore me, then fine, but tell us .NET devs how you're going to accomplish what I've set out. How you're going to get all of those developers that are on macs back to windows, building windows apps. Because the answer right now is not an answer. It's a punt of "use whatever you want". It is neither compelling or viable and developers know it, which is why they're largely ignoring it. (even PWAs in the windows store are almost non-existent other than the ones that Microsoft wrapped themselves and Twitter)

I'm all ears for a better, viable plan. I just have yet to see it and have yet to even see anyone at Microsoft even talk about the need for a plan.

@saint4eva
Copy link

Summary

Flutter has the momentum, Google has asked for help, and the adoption of Chromium for Edge has proven that this works for Microsoft. It's now or never for Microsoft in both end user developer space and end user in general. Xamarin in any form (Maui or otherwise) isn't going to move the needle. Flutter already has 50,000 apps in the stores that all become quality Windows apps if Microsoft properly supports it.

Why do you keep editing this issue?

@JohnGalt1717
Copy link
Author

@saint4eva Spelling mistakes and clarifications to address concerns to makes it a better proposal. Which is kinda the point and done ALL THE TIME in dotnet proposals.

@tomasfabian
Copy link

@JohnGalt1717 sorry, but I feel like my original questions haven't been answered in your long post.

@JohnGalt1717
Copy link
Author

@tomasfabian I think that my comment conclusively answered your primary question. In short: Either Microsoft gets developers back to Windows or they're IBM but this time with Azure which worked out nicely in the short term and disastrously in the long term. See also IBM's stock price.

Google doesn't have to care. And it's obvious that they care significantly less than other platforms. But Google caring about Windows success one way or another or caring about Flutter on Windows is irrelevant to the success of my plan because open source means that as long as google accepts contributions to the rendering engine for Flutter on Windows (and hopefully web assembly) the rest has nothing to do with Google and we know that they, because they're exposed will do so based on their acceptance of Microsoft contributions to Chromium. (which is why I didn't understand why the question was relevant.)

@pauldotknopf
Copy link

Thank you @JohnGalt1717, this is perfect!

If Microsoft really cares about developer productivity, they'd quit trying to create vertical solutions that don't work well with other platforms.

I mean, I don't know how long @SteveSandersonMS worked on the integration itself, but it looks like he was quickly able to leverage all the benefits of Flutter in relatively little time. His demo was damn-near complete in what developers would need (aside from maybe deployment). It would be stupid for Microsoft to not at least consider it.

I'm seeing no down-sides and a lot of up-sides. I'd really like to hear an honest reason why this isn't a good approach.

@maxpiva
Copy link
Contributor

maxpiva commented Jun 25, 2020

Love the idea, but I think Microsoft should bet on both horses, and not Dump MAUI.
I know it will get more fragmentation, but there will be a clear migration path instead of a new paradigm.

Flutter C#

and

NET UI -> Xamarin Forms (MAUI) + WPF/WIN-UI + UNO (Xaml and UI Unification).

SO
+1 ADOPT FLUTTER
-1 DROP MAUI

@richlander
Copy link
Member

This issue is off-topic. This repo is not intended as a general message board. I am closing this issue.

We welcome feature requests or bug reports that are focused on making .NET MAUI better. Feel free to open issues like that.

@pauldotknopf
Copy link

pauldotknopf commented Jun 25, 2020

Where would you recommend an issue similar to this being opened?

@richlander
Copy link
Member

If you want to use Flutter and C#, then maybe start talking to the Flutter people about that. That's a laudable goal.

@tomasfabian
Copy link

tomasfabian commented Jun 25, 2020

@pauldotknopf all of you have invaded this repository in a nonconstructive way. Please leave peacefully

@JohnGalt1717
Copy link
Author

JohnGalt1717 commented Jun 25, 2020

@richlander respectfully, this isn't off topic. This is explicitly on topic. The suggestion is to use the Xamarin tooling, Xamarin ios/android interfacing and use the Flutter rendering engine instead of what has been presented as the plan for MAUI's rendering. And since MAUI is simply Xamarin Forms warmed over, and the suggestion is to make it better in a very specific way that helps Microsoft why would you silence the conversation that would result in a better product than what the plan (if you can call it that) for Maui?

If you want to call Microsoft's version that uses the flutter rendering engine for cross platform MAUI, great, that works just fine because it's 90% Xamarin tooling that is being proposed.

Given that Maui is the future of Xamarin Forms and this is a specific plan for the future of Xamarin Forms, where else would be more on topic? I can't think of anywhere. The general dotnet group? That's less specific and less relevant. There is no (public) windows group where it would be absolutely relevant, so we can't post it there.

As for the ridiculous comment about talking to the flutter people (that have 0 interest in facilitating anything like that any more than Google had any interest in facilitating Edge using Chromium), that completely fails to understand the massive problem Microsoft faces. You're basically telling us to leave Microsoft products because staying with Microsoft is not a viable solution as it is currently outlined by Microsoft leadership. If you silence the very people that are trying to help you come up with a real solution then you're doomed. And that you've done exactly what I'm proposing directly with .net core on linux, and Edge on Chromium should demonstrate that I'm right and on to something. So if you have a better more cohesive plan, then Microsoft needs to tell us because as it stands it isn't Maui which you've said won't work on web any time soon thus making it a non-starter compared to flutter from day one.

But I'd guess that like @SteveSandersonMS got his Flutter initiative killed in a heart beat and we got the lame bindings for Xamarin Forms instead, I'd guess this is more about politics than the idea. And no one that matters in the company has pushed a solution yet, which tells us all, that Microsoft is doomed in the consumer space without a cohesive plan or vision. This is the Microsoft CEO's massive blind spot. Fortunately in browser he had Joe Belfiore to champion, and .net core running on Linux was in his wheel house. The question is if anyone in the .net/windows teams will step up and be the champion here, see the dire risk to Microsoft if they don't take this seriously and push it forward and overcome the "not invented here" road blocking.

Over and out. Here's hoping that more forward thinking people in MS see this and take it to heart and in the spirit intended.

@richlander
Copy link
Member

Flutter and MAUI are not equivalent. One is a rendering engine (writes pixels) and the other is an abstraction. You know this. We sincerely wish the Flutter project lots of success building a cross-platform rendering stack. It's a hard task. This project isn't planning on taking that on, or relying on such a stack. It's not a small shift, as you surely realize. We're staying the course of providing a cross-platform abstraction. That's not going to change. It's a choice, and one we're happy with.

As a result, this conversation is off-topic. If someone wants to build a MAUI renderer on top of Flutter as an AN OPTION, that would be interesting, and we'd entertain that design proposal.

Please, keep it respectful. I'm locking this issue. Continue using the same kind of language, and I'll ban you from the org for 7 days.

@dotnet dotnet locked as off-topic and limited conversation to collaborators Jun 25, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests