Saturday, March 7, 2009

Problems in society, causes, solutions

This is the second of the series of articles that I am writing to build and present the complete hypotheses behind Zyxware. In the first article I had covered the concept of change. In this we are going to look into the problems that we face in our society, their causes and the solutions to these problems from a very high level and generic perspective.

If we look around the world we live in and observe closely, we can see that we live in a world full of problems. No I am not talking about a pessimistic view of life, but rather an objective view of life. Yes, there are lot of good things that we can cheer about, and sometimes even be proud of, but there are probably as many problems out there as well. Nobody wants to change whatever is good but people would like to see whatever is bad, changed/removed. So we will look in detail about these problems that people face in their lives.

We face lot of different problems in our lives, for example, power shortages, bad roads, bad infrastructure, corrupt officials, anti-social elements, communal problems, bad weather, drought, disease outbreaks, global warming, food shortages, unemployment, poverty, malnutrition etc... and the list goes on like this. The idea is not to list all the problems in the world but to figure out some way to study these problems.

If we look at these problems we can easily classify them according to the following binary logic :-

1) Caused by human action/inaction

    1A) Intentionally caused by human action/inaction

        1Aa) Caused with malign intent towards another human

        1Ab) Caused without malign intent towards another human

    1B) Unknowingly caused by human action/inaction

2) Caused independent of human action/inaction

    2A) Can be solved/mitigated/prevented by human action

    2B) Cannot be solved/mitigated/prevented by human action

So the simplified linear classification would be

  1. Problems intentionally caused by human action/inaction with malign intent towards another human

  2. Problems intentionally caused by humans action/inaction without malign intent towards another human

  3. Problems unknowingly caused by humans action/inaction

  4. Problems caused independent of human action/inaction but those that can be solved/mitigated/prevented by human action

  5. Problems caused independent of human action/inaction and those that cannot be solved/mitigated/prevented by human action

All the problems that we see around us can be classified according to the binary logic shown above and would fall into any of the six classes shown in the simplified linear classification. The objective of this classification exercise is to identify types of problems that can be solved and types that cannot be solved.

In the simplified list given above, we can see that type 1, 2 and 3 problems are caused directly by human action/inaction. Since the causal agent is human beings, these problems should be solvable by human intervention. Now type 4 problems are not caused by humans but these can be solved through human intervention. So we can seen that except for type 5 problems which are caused by non-human agents and not solvable through human intervention, all other problems are solvable by some kind of action by humans themselves.

Let us look at a few examples that we can easily see around us and classify them.

Consider the problem of societal violence that exists almost all across the world in varying degrees. This is a problem that is caused by human action with a malignant intention to harm others. There could also be problems caused by human inaction with an intention to harm others. A good example would be partisan authorities turning blind eyes to communal violence. Both these examples can be tackled both in the short term and in the long term by taking mitigating steps to root out their causes in the first place - eg: lack of education, unemployment, poverty etc.

Corruption is often described as the cancer of the society. Corruption is probably the single biggest deterrent to progress and growth in developing countries like India. However people who are engaged in such acts do not necessarily do it with an intention to harm the general public, which includes themselves. Other than a greed for money there might not be any other desire that drives corruption. Such cases of corruption therefore falls under category two.

Corruption is an intentional act. Also ineptitude and inaction from authorities are also good examples of problems in this category where the problem is an inaction rather than an action. Corruption can be tackled by bringing in transparency in transactions and by inviting and encouraging citizens to take active involvement in the functioning of the machinery. This would also be able to solve the second set of problems mentioned above.

A very good example of a problem caused by human beings without, mostly, realizing the consequences of their action is the massive deforestation happening across the rain forests of Africa, South Americas and East Asia. The cause of this problem is the human consumption of wood and wood products(primarily paper). Most people who are guilty of wastage and excesses might not even realize the indirect consequences of their actions. It is true that our dependence on paper cannot be stopped in a single day but excesses and wastage cannot be condoned any day. We might never be able to totally stop our usage of paper but we can always reduce, reuse and recycle to reduce the overall usage.

Retarded growth of nations or slow progress of nations, poor health conditions of populations etc can themselves be considered as problems and these can be, more often than not, attributed to inaction by relevant authorities. Yes there might be financial and other resource limitations that might add to the causes but ultimately these problems exist because of human inaction. Such inaction could be classified as type 3 problem. A planned and sustained drive to educate people is a simple way to improve the overall health of the population. This would also in the long term, help the nation to grow and progress.

