How much open source software we really use?

You might have guessed from last blog that I love free and open source software. Let me tell you that you are absolute correct. When I think about the journey of free software/open source, I feel  mesmerized about it. I bet you will feel the same, when you realize how a revolution started by a single person named Richard Matthew Stallman (yes we call it free software revolution, now sets rule and standard for technology.
It is not an over statement but a fact. The story so far has been incredible. The journey is about how an idea of free software has changed our world. The saying “you can’t stop an idea whose time has come” thats hold true for free software/open source software in current context.
I will talk about this revolution in my future blogs for sure. But I am here to talk about a very basic question.

Before you go further you should know that in free software, the “free” word means freedom, not free goods (like it would be available to you for free) but it should be read as freedom. So when you read free software, you should read freedom software.

In my last post I talked about open source software/Free software and how good it is for our society and for our freedom.I think some of you have liked the idea and appreciate it.

As of now its not a new concept, there are thousands  of open source software Oh wait! let me correct , millions of open source software currently being used or being developed . Interesting isn’t it? Take a look at github[1], a code hosting/sharing website mainly used for open source community projects. As per latest stats[2] it hosts more than 6 million projects and most of the projects are open source projects. Github[1] is based on a software git[3] which is again an open source software.

So “How much open source software we really use?” or “What is the reach of open source projects other than Linux, Mozzila Firefox and Android?”. Some of you might have thought of this question. Lets discuss about it.

How many of you have used wikipedia? or Have you ever used wikipedia? You must be thinking I am joking, right ? .The answer is we use wikipedia everyday. It is a inevitable part of today’s internet. Anybody who has  used internet some time or used internet to get some information must have used wikipedia. Wikipedia is not just a simple website. It is worlds biggest encyclopaedia. You can find information about any topic in it.Millions of people access it every day, millions of pages get updated every day. The web application which is used for wikipedia is called “MediaWiki” [4][5] and it is developed by Wiki foundation. You might have already guessed it, “MediaWiki” is a open source project. You can get the source code for wikipedia and deploy it in your home or office and create a small wikipedia for your self. You can put articles in to it and it would behave just like wikipedia does. Awesome isn’t it? Many organisation love to have a local wikipedia for their company related knowledge base and they can just deploy wikipedia. They don’t have to develop a software for it. Even if they develop, there is no guarantee that it would be as good as wikipedia and it takes  hell lot of time to fully develop a web application like wikipedia.

In my engineering days we used to see lots of movies (which I think is true for majority of engineering students ;)), which were of different video formats. We sometimes can’t play some of the formats in Windows media player (that time it was Windows XP, not sure how it is in Windows 8). So we rely on “vlc”[6] media player to play the files. It was the de-facto media player for everybody using Windows. When ever we format our PC, vlc player is one of the first software we install on a priority basis on that machine. I used to get amazed how vlc is able to run any video format we throw at it  without any hiccup. I didn’t get an answer that time. Now I know the answer. Because it is a open source project and developed by a community , not by any particular company. People from all over world contributes to vlc development.So if you are an engineering student and have interest in video encoding and want to play with media streaming technology, you can get the source code for vlc, hack the code, know more about media streaming technology, if you have some ideas for improvement you can play around with the code with your ideas. That means if you want some improvement in the media player, you dont have to develop it from scratch but you can just put the necessary code and you are done :).  It would be your contribution to the the development of vlc. Of course you will not be paid for it, but you will get a satisfaction for contributing to vlc player which is being used by billions of people on earth. How good is that? For me nothing can be compared to the satisfaction of doing something which will benefit billions of people.  Now take a pause and think about it. It is a simple video application but the example it is setting has tremendous impact. We can apply the same idea  to almost every aspect of social life. We can  solve problems by coming together where we all can contribute to something what we are good at and solve bigger problems. There are other open source media player other than vlc and I have just taken vlc as an example

Lets talk about wordpress, on which my current blog is. WordPress is now world’s leading blogging website. Millions of people write blogs everyday in wordpress and it is pretty good website for writing a blog. WordPress is also a very profitable company. Its revenue is improving every year .If we take count of future of internet, smart phone penetration, its financial future looks very bright. WordPress is also a open source project and you can find the source code at wordpress.org. If you are a web developer and want to know about the engineering work and want to take a look in to the code, you are most welcome. You can deploy wordpress instance at your home, office or anywhere you want. It follows a community development model and you can also contribute to wordpress development.

There is another software which I want to talk about. Thats google chrome browser. Chrome has very quickly became favourite browser of lots of people. You might have noticed the pace of chrome browser growth. So how did they develop Chrome in such a pace? It is an interesting  story. Lets begin :). It started with CromeOS. Google being a dominant web company wanted to develop a web based operating system. The OS would use cloud technologies. The applications will be accessed through a browser. That means users dont have to update the applications and operating system. It would be taken care of by Google. Regarding the computing power, it needs less power as it needs to just run a browser. Chrome OS is very important for  Google’s future plans as we expect the world will move to cloud based technologies. So they wanted to have a browser which will be used for Chrome OS. Also a good browser was needed for Android eco-system. Like every company they wanted it fast. They had a choice to develop a browser from scratch, but they didn’t want to reinvent the wheel as there are open source browsers available and it would have taken a lot of time for developing it from scratch. Eventually they used existing opensource modules/frameworks for building a web browser and started a project named chromium. Chromium follows a community development model and it is an open source project. Google does some more testing on chromium browser, packages it for various operating systems and gives you as Chrome browser. The initial versions of Chrome OS has been released and and Chrome browser is integral part of it. According to recent reports Chrome OS based laptops topped Amazon’s chart as best selling laptops for 119 days in 2012. It is an achievement given that the OS is at its initial days and  not yet reached its full potential.

Now just take a step back and think all this with open source operating system Linux which powers website like google search , facebook, Linkdin, Twitter , your favourite browsers like firefox, Chrome, your favourite mobile operating system Android, wikipedia, vlc like players and many more. If you have seen the video I have posted with my last post, you know that 90% of world’s supercomputer run Linux. These supercomputers are being used for analysis of satellites data, weather forecast, genome mapping  project, research on the climate and global warming, molecular modelling, solving complex mathematical problems for scientific research , military research and applications. How do you feel about the question when we started the discussion. Yup, it is touching our life one way or the other.

Before concluding the discussion I wanted to tell , if you deal with programming tasks, then will love to know that most of your favourite programming language are open source :).
May be you haven’t realized that before. I am giving some examples of open source Programming language and databases.

Java

Python

Perl

PHP

MongoDB

MySQL/MariaDB

Postgres SQL and many more 🙂

[1] https://github.com/

[2] http://thenextweb.com/insider/2013/04/11/code-sharing-site-github-turns-five-and-hits-3-5-million-users-6-million-repositories/

[3] http://git-scm.com/

[4] http://www.mediawiki.org/

[5] https://en.wikipedia.org/wiki/MediaWiki

[6] http://www.videolan.org/vlc/index.html

Open Source

There is a difference exists between free software and  open source software, but for my blog context,  you can treat them as similar.  So whenever I have used “open source” you read them as “open source or free software” or vice verse

What is Open Source  or Free software?

If you are clue less about the terms in the above question, lets read about it

http://www.gnu.org/philosophy/free-sw.html

http://en.wikipedia.org/wiki/Open_source

http://opensource.org/docs/osd

Now that you have some background information, lets start the discussions 🙂

