# Open-Source Software

*The power of contributing to OSS 🖥*

2021-05-03 | `open-source` `git` `career` `productivity`

> A practical guide to open-source software: its benefits, how to start contributing, and why sharing code accelerates your career growth.

---

![blog-cover](/images/blog/2021-05-03/cover.jpg)

What is Open-Source Software (OSS)? What are their benefits? How can you start contributing to any OSS? Pet projects? Knowledge sharing? Why all of these?



## What is OSS?

OSS shares similarities with free software, but it's not the same. Free software is a form of OSS, but that doesn't necessarily mean that it has to be free. For example:

- [PHPUnit](https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE) is an example of OSS which is free.
- [Spryker](https://github.com/spryker/spryker-core/blob/master/LICENSE) is an example of OSS which is not free.

> OSS is basically software that is public, open to the world.

## Benefits

### For Companies

- Adoption: the easier the access, the easier the adoption.
- Training and tutorials help the system to grow.
- Tech: often on the cutting edge of technology.
  Tech moves fast. They will get obsolete if they don't.
- Community: the people around want to improve as it grows.
  Public channels enable easy access and community building.
- Trust: the software is public and accessible.
  Everyone can check the quality of the software anytime.

### For Individual Contributors

- Flexibility: decide on what you want to work on.
- Self-confidence: the experience improves your skills.
- Training: without the pressure of a PROD environment.
- Tech: play with the latest features of your tech.
  Try upcoming versions of your coding lang, or even try new ones!
- Soft skills: improve your communication skills.
  Good communication in the project is important.
  Especially when you face disagreements.

## Contributing to OSS

### Getting Started with GitHub

Nowadays, it's really trivial to start contributing to OSS:
- You can start your own project. A pet project fits here perfectly!
- You can contribute to an existing OSS project.

### Pet Projects

A pet project is a playground to create software and train your professional skills. Creating pet projects in your public GitHub profile has all the benefits of contributing to OSS, plus you're your own boss:
- You dictate the roadmap.
- You decide what to do and how.
- You're your own boss.

> The project is there for you. <br>
> You are responsible to play, explore and pass your limits.

### My Pet Projects

**Active:**
- [php-best-practices](https://github.com/Chemaclass/php-best-practices): what I consider best practices for web-dev.
- [php-scaffolding](https://github.com/Chemaclass/php-scaffolding): a basic PHP scaffolding with Docker.

**Inactive:**
- [stock-ticker](https://github.com/Chemaclass/stock-ticker): get a notification with the news from your favorites Tickers.
- [jira-status-notifier](https://github.com/Chemaclass/JiraStatusNotifier): Notify when the JIRA tickets don't move along.
- [edifact-parser](https://github.com/Chemaclass/EdifactParser): a parser for a UN/EDIFACT file format in PHP.

**Abandoned:**
- [knob-mvc](https://github.com/Chemaclass/knob-mvc): a framework to create WordPress templates (2015/2017).

### My OSS Organization Contributions

**Active:**
- [phel-lang](https://github.com/phel-lang/phel-lang): Phel is a functional programming language that compiles to PHP.
  It is a dialect of Lisp inspired by Clojure and Janet. I already wrote a post about
  this: [Phel: A Lisp that compiles to PHP](/blog/phel-first-release/)
- [gacela-project](https://github.com/gacela-project/gacela): Gacela is a PHP framework that helps you to improve the
  design of your application by splitting the logic into different modules.

**Abandoned:**
- [nm_template](https://github.com/NuevaMetal/nm_template): The base template for NuevaMetal (2013–2016).

## Knowledge Sharing and Impact

### Blog Posts

- Pull Requests vs Pair Programming
- The process itself is the goal
- The art of refactoring; When, How, and Why
- The art of testing: Where design meets quality

> ... and many more on [https://chemaclass.com/blog/](https://chemaclass.com/blog/)

### The Beauty of OSS

- Seeing the corrections that you constantly keep doing
- Seeing how your own code gets old with time
- Seeing the many mistakes that you have done
- Seeing how you are getting better at coding over time

Developing a sixth sense to smell patterns which you have already done and their positive & negative experiences.

**Showing your skills and helping the community around you.**

> Open-Source Software offers you one of the best opportunities to start building your career path towards continuous improvement.

---

This is a (Spanish) talk that I did remotely on April 2021,
for [PHPMad Madrid Community](https://www.meetup.com/phpmad/events/277733306/). I basically present all these ideas
together with a live demo of how to contribute to a real OSS.

{{ youtube(id="GE5wR_SC_P4") }}

---
