I think Google could do this entirely with blogger, maybe reader, maybe Picassa, and email, and a bit of code. It would be a huge boon to Android phones.

Google groups is broken for some people, and I'd stay away from using it as a building block. Lots of people have negative opinions about Wave, me included. I don't even know if Buzz would help in any of this, the launch was so botched I never looked at it; people have told me it wouldn't work well for anything like this.

Posterous or Tumblr could do it too. Google doesn't seem to be very motivated in integrating their various acquired apps; maybe this would be that motivation. Or maybe Posterous or Tumblr might find some motivation in this.

It need not, maybe should not, and probably could not compete with Facebook. That's not a reason to not do it. Jones Soda does pretty well, yet I doubt if they think of themselves as a Coca Cola killer.

Whether Google or someone else does it, I'd like:

GENERAL

- Total control. I don't want to be a control freak, I want to be a control super freak. I decide exactly what is private, shared and public. Everything that can be shared in any way should be obvious, and the settings interface for controlling privacy should be very obvious in: a) what setting controls what feature, b) what feature is controlled by what setting. If you have to guess how to change a feature's exposure, or what feature a setting controls, then you don't have control.

- Long-lived settings. New features should never expose tomorrow what was not exposed yesterday. That's just so disrespectful on facebook's part.

- New features should begin with the most restrictive privacy settings.

- No apps or third parties. Make your money through advertising or paid features. If you're Google then you already have great advertising revenue and this just ties into it.

- No friend can expose anything of mine to any greater degree than I have explicitly exposed it.

DISCOVERABILITY

- If I want to be invisible at any level, then I should be invisible as long as the rivers run and the winds blow, until I change it.

Invisibility includes:

- The outside world. I'm either discoverable to anyone outside the system, or I'm invisible, according to my settings.

- People inside the system. I'm either discoverable inside the system, or I'm invisible.

- My groups of friends. I'm either discoverable to my friends' groups, or I'm invisible.

EXPOSURE

- I control what parts of my data are exposed, and how far out. This is both independent of discoverability and cooperative with it. For example, no matter how far out I might expose a photo album, it can't be exposed farther out than my discoverability. On the other hand no object needs to be as exposed as my maximum discoverability.

If I'm invisibile outside the system, then I can't set the exposure of a photo album to outside the system. If I need a photo album or something else to be exposed farther out than my discoverability, then I'd need to create that album outside the system (say, as a picassa album in a different, public account). I might be able to link to such an album from inside (and that link would have the same discoverability and exposure protections as any other object).

FUNCTIONS

- Discoverability. Anyone can discover me, as long as they're within one of my discoverability spheres. If I've set my discoverability to "world" then you can find me through search or browse. You can send a message to me if I've enabled that (with enough hurdles to discourage spam). If you're a member of the system you can request to friend me.

If my discoverability is more restrictive, then you might only be able to discover me if you're already a member. Or you might be able to discover me only if you're a member of one of my friends' other groups.

- Exposure. Objects that you post or share have a settable exposure level. Posting objects to a group gives those objects the exposure that you previously associated with that group.

- Chat.

- Alerts. If a friend logs in while I'm in, I want to know it, unless they've set that data to hidden.

- The usual. Can post comments, pictures, music, books, links, "other stuff" and have conversations about them. Post things about yourself in your profile, with different parts of you profile's exposure individually controllable. Be alerted to comments in conversations related to you or your posts, and changes to posted objects.

- A group of one. I should be my own group, similar to how some Linux distros create a group whose name is your login and whose membership is just you. I may want to keep track of things just for myself. I may want to stage new additions, initially to just me, and then exposed to a gradually wider audience as I see fit. I may want to pull some things in to private that were exposed.

Everyone starts as a member of their own group of one ("self" ?), unexposed and undiscoverable. You have to explicitly make yourself more discoverable, and you have to explicitly expose any objects in your group of one.

