AT&T just scored a few points in my book. According to this article they are prorating cancellation fees based on how long you've been under contract.
I would assume it's based on how many months you have left, so a $175 cancellation fee spread out over 24 months leaves you paying about $7.30 per month left on your contract if bailed prematurely. Not too shabby considering before you'd get dinged with the full $175 if you ported your number out even a day early.
Maybe two year contracts aren't such a bad idea after all.
They're also no longer extending contracts when you switch rate plans, a practice which has screwed over numerous people and seems completely unethical.
Of course, all this is in the face of a law that will most likely pass, forcing them to do it anyway. But hey, way to kinda step up and sorta look out for your customers!