Thursday, October 25, 2012

Open Source Software

Open Source

The ABCs of Open Source

Background

Free software, a term coined by Richard Stallman, defines software that provides its users the freedoms to run, copy, distribute, study, change and improve the software using the GNU Public License (GNU). Stallman founded the GNU Project in 1984 and is the principal author of the GNU Public License (GPL) and the idea of “copyleft”. The Free Software Foundation, founded by Stallman in 1985, is the main protector and promoter of Free Software.

Interestingly, the term “open source software” was coined in 1998 and became popular among those who wanted to focus on the software source code being available with the software anywhere and everywhere along with other criteria as specified by the Open Source Definition (OSD). The OSD is protected and promoted by the Open Source Initiative.

The two terms free software and open source software are today jointly referred to as free and open source software (FOSS).

What is Open Source?

Open source usually refers to open source software developed by a community of people working together collaboratively transcending traditional organizational boundaries (such as companies or governments). Source code of the open source software developed is available “openly” (published source code) and “freely” (free as in speech).

The four C’s of Open Source are code, collaboration, community and community reinvestment.

Code

The most popular open source software projects such as Linux, Apache, Mozilla, MySQL, PostgreSQL, SQLite, PHP, Python, Ruby, Ruby on Rails, C/C++, FreeBSD are known for top quality code and highly collaborative communities. Rapid iterative development methodologies are prevalent today in open source software projects.

All open source software code is available for download from code repositories. A source code repository is a website where source code of open source projects is available for public open source projects. These repositories are used by multi-developer projects to revision control the project’s software and to manage code releases, patches, bug fixes in an organized manner. Some of the popular code repositories where you can dock your project or contribute to other projects are Sourceforge, Google Code, GitHub, Launchpad.

Collaboration

Collaborative tools are an integral part of developing open source software. These tools include revision control software (such as Subversion), automated build systems, issue tracking systems (such as TRAC), and team communications via mailing lists, wikis, blogs, IM, IRC.

Sharing ideas with a geographically distributed team is made easy with these tools. Mailing lists are permanently archived and can be searched. They serve as a kind of “project memory” - repositories of project discussions, decisions and most importantly as documentation to help new contributors joining the teams. Wikis take the place of email attachments. Blogs serve as notepads for ideas and extension of thoughts on architecture, code design and code itself. All these forums are cross-linked and serve as an invaluable platform for all contributors on each project.

Real time feedback and bug fixes are made possible by these collaboration tools also. Issue tracking and real time support is also possible due to the cross-linking in the material shared using these tools.

Community

Open source software communities tend to be decentralized with most communication occurring across the community via internet based tools such as mailing lists, IRC chats, wikis, blogs and forums. Open source software communities also tend to be global with contributors from various parts of the world participating on various aspects of the projects. Many contributors on major projects such as Linux are nowadays paid for their work by commercial organizations.

Community Reinvestment

Our open source project will develop a means tested solutions based in the United States of America that take advantage of the Community Reinvestment Act and authority of the Federal Communications Commission to Erse the Digital Divide.

Licensing

Today there are many open source software licenses.

These licenses have been approved by the Open Source Initiative (OSI) which is the organizational body that reviews all open source software licenses and validates if they meet the Open Source Definition (OSD). The current list of all approved open source software licenses can be found here.

Open everything… open content, open data, open standards

Open content is an term based on the ideas of open source, referring to any work allowing sharing and modifying of the data by anyone. A key example of a major collaborative open content project today is Wikipedia. Creative Commons provides free tools that allow users to license their work to others to share and modify legally.

Today the ideas of open data are influenced by open source and are defined by the goals of making data freely available to anyone, without encumbrance from copyrights and patents.

An open standard is closely related to open source nowadays. A technology standard is termed open only if it has a completely free and open source reference implementation available for the standard specification. Popular examples of open standards are ODF, HTML, TCP, IP.

Open Source Forks

Free and open source software may be legally forked without the approval of those currently managing a software project or distributing the software, per the definitions of "free software and "open source".  It is easy to declare a fork, but considerable effort to continue independent development and support to not only keep fork alive but grow a separate digital and human resource ecosystem around the fork.





No comments:

Post a Comment