Week 2 - Open Source Biology and You
Contributors are the Powerhouse of a Cell Project,
NaN out of 10 Programmers Recommend FLOSS,
and Other Bad Puns Facts about FOSS Benefits
Open Source Bio 101
Syllabus
Welcome to Open Source Biology & Anatomy 101, a made-up course where I make as many analogies between FOSS projects and biological systems as possible. This fake course will consist solely of my thoughts for this week. (No homework, assignments, or exams — that would be too meta).
Disclaimer: The last time I took a biology course was junior year of high school
For some reason, the Onion Model of an Open Source community made me think of cells, and how the different essential parts of an open source project could be related to parts of a cell. Coordinating activities at the “center” are the founders, leadership, and/or BDFL, making up the nucleus of a project. Similar to how the cell membrane serves as a gate allowing things to move in and out, core contributors decide what code changes (which can be additions, deletions, and/or modifications) get approved. The issue tracker can be likened to the Golgi Apparatus, since it manages modification, organization, and transportation of features and code changes. Holding everything together in the cell is the cytoplasm, which in a project could be the users. Without them, the project can not really function or exist at all. Finally, general contributors are what keep a project active, so they are like the organelle we all so fondly remember from school as the powerhouse of the cell: the mitochondria.
This analogy definitely doesn’t hold under close inspection, so hopefully no one who has actually studied biology reads it.
Mutualistic Symbiosis
It is readily apparent that contributors are beneficial to open source projects. Contributors keep a project alive, active, and updated by discussing issues and making improvements/changes. However, every beneficial interaction from a contributor to a project has an equally benefical reaction from the project to the contributor. Besides the satisfaction of helping people and the basic case of improving software one already uses, working in Open Source benefits contributors by helping them become more well rounded professionally.
4 Crazy Ways FOSS Benefits Your Life
(You Won’t Believe #3!😮)
Floss for the teeth, FOSS for the mind
Working in Open Source is like a superfood for a developer’s professional life, and also great for improving some essential life skills in general.
Skills++
One of the best ways to dive into a new framework/language/tool is to get involved with an open source project using it. The process of contributing to open source inevitably touches on several different skill sets. First of all, communication is necessary throughout every step, be it creating or commenting on an issue, getting help from community members when stuck, commenting code, receiving feedback, or responding in a back and forth with maintainers. At some point, you are communicating with another human being no matter how indirectly, and FOSS helps you practice making that communication efficient and helpful to all parties.
On a similar note, collaboration skills are an almost obvious place where skills improve. Whether you are contributing to a small tool or a huge project with thousands of users, working in open source inherently involves a lot of collaboration with people, potentially from around the globe. As we learned in class, making a contribution for any project involves reading and internalizing some form of the sacred text: CONTRIBUTING.md, a guide on the actual mechanics of making a contribution. This usually presents an opportunity to learn best practices and practice adapting to whatever is considered ‘best practice’ for a specific project. (Best practice and standards can be different wherever you go, and sometimes even directly conflicting!) For me, open source’s benefits to my skills essentially boil down to two things: practice and exposure.
Career.next()
Open source contributions are, by definition, open, meaning anyone is able to see them — which includes recruiters and potential employers. FOSS projects can be used to build up a portfolio showcasing all the skills just mentioned above. All you really have to do is consolidate your contributions into one place (i.e your personal website and resume), and now open source has helped you become more employable. You can use this strategy not only when searching for employment, but also when trying a career change into a different domain of tech by starting with open source contributions in that new environment. Also, since most companies use the same practices, methodologies, and software (like git) as open source projects, often times previous experience in open source allows you to hit the terminal typing when working as an engineer and start making an impact right away. My possible career options can be expanded once I (hopefully) bolster my portfolio with open source contributions.
ping Network
Collaborating with developers on a project means meeting new people, with the potential of expanding your personal network. You can meet many cool people all coming together for the sake of helping build, maintain, and improve software. When you get involved with a FOSS project, you are not only contributing, you are joining a community — a community that you can tap into for mentorship, advice, referrals, and maybe even friendship.
<link rel=”preload”> Benefits from Preparation </link>
Even in the process of preparing to contribute or join a project, essential skills are used. The process of downloading and running a project locally can involve deciding between different configurations and making tradeoffs based on what is most efficient for your own set up. Being able to figure out some of the software architecture through the organization of the code and learning where and how to place code files are other important skills that are strengthened when preparing to join. Languages, tools, and dependencies change over time, so there is always something new to learn when jumping into any open source project.
"Brain Mohr Handshake" by pursuethepassion is licensed under CC BY-NC-SA 2.0
(Image Memed by me)
git involved
After all I’ve said about how working in open source can benefit me, how do I actually plan to benefit open source projects? Of course, my biggest goal is to make a substantial code contribution, either building a feature or fixing a bug. I see this as a way to make the most positive impact in a project, but since starting this course I have realized there are so many other ways I can contribute:
// documentation- I plan to try and fix or add documentation wherever it may be needed in a project, to make projects easier to understand for other developers and myself. This may include code comments, markdown guides, or edits to project websites. Perhaps I may even work up the time (and courage) to write my own guide!
- Entomology and the Issue Issue
- I also want to get out of my comfort zone and aim to file an issue or bug report for a project. I’m deathly afraid of submitting a bug report or filing an issue only to find out the problem is something simple caused by my own oversight. However, this semester I’ll have the chance to get comfortable enough with a project to find and report a bug, or file an issue suggesting an improvement or new feature. Hopefully I will overcome this issue by finding and filing more issues for Open Source projects.
Though these are the main ways, I’ve already started thinking of how I can contribute and give back every time I interact with new or old open source software now.
Browser Steroids
While participating in a Browser Add-on Activity for the course, I noticed a slight discrepancy in a Mozilla Web Extension tutorial. In the part 2 video under testing the ‘beastify’ example addon, there are only 3 animal buttons, but in the tutorial itself another reset button exists with the code given. Though this doesn’t affect development of the addon through the tutorial, it confused me for a moment when I used the video as a comparison to see if I had completed ‘beastify’ correctly, since it is slightly misleading. Perhaps the reset feature was added later and the video was never updated to match the new code, or the video was taken before the addon was completely finished. However, I don’t think there is much for me to do there since it is an embedded youtube video on the Mozilla Hacks channel. I’ll be looking for things like this wherever I go on the internet though, so I can jump at the chance to add on to a project.
It’s Brick 🧱
This past weekend I attended Brickhack, a hackathon at RIT, all the way up in Rochester. While working on a project, I came across some sources for potential projects to contribute to. My team’s project involved displaying a map with childcare program data. Inspired by the course, I tried to make sure we used open source libraries wherever possible, and so for once I didn’t default to the usual Google Maps API choice. Instead we went with Leaflet, which is actually built on another Open Source project that you may be familiar with from this blog’s contributions tab: OpenStreetMap! Most of the team was familiar with React, a frontend development framework. A quick google search showed that a React library existed for Leaflet — React Leaflet. I noticed that not all the features from Leaflet existed in the react library, so I may double back to that project later on and look into submitting a feature request or pull request.
An example of something I could work on came up right away during the project: icons. I wanted custom icons for popups on the map, but there was no React component for an icon object specifically. We eventually figured out a(n ugly) workaround using regular old leaflet.js because we were pressed for time, but the thought of adding the functionality of custom icons on popups in react has been at the back of my mind since. Though the codebase looks complicated and I’d have a lot of ramping up to do, this would be a great way to really improve my React skills.
FLOSS is good for you, it’s basic biology.
Thanks for reading…
boubascriptTTAGGGTTAGGGTTAGGGTTAGGGTTAGGG TTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGG TTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGG