One of the many factors that led to the success of the Web was in how it defined links in a very simple manner, which encouraged cross-referencing. In the last two installments of this column, I've discussed the importance of the identifiers of the Web: URIs. The Web's native document element, HTML, made it easy to connect one URI to another, and so relationships between documents could grow regardless of who controlled the documents. This of course meant that sometimes such links would break, signaled by the infamous 404 "Not Found" code. Purists of hypertext, the discipline of strongly linked documents, disliked this fragility, but the Web grew, and continues to grow so fantastically, precisely because of the power of simple links needing no strong system of control.
Simple links lead to sophisticated services
The power of Web linking simplicity is precisely because they are simple at the point of definition, but that they gain richness through collective effect. A good example is Google, and its famous PageRank algorithm. Google search has grown into one of the most important computer services, and some might say one of the most important services in all of commerce, through the basic idea that the value of a resource can be measured in part by the number of links to it, and by the value of those other resources that link to it. By taking this into account, Google helps people find valuable resources more quickly.
Google computes PageRank by operating "spiders," programs that autonomously hop from each resource to other resources linked therefrom. The idea of such spiders is almost as old as the Web and much older than Google, but Google is a good example of the power of building value on simple links because it took the role of the link a step further than its predecessors. The Web's success lies not in any singular service, not even one as popular as Google search, but rather in the endless number of other services out there building on simple links of interconnected documents.
Relationships fuel commerce and community
So many people, companies and other organizations nurture a presence on the Web that such links become the vehicle of important relationships. The same relationships that can be explored painstakingly by clicking links in a browser can be aggregated into all kinds of services through spiders, and these relationships are the framework for explosive growth.
The success of many companies, from modern commerce sites such as Amazon to social networks such as FaceBook, illustrates the importance of thinking properly about such relationships, and using good design to put them into place. Amazon, for example, uses coherent URIs and relationships for books and other merchandise, affiliate vendors, customers and reviewers, and more. This allows it to constantly innovate services by exploring different aspects of these relationships. The wish-list system, for example, is a simple combination of the relationships from one customer to another to a particular set of merchandise.
Relationships in enterprise software
The next frontier for the Web's approach to relationships is within the enterprise. A lot of enterprise software is built on traditional databases. These too have systems of relationships. In previous articles, I discussed how traditional database IDs are sometimes a hindrance to integration and efficiency across software systems. In a similar manner, the rigid system of relationships within a database can stand in the way of change and innovation.
Relational database technology is one of the most popular, and it encourages relationships that have "referential integrity," which implies strong control and reliability. This is much like the purist hypertext approach to linking. It's a good idea in theory, but breaks down in the chaos and unpredictability of real-world events. I've already mentioned how the Web enjoyed rapid growth because of its simple system of links and how easy it was for ancillary services to build additional value on these links. You can gain similar benefits by simplifying the relationships between software components and opening these up for additional layers of services. Reducing the inflexibility of traditional database relationships is a powerful tool in making software easier to maintain and integrate.
Web-like design of relationships in software can help you build communities and thrive in the marketplace and can also help drive internal efficiency. The trick is to keep relationship structure simple and closely aligned to real-world people, places and things. This opens up many possibilities for services provided by you, or by others.