Naming Things

“There are only two hard things in Computer Science: cache invalidation and naming things”

Phil Karlton


When writing software, we often find ourselves needing to name things: files, classes, variables, GitHub repositories, Python packages, etc.  As noted above, doing this well is hard; a programmer can easily pick a name that solves the immediate problem, but many such well-intended choices can be confusing or misleading to other people coming from different contexts (or after some time has passed, even to the programmer who named it).  A comprehensive set of guidelines on how to name things well could fill an entire book, but here are some guidelines that are likely to be useful to developers at edX.

  • Python Naming Conventions - As stated in the edX Python Style Guide, we follow PEP 8 in this context
  • JavaScript Naming Conventions - As stated in the edX JavaScript Style Guide, we follow the Airbnb JavaScript Style Guide in this context
  • IT's Best Practices for Naming - This has some good general guidelines, and some specific considerations for JIRA artifacts and such.
  • Package Names - If the project is edX specific, use the "edx-" prefix. Don't use it if it the scope is more general (for example tools like "bok-choy", "diff-cover", etc.)  Earlier discussion of this topic: Standards for Engineering, Coding, Repository
  • Repository Names - The name of our GitHub organization is "edx", so it's redundant to add "edx-" to the package name as well.  It's OK if this means that a repository without "edx-" in its name produces a Python package which does have it.