The author (Matt Miller?) is incorrect, teams have been trading #1s for many years before 2017, just look at some QB trades. There have also been many trades of lower picks for formerly high picks all the time. The only change that is a new development is the players have figured out if they act like total assholes with their current team and they are stars they can leverage their way off the team. Jalen Ramsey being their poster boy.
The only reason NE didn't get a #1 for Garoppolo was they waited until he had less than 1 season left on his contract & didn't have the cap room to franchise him at the end of the season & then trade him. They also took a 2nd to keep him out of the AFC. Cleveland, among possibly others, would have traded a #1 for JG.
There have been #1s traded for QBs, both in the draft & for veterans all the time. Here are some examples:
The Bills have done it 2x, once for Rob Johnson & once for Drew Bledsoe. I don't count JP since there was only 1 #1 in the trade to get back into the 1st round.
GB traded a #1 to Atlanta for Brett Favre after Favre's rookie year.
In recent years teams have traded multiple #1s to move up in the draft. In 2017 KC & Houston both traded 2 #1s, their own that year & the following year's #1 to move up & draft QBs. In 2016 LA Rams & Philadelphia traded multiple #1s to move up in the draft.
Here's another old example of the Bills getting a #1 in a trade for a player. The Bills franchised Peerless Price & traded him to Atlanta for a #1.