A distinction is made between internal and external variability. Internal variability is hidden from customers, existing at a lower level of abstraction than customer needs. The internal variability is of more relevance to the software engineers creating the product line.
External variability is visible to customers, and provide a surface of variants that a customer can choose from according to their needs. External variability is caused by the different needs of different customers. Documented external variability can be used in marketing exercises to market alternatives of software available to customers.