This is an excellent read as I think about Drupal's role within social software... After years of study, I found this blog from Matt Webb most interesting, and actually very accurate. Enjoy reading.

From the blog:

"We need mechanisms in the online software to bring in a similar incentive structure to the offline world. The single most useful piece of thinking I've been using is Stewart Butterfield's March 2003 post on the devices in social software, mechanisms successful pieces of social software tend to have.

Identity
Presence
Relationships
Conversations
Groups
Reputation
Sharing
I'll describe each of these, as I see them, critiquing AOL Instant Messanger (just as an exmaple), and then describe how we put them into use.

Identity | Your identity is shown by a screenname, which remains persistent through time. There are incentives not to change this, like having your list of friends stored on the server and only accessible through your screenname. This acts as a pressure to not change identity. Having a persistent identity is more important than having one brought in from the physical world.

Presence | Presence is awareness of sharing the same space, and this is implemented as seeing when your friends are online, or busy. AIM isn't particularly good at group presence and visibility of communication, although other chat systems (such as IRC and early Talkers) use the concept of "rooms" and whispers.

Relationships | AIM lets you add people as buddies. From that moment, their presence is visible on your screen. This is a relationship, you're allowed them to have an effect on your environment. Not terribly nuanced however.

Conversations | Conversations are implemented as synchronous messaging. There's a difference between messaging and conversations. Messaging is just an exchange of text with no obligation, but conversations have their own presence and want to be continued. AIM does this by having a window for a conversation. It's difficult to drift out of it, it hangs there, requesting you continue. Contrast this with email which often is just messaging, and conversations die easily.

Groups | AIM isn't great at groups. Although you can have group chats, the group is transient. People have more loyalty to a group when there's some kind of joining step, when they've made some investment in it. Entering a window just doesn't do that, and there's no property of the group that exists outside the individual user's accounts.

Reputation | Reputation is used more in systems which allow meeting new individuals. AIM's simple version of this is "warning". Any user may "warn" any other user. A users total "warn" level (a figure up to 100) is shown to everyone they communicate with. Unfortunately, it's not a trustworthy reputation system, and reputation is notoriously difficult -- but humans are great at dealing with it themselves, given certain affordances: persistence identities, and being able to discuss those identities with other people. AIM's simplistic relationship system makes reputation not so important though.

Sharing | People like to share. With AIM, sharing is often as simple as giving a friend a link to follow. Other systems, such as Flikr, are about sharing photographs. These act as small transactions that build genuine group feeling."

Curious what our Drupal development community thinks about these 7 components (as pivotal/needed) to the Drupal project. Thoughts/discussion? Thanks.

Comments

Bèr Kessels’s picture

If you are looking at drupal to see if it can do this for you: here's a small post on the way drupal implements those functions.

Identity: user system is there.

Presence: Who's online offers a general list of online users. Other modules (buddylist etc) should be improved in case you want to have this better configurable. Conclusion: Not exactly as descibed above, but the functionality is there.

Conversations: Private messages, comments and forums: Drupal offers loads of options. Conclusion: is available in lots of ways.

Groups: there is no such thing right now. Buddylist could be extended to handle this. And if users were nodes this would be real easy with taxonomy ;). Groups module handles permissions but no grouping of users for listings. The new profile module offers methods for browsing people with similar interests, but no real grouping is possible there too. Conclusion: Not there yet.

Reputation: RSS and tel-a-friend can be used. But there is no module that does this exactly as described above. Conclusion: Can be done in some way.

Sharing : There are some simple file-uploading modules. But there is no method that allows you to send files and resources in private or to other group members. Conclusion: cannot be done as described above.

Overall conclusion:
Using buddylist and privatemsg on top of the core drupal will enable you to do quite some of abovementioned things.

For those whom are interested: I am currently working on a social-network-site in drupal. Aimed at a small crowd of fashion-aware people. at www.partyfashion.net.
Another site that is an already running example this post can be found at oasismag

Ber
Mediarevolution.org :: het platform voor online muziek

drumm’s picture

Going into technical architecture stuff, I think users as nodes might make sense. The code probably duplicates a lot since nodes do the same thing with modules extending stored data and presentation and such (user.module is the largest core module by far). As I coded my first user profile extension module I kept running into situations which made me think "why does it do it that way, why doesn't it work like nodes do?"

boris mann’s picture

There are some long discussions on users-as-nodes.

I've gone back and forth -- I actually think there are likely more differences than similiarities between users and nodes, so I think I'm in the users-as-separate-objects camp again.

