Search This Blog

Thursday, October 30, 2014

Introduction to Software, Licensing and Proprietary Software

Software by definition : - is any set of machine-readable instructions that directs a computer's processor to perform specific operations.

Software makes the hardware usable and vice versa. Hardware means the physical components of any computing platform, may it be your laptop,desktop, phone or tablet. Software running on them makes the hardware usable and without the hardware software would be useless.

Software and hardware complement each other, Hardware is completely Static entity where as Software is dynamic.

One can't change anything about the hardware after initial purchase. We could replace a few components however, those would also be static in nature, we can't manipulate the internals of the hardware. On the other hand we could modify the software if we wanted to or If we were allowed to and provided with the source code. We will discuss in greater details soon.

After clarifying the basics lets move on and discuss the origins of computer software, rather computers themselves.

History of Computers and Software

So a long time back when Computers were of sizes comparable to a small building, Software was hard to come by and just like the computer systems themselves was very expensive.

Like the definition of Software itself says, it is a set of machine readable instructions, so if it is a set of instructions, it needs to be written in some language, Some language the computer's processor understands.

So what language does a computer's process or understand ?? It understands only one language. 

0101010101010001001010010100010010000010010101010101010101010001001010100100101001001000100100101001001001001010

Puzzled ?????... It is true, Computer's process or is basically dumb !! it just understands a language or zero's and one's. A computer can do anything you want as long as you could write the instructions in 0101010 format or BINARY LANGUAGE. Computer are excellent in executing the given instructions. They don't care what the instructions say, they just execute them without fail.

We can't read or write such language, so what is the solution. The solution is a PROGRAMMING LANGUAGE. This language has characters that humans can understand, like Alphabets and Numerals. We can write instructions with this language which then get converted into a stream of Zeros and One's so the computer could interpret it and execute the instructions.At that time the only programming language available was Assembly Level Programming Language or simply Put ALP. ALP is a programming language which talk at very low levels to the Processor and results are very fast. The assembler program converts the instructions to executable code which the processor then executes. 

Pretty Simple Right !!!!!

Well, in the early days of computing things were really complicated, one had to write programs in ALP which was very complicated and time consuming.

Since programming required so much time and effort, Computer software became very Expensive.
Things continued like this for quite some time, Advancements in technology were slow and only language at disposal was ALP. All software was written in ALP or something similar and low level.

Thing were like this until 1972-1973 when a Computer Genius at AT&T Bell Labs Laboratories made a ground breaking invention. His Name was Dennis Ritchie and he invented the language C along with Ken Thompson, It was called C because it was derived from an already existing Language B at Bell Labs. So the next logical name after B would be C. C was written in ALP and its purpose was that it was a piece of software designed to build more software. 

It was a new Programming Language for computer software. 

Today C is like mother of all programming languages, almost all programming languages borrow something or other from C. Languages like Python are completely written in C. UNIX was written in C Linux is written in C. C is not as low level as ALP however it is low level enough to provide optimal speed and ease of programming. It is a trade off between speed and ease of programming and the speed reductions are not as much. Programs written C  are the fastest.

After C surfaced a new revolution started and software development say and unprecedented explosion. Software was being built at a very fast rate.

C is just one of the programming languages there are many other for different purposes.

Now we had the programming language we all wanted so bad, and we started writing software. Software for almost every computing task, Life became easy and work was done easily and quickly.No doubt software solved so many problems for us however it also gave birth to a few. Lets take a look what happened.

Enter Proprietary Software

The Problem was that Software was now a property of the developer. The developer was the owner of the Software and since software development was new in town and it was making a lot of things easier, It became all the more a property of a developer and the developers started charging Money for their software.

It was fine because the person who built the software spent long hours coding the thing and everyone need to pay bills so that money part was understandable and OK.

The real problem was the License. Which had big implications. You owned the software but you could not change anything about it. All you could do is use it as per the license that is all you get even after paying so much money.


License by definition means :- A software license is a legal instrument (usually by way of contract law, with or without printed material) governing the use or redistribution of software

Software license became a means to sell the software and make money. Huge enterprises sprung across the globe building this kind of software, this is termed as Proprietary Software.

