There needs to be an option to LOCK the contact source field. Where a contact originated may be different than additional opportunities associated with the contact. Every time you create a new opp. it will remove the source data if you put nothing, or replace the original source data with something like "cross sell" if you created an opportunity and put that as the opportunity source. If they book a meeting through your calendar then that calendar becomes the contact source. All of this crossing of data and replacement makes the source data useless for any metrics.