A probabilistic model of source code is a probability distribution over code artifacts. To group these family of models in terms of shared design choices, we separate these models into three categories, based on the form of the equation of the modeled probability distribution and their inputs and outputs. Some models fall into multiple categories because decompositions of their equations fall into different categories.