Saturday, June 20, 2009

License For Your Open Source Software And You

Last year I wrote a program for a text editor in java. I wanted to release it on code.google.com but as soon as I went on their hosting page, there was a field for the license type, which I was unable to fill as I didn't knew which one is the best suited for me. I read some of the licenses and here is a summary of them.

But before anything else let us first consider the need of a license. Consider a situation where you wrote an application or a program code and uploaded it on net. You didn't considered licensing option at that time. Next time when you open your email you see a legal notice for copyright infringement. Yeah!! Thats the program you wrote... What actually happened is that someone copiedor downloaded your source code copyrighted it and sued you for illegal use of the program!! Yes this can happened and has happened before.

These Licenses are designed in such a way so as to protect your rights as well as the spirit of free software. Here I will talk about three major licenses i.e. GNU General Public License(GPL), GNU Lesser General public License(LGPL) and Apache License. For a list of other Licenses please visit http://www.gnu.org/licenses/license-list.html

  • GNU General Public License (GPL) :-
    The main aim of GNU GPL is to ensure that you have the freedom to distribute copies of the GPLed software you created or obtained , you have to ensure the availability of source code. You can charge some amount of money. You have to give other users right to modify the source code and redistribute the modified version but under GPL only. There are different versions available for GPL. Latest is GPLv3. Unlike GPLv2 it has a clause to protect users against the patent deals and extend the limited patent protection to the whole community. It also protects the users against tivoization.
    GPL ensures that each free GPLed software provides its source code and that you are free to modify the code to create your own customised program and redistribute it but only under the GPL license so as to protect the rights of the original developer. Also it makes mandatory for the modifier to keep all the notices intact and to add proper declarations about the modifications made, so that any harm done will not defame the original developer.

  • GNU Lesser General Public License (LGPL) :-
    GPL doesn't allow the use of GPLed libraries into proprietary programmes but in some cases if one want to release a free library intended to be used in proprietary programs then LGPL come to rescue. It allows the users to copyright a free software that can be integrated with some proprietary software. You should avoid this license if you can. Releasing a library under GPL will make sure that the library is used by free sofwares only. This may force the other developers to release their software using GPL and thereby contrbuting to the free software world.

  • Apache License :-
    GPL is a very mature license. Its ideal for free applications but for beginners understanding GPL completely is a hassel. On the other hand Apache license is easy to understand and provides more or less the same protection as provided by GNU GPLv3.
    Free Software Foundaion considers Apache license to be compatible with GPLv3. Therefore Apache 2 software can be included in GPLv3 projects, because the GPLv3 license accepts Apache software into GPLv3 works. However, GPLv3 software cannot be included in Apache projects. The licenses are incompatible in one direction only, and it is a result of ASF's licensing philosophy and the GPLv3 authors' interpretation of copyright law.

  • Creative Commons :-
    Creative Commons provide an out of the box license which is not only flexible but also easy to use and much more easier than create. Yes, you can create a CC license, specially customized to suit your needs like the one I have for this blog. You can create a license for your work here. CC license is not generally used for software licensing. It is more suited for literature or  documentation work. In this license type you can choose the condition you want to set for your work. These conditions are :-
    1. Attribution : You let others to copy and use your work only if they give you the credit the way you want.
    2. Share Alike : You can allow other users to share your work but keeping the same or similsr license like the original one.
    3. Noncommercial : You can permit others to use your work for Noncommercial/Commercial purposes
    4. No Derivative Works : You give others permission to copy and distribute your work. But only Verbatim copies not any sort of derived work.
So for general purpose you can pick eiher GNU GPL or Apache license. It won't matter much. There is an ongoing debate about which one is better with no results ofcourse. I will recommend using GPL but feel free to choose any one of them. Creative Commons apply to a different area. You can use it to license your blogs or tutorials.

Tuesday, June 9, 2009

The Happy Man

Today I am the happiest man of the world. I finished my training with nettech and that too being a topper. And I got an offer to work with the team nettech as a faculty member. Now isn't that good!! I'll be teaching at XIM, Bhubneshwar. Although getting tickets for bhubneshwar in such a short time was a challange but, hey, they made air planes for people like me. It's the beginning of a new journey. I can't wait to learn more linux from senior teachers. I also had a little chat with Debjit. He is planning to conduct classes this semester on Linux. I guess I'll be helping him out. As the general secretory of BIT-LUG I have to invite Swapan sir for a workshop. A lot to do and very less time.....

Friday, June 5, 2009

Linux : Choose your flavour

