I started writing this post soon after I came out of the computer lab completing my lab internal exam. We are given 10 exercise to complete during our semseter lab sessions out of which a random of 2 exercise are given for this internal exam.
The title of these 10 exercises are given to us from our seniors and they also shared their code to us through email. Most of these code are downloaded from the Internet & are written in Java.
I am someone who hates the verboseness of Java. Anyway I attempted to compile and execute those codes to see what output does the code produce. There were bugs, typos in the code. I debugged & compiled them successfully.
While discussing with my class peers, they said me they were not able to compile successfully for same reasons. Then I shared them the revised code with bugs and typos fixed. They used it to compile and got the lab record completed. I had the same experience during my under-graduate course.
Nevertheless I implemented some of the programs in python for my convinience and also gave the same for those who were looking for much simpler and non-verbose code. Another friend of mine in my class named Dipankar
also tried implementing the algorithms in the languages that he preferred. We both shared our code to our peers and asked them to pick the one they feel better (No, we both were not in a competition. Instead we co-operated with each other).
I think, this is nothing short of the Free Software practice except the fact that the code are not licensed and might fall under public domain. The majority of student community today, when given a lab programming exercise to complete, searches for existing code online to reuse and to study the code. They are using it for their own purpose and some even modify the program to fit their requirements. Now this new version of code will be shared with the next batch of students.
- the reciever, of the program code, can run the program for any purpose.
- the reciever, of the program code, can study the program to know how it works.
- the receiver, of the program code, can redistribute the copies of the code to anyone.
- the receiver, of the program code, can improve / modify the code and share it with anyone.
The above practice by the student community is in par with what Free Software says. Yet, the student community is unaware of this philosophy and are failing to utilise it to study and improve. They fail to understand that this is the only potential source of knowledge for them. This free flow of knowledge is a gift for them by their predecessors.
Instead of rewriting everything from scratch they can reuse them. When they attempt to study the code while reusing them, they can improve them. During this process they might get different ideas that could take their thinking (or) understanding to a new level which might even kindle them, to pursue researches (or) question the current practice of proprietary software development. By this they can set an example for their successors.
I hope the student community will think about it and take this philosophy seriously for the betterment of it's own existence.
After having some discussion with my peers who are inspired by Free Software, we decided to setup a git repository of these codes and add Free Software Licenses to them and share it with everyone (I will update the post, when the git repository is ready).