Beyond the read-only resources that existed in Terraform before data resources were an official feature, I'd like to make room for a new pattern for re-usable modules where they accept only the minimum set of ids they need as variables and look up other data via data sources.
Here's a motivating example:
variable "aws_subnet_id" {
description = "Id of the subnet where the EC2 instance will be created"
}