If we're going to build communities that have a shot at the long term, you can't get stay on the 'lets grow forever' track. The sprawl math doesn't work.
But that's fine, because you and your community can do better. Here's how:
Lock in an urban growth boundary. Everything outside that is for growing food. The tighter the better.
Now to keep the agricultural landowners from being upset, allow them to transfer their development credits to suitable developments in the community core, for a fee of course. This allows farmers to realize the value they expected from their land, while focusing the development where you your community can best take advantage of it.
Economically, this is great for the community, because the roads in question are already there and you were going to plough them anyway. You don't need to build new infrastructure, the services are nearby. The people living there are closer to the amenities they need.
Tighter environments also stimulate more incidental interactions with people you know that lend a community the small town feel we cherish.
The agricultural land gets to stay in production. You don't have to build or maintain new roads. You increase the tax base with proportionally fewer new expenses, relative to a greenfield subdivision.
Target your population near community nodes, with a little shopping, a place to sit or play and a transit hub. Link the nodes to each other with transit that you wouldn't be embarrassed to use you get a community that works. A little walking on each end will get you anywhere you want to go.
Specifically, you'll get exceptional mileage out of four storey walkup apartments, with stores or offices right on the street.
Don't worry. You can stick with houses between the nodes, but give people who want the amenities and transit links right nearby is a powerful way to reinvigorate your community centres.
New suburbs don't ever pay for themselves. Municipalities can't get enough tax revenue to maintain the roads and other infrastructure forever, once the longer term maintenance costs come due.
Instead, build tight communities within an urban growth boundary. Transfer the development credits. Create community nodes within the existing community. We build cities so we can be closer together. Let's do it well, keep our infrastructure maintenance costs down, and maintain that small town feeling we love.