//-->

Ethical Software by Alex Bunardzic

July 9, 2006, 7:35 am

Central Role of URLs

Filed under: Software, Web, Social software, Radical-simplicity — Alex Bunardzic @

In my previous post I’ve mentioned the issue of lackluster education in the area of web development. I’m afraid I’ve made it sound more gloomy than it actually is. Let me try to remedy some of that here. Basically, while the education in that respect is still lacking, it’s not rocket science, and it shouldn’t really take much effort to bring everyone back on the track.

Let’s Take a Step Back

Sometimes, the best way to gain a fresh start and a new, improved perspective on things is to take a step back and survey the terrain.

In the beginning, there was this thing called cybernetics. In a nutshell, cybernetics is the study of communication and control. Applied to machines, it talks mostly about regulatory feedback (the etymological root of the word cybernetics is the same as the root for government).

Software and programming in general arose from the field of study of cybernetics. Why am I mentioning all this? The reason is that I’d like to bring to your attention the fact that, in the early days, one of the irresistible lures of information technology was the fact that the way things are being done when programming a system is not cast in stone. Unlike in the non-virtual world, where there are constraints we cannot ignore, in the virtual world of software such constraints tend to disappear.

World famous scientist Gregory Bateson wrote a lot about that phenomenon. In his seminal book Steps to an Ecology of Mind, Bateson enthusiastically talks about the ultimate freedom of the information theory. In the world of information theory, Bateson wrote, anything can stand for anything else.

Translated to the medium of computer programming languages, this principle means that we are free to use anything (meaning, any variable name, such as x), to represent anything else. There are absolutely no constraints when it comes to choosing what should stand for, or represent, something else.

How Bad is it?

We’ve seen that a variable x can stand for absolutely anything in the world of information theory. But this incredible freedom could turn into a horrible prison. Take a look at this variable, for example (this is a real life example, only the specifics have been modified to protect the original authors):

https://profile.somecorporation.com/Regsys/xyzwizard.aspx?abc=187f14a9BFC0&lcid=1033

The above variable is, of course, meaningless. But so is variable x.

The problem is that for the underlying system (i.e. the computing machinery), it is perfectly fine to process variables with meaningless names. But for humans, this approach is atrocious.

Lack of Constraints is not Always a Good Thing

But why should we care about humans? If the results of the information processing are correct, what difference does it make whether the variable names in the source code are meaningful or meaningless?

If anything can indeed stand for anything else in the world of information processing, then we’d be better off to strive to make things meaningful. That, however, comes with a price. And the price is having to embrace the constraints.

Previously, by not caring about the meaning, we’ve acquired unlimited freedom to toss in any gibberish and still observe the correct processing take place. That felt quite liberating. We could, for example, toss in the scary looking ’sausage’ of meaningless characters into our browser’s address field, and still be taken to the appropriate web page. Isn’t that marvelous?

But in reality this turned out not to be such a good thing after all. In order to understand why this lack of constraints is bad, we need to look into the meaning and the role of URLs.

Why URLs are Important?

Uniform Resource Locator (URL) is the central underpinning of the web. It focuses on resources, and web is all about resources.

URL is very useful because it both identifies a resource and indicates how to locate that resource.

In order to identify a resource, the identifier must be unique. There are mechanisms put in place to ensure this uniqueness worldwide. That’s why you wouldn’t be able to tag your resource with tags such as http://google.com/myresource or http://yahoo.com/myresource. The tag you wish to use to identify your resource must be unique.

Of course, you are free to dream up any meaningless mumbo jumbo for identifying your resource, so long as the random sequence of characters you come up with is unique. But we’ve already mentioned how that kind of freedom is not advisable. We’ll look some more into why is that in a minute.

For now, it is important to understand two basic constraints related to URLs:

  1. It must be unique
  2. It is published

The fact that URL must be published means that it cannot be volatile. In other words, once committed, the URL should stay put.

So what are the ramifications of the double constraint that the URL must be unique and that it shouldn’t change?

Single Sink and Social Software Revisited

In some of my previous posts I’ve discussed the principles of Single Sink Applications and Social Software. I’d like to discuss these in a slightly new light here.

I want you to think for a minute about using the quintessential single-sink application, such as Microsoft Excel. Think about what’s happening while you’re using it. You may be building a worksheet, setting things up for processing, and in essence, creating little models of your daily affairs.

As you’re building this model, the state of the worksheet keeps changing. You may be adding new information to it, or modifying existing information in the worksheet, or removing some old and useless information from it.

While doing that, you may reach some milestones, at which point you may feel like freezing the state of your worksheet, cloning it, renaming it, and then continuing to work on it.

But throughout this entire activity, you are the sole consumer of that information. You are using the single sink software product.

If you now go on the net, and start using network, or web-enabled software, the rules of the game all of a sudden change drastically. If the web-based software was designed properly, all the milestones you’ve reached while using the software are capable of easily being stored and forwarded. The advantage of this built-in capability is that you can now easily share the results of your work. You are now plugged into the world of social software.

The concept that allows you to easily share your work is URL. URL denotes state (i.e. a milestone) that your product reaches while you’re working on it. If you are using a web-based software to do your work, you can easily store (i.e. bookmark) and forward that state, thus sharing it with others.

Identity, State and Its Attributes

The concept of identity and state is not always properly understood. The confusion arises when people misunderstand identity to be the attribute of an entity.

Let’s offer an example to illustrate what the differences between the identity and its attributes might be:

An online shop may offer products for sale. The shop Administrator will then add products for sale in that store. Each product that is added denotes a new state of that shop. As such, each state is captured in its own unique URL.

However, if the product’s description gets modified, it would be silly to treat that as a change in the product’s identity. Changing product’s description merely amounts to changing its state attribute.

Same applies to changing product’s price, or product’s status, and so on.

From this example, we see that only changes to the identity are to be expressed using the URL. Changes to the state attributes are to be considered transient, and we would only generate unnecessary noise if we insisted that all the changes to the attributes warrant their own dedicated URL.

URLs express identity. Once identified, an entity is easy to locate. Subsequent changes to the entity and its state cannot, under any circumstances, change its identity.

In the above example, even if the product changes its attributes (like price, availability, status, color, etc.) it’s still the same product.

Comments are closed.