I use Google Calendar and I find it highly irritating. It would be fine if I only had one calendar, or maybe two. It seems like Google Calendar is designed with the organizing principle being the calendar. If you want to create multiple calendars to represent different kinds of time commitments, each one is created and organized on it's own. You can insert views of some calendars into others, but they're only loosely integrated.
Why isn't the organizing principle of these applications me and my time?
Why can't I keep a single view of my time commitments and see separate personal and work calendars simultaneously without importing each into the other? Why can't I give someone (say my fiancé) the ability to modify one but not all of my calendars but still be able to see my other time commitments (even if they're only shown as busy time) without her having to import my calendars into her own?
I've gotten Google Calendar to do some of these things, but it seems to take a lot more effort than it should, often requiring obscure or odd hacks and settings. An example: recently I tried to allow someone to make appointments for me on a work calendar. However, for that person to see all of my other time commitments they would need to import all of my separate calendars (I have quite a few) into theirs to be able to see them. There was no way for them to (easily) see a unified view of all my time with permission to see only the details of one of my calendars. There was no way for me to provide a view or interface to them without them importing it all into yet another calendar.
These things are complicated if your basic unit of organization is the calendar, but if it's the person, (it seems to me) they might be easier to implement and visualize. I imagine the organizing principle being "views" of my time, where I could configure different people to have different views (work people see work schedule but not personal, and vice versa).
I think an interesting project would be to create an abstraction layer for Google Calendar that presents this kind of view. You would point your "time view" to all of your separate calendars and it would act as an aggregator. You could publish different versions of this aggregate view with different editing privileges. You could even do things like "layer" different people's time views on top of each other to see free / busy time. Maybe I'll play with this idea as a (yet another) side project but probably not, awfully busy these days with Smarterer.