This works perfectly with iCloud.
First you need to setup a master iCloud account per user. It seems logical that every person in the household has his/her personally iCloud (Apple-Id) account.
On the Mac (it is likewise on iOS) you have the iCloud preference. At this location you setup the master iCloud account of that person. You can then select which services you would like to use for that account.
- Mail: If you want to use it, it seems logical that every person has a personal mail address. Note that you not need the mail. You can still use the current mail service you are using today. If you come from MobileMe then you need to migrate this mail service to iCloud.
- Bookmarks: Seems also logical that everybody has different favorites.
- Photostream: This is the only must activate on master iCloud feature, you cannot have it as a secondary one. Besides it seems logical that photo's are streamed only to your personal devices and not to every member.
Next to the iCloud preference you will also see a "Mail..contacts" button. With this button you will automatically also see your master iCloud account. But here you can add other accounts. This can be other iCloud accounts. But also a GMail account or a mail account from any other provider ....
So to share calendar and contacts there is an option. To setup iCloud on the master id on one of the persons of the family. For that person you tick the options for these 2 on the master account. For the other members you setup a secondary iCloud account (using the id and pw of the first person) and then only tick the calendar and contacts options there.
But there is a drawback of this approach. The contacts in iCloud also synchronize the me-card in the contacts. So if you do this then all persons will have the same me-card. This also means that if anyone changes the picture when you login on your Mac, that this is then synched to all others Macs as well. So it looks at this moment that sharing contacts via iCloud to several members in a family is not a good thing. I'm still looking for a better solution here.
If you share the calendar(s) this way, then everybody can read/write in the calendar(s) contained in iCloud. So for a calendar it is actually better to setup different iCloud accounts per person each with their own calendars (e.g. a private-one and a to-be-shared-one). One of the family members might setup a family-shared-calendar.
After they are setup then you log in into www.icloud.com and there you can share a calendar. See the process on how to do that: http://www.busymac.com/busycal/userguide/caldav-sharing.html
So this way you might have a private calendar that nobody from the members can see. And a shared one that the others can see. You can select per persons whether that person can only see it or also change it.
This is our setup:
Made a personal master iCloud account for every member in the household. For each of us there is a calendar where the name of the calendar is the first-name of that person. I created a family-calendar for events on which we (normally) all participate. Then using icloud.com we all shared our calendar to the other members of the family with write access (we can trust each other and the kids are old enough). So now everybody can see all the calendars (and if wanted decide to switch them off as well in iCal).
I added a secondary account for my work calendar. So next to my private-calendar (shared with family) I will also see my-work-calendar. My family members have no real need to see my work calendar.