The outbreak of any disease in an area is an example for a type 4 problem caused by non-human agent viz. microbial organisms. However with modern medical facilities and drugs most of the known diseases can be cured. There are those that cannot be cured but medical sciences are fast catching up on these. Another example is the dearth of drinking water caused due to fluctuations in climate patterns. This problem is something that has successfully been solved through artificial irrigation/drinking water supply schemes for the past several millennia.

A natural disaster like a tornado striking a city or a tsunami running over a coastal town are good examples of type 5 problems that are caused independent of human action/inaction and those that cannot really be solved by human actions. However with the growth of science and technology the effects of some of these unsolvable problems can really be mitigated. For example with proper early warning systems people can be evacuated before the tsunami strikes a town.

Finally, I should remind the reader that the view that all problems can be solved is very simplistic. Some problems, even those caused by humans (or for that matter caused by non-human agents), even if theoretically solvable, might not be practically solvable because of the different complex, often inter-dependent constraints that exist in our system. The objective of this exercise was to shine a light at this logical classification of problems and to bring to the fore the fact that there are problems that can be solved, avoided or mitigated through human action and there are those that can't be. For those that can be, we should really be able to solve them, if we put our mind to it.

Click here to read the rest of this article - "Problems in society, causes, solutions"

Tuesday, March 3, 2009

Making money with Free Software

When people hear about 'Free Software' it would be surprising if they wouldn't wonder how anybody can make money from 'free' software. In fact most do and quite a lot of them have asked these questions out loud. It would be a worthwhile exercise to delve into the working of Free Software economics and for that we need to examine the concepts of Free Software itself. In addition to the economics we will also take a brief look at how it changes software development perspectives, how it enhances career opportunities, how it helps the local economy and how it is relevant for a developing country like India.

What is Free Software

