ning! double ning!
A very good friend of mine has been working at 24 Hour Laundry for many months now. Unfortunately, I was unable to convince him to share any information about his top secret project. Well, he did say it was “quite interesting,” but that didn’t get me very far.
Therefore, I was quite excited to see Russ blog about the launch of ning.com. Now I could finally see what all the excitement was about. Well, I must agree with David. It certainly is quite interesting.
To quote from the faq: “Ning is a free online service… for people to build and run social applications.” Think of it as a mashup between Jot and, well, something else. Jot is Joe Kraus’s application wiki platform, and something else is the union of flickr + del.icio.us + friendster + Google Maps.
I wanted to blog about it immediately; however, I really didn’t have anything interesting to say. Not that it’s stopped me before, but still. As a rule, I feel that in order to really understand something, you need to get your hands dirty using it. And in this case, I couldn’t just explore the example sites, I actually had to figure out how to build an application on the ning platform.
Fortunately, I know PHP 5 and so does ning.
I did the simplest thing I could possibly do that was still of value to me. I cloned the sample restaurant rating application; extended it to add two fields: airport code and location; and created the “Airport Restaurant Review” guide.
At first, I ran into a little bit of a problem understanding that I had to use the “my” namespace. Data went in fine, but it didn’t come out. Exception city, sweetheart. Sigh.
I must admit, I hate frameworks because I never have any idea how to go about debugging them.
However, I left the application alone for a day and it managed to debug itself. Well, not really, but after I came back it only took me five minutes to give in and actually read the docs to guess the proper fix. All better now.
Speaking of developer docs, I can tell David has really been cranking away on them. There’s *a lot* of material there: tutorials, API references, and full-featured sample applications.
This Airport Restaurant Review guide is actually something I’ve wanted to write for a over a year now, and even managed to convince someone to do for me, but we never launched it. Now it’s up and running in less than an hour of programming time.
Pretty cool.
My next task is to refactor the application to create a separate airport class instead merely adding properties to an AirportRestaurant class. Unfortunately, I’m not quite sure how to migrate the underlying data in the store, so I’m kinda stuck. The key to ning is the ever-evolving nature of the applications, so I’m sure I’m missing something here.
But while the code is necessary part of a social application, it’s not sufficient. You need users and data and a community of people to care about what’s happening inside your application. That’s what makes it social.
In other words, a photo sharing application with 200 photos isn’t flickr, even if it looks the same and has feature parity. In fact, your photo has less value outside of flickr than in, even though it’s the same photo with the same set of tags.
So I guess one of the questions on my mind is “is there room for more than one flickr on the Web?”
Some types of sites lend themselves to a “the rich get richer” design: marketplaces (eBay), payments (PayPal), communications (Skype), IM (AIM, Y! Messenger, ICQ).
Others do not: search (Y!, Google, MSN, Ask), e-mail (Y!, Gmail, Hotmail, ISPs), content (Y!, Google News, MSNBC, blogs, newspapers, etc.)
Do social networks fall into the first category? Or are people perfectly happy forming their own little social cliques? Dunno.
I suspect we’ll end up with something similar to IM. There are multiple good-sized networks that have a clear advantage due to their size, but not necessarily a “winner take all” outcome, such as what Microsoft’s done with Windows and Office.
One of the advantages of ning is a shared data store, so people can remix data from other applications into their own. On the face of things, this looks like an excellent way to aggregate data across multiple micro applications into a unified global database of socially created content — exactly what a social network needs to become powerful.
However, you permission to other people’s data is read-only, so I can’t actually propagate my Airport Restaurants reviews back into the main set of core Restaurant reviews.
This leads to data fragmentation, which I think undermines the benefit of a social network.
It’d be great if I could request write access to someone’s data store. If a AirportRestaurant isa Restaurant (or aggregates a Restaurant), then everything should map correctly.
This certainly complicates matters — if you think refactoring was hard before, how do you coordinate it now? — but adds a great deal of value from my point of view.
I’m pretty sure ning will continue to evolve, and I’m quite interested to see where this quite interesting platform goes in the next few months.
Comment by Marc Andreessen on 7 October 2005:
Hi Adam — thanks for the detailed post!
Re refactoring and migrating the data — right now the inelegant way to do that is to take your app offline (make it inactive), write a PHP script that does the data migration from your old structure to your new structure, execute the script, and make your app active again. Obviously this is not ideal and we plan to provide much better tools down the road. (Of course, such tools could actually be written by developers in the playground today! — as reusable PHP scripts themselves.)
Re the more than one Flickr question — sure, the world doesn’t need a huge variety of general-purpose photo sharing sites. But on the other hand, the world does need a huge variety of sites to do things like rate your teachers, restaurant reviews, hiking trails, some categories of classifieds, some categories of dating, some categories of jobs, etc. — these are things that work very well at the local level. Or lots of different kinds of potential exchanges that don’t fit into EBay — for example, one of our developers is already working on a seed exchange for local gardeners to exchange seeds. Or lots of combined apps — for example, a highly customized social network for your school or your church with profiles, photos, meetups, calendars, listings, etc. customized to that location and group. We will see, but our bet is that there will be a reasonable number of these highly customized, “situated” social apps.
Your point on write access to other apps’ data is a very good one and very well taken.
Comment by David Sklar on 10 October 2005:
1. Ditto on everything Marc said.
2. (And this sort of goes to Marc’s first point) There is an interesting balance to figure out between tools we provide and meta-tools we provide so that developers can build whatever tools they want. Definitely lots of work to do in both buckets right now, though.
3. Glad to see the airport food review site has finally been born! Now we just have to work on getting better food actually into the airports.