Coder Social home page Coder Social logo

69grad / fabulous.xamarinnative Goto Github PK

View Code? Open in Web Editor NEW
15.0 5.0 0.0 380 KB

A Model-View-Update Proof of Concept for Xamarin.iOS and Xamarin.Android

License: Other

F# 100.00%
fsharp xamarin xamarin-ios xamarin-android xamarin-library functional mvu elm-architecture model-view-update fp

fabulous.xamarinnative's Introduction

Fabulous.XamarinNative

What is this?

This is a very early proof of concept, intended to explore possible use cases for Fabulous running on Xamarin.iOS and Xamarin.Android. It is based on the "half-elmish approach" of Fabulous.StaticView, which was built on top of existing XAML views for Xamarin.Forms applications.

Why does it exist?

We think that Xamarin.Forms is nice for some scenarios, but building native apps with Xamarin.iOS and Xamarin.Android still has its advantages for certain areas as well. We also believe in MVU as the superior architecture approach compared to the ubiquitous MVVM. So we would like to have a Fabulous implementation for native Xamarin apps. Simple as that :-).

Constraints

Xamarin apps can be built in all languages that are supported by .NET โ€“ in theory. In practice, the Xamarin tooling, e.g., the parts that automatically generate the code for outlets and actions created by Xcode Interface Builder, has not been given as much love for F# as it has been given for C#, and therefore suffers from some very bleeding edges. The focus of the Xamarin universe clearly is on C#, where tooling works excellent.

Another caveat is that native UIs on both iOS and Android are heavily based on object-oriented concepts. So building them in a functional-first language such as F# would work โ€“ in theory. In practice, one would be spending much time dealing with things like inheritance, mutating state, and eventually writing a lot of ugly boiler-plate code.

In other words: We think that it makes sense to keep writing the UI stuff in C#.

It's a library, not a framework

We think of this as a library that is being used behind the scenes and across the apps. So a Fabulous.XamarinNative program will be hosted by the "views" aka UIViewControllers and Activities and enable you to share common logic behind those platform-specific frontends.

However, it will not deal with things like navigation and other tasks that are taken care of by heavy-weight frameworks like MvvmCross.

Credits

This library would not be possible without the fabulous Fabulous library!

fabulous.xamarinnative's People

Contributors

aspnetde avatar dependabot[bot] avatar klausmoster avatar sebastiannikles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.