This is likely to be a personal archive post. For those just joining us from the future (as I’ll likely point people here first if they stumble upon the project), the community management project is something I’ve been working on for nearly nine months now. I’ve finally taken steps to get it out of the design phase and into proto-typing. Still waiting on word for that.
I figure enough people have expressed curiousity that it’s worth sharing a bit more about the project.
The project has two major goals which are pretty strongly intertwined, but which can be executed separately. I figure that the first part needs to be done as soon as possible, and is doable now, and the second part also needs to be done as soon as possible, but is going to take a lot of work.
The first thing the project strives to do is create the ‘perfect’ community management package. To date, communities have formed online in a sort of ad-hoc manner. They’ve sprung up around forums, email-lists, blogs, blog-rings, and recently in social networking systems like LiveJournal, MySpace, and Facebook. But all of them tend to have one thing in common, the strongest communities that spring up in these areas supplement the communications options avaialable to them.
Consider the fact that most close groups share IM information, because IM tends to provide richer discussions in the short-term. Some even go so far as to share phone contact information, and then call one another. And the most coherent groups tend to plan and execute conventions or other types of face-to-face meetups. This is all natural and good, but it strongly highlights the fact that current community management software is not providing everything the community needs.
The second thing that the project strives to do is to facilitate creating better communities. While the first phase is all about combining as many tools as possible (and simplifying interfaces, and making them more powerful) into one package, the second phase is about software-assisted community construction.
Internet communities face a number of interesting weaknesses (along with their strengths) when comapared to real-space communities. One of the big ones is that participation is dependent upon almost nothing but interest. I, for instance, might really want to get involved in the Boston indie-music scene, but since I live in the south, that’s just not going to happen. Desire isn’t enough to get me in. This same thing can be seen in many real-space communities as people move in and out of the area for various reasons (jobs, schools, retirement, etc.) Your local knitting club may lose or gain members because they move. Your online knitting club will keep those members either way.
This has two significant effects. First, it pushes toward stagnation. The opinion leaders rarely drop out, and thus it is difficult for new voices to be heard. It discourages seeking new communities. Since you don’t have to leave the community you’re in, you have no pressing reason to seek a new one. As long as you’re content with what you have, you’ll not go wandering elsewhere.
These two things work together to promote stagnation and lack of growth (which are related, but not the same thing). With people not swapping communities, no one really grows. This is further complicated by the fact that, since the internet is ‘world-wide’, people sort of assume that they’re involved in the most important community doing whatever it is they’re doing. This means that communities doing basically the same thing have no reason to seek each other out, which can result in split efforts.
This is all a long winded way of getting to this: the second phase centers on the creation of a learning algorithm that is able to automatically draw people of interest together. It is able to recommend communities and individuals to one another. It is able to suggest points of cooperation between existing communities that are unaware of one another. Further, and this is important, it is able to gracefully split communities as they grow too large to be productive, and as their interests split up. Get any community large enough and you’ll have two competing ‘primary’ goals, pursuing both at once weakens the pursuit of each.
So this is a complex algorithm, and I’m not sure where to begin. (Though Annie quite cleverly recommended taking a look at the matching code used in online dating communities. How clever!)
So, those are the two major goals, and they both depend upon the central tenet to the project: human interaction is shaped by the interfaces through which we interact. By developing a more productive (and generally better) interface, we can encourage more productive (and generally better) interaction. This is really exciting to me.
A bit of nitty-gritty:
The first phase is pretty big all on its own. Not only does it need to integrate communication types, it also needs to improve upon current models of shared reading. The basic design, as I have it now, consists of two major packages, with a third I’d really like to add: First, it’s a blog system, with feeds and a proprietary (and ridiculously complex) tag system. The feed and tag systems interact such that you can generate feeds of any tag combination dynamically. This solves the ever-annoying LJ problem of not friending someone because you only want to hear their thoughts on some subjects.
LJ-like communities can be generated simply by creating a tag/member list. The community will automatically generate its content from its members who utilize specific tags.
On top of this there is an integrated IM system. It’s browser-based, like all the other software in the package. The IM system utilizes the same username as the rest of the system, allowing users to seamlessly interact via IM with people they watch feeds from. The IM system is going to be fairly robust, allowing for offline delivery (that is, if someone isn’t online, you can send them a little message through the IM program). It also is going to a robust system for organizing contacts and indicating different statuses to them. (So you can appear offline to some people, but not to others.)
(Quick note, all of this is browser-based because that makes it portable. One of the problems with existing systems is that users may or may not have access to full interaction depending one the specific machine they are accessing from. This isn’t good.)
The third feature, the one I’d like to add if I can figure out how, is a voice-chat system. I’m pretty happy with the Ventrillo interface, but it’s got some limitations I’d love to see fixed. I can go on more about this, but in all honesty this is a tough feature to implement. Not only does it need to be a web-based voice-chat client, but the bandwidth requirements of putting such a thing together make it infeasible at this time. Maybe in a couple of years…
Anyway, that’s what the project is about. Well, it’s about more than that, but this provides a decent sketch for the curious.
If you’ve got suggestions, I definitely want to hear them. I don’t think I’m an expert on the subject by any means. If there are features you consider vital that I haven’t talked about, of if you think my implementation is setting things up to suck, do let me know. And if you have questions or want clarification? Well, I do love to talk about this project, so I’m glad to answer them.
Thomas
ma.gnolia
Cryptic as always. Which part, precisely, did you think I should steal from ma.gnolia.com? The feed system?
Thomas
It’s got a smart and subtle “what’s related” system that doesn’t need to rely on tagging. (I find tagging clumsy.)
First, as a coder, I’m curious what language you’re looking at using for this. As you’re concerned about portability, I’d think you’d be considering java, as platform-independence is one of their strongly touted features.
Secondly.. Blogs are a good thing, but I’m personally iffy on them as a real means of communication and discussion. Maybe it’s a matter of the layout of most blogs I’ve seen, but discussion has always been somewhat difficult to follow and sustain. Is there any sort of way that your blog system could be integrated with a more standard message board format, or at least be able to be viewed and posted to in a similar format?
As to language-choice, that’s not even my call on this one. I’m the brains, other people do the work :) Seriously though, that’s something I’ll take under recommendation, but it’s basically going to depend on who’s interested in the project and what they’re good at. The code is all supposed to end up being server-side, so as long as I can get it standardized to run on some basic and common server-side systems I’ll be happy.
As to blogs vs. forums, I actually happen to think that forums, at least as they commonly exist, are terrible things. They tend to encourage addictive behavior, which is a big no-no in my book. That said, I’m still looking at basic infrastructure stuff, and it’s oddly difficult. There are advantages to threaded discussions, and advantages to non-threaded discussions, and you can only execute one of them because they’re non-interchangable. It’s a tough thing to figure out which serves your purposes better…
Thomas