Wednesday, October 3, 2012

Beginner's Guide to Open Source Software

Many students complete their higher education in college without even knowing what is open-source and how it can help them in their career. They just want to develop for some for-profit company and earn some money. But nowadays Open-Source is becoming a must for every Computer Science student. 
Following are some of the frequently quesitons asked about Open Source Software that may help you: 

What is Open Source?

In production and development, open source is a philosophy, or pragmatic methodology that promotes free redistribution and access to an end product's design and implementation details
 Open Source Software is the software which source code is available for free to study, change, improve and at times also to distribute the software.

Why it is good for students? 

Students don't get see code base of Windows OS or Microsoft Office. They do not have a clue, how a proper software is developed and coded. They have written some nifty programs and some small projects each semester, but what about software that require collaboration of hundreds of people, 1000 LOC. 
Open Source Software gives all of this. They open their code base to be used and studied. And if someone found they interesting enough to collaborate, then they can. Anyone can file a bug report, feature code to most of the Open Source Software(OSS). 
When students interact with other developers on that project and write code with them, they get a picture of how a well polished is written and shipped, how testing is done. They read other people's code and come across different ways of expressions in software world.
Moreover when you write your own software and open source it, after looking at it, people in community will contact you for business and jobs. So its a Win-Win.

How to find and contribute to Open Source Software?

There are many well known projects that people will tell you about. But start with something small, something you can get familiar with in small time. Here is how you do it simple way (See Note below): 
  1. Go to Github and search for a software in your favourite programming language. 
  2. Select any project and clone it.
  3. Use it, explore its code.
  4. When you are using it, you may find some bug, file it on github. or
  5. If you have feature in mind that can be implemented in that software, add that.
  6. When writing code, try to follow original developer's style of programming.
  7. Push it and make a pull request.
  8. There is more than 95% chance, that concerned developer will contact in 48 hours.
And you have made your first contribution to Open Source.

Some popular Open Source Projects

Application software

7-Zip – file archiver
Blender – 3D graphics editor
Eclipse – development environment comprising an IDE
GIMP – graphics editor
Inkscape – Vector graphics editor for .svg
Mozilla Firefox – web browser
Chromium – web browser
Mozilla Thunderbird – e-mail client
NASA World Wind – virtual globe, geobrowser
OpenOffice.org (and the LibreOffice fork) – office suite
PrestaShop – Electronic commerce platform
ADempiere – (now Free Software forked from Compiere) an enterprise resource planning (ERP) open source software platform for business
Vue – (Visual Understanding Environment) mind mapping software project of Tufts University

Operating systems

Android – operating system derived from Linux
FreeBSD – operating system derived from Unix
Linux – family of Unix-like operating systems
OpenIndiana – a free Unix-like operating system
ReactOS – operating system built on Windows NT architecture
Haiku – free and open-source operating system compatible with BeOS

Programming languages

Perl – a general purpose programming language
PHP – scripting language suited for the web
Python – general purpose programming language
Ruby – general purpose programming language
PHDL – hardware description language used for PC Board Design

Server software

Apache – HTTP web server
Drupal – content management system
MediaWiki – wiki server software, the software that runs Wikipedia
MongoDB – document-oriented, non-relational database
Moodle – course management system or virtual learning environment
WordPress – blog software
TYPO3 – enterprise content management system

Keep going.
Ask any question if you have in comments.

Note: For this you need to have some knowledge of Git.