The 'Free' in 'Free Software' is actually 'Free as in Freedom' and not 'free as in free of cost'. To distinguish between these two words, the 'Free' as in Freedom is normally F-capitalized and the second 'free' all-small-case. So Free Software is all about the Freedom that comes with Free Software. According to the Free Software Definition(http://www.gnu.org/philosophy/free-sw.html) published by the Free Software Foundation(http://www.fsf.org) 'Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software'. What does this mean?. It means that when you get a software either for free or for a price you get four basic freedoms, viz. the following.

  1. Freedom 0 - The freedom to run the program, for any purpose, on any device, on any number of devices without any restrictions.
  2. Freedom 1 - The freedom to study how the program works, and adapt it to your needs. To be able to study and modify any software you need its source code and hence access to source code is a precondition for this.
  3. Freedom 2 - The freedom to redistribute copies of the software. This freedom allows anybody who gets a copy of Free Software to distribute copies of the software to anybody else either free of cost or even for a price.
  4. Freedom 3 - The freedom to improve the program, and release your improvements. This freedom allows users to modify the program according to their likes. Like for freedom 1 you need access to source code as a pre-condition for this freedom. This freedom effectively adds the bite to Free Software by allowing Free Software to grow and change as it passes hands.
If there is a question as to how this can really work then it has already been answered practically by the successes of the hundreds of Free Software out there. One good example is the GNU/Linux operating system which has grown big and capable enough to challenge other established proprietary operating systems.

The History of Free Software

Software industry as we see today did not exist in the 60s and 70s. During those days software development primarily happened in academic and research institutions. People who developed software were academicians who shared software and its source codes like they did with traditional knowledge. For them software was just another form of knowledge. People developed software, shared sources, shared fixes, made fixes and updates and then shared them as well. Software grew just like science did through sharing and accumulation of contributions.

All this started changing when commercial software development companies entered the market. But for commercial software sales to happen people had to stop distributing source code. Initially these companies got the developers to develop software for them and they were paid for their efforts. But in return they had to sign an NDA by which they were not allowed to share the software and its source codes with anybody else. Since there was money involved, developers started joining this commercial fold and the earlier freedom in sharing software slowly started disappearing.

Next the commercial vendors introduced the concept of licensing in software. Under such proprietary licenses the users of the software were not supposed to modify the software, reverse engineer it or access the sources or share the sources if they had access to it. Slowly they brought under the licensing regime large portions of software and sources out there. People could not make and share modifications if the software they were working on were proprietary. Earlier the flow of knowledge as software was happening freely but soon commercial companies were controlling this. Additionally it also took away the freedom that the developers enjoyed erstwhile and quite a lot of them were unhappy about this.

Most were unhappy but one man decided that he should do something about this. He was Richard Stallman of the Artificial Intelligence Lab at MIT. He decided that in addition to the commercial licensing system out there there must be a system that maintained the freedom and harmony enjoyed by software developers in the pre-licensing era. He then went about and created the concept of Free Software, its most popular license - GNU GPL, and a non profit foundation - Free Software Foundation - to promote Free Software. In addition he started one of the biggest Free Software projects out there, that of the Free Operating System - GNU('G'NU is 'N'ot 'U'nix), as a Free replacement to the Unix operating system which had become proprietary. One man's decision to stand against the giants, akin to Gandhiji's decision during India's freedom struggle, has proved to be monumental in the history of software development.

What makes a software, Free Software

It is nice to talk about the freedom behind Free Software but how do you pass this Freedom with a piece of software. A proprietary software or non-Free Software restricts the freedom of its users by the license it grants to its users. Most software users would be familiar with the End User License Agreement that comes up during the installation of these software. Through these licenses the proprietary software companies enter into a contract with the user that allows the user to use the software provided he/she agrees with the license. This is why there is an 'I Agree' button or checkbox during the installation of such applications. The license agreed to by the user makes him adhere to the restrictions mentioned in the license.

So any software with a license that violates or restricts any or multiple of the four freedoms mentioned above would make the corresponding software non-Free or proprietary. The Free Software camp uses the same strategy of licensing to ensure the Freedom that the software grants to the user. Unlike in proprietary software licenses the Free Software licenses, specifically grants the users the above mentioned freedoms. The Free Software Foundation has maintained a list of such Free Software licenses at http://www.gnu.org/philosophy/license-list.html. The most popular of these Free Software licenses have been the GNU GPL or GNU General Public License under which a very large number of applications have been released. The GNU GPL in addition to ensuring the freedoms for the users of the software also ensures that these freedoms get transferred to subsequent users down the line if the first user decides to distribute the software.

The price of Free Software and how Free Software Companies make money

One of the basic tenets of Free Software is that, the user who gets hold of a copy of a Free Software application, irrespective of whether the application was available free of cost or was available for a price, has rights to distribute the software either free of cost or for a price. Now this brings into the picture the possibility of an interesting price competition. Suppose a user who buys a Free Software application decides to sell the application cheaper than the seller from whom he/she bought the application and one of his/her buyers decides to do the same thing and if this goes continuously the price could theoretically drop to zero. This is not just a theoretical possibility but this is what normally happens to Free Software applications.

So how can a company who decides to develop their software under a Free Software license make money under such crazy price competition structures. There is no real 'best' way of doing this as the Free Software market is still a fast evolving market which has not quite reached anywhere close to maturity. Even then there are quite a few established ways of making money with Free Software. A few notable ways are 1) Offering Support 2) Multiple Licensing 3) Dual Versioning 4) Customization Services 5) Hosted Services. These different models are based on variations in licensing and on the services that are being sold with/to-complement the application.
  1. Offering Support Services - When a company releases a particular Free Software application and multiple parties decide to redistribute this software, the company who created the software will still retain an advantage over the other distributors in that they will know the ins and outs of their software unlike the others in the fray. Now they can sell this knowledge edge as Support Services for people who use their software for a charge. The other distributors can also do this but the original developer company can always stay ahead of the competition by keeping on upgrading the application so that their knowledge edge is retained. Notable examples of such software are RedHat - a GNU/Linux distribution, MySQL - a database server, etc. This model is purely a services model where Support services are sold for a price.
  2. Multiple Licensing Strategy - In this model the company releases the application under multiple licenses, one of which obviously being a Free Software license. The licensing would be in such a way that, the Free Software licensing can be availed only under certain restrictions. A good example was the original Qt licensing model where the Qt library was available under a proprietary license(Qt Commercial License) which would allow the users of the software to use the library to create non-Free Software. So if somebody wanted to use the Qt library to create proprietary software they had have to pay for the library under this license. At the same time the Free Software community who develops Free Software applications using the same Qt library as is available under the proprietary license, could use the Free Software license(GPL). Recently Qt had introduced another License (LGPL) which allowed proprietary software developers use that license to create proprietary software but without the support that comes by default with the proprietary license. They still offer the proprietary license with added support. The original Qt model taps in on the proprietary software developer market to fund Free Software development.
  3. Dual Versioning - This is another interesting but slightly controversial model. In this model a company maintains two different versions of the same application, one on a public server under a Free Software license and another on a closed server under a proprietary license. The development on the Free Software version happens under the leadership of company developers but with contributions from the community. Intensive testing and development of bleeding edge features happens on this version. Mature and tested features get reimplemented on the proprietary version by the company developers. The proprietary version will then be available for customers who pay the licensing cost of the software and the software will be supported by the company directly. The free version will be available for customers who do not want to pay for the licensing cost but then they will have to depend on the support of the community and will be taking the risk of having too many untested features and bugs in their version. An good example of such a software would be SugarCRM, a web based CRM solution. This model subsidizes development costs through the involvement of the community and makes money through from the proprietary software user market.
  4. Offering Customization Services - No two people are alike and you can trust this. So different people would have different requirements and different likes and dislikes. This would reflect in their needs for features and functionalities in any software. Free Software companies tap in on this by offering paid customization services on their Free Software applications. Other companies who distribute the software can also do this but like mentioned earlier the developer company would retain their knowledge edge by being the original developers. Even then there is scope for third party companies to offer services on the same software. In fact a large market thrives on such services and quite a lot of the small businesses in the Free Software domain depend on this model completely. The original developer company can charge a premium for their services while leaving enough room for other companies to generate revenue using the same model. Interestingly the model is more popular for Free Software applications driven by the community as a whole rather than by a company. Good examples would be the CMS frameworks Drupal and Joomla which are used by a large number of web application companies. This is a purely services based model where money is made directly on the labour invested.
  5. Offering Hosted Services with Maintenance - With the emergence of Internet as THE platform of choice, a slew of Free Software applications have emerged targeting this domain; applications developed and maintained by the community as well as those developed and maintained by companies. To supplement this, companies have emerged, who offer to host and maintain these applications for users, who do not have the technical skills to do so, or who do not want to invest directly in doing so. Such companies could either have been the original developers of the application, in which case they offer higher levels of expertise, or third party companies in which case they offer their expertise and the hassle-free nature of the model as their USP. A good example of such a software/service would be the DimDim web conferencing solution. This model makes money through sales of the hosting packages as well as on the labour invested in support
