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

MvvmCross roadmap 5.x #1415

Closed
15 of 22 tasks
martijn00 opened this issue Aug 23, 2016 · 41 comments
Closed
15 of 22 tasks

MvvmCross roadmap 5.x #1415

martijn00 opened this issue Aug 23, 2016 · 41 comments
Labels
t/docs Documentation type t/feature Feature request type
Milestone

Comments

@martijn00
Copy link
Contributor

martijn00 commented Aug 23, 2016

Proposal for MvvmCross 5.0 release:

Proposal for 5.x

Proposal for 6.0

Work on MvvmCross 5 will happen on the develop branch. From now on we will use this as our main branch, and use the 4.0 and 3.x branches for bugfix releases(if necessary).

Of course we could use your help so get ready to jump in! Please provide feedback so we can get our requirements ready for this release!

@martijn00 martijn00 added this to the 5.0.0 milestone Aug 23, 2016
@Cheesebaron
Copy link
Member

I think a better structure for working is. Ditch the 4.0 and 3.x branches entirely. Make a develop branch where magic happens. Then push releases and tags into master from develop.
I am not a big fan of having silly LTS support in a OSS project, where resources to begin with are sparse. If that is something you want to do, go ahead and do it in a fork or something.

Otherwise, I like the list. Silverlight needs to be eliminated anyways, if we are switching to NetStandard if I recall correctly.

Bait+Switch for plugins is just a matter of doing all the grunt work. It fairly straight forward.

I tried doing more async startup, but there is always a problem that the platform itself is not async, but there might be ways around that.

Not sure what you mean with Reloading and caching of Views wand ViewModels (with data), you might need to elaborate that a bit.

Repro samples in main repo is a good idea. A more complete API sample app would also be great. Again time and grunt work has to go into that.

@Cheesebaron
Copy link
Member

A couple of other thing I'd like to see in 5.0 is something similar to RxUI's Interaction concept, for dialogs etc.

@promontis
Copy link
Contributor

Nice list! What about tackling the plugin loading (order and such)?

What do mean with 'New event hooks for View > ViewModel loading'? Is that to measure performance and such?

@Cheesebaron
Copy link
Member

What about tackling the plugin loading (order and such)?

I think that has been solved for the DownloadCache plugin by lazy loading, no?

@martijn00
Copy link
Contributor Author

martijn00 commented Aug 24, 2016

Which NetStandard profile should we choose? If we go for 1.2 i suggest to remove everything related to silverlight and win8.0.

If we want to move up to 1.4 also wp8.1 and win8.1 will be removed and only Xamarin project types, UWP and .NET 4.6.1 and higher will be supported.

See https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md#mapping-the-net-platform-standard-to-platforms

@Dexyon
Copy link
Contributor

Dexyon commented Aug 24, 2016

I think a better structure for working is. Ditch the 4.0 and 3.x branches entirely. Make a develop branch where magic happens. Then push releases and tags into master from develop.
I am not a big fan of having silly LTS support in a OSS project, where resources to begin with are sparse. If that is something you want to do, go ahead and do it in a fork or something.

I agree on this one. We should have a dev for bleeding edge merges/development and is for people who want to use nightly-builds. Our Master should represent the last releases.

Not sure what you mean with Reloading and caching of Views wand ViewModels (with data), you might need to elaborate that a bit.

Maybe a good idea to have some kind of explanation per point so everybody is on the same page on what needs to be done and what the current status is.
E.G. The nightly builds and CI are quit easy to set-up as there is already a CI env for the Android-support

@Cheesebaron
Copy link
Member

The nightly builds and CI are quit easy to set-up as there is already a CI env for the Android-support

Only thing blocking is building the Mac projects on Windows. Hopefully Xamarin fixes that soon.
I've been setting up builds for a lot of my own projects on AppVeyor, and it works very well.

Maybe a good idea to have some kind of explanation per point so everybody is on the same page on what needs to be done and what the current status is.

I think ultimately we would like a set of issues made from these points, which describe in more detail what they each are about.

@Dexyon
Copy link
Contributor

Dexyon commented Aug 24, 2016

Maybe take another step of porting Mvx to TvOS/WatchOS?

@cjlotz
Copy link

cjlotz commented Aug 24, 2016

The one aspect that still requires a lot of manual wiring up is the menu navigation in Android. Would be nice to do menu inflation. I know this is a non-trivial exercise though.

