Repository navigation
Replies: 7 comments 25 replies
I have mixed feelings accepting PRs that are generated/assisted by AI. With that being said... it does seems like AI assisted contributions are an inevitably. @LubosD & @bugaevc - What are your thoughts on accepting AI assisted PRs? I'm leaning towards tolerating it as long the code quality isn't poor and the human author is willing to do their due diligence in verifying/understanding their AI code.
I was originally intending to redesign Darling's syscall implementation before I continued my work on ARM64, but I guess I can put that task on hold since there are PRs for ARM64 support.
I have mixed feeling bridging Quartz to Skia. We should only bridge to libraries that are essential (like Vulkan, FFmpeg, Wayland, etc.)
Please do keep in mind that it will take time for me to understand your code contributions. It may be a long while before I can accept these PRs. |
|
I'm new to the project, just the other week discovered the project, but these are my two cents as someone interested to meaningfully contribute to the project using AI. I'm heavily using AI in my day to day work and thought to give it a try on Darling to see if I can get it running on my Omarchy M1 Macbook Pro, as a fun project to burn remaining tokens, hoping to one day get it to run all my GUI brew casks. About 12 days ago I started to submit AI generated contributions on the VibeDarling fork created by someone else. I went pretty crazy, maxxed out my Claude and Codex tokens for two weeks, plus 3 limit resets, most of which working on Darling. This resulted in over 500 pull requests across the Darling repos and code changes that probably approach 500k LOC combined. Among other things got it to build and run on Arm, built a Wayland backend to Cocotron that is significantly more feature rich than the existing X11 backend, added a ton of symbols and a exposed a few existing open source libraries through Apple ABIs, such as an adapter over OpenSwiftUI to mimic Apple the SwiftUI ABI, and a few smaller ones. This got it to the point of running a handful of native Mac applications copied from MacOS (including Textedit, Terminal and a few more), and a couple of 3rd party apps. They run but still with a ton of very annoying glitches, but addressing those quickly. I shared on discord a screenshot of the Terminal app running side by side with the Omarchy Linux terminal. This amount of progress would have easily taken years of manual work at the rate of progress I've seen before, and I've seen AI contributions from other people that were basically shut down and urged to slow down. In my opinion there's no way to slow down, we like it or not AI is here to stay. I'm sure this is just the beginning, there will be more of this once more apps get running, people see the usefulness of Darling and start to join and contribute in larger numbers. I think there's no way to meaningfully review all this AI generated code without AI, and that as a project we should embrace this iteration speed and use it to drive the project forward. So I started to work on a sort of AI collaboration protocol that would get people's agents to review each other's code, maybe human maintainers to approve the architecture of the change based on AI generated summaries but without necessarily looking at the code and once enough maintainer agents/people vote for the contribution to have it merged automatically. The critical part is this requires established maintainers to embrace this new way of working and trust the process. I'd love to see your perspective on this. |
|
I posted this in the Discord.
As additional context, I'm the AUR packager for Darling, and have been making good progress on understanding the HIToolkit/Carbon run loop, with the goal to implement it. |
|
Copying over from Discord: I don't actively contribute (including not having the cycles to review others' contributions), so I don't feel I'm in a position to make a decision. Yet as an observation, projects that enact pro-AI policies typically value achieving extraordinary results quickly, and projects that enact anti-AI policies emphasize community building, code review, and technical excellence. So depending on whether you think Darling is a serious way to run Mac software on Linux, or a fun low-level project to hack on. |
|
@Lazerbeak12345 I understand your concerns and I don't mean to downplay them. Regarding your IP/legal concerns, AI generated code is becoming acceptable in the industry, and even projects like the Linux kernel started accepting AI contributions, after adequate reviews that ensure quality. For me Darling is not a "a fun little side thing I work on and put research time in for fun", but rather a potentially useful project capable of eventually running all Mac apps, much like Wine does for Windows apps. I did all those contributions to the VibeDarling branch with the goal to be able to run my Mac apps on Linux. I also don't want to fork the project but to find a way to work together on it with the people who put so much effort over the years to get it to this point. I respect all that hard work and wish we could find a way to work together. Over the last days I was reflecting on how can we find a way to both accept AI contributions, while also ensuring quality of the mainline code base. I think a good way to do that would be to take inspiration from the Debian project's unstable/testing/stable model. This way we don't need to do a hard AI fork, but embrace the AI fork as part of the project's code intake process. Any sort of development would happen on a bleeding-edge development branch, that would equally accept manually written patches, as well as "slop" It may be broken at times, code quality would probably suck at first, but it would be working/useful code that people can play with and build upon. Eventually patch sets that survived for a while and passed an initial review process would be merged/backported into a testing branch, which would be used for testing builds given to a wider audience of people who could use this branch to get some working code that isn't likely to be utterly broken. And then, we'd have a stable branch, with carefully reviewed patches that were in testing for long enough to be deemed mature, and without any time pressure to promote to stable or to compromise on quality. The project would get more users and attract more contributions, hopefully over time getting to the point that it can run all apps we throw at it, like Wine is nowadays. I know this will require a lot of work to review this massive backlog of "slop", but I think for the project having lots of contributions is a good problem to have, rather than nothing at all. |
|
How about trying a new collaboration model? We could maintain two projects under the same organization:
vibedarling could take full advantage of vibe coding: rapidly validating ideas, implementing large amounts of code—especially replacements for closed-source system libraries—and quickly turning concepts into working prototypes that can attract attention, contributors, and donations. Meanwhile, darling would remain the carefully engineered project. Its overall architecture and direction would continue to be designed by humans, while selectively extracting and integrating well-designed, proven implementations from vibedarling. vibedarling would regularly merge the latest changes from darling, keeping it aligned with the main project while continuing to experiment and move faster on top of that foundation. When experiments in vibedarling prove valuable and mature enough, their implementations or ideas could then be selectively brought into darling through normal, carefully reviewed engineering work. With this model, every important dependency repository would ideally have a corresponding vibe version as well. In other words, vibedarling would optimize for speed and experimentation, while darling would optimize for architecture, quality, and long-term maintainability. The former explores and proves what is possible; the latter turns the best results into production-quality engineering. This kind of dual-track collaboration between vibe coding and traditional engineering is itself fairly novel, and the experiment could attract some attention on its own—even before the technical results start paying off. |
It's maybe possible to Darling containers without disabling System Integrity Protection in macOS, but I don't have a Mac to do that (maybe via macOS VM if it's possible)
My best solution maybe WinObjC and Chameleon, both they have a complete implementation of UIKit/Cocoa Touch , we need modification to WinObjC to remove Windows-related things
We already have Cocotron as GUI implementation but we need to add more missing stubs, but my solution is to share bits and parts of ravynOS's Cocotron fork with Darling's one. The Cocotron fork that ravynOS is using has more implemented parts than Darling's fork now, so we can share them. They have also an WindowServer/Quartz Compositor/DisplayServer implementation that my idea it could be used as a virtual Aqua desktop similar to Wine has that. Since both forks keep the same MIT license, so no hurdles need.
We can gain widespread attention if maybe Valve and even Epic Games can eventually look at this and contribute them significant to Darling project. Valve can create a Darling implementation for macOS/iOS games on Linux called Neutron.
I don't think that is a solution to use AI tools to speed up development further, Wine banned use of AI-assisted contributations and PRs because copyright concerns and faulty code. I could recomend to discuss about implementing AI policy about banning AI-generated code.
It's in work-in-progress, also in the future we can support ppc64 and riscv platforms if it necessary
Skia is unnecessary for graphics backend. We have the Iridium/darling-metal implementation so check in our repo. Also my idea is to rename Darling into Darwine or Darine as it maybe for cross-platform outside Linux such as the BSDs, illumos, Haiku, AROS, RISC OS, Android, Genode and maybe Windows |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
I’ve been following the Darling project for a while, and I think it has significant potential for several use cases:
Containerized CLI execution: Darling could run CLI programs like the essential CLT in containers on macOS. This could fill a gap in macOS, where containerization solutions are limited. Currently, the only known option is rund, which requires disabling SIP. I’ve seen discussions suggesting that Darling may be the only approach that works without disabling SIP.
iOS program support: Darling can directly load and run iOS programs on Linux systems, without requiring emulation or simulation.
macOS GUI programs: Darling can enable running new macOS GUI applications. As a reference, GNUstep has already demonstrated a similar approach for legacy macOS programs on other platforms, illustrating that this kind of cross-platform GUI support is possible.
Despite this potential, Darling hasn’t gained widespread attention. I think the project could benefit from stronger promotion and potential funding or donations.
With modern AI agents, iterating on a large project like Darling is now more feasible. Here’s what I plan to contribute:
I hope these contributions help Darling grow and reach its full potential.
All reactions