Platforms vs. Frameworks

First of all, apologies for not having any activity lately. I pretty much blame the lack of Internet at home, a situation now remedied.

Since I mentioned that my work is for an online platform, I had some people come ask me what the difference between a platform and a framework are. Based on my current experience, I'm going to give a simple explanation. Others might have contradictory experiences, so feel free to share.

  • A framework is a set of APIs which allow the consumer (3rd party developer most of the times) to perform some actions.
  • A platform is a set of services and APIs which allow the consumer (3rd party company most of the time) to perform some actions.

You can now see why we have the confusion. Until the emergence of the Internet, a platform was pretty synonymous with a framework. Now, platforms usually represent some web services, and at times frameworks (or SDKs, if you wanted to have more complicated buzzwords). Let's take a look at 2 examples, one for consumers and one for businesses:

  1. XNA - consumer platform enabling hobbyists develop and publish video games. On one hand, it has a bunch of services, which allow developers to interact with it (Blog, Creators Club etc), and on the other it has a full framework which hides the complexity of DirectX development rather nicely.
  2. OCP - a commercial platform enabling businesses integrate, sell, advertise and bill their services online. Our current architecture is comprised of several web services which perform different duties. Companies can plug into our environment and start using the web service APIs. There are some high level APIs, for general abstract things (eg. billing a customer), and lots of lower level APIs which the web services use to talk to each other and perform their duties. Currently there is no public framework in place, and I'm not sure given the current model one would be needed.
  3. Facebook - everybody knows that Facebook is a social site, but for developers it is a platform - it has a set of public APIs which developers can call to get different information and provide whatever they seem worthy to their customers (and if you didn't notice the tons of apps for Facebook it means you're not using it often enough)

When I refer to a framework, I usually expect to download some DLLs, and be able to reference them in my code. .NET is a perfect example of a framework. While the complexity of .NET is significantly higher (it's also a runtime, among other things), it is a set of DLLs which can be referenced within a 3rd party's code.

As I initially said, there's a pretty thin line between a framework and a platform, but one that will probably become more clear in the future, when I expect services to become more relevant and common.

-Cos