The strategies mentioned above are only some of the popular methods in use. There are other ways in which companies generate revenue from the Free Software market and different strategies are still being tried out. It is a fast evolving market and only time will tell as to what is the limit of possibility in this domain. But one thing is sure, there is money in Free Software and there is quite a lot of it. It might be worthwhile to remember that one of the recent Free Software company acquisitions, that of MySQL by Sun Microsystems touched a billion dollars.

The cost of Free Software Development

Whether you are developing Free Software or proprietary software you have to invest time and effort in planning, designing, implementing, testing, fixing, updating and maintaining software. Each of these activities require some investment of time and effort towards it and time and effort equals money and this monetary value constitutes the cost of development of the software. Proprietary software companies recover this cost when they sell their software to their users. Now the cost of development of a software is always a finite amount and mostly calculable. So ideally the price of proprietary software has to fall with every sale as a part of the cost is being recovered with every sale. But this does not happen and the users keep on paying at a constant rate for this diminishing cost for ever which might sound a bit unfair for the user. Free Software business models makes a different and more fair pricing structure available for the users.

As mentioned earlier the Free Software price war would normally bring the price of the software to zero even before the cost of the software development is recovered by the company/developer. So obviously there must be some other way of covering the development costs and Free Software development models have found probably the ideal one. When a developer or a company releases a software as Free Software he/she/the-company is effectively inviting the large user/developer community out there to use the application, test the application, fix the issues with the application, and modify the application. This is totally different from the captive development paradigm used in proprietary software development. In this system a percentage of the cost of the software development, be it testing or bug fixing or new development, is being borne by the community in return for the right to use the software which they get when the software is released as Free Software. However the company/developer will still have to incur some costs in the process of software development, especially during the early stages and even through out the product life-cycle. The company or the developer would then have to recover whatever additional costs and their operational margins through one of the business models discussed earlier.

If this can be extended in an ideal system the complete cost of development will be borne by the community and the need of a company can be eliminated completely. Something similar is indeed happening with Free Software applications maintained and developed by communities. A good example would be the Drupal CMS mentioned earlier. However we do not live in an ideal system and a company with vested monetary interests can still drive Free Software development far more aggressive and normally better than typical community based Free Software development.

