I agree that active rosters should be expanded by a couple of players. But, aside from that, I don't think teams should be able to sign a player off another team's practice squad without that team having a chance to match, so-to-speak.
For example, if the Patriots decided to sign one of our PS players, the Dolphins should have a brief window of time to decide whether they are willing to lose that player or match the Patriots contract offer and add the player to their active roster.
I don't like the idea of players practicing and learning your system then being signed away with no option to retain that player. I do like the idea of developing players and, once they become valuable to other teams, having the option to keep them yourself if you can free up the roster spot. The player wouldn't be negatively affected by the change at all because they are getting a contact and being added to an active roster regardless which team it is. And, lastly, the team that first invested in the player's development would have control over whether they lose what has now become a coveted asset.