You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was hoping to start a discussion about what it would actually take to make IoSender into a cross-platform application, specifically for Linux and then maybe MacOS or others in the future. For my own purposes I would really like to run IoSender on a Raspberry Pi; and to that end I've investigated a few possibilities including running under WINE with an x86 emulator (too many layers of complexity), an ARM version of Windows (impossibly slow), and finally porting IoSender directly to Linux using the Avalonia toolkit.
I believe that the best way forward would be to rework the current IoSender code base to use Avalonia in place of MS WPF. The reason for this is because it makes the best use of the already excellent work done by Terje in separating the core program from the user interface. Building a new UI with something like Qt or a graphical python toolkit or something similar might be easier is some ways, but it would have to be maintained completely independently and it would not have the same look and feel across the different platforms.
To this end, mostly because I was just curious how much work it might actually be, I decided to try loading up the IoSender code in MSVC and hacking (this is being generous) it into an Avalonia project see if it would even compile. Obviously it didn't. And after many hours of flailing at the keyboard it still doesn't, but I've learned some things in the process:
This is going to be a big job.
I am an absolute novice at Windows UI programming, and there is no way I would ever be able to do this myself in this lifetime.
I was able to make more progress than I was expecting at first.
The MVVM programming scheme feels overly complicated to me, but I can definitely see it's value.
Avalonia is almost certainly the most efficient tool for making IoSender run on Linux.
So now the question is, how could we make IoSender on Linux (and others) a reality? I think the first step is to break the job down into smaller tasks that can be worked on independently. This is what I'm hoping can be done in this discussion. From what I can see there are a number of areas in the code that are dependent on Windows specific libraries. These need to be replaced with something as good or hopefully better than what is existing. For most of the core program logic this looks fairly straightforward. Where the real work will be is in converting all of the Windows-centric controls into Avalonia controls. My gut feeling is that for a proficient Windows programmer this wouldn't be too difficult. Unfortunately I am not that person.
Anyway, the goal here is to see what people think (especially Terje!) and to hopefully layout a plan for how to make progress towards IoSender on Linux. Any and all comments are welcome!
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello All,
I was hoping to start a discussion about what it would actually take to make IoSender into a cross-platform application, specifically for Linux and then maybe MacOS or others in the future. For my own purposes I would really like to run IoSender on a Raspberry Pi; and to that end I've investigated a few possibilities including running under WINE with an x86 emulator (too many layers of complexity), an ARM version of Windows (impossibly slow), and finally porting IoSender directly to Linux using the Avalonia toolkit.
I believe that the best way forward would be to rework the current IoSender code base to use Avalonia in place of MS WPF. The reason for this is because it makes the best use of the already excellent work done by Terje in separating the core program from the user interface. Building a new UI with something like Qt or a graphical python toolkit or something similar might be easier is some ways, but it would have to be maintained completely independently and it would not have the same look and feel across the different platforms.
To this end, mostly because I was just curious how much work it might actually be, I decided to try loading up the IoSender code in MSVC and hacking (this is being generous) it into an Avalonia project see if it would even compile. Obviously it didn't. And after many hours of flailing at the keyboard it still doesn't, but I've learned some things in the process:
So now the question is, how could we make IoSender on Linux (and others) a reality? I think the first step is to break the job down into smaller tasks that can be worked on independently. This is what I'm hoping can be done in this discussion. From what I can see there are a number of areas in the code that are dependent on Windows specific libraries. These need to be replaced with something as good or hopefully better than what is existing. For most of the core program logic this looks fairly straightforward. Where the real work will be is in converting all of the Windows-centric controls into Avalonia controls. My gut feeling is that for a proficient Windows programmer this wouldn't be too difficult. Unfortunately I am not that person.
Anyway, the goal here is to see what people think (especially Terje!) and to hopefully layout a plan for how to make progress towards IoSender on Linux. Any and all comments are welcome!
Chris
Beta Was this translation helpful? Give feedback.
All reactions