Comment by self_awareness

1 day ago

> It uses private APIs reverse engineered by yabai and other projects

Don't get used to this. Because of private API use, this project will break at some point after some macOS update.

This is not true. The private api's we use are not hacks to work around macos spaces and are actually the basis of how appkit and the os in general works. They are essentially guaranteed to be stable and also not to be removed because they have been in use for many many years with no change.

The private api's that have been broken (as experienced by yabai) are strictly related to things that rift does not interact with like moving windows between macos spaces(since we use a virtual workspace system).

  • Only in abandonware software private APIs stay the same. In current, living technologies, they always change. Apple can simply issue an update to all consumers of the API so that they start using different symbols. If you have the energy to play this game, then it's fine. Just remember that Apple doesn't have any problem with killing the whole kernel extension market (this among lots of other things).

    At my work I'm also forced to use private APIs on macOS and it's always a mess. Each update is a source of stress. Sometimes there's no work to be done, sometimes I need to spend a month to figure out what's happening.

    I generally discourage people from using private API and I always say that if the platform doesn't allow doing some kind of software using public API, then don't do this software for this platform. Select a different platform. Use feedback forms to request functionalities. But using private APIs is asking for trouble. Again, if you want to play the game then it's fine. But if you offer software for users, then you're in some way responsible for those users as well.