Open Source - The Philosophy Behind it

Open source isn’t an exclusive club; it’s made by people just like you.

Open Source - The Philosophy Behind it

Photo by Randy Fath on Unsplash

Introduction

Whenever we buy a new Windows PC, one of the first things that we install in it is VLC media player, it has been around for the past 2 decades and has been widely famous and for all the good reasons.

I always loved it because it had all the features that I wanted and that too without a cost, when I searched about It, I got to know that it was an open source software and that was my introduction to the term OPEN SOURCE.

During the early days, Open source software for me meant free and reliable software but as I started to learn more about it, I understood that its meaning lies far beyond.

What does “open source” mean?

Open source is a term that originally referred to open source software (OSS). Open source software is code that is designed to be publicly accessible—anyone can see, modify, and distribute the code as they see fit.

Open-Source-Software-.jpg

Definition

To determine whether something can be considered “open source” or not, the Open Source Initiative developed a definition based on the Debian Free Software Guidelines, written and adapted – for the most part – by Bruce Perens . The Ten Commandments that he came up with are as follows:

  1. Free Redistribution
  2. Freely Obtainable Source Code
  3. Derived Works
  4. Integrity of the Author’s Source Code
  5. No Discrimination against Persons or Groups
  6. No Discrimination against Fields of Endeavor
  7. Distribution of License
  8. License Must Not Be Specific to a Product
  9. License Must Not Restrict Other Software
  10. License Must Be Technology-Neutral

Why do people ''open source" their project

Why share for free the source code of my program, which I spend months developing? What if someone stole it? What if my “competitors” use my source code to improve their products?

This is a doubt which comes to mind when we start to work in an open source world. Let's clear it!

DTFb.gif

Mindset

  • Open Source software upholds the belief that the source code of software should be available to anyone to easily view, alter, enhance and re-distribute any portion of that code without paying for it.

  • For example, with an Open Source operating system, such as Linux, if you decide you don’t like the way the system handles something and you have a programming background, you can modify any aspect of the computer software to suit your own needs. If you don’t like the way a button looks or the way a menu opens – then feel free to tweak the code. You can add, edit, and destroy to your heart's content.

Significance

1. Open source is the future

Open source is how modern organizations and increasingly more traditional organizations build software. It’s becoming exceedingly challenging to make the argument that five-or-ten years from now the technology landscape is going to be less collaborative and more closed.

Heck, even Microsoft, traditionally one of the most stark opponents to open source, has open sourced their primary development framework with Apple.

Today, all the largest names in technology, from IBM, to SAP, to Adobe actively participate in the open source community. It’s slightly inaccurate to say that “open source is the future”. Open source has already won.

2. It's better

open source tends to produce better quality software than its proprietary or alternative counterparts. When you write closed-source software, the only developers that can potentially detect, diagnose, triage, and resolve software bugs are those that happen to be employed by the company that publishes the software.

Open source provides three advantages:

  • first, you have the opportunity to tap the knowledge of the world’s best developers, not just those on one organization’s payroll.
  • Second, the number of potential contributing developers and thus the potential knowledge pool is orders of magnitude larger.
  • Finally, open source software gets adapted to a variety of use cases, not just the one the publisher originally intended, creating more ways to work on it.

3. Collaboration is Everything

LFcj.gif This happens in three ways: - When communities form around shared challenges, the diversity of ideas that naturally emerges provides better solutions as compared to the diversity of ideas that was limited to just your organization, meaning developers are working smarter.

  • Exposing the problem space to other interested organizations provides additional human capital to tackle your challenge, meaning the solution has more developer hours thrown at it, at no additional cost to you.
  • Finally, “more users means more use cases being explored, which means more robust code.”

Motivation

example_nike.jpg

Open source is awesome. There are many reasons why you might consider consuming, publishing, collaborating on, or supporting open source. Here are a few of them:

Moral Motivation

Take a penny give a penny

If you consume open source, be it a server, a desktop publishing application, or a software library, you must give back to the community.

