This article reflects on how open source is the natural outcome of, and fits in so well with, the global software ecosystem, which includes the Internet and the World Wide Web.
I will begin by explaining what this article is not. It is not technical, nor is it a tutorial. It does not have lines and lines of code, nor is it a set of tips on how to get something done. While I have immense respect for writers of such articles, who help newbies like me learn new stuff, I am just not experienced enough to write like that yet.
But I am, nevertheless, an open source fanatic, a lover of all things Linuxand I have, over the past few years, developed a certain understanding of the bigger picture related to the whole concept of open source. And this is what the article is about.
Before we talk about open source, Id like to generalise the concept of openness, by bringing into our discussion an open system. If you look up Wikipedia, you will find a host of search results, in the fields of computing, systems theory, control theory and a whole lot of others. None of them are the open system that Im referring to. However, there are similarities between my open system and all the open systems featured there.
So what is an open system then? In its bare essentials, it is a system that has no restrictions. It is open for all, to all. Anyone and everyone can enter the system and be a part of it; even work for it. This brings me to the next keyword of importance: everyone.
What sets apart an open system from one that is not open? That one word, everyone. It is the community of an open system that makes it different from a closed system. If an open system survives, it is because of its community alone, without which an open system is virtually dysfunctional or useless. And what is this community? It is a group of people who are part of the system. They use the services of the system or help in developing it. This community is made up of two kinds of people: those who care about the system and are willing to work for it, and those who trust the system and use its services. Collaboration within the community is what keeps an open system from extinction.
The finest example of such a system is Wikipedia. It isnt difficult to figure out who makes up this communityit is virtually the entire computer-savvy population of the human race. There are millions of people who use Wikipedia every single day blindly using the information they access on it for their daily needs and activities. The millions who use Wikipedia form the user-faction of the communitythose who trust it. Again, the same community also has hundreds and thousands of other people who actively maintain Wikipedia. These include the authors, editors, and donors, because of whom Wikipedia manages to exist… and grow.
This community of Wikipedia ensures that the dynamism of the system is maintained, that errors are removed, and that information is up to date. Thus, it is this community that helps Wikipedia to survive.
I now jump to the next keywordinformation.
Pointless as the question might seem, what is information? Simply put, it is an organised collection of facts and figures. The important thing about information is that it needs to be dynamic; otherwise, it is of no use. This is a crucial point that I wish to stress uponthat static information is almost as useful as a snooze button on a smoke alarm. It can even prove to be dangerous. Information needs to be dynamic. It needs to flow. And it should flow without hindrance, within a system. Any disruption of information dissemination can create imbalances within the system, and this can adversely affect the system. The reason for this will become clear after I elaborate on the next big topic here, which is self-learning systems.
A self-learning system is one that can learn naturally. This is where the first big advantage of an open system kicks in. An open system, by virtue of its very nature, has a larger community than a closed system. As a direct result of this, it has a far larger amount of information at any point in time than its closed counterpart. And this information doubles, triples or quadruples much faster in an open system than it can in a closed system. The reasons arent hard to find. The community that supports an open system comprises a dedicated bunch of people who want the system to develop, and this community expands every day.
So when a system has a lot of information, what does it do? In fact, what does everybody do with a lot of information? Simple. They use it. Similarly, so does the system. A lot of information means that you can single out information that makes sense, and use it to make some more sense out of it.
This is what a system can do when it learns naturally. Let us consider a hypothetical example. Assume we have a system that has some complete sentences like, Sachin plays snooker, Rahul plays the drums, Rita plays the sitar, etc. Now, owing to some problems with the medium of transmitting information into the system, some other incomplete sentences have entered. So we have some discrete and seemingly random words like Sumesh, guitars, Rishi, hockey. As of now, the complete sentences make sense, but the words make no sense at all. The system, however, notices that in the complete sentences, a proper noun is related to a common noun by the verb plays. This is the information it has gathered from the information it has. If the system is even more primitive, with no inkling about what a proper noun or a common noun is, we can assume that it just observes that a word-that-begins-with-an-upper-case plays a-word-that-begins-with-a-lower-case. So, using this newly gathered information, it can deduce that there is a likelihood that Sumesh plays guitars and Rishi plays hockey, or Sumesh plays hockey and Rishi plays guitars.
So now, the random words make more sense than they did initially. Thus, the system has learned. Of course, this is a very simple example, but it goes to show how a system can learn from the information it has, to make more sense out of it, and use this new sense to correlate things. This, in fact, forms the basis of the two huge areas in computer science: data mining and machine learningthe ways of making sense out of information, and the ways of making a system learn or correlate. Coming back to an open system, which has a lot more information than a closed system, there is more opportunity for it to learn, and to make more sense than a system that is closed. Therefore, it evolves faster.
Thus, we have seen how an open system evolves. Since it is dynamic, it keeps evolving, learns from its evolution and evolves even further. And in order to make it evolve naturally, we must not place any artificial limitations on its ability to evolve. This can be done only if the information that a system has can flow equally to all parts of the system. If there is a concentration of information in any one part, it hampers the process of natural evolution and brings about differences within the system. And this is bad, because quite simply, such a system cannot stand the test of time. Too many differences within a system and … poof! It implodes.
Let us now travel back in time to 1984 to when Sun Microsystems was but a two-year-old firm. It was the year that John Gage (who, incidentally, was the 21st employee of the firm) famously said, The network is the computer, one line that would shape the future of computer networks, the Internet, which was still in its infancy, and the Web, which was still non-existent. These words heralded the era of networking and distributed computing. Today, at a time when cloud computing is a term that is overused to the point of becoming hackneyed, such sentences make us think and wonder.
Indeed, the level to which the Internet has grown today is probably far beyond the wildest dreams of John Gage back in 1984. But the good thing is, we do have a developed Internet today. And no, its not just a net of inter-connected devices; we have ways of accessing information on the Internet too. This is fundamentally what the Web isthe Internet and its users accessing information on it; then going on to use the information and make the Internet grow even further.
Now, coming back to our discussion on open systems, the Web is an open system. Anyone can enter the Web, add information to it and harness other information for their benefit. The millions of people who are connected by the Internet form the community that is responsible for its existence. All the information that exists on the Internet is courtesy its users, who are the same people who use the Internet to get information as and when they want. The users trust the Internet, and therefore they want it to thrive. And as more and more people enter the Web every day, there is more and more information flowing into the Internetmaking the Web learn and evolve faster.
Thus, the need of the hour is to maintain the Internet. We, the users, and the contributors of the Web, are the ones who are responsible for its sustenance. And to allow the Web to survive, we need to ensure that it continues to evolve naturally. To do this, we must keep the Web open. There shouldnt be any restrictions on anyones ability to do anything on it. All should have the freedom to do whatever they want on the Web. If what they do is wrong, adversely affecting the Web, the community will automatically respond to make sure that the effect of the wrongdoing is nullifiedthe same tried-and-tested method that has worked wonders for Wikipedia. This is the broad idea of any open systemthe community matters, not the individual. Individual activities and opinions do not matter much in the face of what the community does. It is the general interest in the system that overrules any individual intent or purpose, and nullifies it. Science-fiction enthusiasts will be able to correlate this concept with Hari Seldons ideas about psychohistory in Asimovs epic Foundation series.
So, heres the big question: How do we keep the Web open? To answer this, let us again enlist the three basic features of an open Web. One, everybody takes part. Two, information never stagnates. Three, there are no restrictions whatsoever. The first point is taken care of, limited only by the availability and cost of the Internet in certain regions. Currently, with steadily decreasing broadband rates and more and more far-flung areas coming under Internet connectivity, this is the least of our worries.
The second point is vital, because if stagnation is not taken care of, the Web runs the possibility of fracturing, or devolving. This can be prevented by using transparent means of putting information on the Web. By transparent I mean the information that you add onto the Web can be seen and used by all. So the question that arises now is: why would you need it to be transparent? The answer is that, if it is not transparent, it will be of no use to people who cannot see it or use it. And if there is information that cannot be seen or used by people, it is useless. Its the same snooze-button-on-smoke-alarm analogy. Useless information on the Web does not support an open Web. It does not help the Web to evolve or grow. It is a bane to the natural process of evolution.
Google is one company that actually seems to realise the importance of an open Web (there are some others too that I will come to later). The official statement of purpose of Google Inc is to organise the worlds informationto make information available to the people who want it. If there is one reason I respect this company, in spite of it doing quite a few things that I personally disagree with in the recent past, it is the fact that it is one among a few firms that not only claims to be working for an open Web, but actually seems to do a lot for the cause. Agreed, the Google search algorithm is kept under layers of secrecy, but as long as it manages to index Web pages correctly, and helps people by providing them usable information as and when they need it, we are happy.
Another remarkably transparent platform for sharing information on the Web is Twitter. Twitter trends and hashtags are a way of getting to know what the world is talking about at any given moment. And the best thing is that you dont need to join Twitter to know what the world is talking about. There may be people who have kept their tweets private, but that does not affect what the entire population is discussing at the momentthe same psychohistory conceptthe opinion or purpose of a single individual is of no significance in the broader perspective of how the whole system behaves. We are concerned about the broad trends being followed by the whole systemwhat an individual has to say is irrelevant.
This brings me to the topic that I referred to at the very beginning and took this huge detour to finally arrive at: open source, and how it is the culmination of all these ideas, when applied to software.
It is rather easy to see the connection now, if you have followed all this logically. Software is different from other products that you buy, like houses or cars. Software engineers form a sizeable fraction of the human population. Together they have a lot of knowledge, but individually know very little. So if someone writes a piece of code for something, there are a few million ways it can be modified and bettered. The good thing about software is that it can be sent from one part of the world to another very easily and cheaply, unlike other products like cars and houseswhich is why the community that works on a piece of software can include developers and coders from all across the globe. To try and implement the whole open source approach in other industries, say the automobile industry, would mean making a car and then making it available to every other car designer and engineer in the world, so that they can make it better. But the difficulty lies in making a car available to everyone in the world, something that is impossible. Software, being just lines of code, can be easily made available to everyone. You host your source code somewhere on the Internet, and millions of developers can download it from anywhere in the world, and then work on it.
Every piece of open source software thus has a growing community of developers who are interested in it, and want to make it better. And there are users all around the world who have faith in what the developers do, and who use the software for their daily activities. Examples aboundbrowsers, media players, office applications you name it, youll find something. There is open source software for just about anything that anyone would want to do. Why? Because you aren’t the first person who needed it. Hundreds or thousands have felt the need before youand thus, the community has developed something to address this need.
Finally, open source software complements the open Web, and vice versa. Some of the biggest community-based open source organisations are passionate supporters of an open Web, while some of the biggest Web giants support the concept of openness by relying almost entirely on, or supporting, open source software. A good example of the former is the Mozilla Foundation, and of the latter, the aforementioned Google and Twitter.
In the end, one thing is certain. Now and always (or at least well into the near future), the Web will keep changing. It wont steady itself any time soon. If we all do the right things from now onwards, we might help the Web reach a point from where it will be able to evolve self-sufficiently, and maybe transform itself into a self-learning system some day. If however, we do not act responsibly, we can actually stop the Web from evolving altogether. Of course, it would be foolish to say that our actions can bring about drastic changes in the growth of something as massive as the Web this quickly. At worst, or at best, the collective intent of humanity is what will guide the Web towards its final destination, and what that collective intent will be, no one person can tell. We will just have to wait and watch.