MvvmCross / MvvmCross-Forms

Support for Xamarin.Forms on MvvmCross: The .NET MVVM framework for cross-platform solutions, including Xamarin.iOS, Xamarin.Android, Windows and Mac.
http://mvvmcross.com
6 stars 2 forks source link

Add UWP support #22

Closed martijn00 closed 8 years ago

martijn00 commented 9 years ago

There is a preview available here: https://resources.xamarin.com/xamarin-forms-private-preview.html

@PeterBurke Would it be possible for you to investigate to add support for this?

PeterBurke commented 9 years ago

Hi Martijn

Currently I am retrofitting Xamarin.UITest into all of the current samples. Quite interesting really, alone the way I have prepared a very long list of issues Xamarin need to address. I have the automated testing working on the Movies sample, quite pleasing to watch it running in the simulator for Android. I expect to have this ready for review this week. It will also require some work on the wiki.

By the way, Xamarin.UITest supports iOS and Android, but none of the windows variations at this stage.

In relation to UWP, I registered with Xamarin for UWP for access to this private preview months ago but have yet to receive anything from them. At that time they did not have much of the XAML working, for example no grid. Also Xamarin XAML is not the same as Microsoft XAML and in order to support UWP they will need to reproduce the new MS extensions plus get it to compile on the Windows 10 platform.

So at this stage I would say that it is not going to be helpful for quite a few months, but we can of course be slightly ahead of them on this rather than being 12 months late as we were with Xamarin Forms.

martijn00 commented 9 years ago

Hey @PeterBurke

I just saw this: https://forums.xamarin.com/discussion/54401/xamarin-forms-for-uwp-preview-now-available#latest

Would you be able to look into it?

Thanks for all the help!

PeterBurke commented 9 years ago

Thanks Martijn I missed that one as it was not mentioned on the Xamarin Blog I check daily, Looking at it, it seems somewhat trivial, which I will explain, plus I note that they have refrained from putting the package up into NuGet, instead you download a zip, so all up it looks like not much to get excited about.

What we already provide is a Presenter for Windows 8.1 and another for Windows Phone Silverlight. We did not provide one for windows Phone 8.1 sans Silverlight and I do not think we should. Now given the fact that the Windows 8.1 Presenter will work for both Windows 10 and Windows 10 Phone, I wonder what this release would provide in addition to that, and although I have not tried it, I suspect nothing at all?

Windows support is a problem child right now, with interest in supporting 8.1 declining daily but with Windows 10 heading off in a bold new direction, but not yet significant from a development perspective.

There is of course the issue of MvvmCross of supporting UWP directly, i.e. not via Xamarin Cross Platform, but such an initiative would not belong under the MvvmCross-Forms URL.

There was some indication from Xamarin that they might be issuing enhancements to their XAML dialect that would provide similar capability as the Windows 10 Continuum: adapting to different screen geometries so that you only need to publish one version of the App, dynamically switching presentations in response to orientation events, and the most sensitive issue being the ability to plug your phone into a dock and have the running Apps instantly reconfigure into a large screen geometry.

Although I have no inside information, I would expect that Microsoft would have most of these innovations covered with patents and licenses and would not be happy with the technology to be taken up via Xamarin in iOS and Android, but it may be possible if the resulting apps were only sold via the Microsoft Store or if the other stores agreed to pay licensing fees to Microsoft.

My advice is to simply wait and see how this evolves right now. The actual adoption of MvvmCross-Forms seems quite low right now, but there was one recent example on the Xamarin blog of someone converting an pre Xamarin Forms MvvmCross application using MvvmCross-Forms.

In the mean time I have been accepted as a member of the Xamarin CI team and hope to deliver some interesting stuff soon.

martijn00 commented 8 years ago

@PeterBurke UWP support has been added to nuget in Forms 2.0. Would you be able to add support to the plugin?

Is there any way to contact you other then here? Maybe on Slack or something?

PeterBurke commented 8 years ago

You can find my personal email address by following this link. But be aware I helped develop the Vamsoft ORF Spam blocker and use it to block spam. You may be blocked the first time you try to email me, but I may later whitelist you so you may get through later.

You mentioned Slack so you may be interested in slack is not making a universal windows app because its not universal enough. I am not on Slack but I am on Skype.

I am involved in a number of projects right now and have no desire to rush Xamarin UWP presenter given the fact that it does not actually offer anything new and the existing windows 8x presenter will work just as well in its place.

