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

Make this project actually cross platform #6

Open
rmboggs opened this issue Jul 7, 2021 · 7 comments
Open

Make this project actually cross platform #6

rmboggs opened this issue Jul 7, 2021 · 7 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@rmboggs
Copy link
Owner

rmboggs commented Jul 7, 2021

So in its current state, this project only runs on Windows. However, I think this project would greatly benefit from running cross-platform, especially since dotnet now runs on non-Windows platforms these days. The main project here currently is a WPF project, which, to my knowledge, is still limited to only Windows, so in order to make this project cross-platform is to decide what front end to switch to in order to make cross-platform a reality. I currently know of 3 options that can could achieve this goal:

  1. Avalonia
  2. Blazor (PWA)
  3. Javascript/typescript framework with Asp.Net WebAPI backend
    a) Can be hosted in desktop application using ElectronNet and/or WebView2
    b) Possible frameworks could include:
    1. Angular
    2. React
    3. Vue.js

I'm still up in the air as to which option to use so it would be interesting to get feedback from those who are interested.

@rmboggs rmboggs added enhancement New feature or request help wanted Extra attention is needed labels Jul 7, 2021
@rmboggs rmboggs pinned this issue Jul 7, 2021
@thomasbtatum
Copy link

I'm interested in helping. I suggest we try and use one of the popular JavaScript frameworks like Angular or React. We also need to leverage docker-hub and travis-ci.com to containerize the dev environment for everyone and get the builds automated Looks like a lot of initial work, but Ive seen first hand this tech pay off in the end on multiple projects.

I did silverlight/.net dev in the past want to get away from windows/visual studio development lock-in with nascent xaml / wpf or rasor based frameworks. Using JavaScript/Docker/CI pipelines with VSCode will help open this up so more devs can help and more cross platform UI options in the end.

Ill subscribe here to see what is decided. In the meantime, I want to do some test forks for feasibility. I dont have a ton of free time, but will keep an eye on this and help when I can regardless of what path is chosen.

@rmboggs
Copy link
Owner Author

rmboggs commented Aug 12, 2021

Thank you for your feedback, @thomasbtatum.

I was thinking of using a JavaScript/TypeScript frontend with a asp.net webapi backend when I listed the Electronnet option, but looking at it now, it doesn't look that clear. And I believe that you are correct in that it would open this up to more people to help with this project also. I would welcome this approach if it proved popular enough with others.

I'm going to modify the original list of options to make this approach more clear.

@rstm-sf
Copy link
Contributor

rstm-sf commented Nov 20, 2022

Hello! I created Avalonia version https://github.com/rstm-sf/DocxToSource.Avalonia

@rmboggs
Copy link
Owner Author

rmboggs commented Nov 20, 2022

Hello! I created Avalonia version https://github.com/rstm-sf/DocxToSource.Avalonia

That's awesome. Can't wait to try it out!

If it works well on both Windows and non-Windows machines (i.e.: Linux), it may be good to create an organization umbrella for the 3 projects (DocxToSource.Wpf, DocxToSource.Avalonia, and Serialize.OpenXml.CodeGen) instead of having them scattered between user accounts. We can talk this further if interested.

Thanks,
Ryan

@rstm-sf
Copy link
Contributor

rstm-sf commented Nov 21, 2022

I think this should work well on all platforms since no OS specific was used (except perhaps OpenFileDialog?). I know that to make it easier for users to use macOS, it is necessary to build bundle, but I have never used this OS and therefore there is no practice.

The code from the repository can be added to this, but it seems to me that we still need to separate MVVM project for this, leaving the WPF/Avalonia specific code. For example, the TreeViewItem controls can be replaced with a node model (is it possible to adapt to WPF?). Also, from Languages ​​and MainWindowModel, we can also select the services AvalonEdit/AvaloniaEdit and OpenFileDialog. And finally, choose the MVVM framework — we can leave the current (I'm equally bad at Prism, CommunityToolkit.Mvvm and ReactiveUI :) but they are all there for Avalonia)

@rmboggs
Copy link
Owner Author

rmboggs commented Nov 22, 2022

I think this should work well on all platforms since no OS specific was used (except perhaps OpenFileDialog?). I know that to make it easier for users to use macOS, it is necessary to build bundle, but I have never used this OS and therefore there is no practice.

I agree, that was the main reason why I was looking at Avalonia in the first place. I used Mac OS X before but it's been such a long time that I feel like my experience is now out of date. However, we can focus on Windows/*nix for now while we figure out the macos angle. We may need to make a call for help later for this depending on how far we get.

The code from the repository can be added to this, but it seems to me that we still need to separate MVVM project for this, leaving the WPF/Avalonia specific code. For example, the TreeViewItem controls can be replaced with a node model (is it possible to adapt to WPF?). Also, from Languages ​​and MainWindowModel, we can also select the services AvalonEdit/AvaloniaEdit and OpenFileDialog. And finally, choose the MVVM framework — we can leave the current (I'm equally bad at Prism, CommunityToolkit.Mvvm and ReactiveUI :) but they are all there for Avalonia)

Yeah, I can see that. We can take a look at how to organize this code to see how best to reduce redundency. However, I would still look into creating a new organization and moving the projects there. I would feel bad if it was still housed on my user account and hold up dev if I don't have time to work on it. Maybe something simple as docxtosrc or something along those lines?

Thoughts?

@rmboggs
Copy link
Owner Author

rmboggs commented Dec 11, 2022

Hi @rstm-sf,

I just made a new org, Docx2Src that I plan on moving this project and Serialize.OpenXml.CodeGen to soon. It would be great if we could also migrate your Avalonia work to there as well, if possible. It'll take some planning as to how to organize it the best way possible. Thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants