In Unearthed Arcana, WotC introduced a variant rule called "Players make all rolls", which appeals to me a great deal - it makes the PC the active participant in all situations, representing an attack on them as an attempt at defense on their part, and turning save-based magic into something like an magical attack. Skip down to "Usage" if you don't care about the math - the text before then is all example and justification.

Rules as Written

The players-roll rules as written in the document here can be boiled down as follows:

It looks complicated, but it really isn't - I'll show you how to apply it correctly in a moment, and the only math involved is performed during preparation, not during play.

The Problem

The math above is wrong. The intent was for players-roll to match the odds of standard play in all ways - don't affect game balance, just move ownership of the randomness; these rules fail to do that correctly.

Take as an example (copied from here) a 5th level wizard Wiz casting Charm person on the 1st level barbarian Barb. Wiz has a spell DC of 15 (+3 proficiency, +4 intellect), and Barb has a wisdom save bonus of -1 (her wisdom is 8, no proficiency). For UA purposes, Wiz's MB is +7, and Barb's wisdom SR is 10 (11 - 1).

Under the original rules, Barb has to roll at least a 16 to avoid the effects of the spell (16 - 1 >= 15), giving her 25% odds of avoiding the spell. Under the UA's players-roll mechanic, Wiz has to roll at least a 3 to succeed (3 + 7 >= 10) - that means he has 90% odds of succeeding, which gives Barb effectively 10% odds of avoiding the spell.

There is a matching problem with the defense roll: if Barb attacks Wiz with a +5 bonus against an AC of 11, she hits on 6-20 - that's 75% of the time. If Wiz defends against Barb's 16 attack rating with his defense bonus of +1, he will avoid the attack on 15-20, with an avoidance chance of 6/20 - 30% instead of the expected 25%.

Corrections

It's not hard to fix - the approach works fine, we just need to adjust the SR and DR formulas slightly.

In our previous hypothetical, Wiz's charm has a Magic Bonus of +7, and needs to hit Barb's Wisdom Rating of 13 (14 - 1) - the spell fails on 1-5, 25% of the time. Likewise, Barb has an attack rating of 17 (12 + 5), and Wiz is defending with a +1 defense bonus - he'll successfully defend if he rolls 16-20, a 25% chance.

Usage

In practice, the DM will turn all attack bonuses into attack ratings (by adding 12 to them) for each monster attack, either during preparation or at the table. He will also turn all monster save bonuses into save ratings (by adding 14 to them) at the same time. Those ratings are going to be told to the players - we're removing some of the curtain to make combat more transparent and engaging to players. You will not be able to 'cheat' rolls any longer - if your monster crits the cleric, the players know.

Each player will need to turn their AC into a defense bonus (by subtracting 10 from it), and to note their magic bonus (which happens to equal their magical attack bonus) for use with 'save' spells.

Treat advantage and disadvantage as interchangeable concepts - if the monster would have advantage on the attack, then the player should have disadvantage on the defense. In practice, this turns out to be so obvious that it's barely worth mentioning.

Now in combat, when a player tries to affect a monster with a spell, you tell them the relevant Save Rating, they roll a d20 and add their Magic Bonus, and they tell you if they hit that rating. When a monster attacks a player, you tell them that "The Gruzzlekin attacks you with a 12," then they roll defense, add their defense bonus, and tell you if they got hit (and if it was critical).

It takes much of the back-and-forth out of combat; under the previous model, everything was an exchange "I rolled a 14, does that hit?" (consult the paper) "Yes - how much damage?" (rolls dice) "12 damage" (consults stat block) "Actually, he's resistant, so it was 6 damage." I also play with static monster damage (see here), which condenses this further yet ("He attacks you for 6 piercing at 14.")

It also moves the dice-rolling to the player, making them the active participant - every roll that matters to a player is made by that player. It's surprising how much more engaging that makes combat; attacks aren't being done at the character, they are being defended by the character. At the same time, it subtly fixes one of the problems with narration of combat - monsters aren't assumed to be just terrible with their weapons, instead the PCs are masters of avoidance and defense, and their players get the chance to describe combat in those terms; instead of "The bugbear's sword clangs off your greaves, inflicting no damage", we have "I step out of the path of the sword, letting it bounce off my armor to no effect." The player is talking instead of the DM, and it happens on its own, as part of the communication of results - even the least engaged player will be saying things like "I jump out of the way" or "Dodged it".

There's also a purely mechanical advantage - the DM doesn't need to roll dice nearly as much. Flipping back and forth between dice and stats consumes a significant amount of the DM's time during combat; delegating the dice-rolling to the players is a major time- and attention-saver.