Week 2
Responses to Weekly Prompts:
Entry Prompt #1: “Write down the various ways that you would like to contribute to one or more open source projects during the course of this semester.”
Outside of the open source projects we are expected to contribute to for the Open Source Software course, I am particularly looking forward to contributing to the aforementioned OpenCV (Open Computer Vision) and ROS (Robot Operating System) projects. While they are quite different in nature - the former is a primarily C++ and Python computer vision library and the latter is an entire robotics middleware and set of tools - I know from experience that both of are in real need of additional support in a number of capacities. As an avid user of both, I would like to help.
Perhaps the most obvious and helpful way to contribute to both would be to correct, update and expand their documentation and examples. As with any project that spans a long period of time, both OpenCV and ROS have gone through expansions, compatibility struggles and “contractions”. The last aspect is perhaps somewhat particular to the open source nature of these projects: the come-and-go nature of contributors or perhaps even outright departures, has left some useful tools and components by the wayside, in need of updating or correcting. The result is that the documentation - always a fragile and much needed element in the open source and corporate worlds alike - is often in a mixed state, as with OpenCV’s lack of any Python examples or documentation on the entire addition of the useful dnn (deep learning) module. But this, of course, also means that there is also room for contributions on the actual code front as well. Even if both projects have been built and developed by brilliant experts in both fields and this can be intimidating for a new contributor, the fact that certain tools like cv_bridge in ROS, handy for converting between ROS messages and OpenCV image formats, have not been maintained, means there certainly are opportunities to contribute.
Entry Prompt #2: “How does working in Open Source benefit you other than giving you the satisfaction of making a contribution to a project? Consider the following possible categories, and for each, jot down specific benefits that you can think of in that category.”
“FOSS Benefits to Your Skills” - “Communication, collaboration, tools, best practices, technologies”:
- Communication and collaboration: Studying CS in academia is frequently a solo experience, with occasional group projects. While you may survive this work speaking in generalities, work in an open source environment, just as much as a professional environment, requires specificity and care in communication. Not only are there often rules for communication in forums or issues, but more broadly you cannot hope to make any meaningful headway if your ideas or suggestions are not readable or actionable.
- Tools, best practices and technologies: Reinventing the wheel or breaking from conventions may be unavoidable in some scenarios, but if one is looking for sharp guidance - either the polite easy way or the unintentional mistake-induced hard way - on adhering to good programming practices or finding the appropriate tool for the job, a FOSS project may be right for you!
“FOSS Benefits to Your Career”
- Employers are always looking for easier and more effective ways to evaluate a candidate for a position. While reviewing your prior work at another company in detail is probably illegal, considering a good FOSS contribution is not. This is to say that FOSS work is always a wonderful opportunity to showcase your skills and perhaps even your personality, provided you treat it like a public resume.
“FOSS Benefits to Your Personal Network”
- There may be only a few students or colleagues in close proximity interested in the same fields, but out in the FOSS world chances are you have an entire legion of potential friends, mentors, and maybe even future colleagues or employers waiting to be discovered. With the right attitude, wise caution, and perhaps a healthy dose of skepticism as well, you may yet join the ranks of those helped by Internet strangers, even if only receiving some useful advice.
“Benefits from Preparation”
- Contributing to a FOSS project can be intimidating because of the preparation and knowledge required, but going through this experience will inevitably make you a more well versed and experienced student of computer science. At the very least you will be more appreciative of the FOSS tools and resources you use every day without a moment’s thought. At best, you will be more comfortable with the uphill struggle of grasping the state of a project, where help is needed, and how to properly offer that help. Such willingness to learn and ability to dive in to a project are invaluable in the work place.
Other Course-Related Activity:
- In order to prepare for this week’s upcoming review of version control software and Git, I am reading the Pro Git book and installing GitKraken for visualization purposes.
- In order to contribute to OpenStreetMap I am going to begin the iD editor tutorial.
Note:
The prompts quoted above are the work of Professor Stewart Weiss and can be found in original form here.