Let me give some analogy first. What do you do when you want to know about ” a recipe for a dish”, you ask somebody who knows it. You get the recipe and prepare the dish . After/during you prepare it, you change the dish according to your taste. You can increase/decrease/change the ingredients according to your taste or requirement. Isn’t it awesome?Lets think the other way around.  How do you feel if the person who have the knowledge of dish, refuses to give you the recipe or if he/she gives you,  it would be on a precondition that you can’t change the recipe at all and you can’t share the recipe with anybody. That means if the dish is little sweet and people like me who don’t like sweet food at all , wont have any choice . My south Indian friends who love spicy food, can’t make that dish more spicy. Also even if your friends and family like the dish, you can’t share the recipe with them. Which is pretty bad. Feels like somebody has restricted our freedom, even if you can buy the dish from that particular person every time you want it but it feels bad when you can’t know how it is prepared, so that you can prepare it at home or you can’t modify it according to your taste. Similar thing happens when you use proprietary software. When you install a proprietary software you can’t modify it according to your need or give to somebody else.  If you buy a proprietary software for you , the ownership is only tied to you as a license and even if you like software and want to give it somebody else, it will be illegal. Obviously you can’t see what is inside of the software :P. So if somebody sells you a proprietary software along with a virus/spyware/malware you wont be able to know. Free software is exactly opposite of proprietary software in this context.

When you share a code of a software along with the freedom to modify, redistribute , it starts infinite possibility. We will talk about infinite possibility after a little while because it is not a small topic to discuss :-).

Lets get back to the principle on which we think open source or free software is right thing to do.  Our society evolved on knowledge, know-hows passed from our ancestors to us and it is also getting passed to our future generations. Our knowledge grow when we share it and one idea give birth to another . When our knowledge grow, we grow, new ideas born. When you share an idea with others, they also contributes to the idea and it become more stronger and better. Every inventions draw idea or inspiration from past. We wouldn’t have any electric bulb without electricity , no microprocessors without a transistor.  When you put these principles on a source code,  a free software project or open source project is born :).

Some people  argue that even if we have proprietary software, still companies have came up with better software. That’s correct , a software can developed from scratch and may be a better one. But think about the time we could have saved by just enhancing/fixing  the existing software, rather recreating it from the scratch.  Its like reinventing the wheel .

There is another argument that if we the make the source code available for free then we can’t make money out of it or we can’t have a sustainable business model around it. Do you think it is a strong argument? For  first time it looks like a strong argument. But surprisingly lots lots of money can be made out of open source or free software. You want me to give a example 🙂 sure there are many. How many of you have Android cell phones? I am sure you have one. What is interesting is, Android is an open source project and Google makes billions out of it. How many of you use firefox web browser? it is also a open source project and Mozzila makes money out of it. Have you heard about Linux/GNU? It is one of the biggest open source project and companies like IBM, Oracle, Google, Red Hat, Novell and thousands of companies make money out of it and also make our life easier with the help of Linux. Interesting isn’t ? You must be thinking then why companies continue to create proprietary software and people buy them too. It is something for you to think.

Now let’s talk about infinite possibility of a open source project. We can compare open source projects as seeds which can become a huge tree which again can create so many trees. Lets take an example. Linus Torvalds had started a small hubby os project when he can’t(he was not allowed to) modify code of a proprietary operating system called. minix. I would love to quote  few lines from his initial mails to his university minix user group.

Hello everybody out there using minix –

I’m doing a (free) operating system (just a hobby, won’t be big and
professional like gnu) for 386(486) AT clones.  This has been brewing
since april, and is starting to get ready.  I’d like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).

With this mail he also shared the code of his hobby project and rest is my friends,  history!! :). You can understand from his mail that he never expected the project to grow this magnitude,  where 99% of the supercomputer runs Linux, Biggest datacenters, majority cell phones (Android is based on Linux), web companies like Google, facebook, Linkdin, twitter run their servers using Linux and recently all most all technologies being invented  for cloud computing is based on Linux. Amazing isn’t it. But there is more to the story :). As we know Android is based on Linux and it is a open source project. That means anybody can get the source code of worlds most popular mobile operating system. So now all the companies who wanted to create smart phones and they didn’t have resources to create an os, can use Android source code rather reinventing the wheel again. This will intern bring the smart phone price down and people who can’t afford expensive phones like Apple iphones can use cheaper smart phones in developing countries like India. You can imagine the socio economic impact when billions of people are connected to internet. This can’t get better than this ,where technology is helping people to change their life for better.  This is just one example and there are many 🙂

Here is a video about Linux to get you more interested in it.

I hope this article has increased your understanding of open source software in general.