Hi
As mentioned in my other thread Contributing to AgOpenGPS, I think it would be very valuable to have some kind of idea about the future of AgOpenGPS.
It may not be very appropriate of me to make a proposal of such a future, because I’m just now learning about the project, but maybe this can serve as an initial basis for further discussions and/or clarifications.
The goal
One of the main drivers of evolving AgOpenGPS is most likely the desire for cross-platform compatibility.
More specifically, as mentioned elsewhere, it would be beneficial to be able to run AgOpenGPS on other platforms than Windows (e.g. Linux, Android, iOS?) to have a wider range of devices available to run the software on.
The proposal
This is my suggestion on how to naturally evolve the current state of AgOpenGPS towards a cross-platform application:
- Modernize the tech-stack:
Migrate to a recent .NET version (e.g. .NET 9) in order to have the entire application be able to benefit from any technological advancements in the framework (e.g. performance, APIs, …)
Even though this is probably not absolutely necessary for the next steps, it certainly wouldn’t hurt either. - Split frontend logic from backend:
By introducing a concept like MVVM, the currently tightly coupled code living inside the various forms could be decoupled and refactored in a way that would allow the next step. - Introduce a new frontend technology:
Because WinForms is (and probably will be forever) a Windows-only framework, in order to achieve the cross-platform goal, a different frontend technology should be introduced. I believe that this can be done alongside the existing WinForms application, such that there is always a working, deliverable version of the software available. Only after finishing the migration (and thorough testing), the WinForms code can be removed.
At the time of writing, I would suggest using Avalonia UI as the new frontend framework, because it would support all the desired target platforms.
Alternatives
Of course this proposal is heavily opinionated and there are many different “roads” that could lead to the desired goal:
- Use a different frontend technology (maybe web-based?), but still evolving the current code base towards that stack.
- Abandon the .NET ecosystem and go with the Qt based QtAgOpenGPS project once it is mature enough.
As mentioned above, I just want to give some inspiration about where this project could be heading and if this is not something that is up for discussion, then feel free to close this thread.
Best regards,
Matthias