22. Oktober 2008

I am a Professional Paranoid

I am a software developer. I make things work. Sometimes I make a mistake. But only about once per year. I mean serious mistakes, a wrong Architecture, a buggy code line that requires an emergency release. That's OK, you think. But...

...there are 10 developers. Each of them does very good work. They deliver solid, tested, working code. They make only very few mistakes. Only one each year. I mean the very serious errors. This makes an emergency release every month. Each new release is followed by a bug fix release. Each new feature is retarded by the emergency release of the previous feature.

There are 6 big features every year. Each feature has >1 operating components. This makes 30 components in 2 years, easily 50 in 3 years. If a single components runs into problems once per year, then after 3 years operating plays firefighter every other week. But operating is already busy maintaining and expanding the operation without serious application problems. They have their own operational problems.

All this makes me 10 times more paranoid.

Of course you make mistakes, anyone does. We test, check, and we find and fix them. But still one per year might slip through. That's still too much. We need methods to eradicate them. My methods are paranoid programming, good architecture, expectation tests, slow down, and 4-eyes.

Paranoid programming and good architecture are classics. 4-eyes is useful in extreme cases and dangerous situations. You want to drop the backup database? Ask someone else, if the statement is correct. She will notice that you are actually dropping the live database.

Expectation testing means, that you plan what to expect from a test. Think of the result before you click the button. Do not interpret test results. Plan the result, make a theory, and confirm the theory. The system tells you facts. And facts are powerful arguments. They can easily convince your brain, that everything is OK. Do not let them convince you. Let the facts confirm your expectations. You are the boss. You tell what happens, before it happens.

Slow down means that you do not hurry delivery. Coding should be quick, dynamic, agile. But delivery, be it deployment, delivery of results or code check-in may be slow. Take your time to think about what you are doing and if it is really brilliant. Stand up, walk around the chair, sit back, think. Take the time. It's only 3 minutes. It's nothing compared to the work before, nothing compared to the consequences of failure.

The goal is NO MISTAKES. That's impossible. But if we do everything and more to make NO MISTAKES, then we might end up at really only one per year, per developer. That would be fine.

21. Oktober 2008

Standardising Virtual Worlds: Do Not Hold Your Breath

We know it all: there will be one 3D Web in the future. All virtual worlds will be unified into a single system. A single 3D world player will interface to many virtual worlds (VW) and there will be multiple compatible players. We know it, we talk about it, some of us even work on it. The term "walled gardens" expresses our dream to overcome the current fragmentation. But it is a dream, rather than an expectation. Because most of us in the VW domain do not really know how to achieve such standardization. We know it will happen, but we do not know how. The standardization question is wide open. Of course, some people can answer it already.

Multiverse and Metaplace develop protocols with standardization in mind. They also create showcases. But the real driving force is to provide infrastructure, that others can use to create content. Their infrastructure comprises protocols, formats, and mechanisms wrapped into sample implementations. Their answer is: "use our protocol. It's been designed exactly to be used by everyone". That is probably true. But for the rest of us the question remains: which of them? Would any of the new "created as a standard for all of us"-systems drop their protocol and use another one? Probably not.

Second Life and There.com also have answers. The Second Life community just says: OGP. Others say OGP is the least common denominator. That's neither fair nor true. See how much value has been created with HTTP as common denominator. A chat protocol would be the least common denominator for VWs. A chat protocol just mediates messages. OGP is much more. OGP is feature rich. But still There.com surely finds deficiencies and has no incentive to make a transition. There.com and many other mature VWs have a well running system. Would they join OGP? Probably not.

Then come World of Warcraft and other systems, which have 10 Mio. monthly paying power users. Their answer to the standardization question is: "why?". Maybe as good as "let's see".

There are newcomers striving to create standards, there are mature VWs which move to create standards based on their 10% market share and completely uninterested behemoths. The current situation ist very unlike the Web where competitors dropped out quickly when HTTP arrived. It is much more like the Instant Message and Presence (IM/P) situation 10 years ago. Uninterested behemoths (e.g. ICQ, AIM), established players tweaking their protocols (SIP, XMPP), and newcomers determined to create a standard from scratch.

If this is true, then there is no hope for a unified VW protocol. Extrapolating from the IM/P experience, we can expect multi-protocol VW clients with protocol plugins for individual systems. We are now running Miranda, Trillian and others and have our buddies on a unified roster. A typical protocol plugin has less than a MB of code. A SL/Metaverse/There client weights in the order of 20 MB. Applying a conservative Moore's law, the 500 kB of 1996 is the 20 MB of 2008. We are now talking about standardization. We go to conferences, which remind me of lively IETF meetings about IM/P standards. Some are implementing "the future standard". Some hurry to make small changes to their existing protocol to propose it as "the standard". Some just wait and see.

We can expect multi-protocol clients in a few years and it will be long time until there is a common standard. Maybe 20 years from now. The IM/P domain did not get there after 10 years. But there is progress. IM/P has only been partially integrated. The roster is unified, i.e. only one client with one window on the desktop. But account-wise IM/P is not integrated. There are some big players connecting their account spaces. But it is not yet common. You need an account in every network. We can expect the same in VWs for a long time.

Even with incompatible protocols we would hope for avatar unification. But it will probably turn out as in the IM/P space. Different world, different account, each one with an avatar. Primarily because of different policies. There are VWs with user created content. How would you use these avatars in WoW or a controlled There.com. If you buy something in one world and you get it for free in another, some content creators might be very upset. That's a pity for worlds which rely on user generated content. And there are technical limits. How shall engineers handle scripted clothing from SL in a world which does not support it.

What we can hope for is partial integration where a world manages an avatar and other worlds can at least show it. Maybe not all features, maybe just the basics. The goal for the near future is to display avatars from other worlds. That also fits to the business model of VWs. Users remain full members of their primary world. They customize the avatar with all features offered by the world, from a user driven clothing industry to quest rewards. But they can visit other worlds with this avatar.