Forum Cross Platform with Xamarin

Noesis - vector- and XAML-based cross-platform GUI framework

Hi there!
Noesis(link http://www.noesisengine.com/) is a GUI framework based on the same technique as Microsoft's WPF (Windows Presentation Foundation), but with cross-platform abilities and more focused on good rendering performance. It is used for extremely flexible GUI solutions, mostly for games and other realtime 3D-applications, but it is equally well suited for general applications.

In my view this would be the perfect companion to Mono/Xamarin for cross-platform applications.
I have been using WPF for several years, and it is by far the most flexible and well-done GUI framework I have ever used. There are two major shortcomings, however - it is Windows only, and it suffers a bit performance-wise if you make huge, realtime-updating GUIs.

Noesis seem to adress both those very issues. There is a trial version of the plugin they make for the Unity game engine, and I've tried it out. It is definitely the absolutely best GUI plugin for Unity - and there are many to choose from.

Being able to utilize the WPF based techniqe of Noesis for our games made in Unity is fantastic. It would, however, be even more fantastic if we could use Noses with Mono/Xamarin.

Noesis have been in contact with Xamarin discussing if a version of their GUI framework would be of interest for the Mono/Xamarin community. I ask you to check this technique out and spread the word. I for one put my vote in for Noesis+Mono/Xamarin to happen.

Best Regards
///JmD

Posts

  • GuillermoGutierrezGuillermoGutierrez ESMember ✭✭✭

    Hey Jan, thank you for you info. We already heard from Noesis GUI from Jesús in this post.

    Gotta love this kind of comments coming from the creators:

    It is definitely the absolutely best GUI plugin for Unity

  • dapugdapug USMember ✭✭
    edited March 2014

    Miguel de Icaza, please read...

    Xaml needs to be a part of the cross plat strategy, whether you roll your own, or partner with something like NoesisGUI.

    Full Disclosure:

    I am a former product manager of WPF and Silverlight, helping bring this technology to the world (and push to the forefront at one point in time).

    My views are biased, sure, but I second JmD's suggestion here. And actually, I'm not completely biased, in fairness, as I no longer work for MS, I don't work for NoesisGUI, and I have been using non-Xaml technologies ever since leaving Microsoft. I've given other frameworks and technologies as best a chance as I could in recent projects. And I can tell you, I cry in my pillow at night due to not having what I know to be such a powerful, flexible, usable GUI available to me outside of Windows 8. Ok, the cry comment was an overstatement, but still. :)

    Seriously folks, whether you be a fan of MS or not, you need to appreciate good technology no matter its origin, and this is genuine, good tech built by some very intelligent people. When Silverlight was nearing it's "death", the buzz was all about HTML5 and how awesome it is. Sure, you can throw some pixels on a canvas now, and CSS3 is awesome - ONLY when conjoined with JS via LESS or SASS, and even then, you still must hire a Ninja to sort out the simplest thing such as right aligning and anchoring something. LAYOUT... goodness golly folks, HTML+CSS+JS is abysmally terrible at layout. This is because it is hyper TEXT markup at its core, not designed for APPs. The fact that HTML5 relies on JS to do anything useful is indicative of its weakness and improper application. As for other GUIs... even if they are powerful under the hood, they aren't as usable by devs and designers to get things done fast and effective without hacking around. I'm waiting to be impressed.

    Now as for NoesisGUI, the concept of using Xaml is great, but like anything, the implementation is not perfect. To use this in Unity is kind of a backward approach compared to WPF/SL. Meaning, WPF/SL markup played a roll in behaviors and animation, but in NoesisGUI the markup (as far as I can tell) is used pretty much to describe a visual, and then code is relied on to breathe any life into it. But I think this is still applicable, and has great potential. I have yet to really evaluate it for things like DataBinding, but that will be key to success. The downside of Unity that they need to figure out is apps that are primarily 2D vector (their engine does not accommodate such, but sure should). In Unity, 2D is ok for little "static" objects that make up a HUD over an immersive 3D scene, but not if you try and use 2D as the primary scene itself, with animations.

    Xamarins biggest competitor (IMHO) is Qt, which uses QML, which is an alternative to XAML. Meaning, people are WANTING a good declarative markup cross plat. But guess what... they dont have C# and you do, and people prefer this over C++/JS. Xamarin can NAIL this by offering both markup and language that people prefer. Or, ignore. Your call.

    Lastly, on the topic of cross platform in the title of this thread, I'd like to see XAML on consoles, and for that matter, Xamarin itself supported at all on consoles. Cross plat ain't cross plat until its cross plat. :) Unity is in a GREAT position in being able to deploy to Mac OSX, iOS, Android, Windows (XP+), WinRT, WP8, AND Xbox, PS4, Wii U.

    Xamarin... ?

  • jsantosjsantos ESMember

    Nothing can beat the expressiveness of a declarative language to describe the user interface. I have been working with UI engines since 15 years ago and XAML represents a new level. I got so impressed 3 years ago that we decided to start noesisGUI, a portable solution.

    Just a clarification:

    but in NoesisGUI the markup (as far as I can tell) is used pretty much to describe a visual, and then code is relied on to breathe any life into it

    Markup in noesisGUI is almost as powerful as in WPF. We have many examples in our SDK that have 0 lines of C++/C#. I invite you to try our trial and give us feedback in our forums.

    Thanks!

  • RobertSalitaRobertSalita USMember ✭✭
    edited March 2014

    We are evaluating Xamarin and Qt/QML. A big negative for Xamarin is the lack of cross-platform markup. If Xamarin had suport for XAML everywhere, that would be a home run for Xamarin. Of course it would need to be stable and performant -- ahem.

  • SKallSKall USMember ✭✭✭✭

    What type of markup are you guys after? Something like HTLM5 but with a C# runtime or generic markup which translates to native controls?

  • RobertSalitaRobertSalita USMember ✭✭
    edited March 2014

    For us, first choice is cross-platform WPF XAML because of legacy issues. Second choice is C++ or .Net (C#) with cross-platform markup, we are unsure of which platform will best meet our needs. We are leaning towards native apps.

    Whatever choice we make, it needs to have a 10+ year horizon. Qt seems to meet our requirements. When we adopted WPF/Silverlight, we expected a 10+ year horizon. Instead we got 5 years before the boat started leaking. If Microsoft can't provide a 10+ year horizon, how can a startup like Xamarin be the right choice? I've been watching Xamarin for a year now, their lack of stable PCL support and markup is worrisome. Xamarin has an inviting concept but are weak on execution. We won't feel comfortable about Xamarin until we see stability, cross-platform native UI, preferably with markup, and an outright commitment from Microsoft to make Xamarin/Mono their cross-platform story.

  • JmDJmD SEMember

    Robert - I guess you are referring mainly to Silverlight when you say the WPF/Silverlight boat started leaking after only five years. I don't see any clear signs of WPF beeing put to sleep by MS, allthough it might not have received the attention it deserves in the last years. But maybe I'm missing out on something?
    WPF is - in my opinion - still live an well, with the accompaning Blend for VS only getting better by each iteration.
    I do find the lack of good third-party solutions for XAML a bit uneasing, as well as the lack of really good XAML-exporters for the major vector programs like Adobe Illustrator and CorelDraw.

    Exports from - in my case - CorelDraw is possible if you export to PDF format and change the file extension from pdf to ai, since Blend now imports PDF-compatible Adobe Illustrator files.
    But this seems more like a lucky find rather than a well documented and established workflow.

    The XAML format is quite verbose, and quite a bit more "hard to get a grip on" than some of the alternatives. But this seems to be the price you pay for the enormous flexibility you get.

  • AshokGelalAshokGelal USMember, Beta ✭✭
    edited March 2014

    I very much agree with @dapug‌. I've used almost all the popular GUI toolkits extensively - Android, UITouch, Cocoa, WPF, and HTML. Except XAML/WPF everything else is a nightmare. Not that it is impossible, but it is way less flexible and needs writing a lot of code that can't be shared easily. Layout is the worst. Forget about StackPanel, DockPanel and other container type controls; Grid control almost beats the shit out of everything else for laying out controls.

    I don't cry in my pillow at night but I do cry when I'm asked to implement some UI that is more than changing background color and bounds. I'd love Xamarin investing in XAML support. But to be honest, I don't see that happening, at least not in the foreseeable future because of limited Xamarin resources. However, I'd love to be wrong on this one.

    P.S: Talking about limited resources, I'd also love Xamarin to focus on things that are important esp. the half-baked nightmare that is Xamarin Studio and half-baked XamMac support. For some reason they seem to be way too interested in F# and writing tools, plugins, and all sort of things to integrate F# into Xamarin Studio.

  • dapugdapug USMember ✭✭
    edited March 2014

    @SKall‌ HTML5 + C# scares me. Bad idea. Please read my issues with HTML in my previous post, specifically where I mention "hyper TEXT markup". But I like where you are headed with the idea of generic markup translating to native controls. I guess this thread is all about proposing XAML as said GUI to develop with. Read end of this post for more thoughts here...

    @RobertSalita‌ We also evaluated Qt, but are steering away now. The main problem is platform lock-in. I mean, sure, it seems C++ or JS alone wont lock you in, but when you dig into Qt further, you find too much custom stuff specific to Qt in your project that wont port well if you want to move elsewhere.

    @JmD‌ Sorry to say, but WPF was dead even before Silverlight - I was product manager on both at the time. That said, I hear rumor that some new interest in WPF is brewing within MS. Not sure yet what that is about. The only good I can think of is if they decide to push Xaml as a GUI across multiple platforms, with the help of Xamarin, (hint, hint, Xamarin management). BTW, glad to hear you find Blend ai import useful. :)

    @AshokGelal‌

    I'd also love Xamarin to focus on things that are important esp. the half-baked nightmare that is Xamarin Studio and half-baked XamMac support. For some reason they seem to be way too interested in F# and writing tools, plugins, and all sort of things to integrate F# into Xamarin Studio.

    Thanks for that insight. Bummer to hear. This reminds me of the all too common interest in chasing after the new shiny objects when you don't even have your home base strength covered. This results in FAIL. I hope Xamarin, being new, learns to avoid that issue, fast.

    Possible Solution:

    Today, you can build an app using Xamarin for both "native" GUI, as well as XNA (MonoGame). But this is either/or (cannot do both so far as I understand).

    Microsoft introduced the concept of a XAML + XNA hybrid app for Win Phone. "Windows Phone XAML and XNA App - A project for creating a Windows Phone XAML application that’s capable of rendering graphics using the XNA Framework."

    This is not either/or, but hybrid with the intent of best of both worlds.

    This is also easier said than done. MS owns the platforms and tools (for Windows), Xamarin is more just on the tool side, and either way, nobody controls all platforms. But XNA/MonoGame/Unity all work across platforms, and Xamarin is plays an excellent tool role across them all. Perhaps the question becomes, how to translate XAML to native UI? Or, can it also be translated to XNA/MonoGame? Or, can Unity3d be improved upon?

    I think this is where the folks at NoesisGUI would have better expertise and insight than me.

    Lastly, it just seems like we as an industry as so close to sorting this. Xamarin has a real opportunity here to be in the limelight. Just gotta focus on the big wins and not tinker with things like F# so much. :)

  • RobertSalitaRobertSalita USMember ✭✭

    @dapug, interesting post. Thanks for your voicing your unique perspective.

  • SKallSKall USMember ✭✭✭✭
    edited March 2014

    @dapug, it's the thought of using non-native GUI rendering with a markup that scares me. The GUI tools could be better, especially bindings (although they can be a pain in WPF/XAML as well) but what we have today is good enough for me. The silver lining is that because of the different GUI's one is forced to think about design patterns more carefully if they wish to maximize their code reuse. I for one do NOT want to go back into fixing projects where the presentation and application layers are so tightly coupled that you can't pull the UI out and replace it with another, or write effective unit tests.

  • dapugdapug USMember ✭✭
    edited March 2014

    @SKall‌ I do tend to agree, honestly. But at the same time, there is something that deeply makes no sense about having to train a team (or hire varying talent) to handle 3-4 completely different UI architectures to do the same thing. In the grand scheme, this is a gross waste of time, resources, talent and money (including citizens of the world who ultimately pay the premiums in the end) on all accounts, simply for no other reason than the fact that there are 3-4 competing companies that can't "get along" with a consistent pattern.

    For the record, I am all for standards, but NOT HTML as it pertains to app GUI. The world needs an app standard, and until there is such, we need companies like Xamarin and Unity3d. My bias perhaps sneaks back in for me to say, XAML could be such defacto. It was built as an APPLICATION markup language from it's inception. The only downside is that we dont generally think of things as "standards" if they came out of Microsoft. :) But don't let that be the sole reason to ignore its potential. Besides, Microsoft itself has helped build the HTML standard too, over the years.

  • jsantosjsantos ESMember

    @SKall‌ I think you are mixing here two separate concepts. You don't need native GUI rendering to have separate application and presentation layers. We are creating noesisGUI applications in all our supported platform with exactly the same aspect without losing the possibility of hot changing the UI without touching a single line of code.

    @dapug Talking about standards. It is very important to rememeber here the Microsoft Open Specification Promise about Xaml.

  • SKallSKall USMember ✭✭✭✭

    @jsantos‌, that's not what I was saying. With separate UI layers one is forced to at least think about proper design. When there is one UI developers tend to get the layers mixed. It's extra work for those reviewing the code (and if not done, tends to lead poor quality).

  • JmDJmD SEMember

    @SKall‌ Separating the GUI from the busines logic is of course something that should be done, and it should also be enouraged by the used GUI technology as much as possible. I for one find the XAML way with databindings to be a very good player in this field. The WPF implementation is working well in this respect I think, and Noesis is also coming along well in this respect.

    @dapug‌ Sorry to hear about the lack of investment in WPF from MS. I can't say it is very obvious to an outsider like me, so I guess I'll have to take your word for it. Do you have any insights in to what the alternative GUI technology from MS would be? HTML5 + JS? WPF seems way more powerful and it's been around for some years now, albeit not that common among devs as winforms.

    My main concern about WPF is the poor performance in complex real time GUIs, and here is where the Noesis solution might take a stronghold. I'm mainly in to graphically intense, real time updating GUI development (visualizing scientific data from streaming inputs, real time input/output to and from actuators and sensors etc) and I have read some third party concerns on how WPF implements the communication between the CPU and GPU, generating unnecessary drawcalls etc. My hope is that since Noesis is mainly focused on game related GUI solutions, they are more concerned with making the CPU-GPU pipeline as efficient as possible.

  • jsantosjsantos ESMember

    @SKall‌ "When there is one UI developers tend to get the layers mixed" Ok, then fix that part, but do not introduce 4 different UIs to fix this problem :)

  • SKallSKall USMember ✭✭✭✭

    @jsantos, fine but don't introduce a UI that looks native on none of the platforms... ;)

    Seriously though, I consider it a strength to be able to write native UI's. If you wanted to write desktop application with C# would your first GUI choice be GTK# since it is cross-platform? Whatever the cross-platform GUI layer is it should look and act like native.

    The problem of getting the layers mixed and then fixed is fine in closed small enterprise environment. For larger environments it is a lot of work. That is why I said it is a silver lining in having to write different GUI's.

  • StuartJohnsonStuartJohnson GBMember ✭✭

    This is an interesting thread. I have been commissioned to rewrite a huge VB6 desktop app, and I have to be sensitive to existing users, but also aim for SaaS.

    This is not the first time I have done this. I did the exact same thing 3 years ago, and my approach was to use Silverlight as the front end, and C#/Mono/Linux on the back end. We used Protocol Buffers for RPC. The result was fantastic. It looked and behaved just like the old VB app. The support guys loved it, because installation was as simple as installing a browser plugin, and no more dll hell. The Sales staff loved it, for the same reasons. They could set customers up over the phone, or onsite without worrying about Windows service packs.

    However, as we know, Silverlight is dead, which was a huge blow to us. Admittedly, we knew we were taking a gamble (on the front end at least). We looked at HTML5 before taking that decision, and we looked at it again more recently. HTML5 just does not cut it. We just cant pass off an HTML5 app as a native client.

    So right now, I don't really know in which direction to take. Cross platform is ever more important. I feel that there is a big gap in the market for a cross platform solution based around .NET. Our dream, would be WPF on Mono. And even better if that would run on NaCL.

  • JmDJmD SEMember

    One thing I think we have missed out on a bit in this thread is the graphical/design side of XAML based GUIs like WPF and Noesis.
    For me (looking at myself as a designer) the ability to work with vector based graphic elements is a major deal. Apart from the quality of the visual representation (no pixelisation) the flexibility of setting properties like fill, stroke etc instead of manufacturing bitmaps accordingly is a real time saver and adds a lot of flexibility - both from a design as well as from an implementation point of view.

    Even in small teams it is very good to separate the design from the implementation in the development cycle. The developer can prototype a functional GUI quite fast, just to have something to work with. Meanwhile the designer can create and refine the GUI from a UX and aestetics point of view. Then the GUI can iteratively be transfered to the app, not replacing empty placeholders, but rather refining the existing (and functional) GUI.

    This workflow lends itself to parallel development of both functional and visual refinement, making it easier to try different scenarios, implement skinning, themes etc.

    Another advantage of XAML is you don't have to design separate GUIs for different screens. The layout engine of XAML is - when utilized in a proper way - more than capable of handling both different resolutions as well as different aspect ratios. The advanced layout functions are also very useful when optimizing the GUI for different scenarios in the application. And as extra icing on the cake the animation functionality of XAML renders the possibility of designing very dynamic and compelling GUIs. XAML helps the designer to make GUIs that really aid and support the user when navigating the functions of the application.

    All in all I feel vector based GUIs is the way of the future. Properly used they save time for the developers and designers as well as add flexibility to the overall application design.

  • jsantosjsantos ESMember

    @Stuart contact us if you want to test noesisGUI. If could be the direction you are looking for :)

    @JmD sure, we also think that vector based GUIs are the future. For that purpose we are bringing all our background in videogames to noesisGUI. It is amazing to discover how inefficient are the stacks (WPF, SL...) implemented by Microsoft.

  • StuartJohnsonStuartJohnson GBMember ✭✭

    @jsantos‌ Would a developer accustomed to writing WPF desktop apps feel at home with noesisGUI? Are any of the controls data aware for easy binding of data collections?

  • JmDJmD SEMember

    @Stuart - just chipping in here. First I must say - my experience from Noesis is with Noses for Unity (Unity 3D, the game engine). Noesis and WPF have many things in common. Since they both utilize XAML you can use tools like Microsoft Blend to design your GUI visually. You can use data binding, just as in WPF. I would say Noesis is a lot like WPF, and it would be easier to make a list of the things that differ, since most things are quite alike. Remember also that Nosesis is in constant development with new releases coming at a constant pace. My impression is that they are trying their best to make Noesis work as close to WPF as possible from a developers/designers point of view, albeit with an improved rendering performance.

  • jsantosjsantos ESMember

    @Stuart I would say that yes. If you are coming from WPF/SL, noesisGUI is a natural change. Please have a look at our documentation to get an idea about our API.

  • StuartJohnsonStuartJohnson GBMember ✭✭

    Thanks, I will look into this. All we need now, is to compile for NaCL, and we have our Silverlight replacement :) Wouldn't that be impressive.

  • jsantosjsantos ESMember

    @Stuart yes, NaCL and HTML5 are in our roadmap :)

  • jsantosjsantos ESMember

    Just updating this thread to notify that we released the c# bindings corresponding to v1.2 beta8.

    http://www.noesisengine.com/forums/viewtopic.php?f=3&t=575

    If you are interested in a trial, please, email us!

  • MikeEEEMikeEEE USMember ✭✭✭

    All I gotta say is... long live Xaml. :) HTML5 (and its twisted upside-down model of what an application is supposed to look like) can hang out with Clippy. ;)

Sign In or Register to comment.