Awesome post on platforms


bzar

A Commando
Joined
Sep 22, 2008
Messages
4,500
Location
Finland
Website
Visit site
It's kinda long, but absolutely the most interesting article I've read this week.


https://plus.google....sts/eVeouesvaVX


I also think this relates to our little community here, given the whole apps.o.o and repo.o.o thing. Platformized versions of products prevail.


EDIT: <meta>Started thinking after posting if this is the right place for this thread? Sure it's dev-stuff and definitely general talk, but maybe others would be interested as well? I dunno. Opinions?</meta>
 
Last edited by a moderator:
I read this last night, and it was definitely an interesting read if only for the insights it gives in Amazon's sudden change from an online reseller to a web services provider.


Google seems a bit haphazard and infantile in many of its endeavours. Google Apps is a good example; it's a promising product with oodles of potential, but they don't seem to know what to do with it, and having migrated our email over to the platform, I now live in the subtle but underlying fear that Google might get bored of it and pull the rug from under our feet.


Anyway, I digress. The idea of building products as a platform is certainly a sound one, where the product can be marketed as such. But it's not easy to just "build an infrastructure" for something.


It takes planning and investment in both time and money to build a "platform" before you even start building the product you want to sell. And until you have that product, you don't have the "killer app" that will help sell your platform.


It's probably not the best example, but imagine building a faceless version of Wars which just contains the logic and ability to manage multiple arbitrary unit types over terrain. Instead of saying: "well, I've got 10 known types of terrain, so I can hard code some bonuses for those" you're thinking "I need to figure out what properties people might want in an element of terrain, and produce a system which can flexibly store a multiplicity of different terrain types"


You may well have done this anyway, which is why it's not a good example. But building a platform and then a product is a very, very different way of thinking.


We've done it with an E-Commerce platform- the idea being to create a "platform" which will take into account all the nuances you could possibly want in an online store. The problem being, that no matter how much we think we've covered, a user of the platform will always find an exception and it ends up growing organically in unexpected and unwieldy ways.


Platforms are hard!
 
<a-bit-off-topic>


Wars logic is actually completely oblivious to the unit and terrain types. Those are defined in a separate file as part of configuration. Also, wars-gamenode is actually built with the "eat your own dog food" idea. The web UI gets data only using the gamenode interface, which is usable to any other clients as well. You could say the wars-gamenode server is a platform for wars clients :p . It's one of the major ways wars-gamenode differs from wars-django.


</a-bit-off-topic>


Platforms are hard, and if you end up being the only one using your platform you'd probably be a lot better off with monolithic products. It's a gamble, but pays off big if successful.
 
Fascinating read. I never realized that in general I think in terms of "platform programmer" when designing non-games. Extensibility is always part of my design. Sometimes a bit too much. DeathTrap Remix was the only procedural non-platform thing I've ever written.
 
I think about "platform" development all the time, in all my design, at least a little. One of my biggest rants about Minecraft is how frequently Notch breaks the game adding a new element because of how tightly coupled everything is, instead of having designed an API from the ground up to act as a standard interface to blocks, mobs, items, biomes, etc...
 
Back
Top