Wikimedia Engineering Architecture Principles

The Wikimedia Technical Committee believes the following principles and requirements should guide the Platform Evolution Program and other Wikimedia engineering endeavors.

These principles and requirements are derived from strategic and operational goals of the organization, as understood and interpreted by TechCom. This document is not intended to define these goals, it merely re-states them to provide a rationale for the engineering principles we set forth. That is to say: the goals in the first column are the input from which the principles in the center column are derived. The third column provides "bottom up" context that is intended to illustrate the intent behind the principles and requirements.

Engineering Process Considerations
Beyond the above principles governing engineering and product decisions, here are some complementary considerations for the engineering process. They are mentioned here for reference, but should be covered in an exhaustive and prescriptive manner elsewhere:


 * Document the rationale of engineering decisions, make explicit the trade-off considerations.
 * Features and non-functional requirements are constantly traded off against engineering constraints and the estimated cost of overcoming such constraints. This requires constant iteration of the decision making process between product owners and engineers, and should involve the respective communities when appropriate.
 * Failures on all levels should be followed by a post-mortem analysis and documentation.
 * Engineering solution should be "eventually consistent": we should allow for experiments and make breaking changes where needed, but aim for convergence, not insular solutions.
 * We should aim to be inclusive towards technical contributions from people who do not speak English.