Technical Advantages of Free Software

When people write software, be it proprietary software or Free Software, they WILL introduce errors and bugs. It is because, well because they are human and humans make mistakes. Free Software development normally works through the contributions of users who are developers themselves. As opposed to this proprietary software development is and will always be done with a limited number of developers. During Free Software development there are too many eyes looking at a given piece of source code during a given period of time to let mistakes to pass through easily and this works much better than in proprietary software development, where there are far fewer people looking at a given piece of code. Supposedly the source code for the Linux Kernel is the most read piece of software source in the history of software development, the numbers running into millions. As opposed to this the leading proprietary operating system development team would be perhaps 10000-15000 strong and the kernel team would be far smaller.

So the first technical advantage of Free Software is its resilience to mistakes. It is not that Free Software does not have errors or bugs, but that they get mopped up pretty fast. Here is the second technical advantage of Free Software - the short life cycle of an error. Even when a proprietary software development team identifies an error they might not want to publicize the error unless the errors result in security issues. These would then normally be taken care of in the next update cycle. As opposed to this in Free Software development, if and when a capable developer comes across a problem it wouldn't take much time before the problem gets fixed in the repository. Now this fix would then be available to users who would like to get it fixed. Again the contrast increases if the errors where noticed by a normal user. For a proprietary software the error will have to go through the proper support cycle before it can reach the developer who might then just schedule the fix for the next update. This would happen only if the user decides to pay for support and report the error. In the case of Free Software all it would need for the error to get fixed would be for one of the many users to just let the community know that the error exists and someone in the community would take care of the issue just like in the first case mentioned above.

Economical Advantages of Free Software

The main economic advantage of Free Software is that it reduces or in fact takes out the financial entry barrier for the use of software. Software is only a tool for processing information. So taking out this barrier allows people from all sections of the society to take advantage of the power of Information Technology to advance their lives. It also opens up opportunities for entrepreneurs to set up shops with very little initial investments. This advantage of low initial investment does not have to apply to small entrepreneurs alone. It applies to enterprises of any size and of both public and private nature.

To really understand the importance of the economic advantage mentioned above we just have to calculate the cost of computerizing an entire country like India, computerizing as in - getting computers with required software to all the people and all government departments and agencies, and compare the costs of this process based on proprietary software versus that based on Free Software. The differences would be massive and such huge amounts of public money can always be put to other developmental activities if it can be spared.

As explained earlier proprietary software makes constant recovery of a diminishing cost. What this does is that wealth get accumulated at distinct points in the society without proper dissipation of labor or generation of value. There is nothing unfair about this as the transactions are purely voluntary. However concentration of wealth with few individuals or enterprises is never good for the society and it does not have to promote such systems. It is not that it has to fight such systems, or make it difficult for such systems to survive, but just that it does not have to spend public money in promoting such systems. So when government establishments invest in Free Software they effectively ebb the concentration of funds via the proprietary software channel.

The Free Software perspective towards Software Development

Unlike proprietary software development where information is withheld by the developing company from its users and subsequent developers Free Software is all about Free and Open information. This applies not just to Free Software but to Free and Open Technologies as well. With so much free-of-cost information out there it becomes less lucrative for book publishers, authors, training institutions to create content and offer training for Free Software and Free and Open Technologies. This in turn brings in the necessity for Free Software developers to do a lot of learning on their own and with assistance from the community. In addition, Free Software makes available billions of lines of code for the developer to see and learn. By learning directly from the work of the masters, the Free Software developers have an opportunity to become masters themselves. Add to this the fact that the Free Software community is a community based on meritocratic principles, there is a big peer pressure to learn, but there will always be people out there who will be able to guide new developers through this path.

Such a system creates developers who are self-sufficient - because they have to learn to do a lot of things on their own, competent - because they have to compete with other capable developers in the community and get peer reviewed on their code quality on a regular basis, ready & capable of learning - because they have to learn a lot of things on their own and they have to be efficient in doing it to be able to make use of their learning, with lot of initiative - because you have to be self-motivated and have lot of initiative to contribute to projects where you may not have any financial incentive. The proof that this is happening is that Free Software developers are in hot demand in big product companies like Google, Adobe, Yahoo etc and they get hired not because of their college background or because of their academic projects but by virtue of their profile in the Free Software community.