But wait !! What if you don’t know how to code? What if something goes wrong?

Bn65.gif If you are stopping yourself with these thoughts. Not to worry! There are all sorts of ways to get involved with an open source project.

A common misconception about contributing to open source is that you need to contribute code. In fact, it’s often the other parts of a project that are most neglected or overlooked. You’ll do the project a huge favor by offering to pitch in with these types of contributions!

MythBusters_title_screen.jpg

Ask yourself these questions

  1. Do you like to write?

    • Write and improve the project’s documentation
    • Curate a folder of examples showing how the project is
      used
    • Start a newsletter for the project or curate highlights from the mailing list
    • Write tutorials for the project.
    • Write a translation for the project’s documentation
  2. Do you like to design?

    • Restructure layouts to improve the project’s usability
    • Conduct user research to reorganize and refine the project’s navigation or menus.
    • Put together a style guide to help the project have a consistent visual design
    • Create art for t-shirts or a new logo.
  3. Do you like planning events?

    • Organize workshops or meetups about the project.
    • Organize the project’s conference (if they have one).
    • Help community members find the right conferences and submit proposals for speaking.
  4. Do you like helping others code?

    • Review code on other people’s submissions
    • Write tutorials on how a project can be used

Teaching the next generation

Many of the industry’s most prominent engineers today cut their teeth by learning from open sources. When software’s underlying code is made available for inspection, consumers can learn how their favorite software works, and computer science courses can analyze how the industry’s cutting-edge technology is built. This goes a long way to train the next generation of software engineers (who without open source would be left guessing at the inner workings of prior iterations).

1_sXDzhjLdiAQgb8yu9JFiQA.png

Personal Motivation

Learn to code

  • Open source is a great way to learn how to code. Want to know how your favorite site works? Hitting “view source” in your web browser can go a long way to point you in the right direction.
  • You can read the documentation of the software that powers it, and potentially even stand up your clone. Want to learn more? Join the local meetup for the framework or language.
  • Better still, submit a pull request to the project to fix a small bug or add a new feature.

Helping Others

One of the most rewarding things when working in open source is when someone says something like: "This is amazing!" "Thank you so much!" "It's saved me so much time!" or "I wish that I'd found this earlier!" It's awesome to think that the 5 hours I've spent on my project have saved 500 developers days or weeks' worth of development time. That's cool.

Call to action: If a project has saved you some time, go ahead and file an issue to simply tell them thanks. 🎁

Friends

One of the most rewarding experiences I get out of using and collaborating on open source comes from the relationships that I build with other developers facing many of the same problems I am. I have so much fun working with these amazing people. Friends make open source fun and rewarding.

5AK.gif

Green Squares are Necessities

68747470733a2f2f692e696d6775722e636f6d2f514478636f74372e706e67.png

  • First, a well-maintained GitHub profile shows that you contribute to open source projects. This has always been an attractive quality to hiring companies and they came to see it as a good indicator of whether someone’s a good engineer.

  • In the end, job candidates who take the time to develop their GitHub profile and participate actively in the community can be better evaluated than others.

  • Second, your GitHub lets them see what you’ve built and how you built it, giving potential employees an even clearer idea of your technical skills. After all, GitHub is first and foremost a version control system.

  • As such, it shows how often you’re coding and what code you’re pushing. In the end, the more quality changes you make, the more evidence of your abilities you have to show potential employers.

Fun Fact

Blogging can also be considered open source, as people are contributing their time and expertise in areas in which they are often not compensated financially. The blogger can either take their blogs (their “source code”) and sell them or promote it for free – just like with open source software.

Conclusion

Open source philosophy is changing the way people think about technology and society. A couple of years ago you had to fork out a lot of money to get a good graphics editing computer program (such as Adobe Photoshop). Now you can just download a free version of GIMP. You can even modify its source code to make it better, or simply different if you feel so inclined. Collaborative open source software projects such as Linux and Apache have demonstrated that a large and complex system of code can be built, maintained, developed, and extended in a non-proprietary environment