As the guy who wrote one of the first open-source status update systems in 2007, the main developer behind Acquia Commons social business software 2.x, and an evangelist of social communications technologies, writing the title of this post feels strange. I've spent the last 5 years of my life building software to make it easy for people to build social networks, so why would I suggest that sometimes you shouldn't do it?
ViralSpread is a FOSS program that simulates a competitive contagion scenario. You can adjust the simulation's parameters and it will report various statistics about the simulation including graphs and exportable data. You can download the program (including the source code and screenshots) or check out the source code on github.
You can also read about the development process.
On Friday I went to a series of talks for the kickoff of the Marketing and Social Systems Engineering (MKSE) department at UPenn, chaired by one of my professors. There were four speakers -- I missed the second -- and the talks ranged from monetizing people's browsing behavior on the internet to proving that humans exist.
I've been building an open-source suite of social networking software as a hobby since 2007 so the underlying topic of network science has interested me for a long time. I have mainly focused on building user engagement. Towards that end I've thought a lot lately about the right way to represent relationships on a social networking website given varied successes and failures of Facebook's Friend Lists and new Smart Lists as well as Google+'s Circles. My expertise is in Drupal and the choices there all require tediously, manually building your network. I'm convinced that the best approach for usability is to automatically identify people's friend groups. In general it's a good principle not to make users do anything that is not directly related to accomplishing their task of participating on your site, and manually maintaining friend lists is awkward anyway.