As Phil Karlson [once said](http://martinfowler.com/bliki/TwoHardThings.html):

> There are only two hard things in Computer Science: cache invalidation and > naming things.

Over time, various terms and synonyms for those terms generate some controversy, and different teams end up using different words to reference the same object or resource. This document serves to record decisions that were made regarding certain terms, and attempts to succinctly define each term.

  • project vs. tenant

    project shall be used to describe the concept of a group of OpenStack users that share a common set of quotas. The older term tenant should not be used in OpenStack REST APIs.

  • server vs. instance

    server shall be used to describe a virtual machine, a bare-metal machine, or a containerized virtual machine that is used by OpenStack users for compute purposes. The older term instance that is also by Amazon Web Services EC2 API to describe a virtual machine, should not be used in OpenStack REST APIs.

  • project name vs. service type

    Most OpenStack projects have both a “project name” (e.g., Nova, Keystone, etc.) and a “service type” (e.g., Compute, Identity, etc.). Some REST API features (e.g., JSON-Home, API Microversions, etc.) need to expose each project in a request/response. The project should be represented with its service type if it has both a “project name” and a “service type” because its project name is subject to change (e.g., Neutron was Quantum) and its service type is more stable. The service type should come from “type” of the corresponding OpenStack Identity service catalog entry.