DanielVanNoord / System.Windows.Forms

A .Net Core implementation of System.Windows.Forms based on Mono's System.Windows.Forms for Linux and Windows
Other
44 stars 5 forks source link

Discussion: Let's work together! #13

Open madewokherd opened 4 months ago

madewokherd commented 4 months ago

Hi!

I'm the maintainer of Wine Mono, a downstream package of Mono that acts as a .NET Framework replacement in Wine. I recently started maintaining a sort of "local upstream" of Mono on Winehq on the main branch here: https://gitlab.winehq.org/wine-mono/mono. Since mono/mono is barely accepting contributions, I thought it'd be worth maintaining a "clean" fork that's still cross-platform and can actually change.

@sancheolz has sent a few MRs there, and I've made one of my own in response to one of the problems pointed out in discussion (https://gitlab.winehq.org/wine-mono/mono/-/merge_requests/37 - I plan to send that here as well, and I might do so before merging it on Winehq so it gets more review). It seems to me that if we keep working separately, we could quickly diverge and start duplicating effort.

So, do you think it would make sense to try keeping our respective winforms codebases in sync? And if so, how should we approach that?

sancheolz commented 4 months ago

@madewokherd, "you have my sword". I will port the remaining patches from here to wine-mono.

madewokherd commented 4 months ago

I'd like to get this up and running so I can work from this tree, but I'm running into #14.

mfeemster commented 4 months ago

I'd like to get this up and running so I can work from this tree, but I'm running into #14.

I have this running locally and am working through running some tests. Still haven't heard back from the owners of this repo as to how they want to proceed.

My personal take is that gaining control of System.Drawing.Common is ideal because we will no doubt find bugs (like the MessageBox one) and need to fix them.

DanielVanNoord commented 4 months ago

Hi @madewokherd, Sorry for the delay, I had some other things that needed handling. I've looked at your project and it looks really cool! Keeping any fixes in sync seems like it would be very helpful. Given that your fork of Mono seems to actually be getting some attention it seems like using that one instead of the original is a good plan. One possible interesting thought for you (and others), it may be possible to merge some of these changes into the Mono repository and find a way to dual build so we get .Net 6 and Mono binaries from the same source code. This may require a separate csproj in the Mono repository for the .Net 6 project which would use the same source code. This has the benefit of avoiding the process of manually syncing changes back and forth. Any thoughts on this approach? I'm working on a possible roadmap for features and changes. This is by far the most attention this project has gotten since I started it almost 5 years ago. Unfortunately it caught me at a bad time and I am playing catchup. My guess is that forking System.Drawing.Common is going to be needed to handle #14 and I'm looking into what that will take. Now that Microsoft has pulled linux support this needed to be solved soon anyway.

madewokherd commented 4 months ago

It would be nice to share code. One possibility would be for the Winehq fork to pull in this repo as a submodule (or, well, probably a fork of it because I'd like to have everything needed on Winehq, but hopefully there shouldn't be any modification needed). But before doing that I'd really like to have a dev setup for this project so I can test changes against it myself and feel confident sending PRs.

madewokherd commented 4 months ago

Code sharing will require you to target .NET standard 2.0, otherwise legacy Mono may not be able to build/run it.

mfeemster commented 4 months ago

I think the Winehq project seems to have the most inertia, so putting everything there would be ideal.

Is there any reason Mono is stuck on an old .NET? Is anything stopping it from moving forward to .NET 6+?

madewokherd commented 4 months ago

Being on the last version supported by Framework (and maintaining compatibility with Framework unlike current .NET) is kinda the point of keeping Mono around. If you want newer .NET versions on Linux, you can just use .NET.

mfeemster commented 4 months ago

Modern .NET doesn't include Winforms on linux. That was the purpose of this repo, to build Winforms using modern .NET.

madewokherd commented 3 months ago

I'm aware of that. I don't understand what that has to do with Mono.