You pay and you get to use the software and you don't see the source Code, you can't modify or distribute proprietary software, because its license says so. One could be sued for violating the license.

Problems with Proprietary Software

Like explained earlier, Proprietary software gives only limited freedom, You need to abide by the license all the time, and you do not get to see how the software works, How it was built. The real meat of the software is hidden at all times. What we see and get to use is the pre-compiled software, ready to be installed and used, with no ability of viewing the Source code.

Source Code :-- Source Code has been referred to a couple of times, so lets take a look as to what the Source Code is.


Source code is the actual set of instructions written in the programming language of the developer's choice, C C++ or python or any other language. This si the real software that actually tells the computer what is it intended to do.

These instructions are generally written in a text editor and saved in a text form which is kind of useless to the computer in such form. These text files are in reality the actual software, one could make changes etc. to these text files to improve the software or to fix any bugs.

Software in this modifiable form is called the Source Code.

When we use the software we do not use the Source Code, we rather use some Executable file, Something which we can click and launch or we could cal from a command line or something which is in a form which can be executed directly by the computer's processor. This form is called as the Binary or the Executable form.

How does the software become executable/Binary?

It involves a process called as compiling. In this process we run the instructions through a compiler. The compiler then compiles the Source Code.

During Compilation, the Compiler tells the computer's processor every single instruction on the Source code file. Compiler then checks the code for any errors etc. If there are any errors, the Compiler highlights them and the programmer corrects them. The process is iterated till the final result is achieved without any errors.

During this process, the compiler records the execution of the Source Code and converts the result into a new file which is self executable. That file is in the Binary/executable form.
This file no longer needs the compiler to compile the Source Code again, The Execution is recorded once and the binary can be used over and over again. This is the Executable /Binary for of software

Proprietary Software never distribute the Source Code, They just distribute the Executable files/Binaries of the software with an Installation program which installs the software. It also include the license as well.

Proprietary software can burn a hole in our pocket and yet all we get are the binaries. On top of this we can't use it the way we want, We can't change we can't modify or redistribute it.

We always need to abide by the license agreement or else.... :(

We all know what happens otherwise

This was an introduction to Software, Licensing and Proprietary Software. In my next Post I will discuss about something very Interesting .. FREE SOFTWARE. Stay tuned.

Please do leave your comments below.

Thanks,

Wednesday, October 29, 2014

Welcome to my Blog OSgyan, Where I talk about Operating Systems, Linux, Open Source and more.....

Hi,

My name is Rajat Pandita. I am an IT consultant by Profession. I work with a MNC here in India. I mostly work with Proprietary Technologies like Microsoft. Vmware Citrix  and AppSense Products etc.

My Job Profile is that of a Virtualization Consultant, mostly dealing with Microsoft, Citrix Vmware and AppSense Solutions. I work on solution design using these technologies. I provide solutions that virtualize  Servers, Desktops and Applications and also provide Secure access to them on any device.

That was a little introduction about myself. Since I have been using Proprietary software all along my career, Free Software and Open Source and especially GNU/Linux Interests me very much.

I have always been fascinated about how something so Important could be so free?  Yes Free !!!. that is the magic of Open Source software and collaborative software development without any proprietary shackles.

I have been using Free and Open Source software around 5-6 years ago. I mostly use GNU/Linux and associated software. I use Arch Linux on my main Computer with the Latest Gnome Desktop Environment.

The reason I started this blog is to share my knowledge of Free and Open Source software and how it helps me in my Personal Computing needs. I am no software developer, I use Free software without having to pay a dime out of my pocket, the best thing I can do with my limited knowledge and capacity is to share my knowledge and help more people switch to GNU/Linux and FLOSS.

GNU/Linux not only is a great server operating system which runs on around 95% of Super Computers in the world, it also is a great desktop operating system.

In my blog I shall share all that I know about Operating Systems, GNU/Linux Open Source and more..

I am also starting a new You Tube channel with the same name OSgyan, to show some really cool stuff that can be done with Linux and FLOSS

I don't want to do reviews to begin with, I would like to start with Introduction to the FLOSS ecosystem and GNU/Linux.

I hope you enjoy my Upcoming articles!!!

Please do leave your comments and suggestions .


Thanks and once again Welcome to my Blog !!