It is interesting that Slack complain that because UWP Apps cannot be installed on Windows 7 and Windows XP, and right now that happens to be a much larger market. So they are offering two different Apps for windows instead of a universal app.

This leads me to another idea I have. This is to create a local App Server that uses the latest Microsoft DNX 5 ASP.NET 5 / MVC6 (went release candidate last week). I have been playing with it for a while now. VS 2015 on windows, VS Code (free download) on Mac OS X and Linux.

So the idea is to run this web server locally on your desk top and it runs UWP apps. You then use a modern web browser to access your apps. It sounds complicated but it is actually a lot easier than you might think.

Basically XAML based applications are based on extending SVG. So you write a number of low level controls that emit SVG instead of drawing pixels in the graphics card. Now HTML5 can include child elements that are SVG. You can even have child elements of SVG that are HTML. So essentially this web server emits a mix of HTML and SVG with CSS and JS all in line. The JavaScript is kept very simple, e.g. it might echo what you typed into a text box as text in the text box, but ultimately it uses async JSON to send to the server and receive from the server. Fits the MvvM pattern perfectly with view in the browser and ViewModel in the server. Now because the server is sitting on your desktop the communication is incredibly fast. The idea would not work very well if the server were behind a slow and not completely reliable internet connection.

Only one problem: within two years I expect that XP / W7 to be a much smaller target, but there is still Mac OS and Linux, plus this app would allow UWP apps to run on Android and iOS devices provided they have the grunt to handle it.

NightOwlCoder commented 8 years ago

Hey there Peter. maybe I can also help? With every other component I use moving to support UWP, I'm kind of in a limbo here.

I've have a Xamarin Forms using MVX-Forms, but I code/test using WinRT (for speed). it has been a pretty good setup but I'm consistently seeing UWP support, for instance, Acr.Dialogs.

I'm quite intrigued by your comment:

"have no desire to rush Xamarin UWP presenter given the fact that it does not actually offer anything new and the existing windows 8x presenter will work just as well in its place."

You are not implying I can just add Windows 8.1 nuget into UWP right?

well, anyway, if you want, I can help you port the presenter to UWP with your guidance.

PeterBurke commented 8 years ago

Hi there Night Owl Coder!

It is very good to see someone using MVX-Forms!

The history here is that we finally got MVX-forms working with a few samples about June and at that stage apart from Android and iOS the only windows supported platform was Silverlight for Windows Phone 8.

Early May Microsoft + Xamarin went to RC on Visual Studio 2015, and a few things changed in relation to windows support. The existing Windows Phone 8 via Silverlight was no longer supported. In its place they supported the following:

So we then set about creating presenters and examples for the first two of the three.

So July and Windows 10 arrives. One difference in windows 10 is that there is no longer a distinction between phone and tablet as there is with Windows 8.1.

The other thing about Windows 10 is that it is backwards compatible with the Windows 8.1 direct. Therefore using the MVX Windows 8.1 direct that we released you can target Windows 10 and Windows 10 Phone.

So the question arises what is missing that would provide an incentive to develop a windows UWP MVX?

Well actually not much at all at this stage. The issue here is that cross platform development is dependent on Xamarin Forms and a lot of the new and exciting features of UWP including continuum have yet to make it into Xamarin Forms, and indeed may not do so due to many issues.

You can review James Montemagno's blog and I should point out here that this blog plus Xamarin Forms 2.0 was released just last week. He states: "Xamarin.Forms 2.0 not only adds preview support for Windows 10 apps, but also add a plethora of additional features, optimizations, and awesome for your mobile apps."

Right now I have no further information about any of these, but again the windows 8.1 Tablet apps can in fact be published to the windows store and used by both Phones and Tablets.

Note however that for both 8.1 and 10 because there is no Xamarin continuum support you would need to publish multiple versions of the same app if you wanted to provide for multiple screen sizes.

I actually did some work previously on Windows 10 and it will be quite easy for me to create the new presenter. However there are several other contributors to this site and we need a consensus decision. Previously there was a suggestion that we remove support for all the previous windows platforms when we move to Windows UWP. Easily done via a new version number, leaving those earlier versions still published for legacy apps but no longer the latest release.

PeterBurke commented 8 years ago

Hi Martijn I have been monitoring my spam wall logs and I did not see any attempt to contact me that could be you. I would like to add you to my email whitelist but cannot do so until I know your email address. We can then discuss things privately.

martijn00 commented 8 years ago

Hey @PeterBurke i tried, but all kind of weird errors poped up. My email is mhvdijk at gmail dot com