Everybody complains about the salary cap, but the salary cap exists because of the franchise system itself.
In European leagues (especially soccer) each club is an independent organization that competes on a pyramid of leagues. There is promotion and relegation between leagues depending on poorly or well a team does. So if a major team is ran incompetently and fails, it can flop out of the highest tier of competition. Meanwhile, if a smaller team doesn't spend enough money, it will never rise to the level of highest level of competition. That creates a financial incentive for teams to spend as much as they can and to actually hold bumbling management accountable for their failures.
But in a franchise system, like the NHL, billionaire owners collude among themselves to create one cartel organization that is extremely exclusive in regards to which teams can enter the league. If a team wants to break into the highest level of competition in the franchise NHL, then somebody needs to front $500m and get the okay from all the other owners.
Since there's never any risk of a franchise falling out of the highly lucrative top flight division, small market owners are incentivized to just spend enough to ensure the long-term viability of the franchise and not upset revenue sharing. And since big market team owners have a monopoly on resources and don't have to compete for dollars from their own locality, they can spend into oblivion. Enter the need for a salary cap.
In a non-franchised, promotion/relegation system, you wouldn't need a salary cap because the Maple Leafs' management would a) be under threat that their poor money management could land them in relegation territory, b) competing for fans and money with other Ontario based clubs whose existence the Leafs and Sabres can't veto.
And teams like my own Florida Panthers would need to have a committed ownership group funded by a loyal, organic fanbase that can support a team without being able to fallback on revenue sharing and a high draft pick rewarding failure.