Nathan's laws of software