Both Phoenix and Hammerspoon are free and open-source. You can also configure them in endless ways, so either you can have a really simple setup or a very dynamic one that works just the way you like.
Say for example you want to do something dynamically when an app launches. You could open an app and the windows would automatically be arranged across your monitors the way you want.
In many conceptual ways, such as sharing the same language for configuration, though this is a completely different project so they don’t share the same origin. Slate has become rather abandoned and unsupported nowadays. Phoenix hopefully continues strong in this area.
Hammerspoon uses Lua for the configuration language. Phoenix uses JavaScript, or anything that translates to it. Personally I think Phoenix’s API is much simpler and easier to understand, but I’m of course bias. :) Hammerspoon does have some additional features that go beyond window and app management. Phoenix doesn’t cover those.