diego's weblog

there and back again

the ning platform: yes, it is THAT cool :)

Albert Wegner from Union Square Ventures wants a new Platform.

He describes some of the characteristics of this new platform as follows:

A platform that is created from the ground up to enable modern web sites and applications. What would such a platform look like? It would be hosted and (nearly) infinitely scaleable. It would provide object storage that’s as simple as saying “here’s an object, store it” (you get back a handle, ideally, if you want a human readable, search engine optimized one). Later on, retrieval should be something like – “here’s a handle, give me back the object” (with full user level access control baked in). Stored stuff should be easily indexed so that one could say “give me back all the handles for objects that match this pattern” (and to which the user has access). The same should work for media: “Here’s a picture, store it for me with this metadata” and “Find all the pictures for me tagged x.”

Aside from storage there are other useful services the new platform should come with, since essentially every modern web site / application needs them, such user authentication, authorization and access control. Flexible processing of pretty URLs. Easy creation and maintenance of page templates. Ability to send emails and process bounces. Handling of RSS feeds (inbound and outbound). Support for mobile access and possibly even voice capabilities.

Code would run inside the platform (this is what Marc Andreessen calls a Level 3 platform) but it would not be cut off from the outside world. It would have full access to other services that live on the net via web services. So, for instance, there would be no need for the platform to have its own payment service.

Then he goes on to add:

Marc Andreessen lists companies who are working on it now, including his own Ning, Salesforce and Amazon. […] Despite the big guns already working on this, I believe there is still an opportunity for someone new to build the new platform.

(My emphasis)

Yep, he mentions Ning, but obliquely as “working on it” along with others. Ning is not just “working on it,” but we already have it running, and most of this has been running since the beginning — in fact, at the developer’s level, this is what we’re about.

Allow me to explain: let’s go over some of the requirements he mentions in more detail:

  • A platform that is created from the ground up to enable modern web sites and applications.
  • Hosted and (nearly) infinitely scalable.
  • Simple Object storage (not relational), supporting indexing, tagging, searching with user-level access control baked in.
  • Built in rich media support.
  • Flexible processing of pretty URLs (URL Rewriting).
  • User authentication and access control.
  • Messaging support.
  • Syndication support.
  • Everything exposed through webservice APIs.

Every single one of those requirements is currently satisfied by Ning. As I said before, this is not stuff we’ll release next month, or next year, or “at some point”. It’s stuff that’s running right now, and that has in many cases (such as the webservice APIs) been running for the full 2 years of Ning being live.

Thinking that Ning is “only” about providing easy-to-setup social networks is a common misconception with Ning, and we’re working to improve the documentation to make this obvious.

A lot of things on Ning are about the APIs we provide, and for a good reason. As I wrote before, you can think of the Ning platform as a giant API with a built in ability to execute arbitrary code against it, and both the code and the API access will scale transparently with your needs. Every Ning network runs on top of the API — there are no “special backend systems” or priviledged data paths, or anything of the sort. Therefore, the Ning platform is fundamentally different in this sense.

Here are some specifics of how the Ning APIs make this possible — “this” specifically the requirements and functionality that Albert was talking about in his post.

  • Ning provides APIs and default pages and UIs for user authentication and user account management.
  • Ning’s PHP APIs actually just wrap the Ning REST APIs. The REST APIs are front- and back-end symmetric, i.e., every single API is accessible from both the external world (as a webservice) and internally from the Ning execution environment itself. Internal requests are automatically validated for access (given the user’s current login/pwd) and external calls support HTTP Authentication.
  • The Ning Content Store supports, through the REST APIs, arbitrary, dynamic content shapes that don’t require a schema to be predefined (the schema is dynamically defined at runtime). For more on this see The Ning Content Store: A Primer.
  • The store also scales transparently and has implicit fault-tolerance.
  • The Ning backend supports image manipulation after upload, including resizing and rotation, and video transcoding from most current Codecs into Flash.
  • Rich media (including arbitrary attachments) can be stored as attributes within Content objects and then referenced normally, using the built-in search mechanisms, tagging support, etc., along with high-level aggregation functions that, for example, automatically return tag clouds for content you upload.
  • Content is available (given appropriate user credentials for private content) through built-in Atom APIs that can be consumed in any feed reader. Additionally, the social network application provides many built in wrappers for feeds in RSS format.
  • URL Rewriting is built in. (Note — we use this a lot, but our Forums and Blog still lack in this respect, so the permalinks are, let’s admit it, pretty ugly).
  • There are also APIs for searching, Messaging, role management, and large-scale group formation and management.

On top of these base services there’s the Social Network code itself, which you can obtain for your copy of the network (it’s free, after all) and then modify at your heart’s content. This code contains tons of higher-level functions, libraries and APIs that can be leveraged to build higher-level components very easily.

We will improve the documentation and examples in these areas dramatically over the next few weeks and months, but in the meantime, if you have special requests or questions, you can join the Developer Network and post them. Or just ping me.🙂

Comments are closed.

%d bloggers like this: