High level design goals/guidelines are:
- Clean standards-compliant code.
- Don't reinvent the wheel.
- Don't repeat yourself
- As-good-as-possible Documentation.
- A small set of orthogonal features. If two features are very similar, one should be removed.
- Attempt to remain responsive to the user at all times. Handle all exceptions and don't break randomly - the user should always be able to do what they want to do.
- Set sane defaults so that users do not have to mess with configuration.
- Features should be as easy as possible for the user to discover.
- Everything should be designed with the user in mind. Write no line of code until you've thought the whole thing through and documented it.