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

Cross platform support? #58

Open
secana opened this issue Dec 29, 2017 · 22 comments
Open

Cross platform support? #58

secana opened this issue Dec 29, 2017 · 22 comments

Comments

@secana
Copy link

secana commented Dec 29, 2017

Hi Neutronium guys,

are they any plans to go cross platform with .Net Core? Using your solution under Linux/Mac would be awesome.

If you do not currently plan to port to .Net Core, could you tell me what would be needed to do so? If it's not too complicated I could give it a try.

Regards, secana

@David-Desmaisons
Copy link
Member

David-Desmaisons commented Dec 30, 2017

Hello @secana ,

Thanks for your interest in the project.
Here is big picture:
image

Neutronium has been layered to be flexibe and not hardcoded for WPF.
In that sense, both Neutronium.Core and Javascript framework integration are not depending on WPF.

So as I can imagine it right now, a support of .Net Core would mean:

  • 1. Migrate Neutronium.Core, Neutronium.Vue and Neutronium.Knockout to .Net Standard, so that they can be used by both .Net.Core and .Net WPF applications.
  • 2. Create a window or a control in .Net Core using Neutronium.Core: in fact kind of "translate" Neutronium.WPF to its .Net.Core equivalent. It should not be a great of work once the tecnology is choosen. Maybe avalonia, is a good choice: https://github.com/AvaloniaUI/Avalonia
  • 3. Create a binding to a .Net.Core WebBrowser. Basically Neutronium.Core uses an abstraction of WebBrowser that that it can work with CefGlue, ChromiumFx and Awesomium. So in this step these abstractions should be implemented for the choosen browser.

Main difficulty in step 3: find a .NET Core WebBrowser. Possible candidates:

ChromiumFx has the importanta advantage to implement remonting API, allowing communication between Chromium processes. If any other implementation of CEF is choosen, it will be up to the Neutronium adapter to implement this feature,

Please tell me what you think.

@secana
Copy link
Author

secana commented Dec 30, 2017

Hi @David-Desmaisons,

thx for the fast and detailed answer. I'm away for the next days but a soon as I'm back I'll start to have a look at porting the different projects to .Net Core as a start.
Without having looked at the code so far, I guess porting should be too much work. I'll keep you in the loop with my work.

@David-Desmaisons
Copy link
Member

David-Desmaisons commented Dec 30, 2017

@secana ,
Do you mean

step 1: Migrate Neutronium.Core, Neutronium.Vue and Neutronium.Knockout to .Net Standard

?
This should be prety straigth forward. This may have some impact on the build/packagining to nuget, thta should be analysed but nothing too complex.

@mattkol
Copy link

mattkol commented Mar 30, 2018

Disclaimer: I am the creator of Chromely.

This is one problem Chromely solves. It uses native GUI APIs to host CefGlue and CefSharp. With CefGlue, it is cross-platform and supports both .NET and .NET Core.

@inf0rmatix-old
Copy link

Porting this to .Net Core would be very very cool indeed.
What's your status secana? :)

@David-Desmaisons
Copy link
Member

First step migration of Neutronium core libraries to .NET Standard has been finalized

@vector-man
Copy link

Can't wait for this. It's the last thing I'm waiting for to completely recode my application with Neutronium.

@ylatuya
Copy link

ylatuya commented Nov 7, 2018

Hi, I have started working on item 2 for GTK+, which should provide the scaffolds to support other UI frameworks. I am starting with GTK+ because it's the one we need, but Avalonia could be a great option too.

I am approaching the issue creating a new shared project Neutronium.UI.Shared that contains base classes and shared code between all frameworks. So it will end up like:

  • Neutronium.UI.Shared
  • Neutronium.WPF
  • Neutronium.Gtk
  • Neutronium.Forms

Regarding the Step 3, I would to confirm that ideally Neutronium.WebBrowserEngine.ChromiumFx.WPF should be split in Neutronium.WebBrowserEngine.ChromiumFx.Shared and than:

  • Neutronium.WebBrowserEngine.ChromiumFx.WPF
  • Neutronium.WebBrowserEngine.ChromiumFx.Gtk
  • Neutronium.WebBrowserEngine.ChromiumFx.macOS
  • Neutronium.WebBrowserEngine.ChromiumFx.Android

