submitted 22 hours ago* (last edited 8 hours ago) by to c/technology@lemmy.world
 

Paint.NET 5.2 Alpha (build 9739) contains extremely experimental support for WINE (which means Linux).

Some of you may be happy to hear this. Some may be not. It may make for some interesting debate, or something like it.

ETA:

This was written by our good friend Claude, without whom this would NOT have been possible and would NEVER have happened.

Quick Important Side Note: If you don't like AI, if you hate AI, if you refuse to run any software that AI touches, if your favorite pejorative is now "slop" ... fine. Whatever. I'm not going to try and convince you otherwise. You're entitled to your own opinion, I don't care. But keep that talk out of here. You don't have to use this. It's clearly not for you.

Most of this code is, as they say, "vibe coded." By that I mean that it has not been thoroughly reviewed, it's more "trust me bro" style. I cannot possibly review 180,000 lines of code, it's just way way way too much. For reference, the rest of Paint.NET is about 700,000 lines of code and I've been working on it for over 20 years. I did thoroughly review any code that had to be changed or added elsewhere in the Paint.NET code base (refactoring and integration points, etc.). Over time I do hope that more of this code will be vetted by real humans and also by more advanced AI models.

At times, Claude was working with the fury of 10 freshly unshackled Einstein genius-level 10x coders. And other times ... well, not so much. I had to babysit Claude quite a bit to make sure it did resource management correctly (for awhile it just wasn't doing the COM equivalent of AddRef() for reference counted objects, oops). I had to slap it a few times when I found some really bad design or architecture decisions. And I was also impressed at some rather clever and tireless reverse engineering work it did to figure out all the formulas needed for implementing Direct2D's built-in effects library. It never had to decompile/disassemble d2d1.dll, it figured it all out "clean room" style*. And it never got tired, it never got bored, and it never got annoyed when I changed my mind 10 times in a row.

Day and night, it just kept coding, and coding, and coding ... writing tests, comparing rendering output to the real Direct2D, making and updating hypotheses and formulas and shaders and error handling and everything until it got things just right ...

... And then it worked. It actually booted up. In WINE. Claude got this working in about 3 weeks. This involved a lot of Fable, a lot of Opus, and even some Sonnet (those are the 3 models in reverse order of intelligence/complexity). I finally managed to boot up Paint.NET in .NET 10 win-x64, in WINE, on Ubuntu, in WSL 2, on Windows 11. And then later that day some folks on Discord got it running on real Linux systems. There's been more work since then in order to further refine and fix up the code, but now it's at least kinda-sorta ready for others to try out.

It is NOT "production ready." I wouldn't even call it "alpha quality". It "doesn't not" work.

you are viewing a single comment's thread
view the rest of the comments
[–] [S] 4 points 22 hours ago* (1 child)

Give it a few more minutes.

Popcorn

ETA: I don't usually lob grenades like this, but this is an issue people need to deal with.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 6 points 21 hours ago* (1 child)

    Aw, come on, don't leave us guessing! There's a controversy I don't know about it! How am I supposed to establish my moral superiority?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 12 points 21 hours ago (3 children)

    i bestow upon thee the gift of READING THE ARTICLE!!!
    sorry

    anyway rick brewster, the dev of paint.net, used Claude to code the compatibility code for Linux. on one hand i can understand it because Direct2D is a piece of shit but on the other hand i feel like he could've gone about this in a different way than slopifying his codebase.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 3 points 11 hours ago

    slopifying his codebase.

    He didn't. That's the point. The slop code is a self contained dependency only used for the Linux build and not part of the actual paint.net codebase. His core user group (on Windows) will never get in touch with it.

    I think everybody, including him, would prefer if there was a working implementation of Direct2D for Wine.

  • source
  • parent
  • [–] [S] 10 points 21 hours ago (1 child)
  • [–] 10 points 21 hours ago (3 children)

    honestly? imo it should not have existed at all then. i feel like this is going to be really bad for the long run if Rick starts using AI not only for the compatibility layer but also for paint.net's core codebase.

    and frankly i think if he had made the codebase open source again we would have made a lot more progress on Linux compatibility. paint.net doesn't really have a solid reason to stay closed source imo, especially because Rick has already shown that he can handle copyright infringment cases when he secured the paint.net domain (his reasoning for making the codebase closed source was that people were stealing his code, rebranding it, and publishing as their own. imo his decision didn't do much as you can still decompile the binaries, change all the branding, and then recompile and publish, so this only really hurt contributions to the project and nothing else)

  • source
  • parent
  • hideshow 6 child comments
  • [–] [S] 1 point 8 hours ago

    It's doubtful if opening the code would have helped. It wouldn't have helped bring wine up to spec. The only option that would have opened up is a fork without direct2d requirements.

    The crucial thing here is that Claude reverse engineered direct2d and created a linux implementation of the relevant parts. That that's possible is something the copyright maximalists here will come to terms with. The AI haters will have to cope with the fact that AI is indispensably useful and will only become more so in the future.

  • source
  • parent
  • [–] 7 points 21 hours ago* (1 child)

    Do you know the legend of stone soup?

    A traveler goes to a village that has fallen on hard times. Nobody will give him food. He stops at a farmer's house and says, "I have a magic stone. It will dissolve into a rich broth full of flavor and nutrients that will make enough delicious soup for the entire village." So the news goes around town that there will be a soup feast, and everyone brings something to contribute: some vegetables, some meats, some spices, and they all enjoy a delicious soup, never realizing that the traveler had scooped a plain and simple stone out of the cauldron before the guests had arrived.

    I feel like AI is kind of the traveller here and the 180,000 lines of shitty code is the stone, and all the work people are going to do in making that code performant are the real ingredients.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 6 points 21 hours ago (1 child)

    aye, i also really hope this will turn out good in the end. but you know what they say - hope for the best, prepare for the worst. at the same time...

    [...] and all the work people are going to do [...]

    if i recall correctly i think Rick is the only person calling the shots in terms of development. if that's not the case then your sentiment holds up a lot but if he really is the only one then i'll keep being worried. i've seen too many developers go down the AI path and absolutely gut their image as a result and i hope that's not what's gonna happen to paint.net, there's genuinely no other program like it

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 17 hours ago (1 child)

    Yeah, this is one of the huge benefits of open source. Someone can just fork Paint.Net and make it Linux-compatible; zero work from the original developer, and everyone benefits. Instead, it's a walled garden because that kind of behaviour was considered "stealing"; and then they have the nerve to complain about the workload after shutting everyone out. Like, yeah, that's what happens if you try and do everything internally; it means you actually have to do everything yourself.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 8 points 16 hours ago (1 child)

    It already happened. It’s called pinta and based on the last open source version of paint.net

    https://github.com/PintaProject/Pinta

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 16 hours ago* (last edited 15 hours ago)

    Latest version of Paint.Net is 5.1.12. Pinta got forked from 3.36. Would be cool if Pinta could just pull down 2 major versions' worth of features. Instead, Paint.Net's author resorted to vibe coding 180k unsupervised lines of code as a dodgy semi functional compatibility layer

  • source
  • parent