- Have a modular design
- Do not exclusively rely on passwd tools to do the actual work
- Provide a better interface to LDAP, NIS, ADS etc.
- Be not written in a language with a huge runtime library
- This kind of rules out perl and python
- if perl, run with perl -wT and use strict
- have a test suite