Am I in the correct path ?

@David-Desmaisons
Copy link
Member

Hi @ylatuya , good news.
Regarding the first point, you should not need a Neutronium.UI.Shared as the UI abstractions are defined in the Neutronium.Core.WebBrowserEngine. See IWebBrowserWindow and IWebBrowserWindowProvider for example. Neutronium.Gtk would provide the implementation of this abstraction + some utility to create window, set-up application.....

Regarding the second point, I don't think that there is a binding between chromiumFx and Gtk....
If I am wrong, then it will be the way to go, to create a Neutronium.WebBrowserEngine.ChromiumFx.Shared containing all the UI independent code (implemented on .NetStandard) and then Neutronium.WebBrowserEngine.ChromiumFx.WPF,
Neutronium.WebBrowserEngine.ChromiumFx.Gtk for the UI dependant part. I think that idealy Neutronium.WebBrowserEngine.ChromiumFx.Gtk should be cross platform and support macOS.

Please tell me if this is clear enougth.

@ylatuya
Copy link

ylatuya commented Nov 8, 2018

Hi,
Thanks for your feedback, I think I now have a clear picture on how to proceed.

I found there are several pieces in the WPF implementation that could be reused between frameworks implementations, and it would simplify the creation of new backends, providing the foundations for the rest of them :)

Off-topic, I played yesterday with the WPF version and love it!!!
My final goal is to support Xamarin.Forms, which I believe would give your project a great boost in users and contributors.

@David-Desmaisons
Copy link
Member

@mattkol Do you have any intend to support ChromiumFx as well? Remoting feature is critical for Neutronium.

@David-Desmaisons
Copy link
Member

@ylatuya Please let me know of your advance. If you have a fork I can take a look and give you some guidance.
Regarding Neutronium.WindowsForm that would be doable without a huge amount of effort and could be used for ChromiumFx as it exposes a WindowsForm usercontrol.

@mattkol
Copy link

mattkol commented Dec 14, 2018

@David-Desmaisons my end focus really for Chromely was for a true cross platform which CefGlue satisfies. CefSharp was not an option for that because it requires the Microsoft VC++ Runtime. I added CefSharp option because it is most active project, and wanted to allow for alternative.

So not really, but in any way I can help, I will be glad to.

@David-Desmaisons
Copy link
Member

@mattkol thanks for your quick answer, I was thinking that Neutronium on top of Chromely could a real good solution. Thinking ou loud, one possibility would be to port ChromiumFx remonting on top of CefGlue for .Net.Core. It could a reasanable project in the mid term. Will think about it.

@TheJaredWilcurt
Copy link

If Neutronium ever become cross-platform, let me know so I can add it to:

@JohnLouderback
Copy link

Any news on this?

@David-Desmaisons
Copy link
Member

@JohnLouderback Still on my radar, I am analysing the available solution currently available. A possibilty I am currently considering would be a port of ChromiumFx to .Net Core. I will post update here.

@Chris55
Copy link

Chris55 commented Apr 23, 2019

killer app once cross app will be supported!

@ylatuya
Copy link

ylatuya commented Apr 23, 2019

On mi side I am no longer working on the port to other platforms. We are using neutronium.but for a WPF app only. I moved to other projects, so I won't time for porting it, sorry

@simonbuehler
Copy link
Contributor

@David-Desmaisons hi, any news on this? chromiumfx has some memory leak issues and is not active anymore so there should be a new maintained chromium api (cefglue or chromely), any feedback would be nice!

@mediaexplorer74
Copy link

Chromely

Hi. Are you one of Chromely dev? Explain me please (in simple worlds) that your project has cross-platform support or not?
I m looking for some Chromium "substitution" to realize very hard retro-thing: "Chrome Lite" UWP for old sweet Windows 10 Mobile os (ARM32). Lumia 950's browser EDGE is fully old obsolete... and I have no skills/experience on chroumium re-compilng with very special tools :(
Best,
m.e.

@mediaexplorer74
Copy link

On mi side I am no longer working on the port to other platforms. We are using neutronium.but for a WPF app only. I moved to other projects, so I won't time for porting it, sorry

...and where is your Neutronium.UI.Shared repo/ last commit?... I explored your github page... and not found any similar repo..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests