I agree with the principle, but I think your notion of "obsolete" doesn't really match the incremental nature of hardware/software development. When does an iphone go "obsolete"? Apple re-uses pieces, giving them minor tweaks along the way, and stops making and even supporting the old ones after a while. But the code in a phone I would call obsolete will still live on in a current phone. Companies worried about their precious IP will still have a valid excuse to not release the source.