@kjeremy
Copy link
Contributor

kjeremy commented Aug 24, 2016

Menu inflation would be fairly error prone. There isn't a hook into menu
inflater... If I recall you can't override it on any useful way but I will
have to check.

On Aug 24, 2016 4:42 PM, "Carel Lotz" notifications@github.com wrote:

The one aspect that still requires a lot of manual wiring up is the menu
navigation in Android. Would be nice to do menu inflation. I know this is a
non-trivial exercise though.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#1415 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEIBRP79Bgjc-NStbCNZ4xJMlTO2qVG3ks5qjKyqgaJpZM4JqtY8
.

@nmilcoff
Copy link
Contributor

A hard (but valuable) enhancement is to add a "destroy" callback to ViewModel's lifecycle. Let's say a place to dispose resources, such as subscription tokens...
Althougt this has been discused many times, I think we are all handling this in similar ways. Maybe we can make something standard.

Btw I'd like to add a new sample in Samples repo that integrates other libraries like PropertyChanged.Fody or AsyncEx to showcase usage.

@kjeremy
Copy link
Contributor

kjeremy commented Aug 30, 2016

Can we remove CrossUI? Does anyone use it?

@heytherewill
Copy link
Contributor

I didn't understand the last item, @martijn00. What does it mean?

@cjlotz
Copy link

cjlotz commented Aug 31, 2016

I'm still using CrossUI here and there - only on iOS side though.

@Cheesebaron
Copy link
Member

@kjeremy I use CrossUI once in a while. However, it wouldn't be the end of the world if it got removed.

@WillsB yeah, we need clarification on that one. I would guess make it consistent that methods are marked virtual and visibility of important things are correct.

@kjeremy
Copy link
Contributor

kjeremy commented Oct 14, 2016

@nmilcoff I think destruction of ViewModels makes a lot of sense but it probably needs to be tied into the presenter somehow and be heavily configurable. It's not always obvious where to destroy ViewModels but maybe we should provide a Cleanup function or similar (that is called via Dispose) and it's up to the user to figure out the best place to call it (or we provide reasonable defaults).

@kjeremy
Copy link
Contributor

kjeremy commented Oct 26, 2016

I've was looking at cake recently as a build tool and it looks promising. It should help with #1301 and would allow us to dump the pack.bat stuff and automate nuget releases.

@kjeremy
Copy link
Contributor

kjeremy commented Oct 26, 2016

We could also use cake to automate some kind of superbuild via submodules. Dealing with the android support repo can be a PITA if the interfaces don't match the latest nuget package.

@b099l3
Copy link
Contributor

b099l3 commented Nov 4, 2016

I was wondering if now that wearables are becoming abit more popular possibly adding support for watchOS and Android wear?

@nmilcoff
Copy link
Contributor

nmilcoff commented Dec 5, 2016

What about AutoView? Is it still used? It doesn't seem to be in active development

@flyingxu
Copy link

flyingxu commented Jan 11, 2017

No dependency on splash screen for loading app

I don't understand this one.
Currently I'm using MvvmCross for both iOS and Android, and I have removed the splash screen myself. To be honest, I didn't know mvvmcross was depending on splash screen.

@nmilcoff
Copy link
Contributor

What about documentation?

There are a lot of awesome things integrated that have no documentation at all. Mvx is also considered complex to get started with, we should improve the learning curve for starters...

We could open a new issue and list what needs to be documented or what document should be improved / updated.

@Cheesebaron
Copy link
Member

The docs shouldn't hold back a release. There are so many things to document, that we would never get one...

@martijn00 martijn00 changed the title MvvmCross 5.0 requirements MvvmCross roadmap Feb 7, 2017
@martijn00 martijn00 modified the milestones: 5.1.0, 5.0.0 Apr 28, 2017
@andrestalavera
Copy link

andrestalavera commented May 5, 2017

In my opinion, plugins should disappear. Leave the IoC, dependency injection, and above all, the choice to the user to choose the starting mode (Lazy, Singleton, ...)

  • MvvmCross.Plugin.DialogMessage
  • MvvmCross.Plugin.DialogMessage.UWP
  • MvvmCross.Plugin.DialogMessage.Droid
  • MvvmCross.Plugin.DialogMessage.Touch
  • App1.Core
  • App1.UWP
  • App1.Droid
  • App1.Touch

