03 October 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?

Quoting Wikipedia:

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