v3 will be the most ambitious MvvmCross release to date.
For v3, my mission is to continue…
Native, Cross-Platform, Portable, Reusable C# delight for all.
Is it v3 or VeeThree?
It's pronounced Veeeeeeeeeee-Threeeeeeeeeee
What is MvvmCross?
It’s a cross-platform framework for efficiently and effectively developing delightful C# apps.
So far, MvvmCross has evolved through:
How has this happened?
Throughout the last 15 months I've been very lucky to have had:
- wonderful customers;
- skillful co-coders who continue to teach me so much;
- a small number of utterly awesome contributors;
- very thoughtful issues, problems and questions logged, discussed and resolved;
- superb tools to work with - especially from Microsoft and Xamarin.
- some donor sponsors - JetBrains (Resharper); PixelCut (PaintCodeApp); Infragistics (NetAdvantage); Microsoft (BizSpark); Nokia (Lumia)
Thanks to all!
What is V3?
All of the feedback I've had from the users of v1 and vNext have helped me shape the requirements and features that will be at the beating beautiful heart of v3.
- Add Mono.Mac and Xamarin.Mac platforms
- Add high quality documentation
- Enable MvvmCross Plugins to be easily used by non-MvvmCross and non-Mvvm code.
- Enable other Mvvm platforms to use the MvvmCross data-binding layers
- Improve all platforms:
- On Android, we will extend support for Android 3 and 4 features – it’s time for Android to move Android on from Gingerbread!
- On Touch, we will provide better integration with existing developer workflows including both XIB and Storyboard workflows
- On Windows Phone and RT, we will look for better designer and Design-Time data support, plus we’ll provide additional Live Tile and background service samples.
- For Unit-Testing to provide additional helper classes so that tests can be written and maintained more efficiently
- Make the MvvmCross APIs cleaner, simpler, easier to use and easier to extend
- Extend Swiss Binding further - remove the dependency on JSON.Net (I'll still *love* JSON.Net, but you'll no longer have to share that love)
- Consider using WeakReferences in Bindings
- Tackle some key known open issues –including the infamous Heizenbugs
- Make the MvvmCross ecosystem simple to navigate – making it easier for users to find 3rd party plugins and extensions.
- To be NuGet ready – even if NuGet isn’t ready for all the MvvmCross platforms
Beyond these, there’s one big other goal I’d also like to add:
- Async/await on all platforms
Beyond that, there are other things I’d like to achieve – like adding a CrossGraphics plugin, perhaps adding Tombstoning support, perhaps adding a showcase app sample, perhaps providing more Android service examples, etc, etc, etc, etc, etc, etc - but with time short all those can come in iterations beyond v3 if they don't make the cut.
So should I use vNext today?
If you write your existing apps today targeting vNext, then v3 will feel very familiar. It will continue with:
- interface driven development,
- portable class libraries for sharing code
- plugins for the times where platform abstractions are needed
- using INotifyPropertyChanged-based Mvvm to maximize code share
I like the pain of working with Beta code. Can I use v3 today?
Not today... today the code is pre-Alpha and changing very quickly...
... but I will blog details of in-progress v3 changes very soon :)
When will this happen?
I’m working on v3 now.
It’s ‘spare time’ work only for now - and work commitments are doing their best to reduce that time.
However, I expect customers and partners to start being able to use versions of v3 almost from the start – so I expect to be committing the source and blogging about the changes in the coming weeks – and I expect to recommend v3 as the stable platform sometime in the next 3 months.
When is v4 arriving?
I’ve no concrete plans for v4… and no roadmap in my head beyond v3.
Just as with vNext, after the v3 release we can continue to easily add small iterations … so I’m hopeful that v3 will be followed by much smaller releases (commits), each one adding new features without any significant breaking changes.
I’m 100% sure:
- MvvmCross will be driven by its use - both in my projects and in your's
- The future will surprise us all!
Can YOU help?
- as long as you can agree to contribute under MvvmCross’ Ms-PL license.
- as long as you can put up with @slodge OCD…
Some significant code changes are already underway now. If there’s some way you want to help, please don’t hesitate to get in touch!
However, please remember I am doing this for free, I am trying to do this quickly, and I am learning and solving as I go. Please always think of using StackOverflow, Xamarin forums or GitHub Issues for questions before interrupting me by email, chat or skype; please don't get upset when I don't take on-board one or more of your ideas; please don't get upset when someone else does the work you wanted to do; and please don't be off when we don't implement some inferior way...
Please also remember that the code is Ms-PL - so you can always fork...
Can I donate?
The vast majority of gear and time needed for MvvmCross is funded out of my company's own time/money and out of my own evening, weekends and early mornings. I use MvvmCross in most of my customer projects - so it is partly a commercial investment - but I've been careful to choose an open 'free' license for the code, and I 'freely' try to promptly answer all queries and issues that get logged on StackOverflow and on GitHub.
The time and money I invest in MvvmCross is all about 1 coder, 5 laptops, 6 phones, 3 tablets, 999 problems, and the thrill of F5 :)
However, a few companies have provided some things for free - thanks:
- JetBrains (Resharper),
- PixelCut (PaintCodeApp)
- Infragistics (NetAdvantage);
- Microsoft (BizSpark)
- Nokia (a lovely Lumia!)
If you know of a business that is interested in MvvmCross, and they want to contribute to the project in some way, then please do get them to get in touch.
These contributions are all very much appreciated.
Now... back to the code....