[Hello World] - Open Source
In this continued series of fortnightly technical blogs, StreetDrone is going to lift the LiD(-AR) on one aspect of autonomous driving software development. Our “Hello World!” series is written by software engineer Efimia Panagiotaki, a tech-trotter with engineering experience ranging from the National Technical University of Athens to ETH Zurich to Williams Formula 1. Efimia is leading the development of StreetDrone’s autonomous driving software by leveraging Autoware, a ROS-based, open-source self-driving stack.
“I’m looking at you, Fortune 1000 companies. The ones who include OpenSSL in your products that you sell for profit. The ones who nag us for free consulting services when you can’t figure out how to use it. The ones who have never lifted a finger to contribute to the open-source community that gave you this gift.”
OpenSSL* is one of the thousands of open-source software programs that millions of people rely on every day for tasks like browsing the web and watching videos. A small group of three to four core developers were responsible for maintaining a codebase used to secure the web servers for the two-thirds of all active websites as well as email servers, chat servers, VPNs and the network infrastructure of the military, government and financial institutions.
Sounds impossible? Well, it is for such a small team. It was a matter of time for a bug to find its way into the source code and break the internet. Which it did, back in December 2011.
This is a good history lesson and an even better wake-up call from Steve Marquess, as it underlines the importance of collaboration within the open-source community and the number of benefits we are all enjoying because of open-source software and these incredible developers.
Great article about this on Wired: The Internet was built on the free labour of open-source developers. Is that sustainable?
To set the record straight...
A common misconception is that when we are talking about free software, we mean free as in the cost the user must pay. “Free software” is a reference to the rights the software consumer receives, not the price they pay.
According to the free software definition, a program qualifies as free software, if the program’s users have the four essential freedoms:
Freedom to run the software as they wish, for any purpose
Freedom to study the software and modify it
Freedom to redistribute the software so they can help others
Freedom to distribute copies of the modified versions, giving the chance to the whole community to benefit from your changes.
Opensource.com, often uses the expression “beyond software”, meaning that the open-source values and principles apply to the world beyond software. Open-source is an attitude and “the open-source way” expresses a willingness to share, collaborate with others, promote transparency, embrace failure, encourage self-improvement and expect everyone else to do the same. It’s simply better when it’s shared!
Quick History Lesson…
In 1983, the GNU Project was launched aiming to write a complete operating system free from constraints on use of its source code. It is said that the motivation for this was an annoying printer that couldn’t be fixed because the source code was withheld from users.
[Very understandable — Printers generally hate us. 2 years at StreetDrone and a few self-driving cars later, I still cannot use the printer at work properly]
A few years later the GNU Manifesto was published, to outline the purpose of the GNU Project and importance of free software. Apart from the very relatable printer issue, another probable inspiration for the GNU project and its manifesto was a disagreement with Symbolics, Inc. over MIT’s access to updates on Symbolics’ Lisp machine which was based on MIT code.
Soon after the launch, the Free Software Foundation was founded to promote the concept of “free software”, or libre software. The Free Software Definition was published in February 1986. In 1989 the first version of the very well-known GNU General Public License was published.
Commonly used acronyms:
FOSS: Free and open-source software
OSS: Open-Source Software
FS: Free Software
FLOSS: Free/Libre/Open-Source Software
FSF: Free Software Foundation
GNU: GNU’s Not Unix
Linus’s Law: “given enough eyeballs, all bugs are shallow”
A study based on quantitative measures (experiments and market studies), suggests that open-source tends to produce better quality software than the proprietary alternatives.
More perspectives make better software. On closed-source software, testing and quality assurance fall into the hands of the developers employed by the company that owns the software. They are solely responsible for detecting, diagnosing and resolving software bugs, as well as identifying edge cases and defining the source code architecture and software use.
On the contrary, with open-source you have the opportunity to expose your software to the world’s best developers from multiple backgrounds and with versatile skillsets. The number of potential contributors increases and the potential knowledge pool grows. Your software gets adapted to a variety of use cases, exposing bugs and edge cases much faster. More users mean more eyes and more use cases which results in more stable, safe and robust code.
Consequently, open-source enables upstream improvements: it’s in your best interest to give back, report bugs, suggest new features and submit pull requests on the open-source projects you are using.
Avoid duplication of work
Open-source allows you to stand on the shoulders of giants, like multiple internet websites and servers are relying on OpenSSL, as Steve Marquess was saying. Even closed-source technology relies heavily on open-source. Take the internet as an example or your cell phone or even your car.
Empirically, I can confirm that any problem you might have, has already been solved. Just Google it and you will find the solution on Stack Overflow, GitHub/GitLab/BitBucket, ROS Answers and other wonderful websites.
Developers working on open-source code don’t need to spend their time reinventing wheels that the open-source community has already perfected. It’s much more beneficial for your developers to spend their time optimizing those wheels and working on yet-to-be-solved challenges. You have tech giants and incredible developers have already done that work for you. Get your developers working with them to reduce duplication of effort and free their time to do more innovative work. Just make sure you are always giving back to the community.
Modern practices and workflows
Open-source software development is based around rapid development cycles, more frequent releases and process efficiency without sacrificing quality. You won’t find an open-source project that follows outdated or rigid command and control development philosophies, commonly found in many large organizations developing closed-source software. At these organizations, to fix a bug, add a new feature or make a new release needs to go through a strict bureaucratic process.
In FOSS everything is happening fast, the processes are leaner and more agile and the distributed characteristics of the projects necessitate modern software development workflows. These workflows allow the process to be naturally captured and exposed, decisions to be time and location-agnostic and contributors to rapidly experiment without prior approval.
The development process and the software architecture is modular, flexible and robust, built to allow greater flexibility for multiple use cases. The code is cleaner and very well maintained.
Community: Open-Source has already won
The technological landscape is turning more and more collaborative. Communities have started to form around shared challenges, aiming to establish or support a standard. The massive influence of outside contributors to the project allows the ecosystem to evolve rapidly. These communities accelerate innovation, drive adoption and fuel the marketplace of ideas through collaboration and dialogue.
Take Open Robotics, for example. They have built one of the most successful global communities with thousands of contributors, developing and maintaining the most broadly used open-source robotics products: the Robot Operating System (ROS) and Gazebo.
In the self-driving field, tech-giants along with multiple universities and start-ups have started opening their datasets to enable autonomous vehicle research. Some of the most popular datasets include Waymo Open Dataset, Pandaset, Oxford Radar RobotCar Dataset, nuTonomy nuScenes, Google Landmarks-v2 and Berkeley DeepDrive.
Even Microsoft, originally one of the harshest opponents of open-source (remember the Halloween documents), has open-sourced their primary development framework. Today the biggest technology players actively participate in the open-source community.
Participation and talent acquisition
FOSS allows software contributors and stakeholders, technical and non-technical, to shape any given software project. Open-source is being characterized by direct democracy. As a company you get to show your work and get instant feedback on your product, which helps your company, products and projects evolve and improve.
Open-source software motivates people not only to learn how to code but also to acquire new skills or simply try new and exciting projects. Just look at what this guy did with open-source software.
Many open-source projects are aiming to educate, promote and facilitate software development in multiple subject areas. Either this is robotics, machine learning, self-driving cars or APIs, algorithms and data structures, the educational material that is now free and available to everyone is massive.
And for your company this is pretty much the best technical interview possible: you already have developers working and contributing to your codebase, so you know their work and they are already familiar with the source code.
Free Software Movement
Users control the software, not the other way around. When a program respects the user's and the community’s freedom, it’s “free software”, or libre software. The Free Software Movement argues that proprietary software runs the risk of controlling the user through its publisher.
It’s not uncommon for proprietary software to spy on users, restrict them, censor them or take advantage of them. Remember that face-to-face conversation you had with your friend about your dream vacation? Are you now receiving booking ads and travelling tips? Oh well, this is awkward …
The so-called personalized ads are a great example of how the software that we are so naively installing on our PCs and on our phones is mistreating the users and is often malware.
To be clear, I am not saying you should stop using Facebook, Microsoft Windows or Google. Just clear your cookies from time to time and remember that you don’t really need that expensive keyboard with the colourful LEDs.
A common argument of proprietary software advocates is that FOSS is of poor quality. From experience, this is far from true (just think of python and its libraries). We are simply so used to paying for the quality we expect - without even getting it most of the time- that we forget, don’t appreciate or take for granted the things that are free.
It’s simple. We are living half-digital lives and source code characterizes the digital world around us. It’s our right and responsibility to expect and demand full access to the way this world is designed.
* OpenSSL is an open-source encryption protocol that secures communication over computer networks. It’s used by the internet servers and the majority of HTTPS websites
Opensource.com: 6 motivations for consuming or publishing open-source software
Opensource.com: What is open-source?
Opensource.google: Why Open-Source?
GNU.org: What is free software?
David A Wheeler: Why Open-Source Software/Free Software? Look at the numbers!