I agree. That's generally my philosophy. And that's what was so promising about the "so called" template overrides, when they are properly included. The idea was good but access to just the presentation HTML is not enough. The same segmentation should exist for data and logic, at least on some level. But that takes a lot of rewriting, and no one enjoys that. Anyway I'll eventually get around to interleaving the bug fixes.
The only real substantive change I made is something I think should be part of the system. Who can really say what is useful in terms of social networking and user profiles, other than to guess at what's useful by providing the most popular? But why provide these options as canned options?
A more flexible approach, and the one I've taken, is to allow a profile to store contact information as variable methods. There are a good 30 or 40 plausible contact methods out there in use, whether handles, http or e-mails. Additionally, why constrain a user to one instance of any one method? Maybe someone has 2 or more FaceBooks, etc.
So, instead of having 6 or 7 canned methods I have ten variable methods. Each method has a method and an address, so that's 20 custom fields I added to the profile and then I disabled I/O for all the stock address fields. Granted, a deeper and more normalized approach would include a separate table altogether. None the less, the new fields all operate in a much more efficient manner so the HTML for presentations and form submissions can be handled with the same small loop. The only case specific consideration is how to construct the anchor in the address, if any.
The methods use a combo box that itemizes all the possible contact types. Therefore, if someone has 6 different personal web sites they can specify them all by making 6 Web Site method selections and supplying the individual addresses for each. Likewise, the same system accommodates someone with 3 MySpace pages and 4 FaceBook personalities, etc. Only those items containing both a method and an address are broadcast. All methods can be edited normally.