In addition to creating world class quality developers Free Software promotes an attitude of sharing of knowledge and a passion to contribute towards projects that benefit the public at large. Such an attitude enriches the society that he/she is part of. Additionally the level of development that we see around us would not have been possible if our forefathers had kept information to themselves instead of sharing it like they did. Human society has come this far only because people have shared common information, passed on knowledge to generations and collaborated on socially beneficial activities. So the basic attitude promoted by Free Software strengthens one of the core values based on which our society has grown to the present state.

Free Software and Career Opportunities

There are hundreds of Free Software companies out there looking for capable talent. These companies scout the market specifically for people who have strong profiles in the Free Software community. In addition there are even more non-Free-Software companies out there who are eagerly looking to hire capable Free Software developers because of their capabilities. Like explained earlier the Free Software perspective to software development that the developer acquires through participation in Free Software projects increases the market value for such developers. So just by being a Free Software developer, one can increase the prospects of getting better jobs than the competition. This implies that, even if the developer does not get a Free Software job per se, Free Software effectively increases the marketability of the developers and also their market value. If however they get a job in one of the Free Software companies out there, eg: RedHat, Sun etc, it could be considered a bonus in the above scenario. In either case the Free Software exposure adds an edge to the developers in their careers.

In addition to full fledged careers there are lots of bounty programs that invite people to come together for Free Software projects and contribute to the development and at the same time get paid for it. One of the most popular of these has been the Google Summer of Code project that invites students to take up Free Software projects mentored by the different organizations that Google has partnered with for this program. Through such programs people get a chance to get a feel of Free Software development and the pleasure of getting involved. These kind of involvements usually help the students/developers in their careers as the eligibility criteria for such projects are proof enough of their capabilities and such experiences are valued highly in the job market.

Free Software from the perspective of developing countries

For a developing country like India, one of the main attractions towards Free Software is of course the low initial investment. Software for a complete department or an organization can virtually be procured free of cost if it is Free Software. Yes there would be costs down the line for customizing, maintaining and supporting the software but the low initial investment part is always going to be an advantage for developing countries.

In addition to the cost factor there is another major attraction for Free Software. Once the software is procured by a department or an organization they will have to get somebody to customize and maintain the software for them. Who else could do this better than a local company. So such a system creates opportunities for local business to thrive and generate revenue out of Free Software. This becomes especially more relevant when the alternative proprietary software are developed by companies outside of the developing country. So paying for Free Software in such contexts will ensure that valuable capital in the developing country remains within the country to power the growth of technology inside the country instead of being pumped out of the country for the purchase of proprietary software.

Challenges for Free Software into the future

There is little or no organization between the different Free Software communities out there. For regular Free Software development this is not really a requirement. In this age of heavy government level lobbying, Free Software stands to lose in front of corporate interests of proprietary software lobbyists, unless the spread-out communities rally and voice their opinions. Free Software Foundation and associated organizations are doing a good job with this but there still requires national level community initiatives to prevent restrictive policies becoming laws.

It is true that Free Software communities breed geniuses but that is not really a requirement to be a part of the community, either as a developer or as a user. GNU/Linux distributions like Ubuntu has done quite a lot in this direction by mellowing the only-for-geeks image of GNU/Linux. This policy has to diffuse into the communities also to make them more newbie friendly and more welcoming for new users.

More generic training and support related enterprises should pop up before Free Software applications can be widely embraced by the general public. Without proper support and training infrastructure it will never become an attractive proposition for governments or private sector establishments to move to Free Software.

Conclusion

Free Software community has been slowly tackling each of the above challenges and many other problems one by one and has been gradually making inroads into the global software market over the 25 years the concept has been alive for. The progress has been pretty rapid over the last five years and at this rate it is going to redefine the way people and companies think about and develop software. Additionally the concepts behind Free Software has been translated to other domains and it has been gaining acceptance among non technical communities as well. A good example is the explosion of Creative Commons licensed artistic and creative content that is being made available online. If the trend continues it will not be long before the future arrives and Free Software becomes the norm. Let us wait and watch.

Edit:

Added a new section on history of free software. Thanks Ashik S. [09/03/05]
Added info about GSOC. Thanks Praveen Arimbrathodiyil [09/03/05]
Updated the history section with suggestions from Askhik again. [09/03/07]

Click here to read the rest of this article - "Making money with Free Software"