1. Performance

The source code should be as small as possible

2. Simplicity

The end-user API should be as simple as possible

3. Supportability

The package should work in as many platforms as possible