Skip to content

001 — Yii goal and values ​

Goal ​

The Yii project aims to build and support practical and helpful tools and community.

Values ​

The values we express in our work support the goal. We try to

Be practical ​

High performance ​

Performance is a necessary condition of practicality. Software shouldn't waste machine resources or human resources.

Sensible defaults and flexibility ​

We prefer sensible defaults and conventions that users can customize. We seek a balance between flexibility, discipline and simplicity that meets common needs.

Be practice-oriented ​

We prefer practice to theory. For example:

  • Solutions for known use cases should avoid excess complexity by providing only necessary flexibility.
  • Standard implementations should take practical use into account.
  • Experience is at least as useful as theory in guiding design.
  • Context is critical in determining appropriateness.

Be helpful ​

This value guides technical decisions as well as community activity. Consideration of how software features help users should guide development. Community-wise, we value any helpful contribution, be it a pull request or an answer in the forum.

When the other principles conflict, we choose a solution that's more helpful to the community.

Be simple ​

Solutions should be simple and expressive:

  • We use as much complexity as needed and no more.
  • We avoid ugly solutions unless there is no alternative.
  • Fewer rules are better than more rules.

Be Explicit ​

We prefer explicit, obvious solutions and code. Solutions should clearly express exactly what they do. For example:

  • A straightforward solution is better than an abstract one unless the abstraction has a practical purpose.
  • Loud fails are better than silent fails or masking errors.
  • Explicit casts are better than PHP type juggling, type hints are good.
  • No magic unless necessary.

Be consistent ​

We try to be consistent in:

  • Code style
  • Naming
  • Design
  • Structure
  • Values and goals