Once you decide to try Linux the next question arises “Which Linux should I use? There are just so many of them. :( “ Well! I agree. Indeed there are a lot of Linux distributions (distro in short) available. People often ask “Which one is the best?” This is very difficult to answer. I believe the question should be “Which one is best for me?” In this article I'll try to answer this question and discuss some of the popular Linux distros

Debian : Debian is the parent Linux of Ubuntu and DSL and many other popular Linux distros. It has a good community support and uses .deb installation packages. But the biggest drawback is that stable releases are out only once in 1 to 3 years. Beginners can try.

DSL : DSL or Damn Small Linux is a distro which indeed lives upto its name. Its only a 50MB distro with fully loaded GUI. You can even install it in a pendrive and boot in any computer with it. Its very suitable for old PCs having very small hard disk space or very less ram size. Not recommended for beginners.

Fedora : Fedora is the community Linux of Red Hat with GNOME default. If you want everything to be latest in your distro then Fedora is a good choice. Also it has a very active community. Another thing worth mentioning is Fedora's 'spins'. These spins are modified versions of Fedora. They are modified by various Special Interest Groups enhancing some ability of Fedora. Like, there is a Gaming spin available which enhances your gaming experiance. Since everythng is latest, you may have to compromise with stability. But trust me its a very small price and if you have used any Linux before and wanna change than you should give a try to fedora. And yes, it look great. Recommended for user who have already used a linux before, begginers may try.

Mandriva : Mandriva, formerly known as Mandrake, is a great distro providing very beautiful looks. Three versions are available of this distro namely free, one and powerpack. Free is bundled with completely free software i.e. it does not contain any proprietry stuff. This means that you have to insatll most of the codecs on your own. It s suitable for freeware freaks. One is fully loaded with all softwares and is ideal for use. Its default is KDE. Powerpack is paid version of Mandriva. It comes with Professional support and is fully loaded. It uses rpm based installation packages and urpmi is the default package manager. You may expeience occasional crashes but nothing beyond repair. Recommended for user who have already used a linux before, begginers may try for fun.

Mint : Mint is perhaps the most easy to use Linux. It is built on the strong foundation of Ubuntu only. It has its own repositories but it also support Ubuntu's repositories. Mint also has a esy to customise desktop utility. And if you are a bit creative then this is the right place to show it as mint developers always welcome new ideas more than any other Linux. Recommended for beginners.

Puppy : This linux is so small that you can carry it in old 128MB pen drives and use it seamlessly. Its completely GUI based. It has an internet browser, a texteditor, amedia player n lots of other stuff. Whats more, it can save your settings and files and write it back on multisession cds or pendrives. So you dont need to set the environment every time you boot from a pendrive. This is an ideal linux for older PCs having less RAM or hard disk. Packages are hard to find. Not recommended for beginners.

Red Hat : Red Hat is the leader in Linux world. It broke the myth that open source cannot earn money. This is the parent Linux of many other distros like Fedora, Mandriva, CentOS etc. Since Red Hat bills its users, therefore its generally not used for desktops, but used in servers and other workstations where stability is very critical. Support is also very nice but paid. Not recommended for beginners.

Slackware : This Linux is for the people who already know the basics of Linux. It provides highest customisibility possible. You can choose from a range of packages to be installed but be careful as you should know that which packages are critical for smooth system working. Its an excellent Linux for the people who want to know the innards of a Linux. Not recommended for beginners.

Slax : Its a slackware based Linux. Blessed with good looks n stability it uses KDE and is unbelievingly small in size, only 190MB. It can be installed on a cd or a pendrive and is good to carry anywhere. The only problem is that it is hard to install on harddisk as it doesnt have an installer with it. Not recommended for beginners.

Suse/OpenSuse : It is a Linux supported by Novell. It is a beautiful distro providing high user friendliness. It also simplifies the developing and packaging methodologies making it a Linux of choice for developers. The package manager YaST is very powerful. Although the opensuse repositories are not enough but they do have a lot of third party repositories including popular packman repository. The community position is also strong. Beginners may try.

UBUNTU : Ubuntu is the most popular Linux distro available. Much of the credit for making Linux so popular goes to this distro. It has a huge community, perhaps the largest. Forum support is also awesome. But what made this distro really popular is its free cd shipments. Yes! You can request UBUNTU cd free of cost and ofcourse downloading the distro is always an option if you are too eager to try. Ubuntu is available with GNOME, KDE, XFCE desktop environment with aliases Ubuntu, KUBUNTU, XUBUNTU. GNOME being their default. It is highly stable but looks are simplistic and not that appealing like that of Mandriva or Fedora. It has a huge repository with synaptic being default package manager. Both desktop and server editions are available free of cost. Normally two versions are launched every year, one in april, other in october. Recommended for beginners.


*MORE TO BE ADDED SOON

In the end...

My networking and ethical hacking course from Nettech is coming to an end. Tests are already finished, only project work is left. As I mentioned earlier, these were among the most hectic weeks of my life. But I really enjoyed these days. The atmosphere, the "Ten minutes - Ten marks" tests and "feel the heat in ac", really made this course memorable. I am gonna miss all this. But these 25 days have opened a new chapter in my life. I have a lot to try in so less time. DNS, Web Servers, Mail Servers, Samba, NFS, NIS, PHP, Apache........ the list is endless. But I have to start somewhere. I guess, I should start with PHP. Anyways I'll keep trying n meddling with things as usual and try to keep up.