There is no reason you couldn't use taxonomy to do something interesting with users, like grouping or categories.

Bèr Kessels’s picture

Please note that i added a smilie after that sentence. The purpose of that smilie is not clear enough. My mistake! I placed that users as nodes comment (with smilie) there to refer to that (endless) discussion, rather than to bring it to this thread.

So please: Do not discuss this issue in this thread. This thread is about social software, not about users as nodes!

Ber

boris mann’s picture

…social software all about users, which really should be nodes :p

Have to remember to not always take everything literally here. I really do want to start that discussion again though, it's a fun way to debate software architecture ;)

drumm’s picture

What is the best tell a friend functionality out there? Is there a module that does it well?

Dublin Drupaller’s picture

Installed the emailpage module the other day and it works a treat...

http://drupal.org/node/view/7396#11154

Hope it helps..

Jason

Currently in Switzerland working as an Application Developer with UBS Investment Bank...using Drupal 7 and lots of swiss chocolate

Bèr Kessels’s picture

Sorry, that I did not mention the correct name of the tell a friend module. I have no experience with any others, but have user "refer" on a 4.3 installatopn: It works very nice.

Ber

killes@www.drop.org’s picture

Groups.module will have listings of group members after I find the time to programm this.

netlynx’s picture

For those interested I would suggest http://www.ecademy.com as a good example of using most of these in earnest. Not sure if there is much customization, but it looks fairly standard to me (with custom themes).
I am still a newb but I am surprised at how well Drupal appears to cope with these issues as a content centric system. Maybe the eternal discussion is because in the final event the node concept is designed for content not individuals, there is always the danger of using a good design for the wrong purpose just because its good...}:-)

maptheway’s picture

One thing that I should have brought up here earlier is the importance of authentic identity that is most notably embodied with personal photographs. The first thing anyone notices in a face to face social setting is one's appearance...this 'traditional' approach to social networking is also pivotal to online social networking...

So, when considering online identity one must have 'personal photos' as an integral component.

Bèr Kessels’s picture

Drupal supports this too. They are called avatars. In case you want to extend picture abilities there are various other modules. The imagegallery.module offers personal image galleries.

Ber

battochir’s picture

I find this discussion interesting , but inconclusive. Perhaps I do not understand completely how all the above mentioned modules work together. Reputation can be imporant under certain conditions. As has been seen, the concept of Mojo or Karma is nice but falls short. It is open to exploitation from the few who accumulate high rankings...yet they do function. It was written earlier in this thread that RSS could be used to achieve reputation. How? Users are not nodes and others cannot comment on them without using a node type...if I understand drupal correctly. Here http://drupal.org/node/13475 I discussed an idea, but as I am new it could be very wrong or to complicated. Could someone please explain to me how Drupal could be used to solve such a problem?

Wim

killes@www.drop.org’s picture

I doesn't make sense to rate users, IMHO. A user rating should be the sum of that user's nodes ratings.

Anyway, you could add a "rate" tab to any users account view.
--
If you have troubles with a particular contrib project, please consider to file a support request. Thanks.

battochir’s picture

Just some ideas. Your idea of a user rating being the sum of his/her user node ratings is good only under certain circumstances. I have read much in the forums about the ecommerce modules, so I will use them as an example. Within an environment that is non-commerce such as blogging or straight news publication, I agree with you. Allowing the community to rate content promotes good interaction and moderation. In an environment provided by the e-commerce group of modules, this system falls short. This is because when someone sells a product on the web, one of the first things you worry about is their reputation...will they deliver on the product they are selling? This requires a localized feedback system related to each user. Under the scenario of users rating nodes and not other users, you would have to rely on the users themselves going through the product index and tryng to find goods offered by a seller they wish to write about and then attaching their review to each node with a product offering. Way to much work in a commercial setting. In such a setting, time has a negative decay rate and this process exacerbates it. People in such an environment come to buy things and reviewing their transaction with other users is part of that process. Hunting down nodes created by people they have dealt with in the past would be to much effort. In addition, if the index of products is big enough, there is no gaurantee that all the offerings from a single seller would be found. Apply such a system to ebay...it would not work. This is all only an opinion as I am still learning the Drupal modules and going through the source. If I am missing something, I would appreciate someone pointing me to it.

Wim

killes@www.drop.org’s picture

Ok, your use case makes sense to me. But I do not see why it shoul dnot be possible to do something like this. A moduel would need to implement the _user hook and there you go.
--
If you have troubles with a particular contrib project, please consider to file a support request. Thanks.