Actually it's not 100% free but it is really cheap and since Starbucks' are everywhere, it's a good thing to have when you're on the go.
Basically you need to have a Starbucks account that's linked to an AT&T account. And the account needs to have "activity" in the past 30 days. Here's how to do it.
1. Next time you're in Starbucks, buy yourself a gift card. I don't know if the minimum is $5 or $10. You don't need to buy anything with it. You just need to get the card and put a balance on it.
2. Take the card home and go to starbucks.com. Set up a starbucks.com account and register your card with your account. Once you do this, you'll see a button that'll send you to AT&T's site where you set up a wifi account.
3. Next time you're in Starbucks, you should be able to connect to their hotspot and log in using the ID you set up with AT&T.
The catch is that you need to have "activity" on the card in the past 30 days to get the access. Activity counts as a purchase or a recharge of the card. Even if you bought a dollar's worth of cookies in the past 30 days, you still get wifi access.
This is a good deal and it's something I recommend, especially if you travel. Some hotels still have below-par internet access, and this is a good way to get readily-available internet access at a very good price. I've connected at my local Starbucks plenty of times, and the access speed is consistently excellent.