Thee is also the problem of closed source libraries. If you want to upgrade major parts of the system, it is often needed to recompile them. With closed source you have to wait untill the manufacturer does it (which means between weeks and eternity if the hardware is no more supported).