In MvvmCross.Plugin.DialogMessage\Plugin.cs, as modernhttpclient

    public class Derp
    {
            public void Herp(string derrr)
            {
                    throw new NotImplementedException();
            }
    }

In App1.XXX\Setup.cs :

    public Setup(Frame rootFrame) : base(rootFrame)
    {
    }

    protected override IMvxApplication CreateApp()
    => new App();

    public override void LoadPlugins(IMvxPluginManager pluginManager)
    {
        base.LoadPlugins(pluginManager);
        Mvx.LazyConstructAndRegisterSingleton<IDialogMessagePlugin>(() => new WindowsDialogMessage());
    }

    protected override void AddPluginsLoaders(MvxLoaderPluginRegistry registry)
    {
        // do nothing more here
    }

    protected override void InitializeLastChance()
    {
        Mvx.Register<IDialogMessagePlugin>(() => new WindowsDialogMessage());
        base.InitializeLastChance();
    }
}

And merge idea with Balt and switch plugins

@jaroslavrehorka
Copy link

Does anyone have a good alternative to CrossUI.Dialogs? I use it with iOS only, however the only alternative I have found is Monotouch.Dialogs which misses some stuff (like changed events or common ValueElement)

@mvanbeusekom
Copy link
Contributor

@jaroslavrehorka not sure this is the right place for this question, Slack or StackOverflow are better suited places. However I use Acr.UserDialogs a lot.

@jaroslavrehorka
Copy link

@mvanbeusekom you are right, I will ask there. (I use Acr.UserDialogs too,
nevertheless CrossUI has a bit different use case for me - I use it for making custom dialogs and modals]

@Cheesebaron
Copy link
Member

@mvanbeusekom CrossUI.Dialogs is not the same as AlertDialogs. CrossUI.Dialogs was based on MonoTouch.Dialogs, and was a way to declaratively define UI in code. Very nice for table based views.

Problem with CrossUI is that no one was maintaining it and it had serious flaws, such as two-way bindings rarely working.

@jaroslavrehorka we don't provide an alternative. You could maybe use Xamarin.Forms instead for this.
Alternatively, you could switch to the 4.4.0 tag, yank out CrossUI and maintain it yourself and just build it against newest MvvmCross

@munkii
Copy link
Contributor

munkii commented May 19, 2017

@jaroslavrehorka We use CrossUI.Dialogs too. With it being binned in MVVMCRoss 5.0 and our client wanting to support approx 110 new data entry forms I am in the process of building a PoC that will allow moving from MvvCross Native Views to XF views and back out. I have something mostly working for Android, working on iOS now

@Cheesebaron
Copy link
Member

What is it that makes MonoTouch.Dialogs better than say MvxCollectionView with a simple override of a GetView to select template based on ViewModel?

@jaroslavrehorka
Copy link

I have never tried to do that with MvxCollectionView, but what I like about CrossUI.Dialogs, resp. about MonoTouch.Dialogs is the way of declaring the UI. It is really easy to write or read and the only issue I have with data binding is binding the result of radio selection, everything else work just fine :).

@munkii nice! do you need any help?

@munkii
Copy link
Contributor

munkii commented May 19, 2017

I'll get it up on Github today and list my current issues. After iOS I'll need to get WPF and UWP working :-) Then ye any help would be awesome

@martijn00
Copy link
Contributor Author

@munkii We would like to add support for mixing native views with Forms views in the MvvmCross.Forms package. Maybe you could update the presenter in there?

@munkii
Copy link
Contributor

munkii commented May 19, 2017

I will once we get this Proof of Concept HACK working. It's not pretty right now

@munkii
Copy link
Contributor

munkii commented May 22, 2017

@jaroslavrehorka (and anyone else who is intertested) https://github.com/munkii/MvxAndXamForms has my PoC so far.

@munkii
Copy link
Contributor

munkii commented May 31, 2017

I've integrated my PoC inot a Fork of MVVMCross here https://github.com/munkii/MvvmCross. There is a new project under Forms\TestProjects called "NativeToXF". Currently broken on UWP

@martijn00 martijn00 modified the milestones: 6.0.0, 5.1.0 Jul 17, 2017
@martijn00 martijn00 modified the milestones: 6.0.0, 5.0.0 Oct 30, 2017
@martijn00 martijn00 changed the title MvvmCross roadmap MvvmCross roadmap 5.x Oct 30, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
t/docs Documentation type t/feature Feature request type
Development

No branches or pull requests