- Explicit groups of two or more. I should be able to explicitly band together with other people and form a group. Everyone in the group is aware of everyone else in the group. We can all post, converse and share. The group can be invisible or discoverable. I can expose my membership in the group to any group outsider who can see the group, or I can hide my membership from anyone outside the group. The email analogy to this might be cc:.

- Implicit groups of two or more. I should be able, on my own, to place people and groups inside of implicit groups that only I am aware of. If I post to an implicit group, each individual or group member of an implicit group receives the post or other object, and can carry on a conversation or other activity related to the object, but no individual or group within one of my implicit groups is aware of any other members of the implicit group; they aren't even aware that they themselves are part of one of my implicit groups, although they might guess from my style of writing. The email analogy to this might be bcc:.

The names of the two previous group types, explicit and implicit, may not be the best names. I initially described them as public and private, but those terms had too much confusing overlap with the notions of discoverability and exposure.

- Some groups owned by individuals and some groups owned equally by members. Not sure about this. Worth thinking about.

- Group union and intersection. I'm a little fuzzy on this one. Say you broadcast post an object to two groups. Person A is a member of one group, B is a member of the other group, yet the two people A and B have no relationship to each other within the system. If people A and B's discoverability settings would allow it, then they should see each other's comments related to the posted object and be able to take part in that object's conversations with each other as if they were both members of the same group. If their discoverability settings would not allow either to discover the other, then they should not see the others' comments.

If this function were done poorly, then gaps in conversations related to an object might be disorienting.

- Acknowledgement of the outside world. Under my control and choice, I should be able to make automatic tweets, or posts to my external blog, etc, based on what I post and where inside the system. I should also be able to make incoming posts from the outside, like ping.fm to twitter and facebook.

- Data migration. I should be able to export part or all of my data quickly and easily.

- Data ownership. I should be able to change the exposure of data that I post, and to delete it.

- Existence ownership. If I leave, I should be able to totally delete myself. Or, if I want, I could de-activate myself. But it shouldn't take searching outside the system to find a little known method for deletion. If I delete posts or data that are part of conversations, the system should insert a placeholder, but if it's mine I get to kill it.

IMPLEMENTATION

For this part I'll assume Google is implementing it, because they already have all the parts and we're all familiar with them. Applies equally to Posterous, Tumblr or a player to be named later, acknowledging that they would have more to build.

The fundamental activity in the system is posting objects and having conversations about them. An object might be text, media, a link, etc.

Posting objects could be handled very well by blogger. You can put pictures and links in a post, and there's a comment mechanism. The comments would continue the conversation.

You could also handle posts and reading with gmail, because it has excellent conversation threading. If you use gmail you'll have to be very careful about leakage, in or out.

Slashdot's forum has excellent threading, for inspiration.

Alerts and keeping up to date could be handled by logging in a lot and reading your stream, or via Google Reader, or by email/gmail, or any combination of them. Again, be very careful about leakage in and out.

Be nice to be able to post via email/gmail (hi Posterous!).

Media and albums by Picassa, but not just photos, anything a member has the right to post: books, audio, video.

Implementing some of this might be a challenge. Pick a subset. Iterate.

UI, UX, UXB

If you find anything looking like any part of Facebook, you're probably doing it wrong.

User interface should tend toward minimal. There should be zero or one way to do everything. UI elements should not suddenly disappear, to be found again after a frustrating search. Facebook recently made the logout link hard to find, burying it in the Account menu. Probably because they want to discourage you from logging out. Don't do stuff like that, it's disrespectful, and even if there isn't evil intent it encourages discussions of evil.

You should be able to easily choose where anything will be posted, and not have to worry at all that you might not understand where it's going.

When you view anything, you should get some indication of who else can see it, general by default but able to drill down to groups and individuals if you like.

Name everything well, once, and use only that name, everywhere.

You shouldn't need a help system. But someone will want it, and it should be worth reading. You should also be able to get to help for specific functions, from the context of that function, without having to abandon your context and go into "reading the manual" mode.

There's probably more.