Adapted from the swampUP 2019 keynote speech by Kit Merker, JFrog VP Business Development.
With software powering all the devices that enable the things we do everyday, software engineers are now the mechanics that keep our modern times running. More and more, we trust the software they create with our lives.
As JFrog works to fulfill its vision of continuous updates and liquid software, we’ve paid a lot of attention to the emerging “Internet of Things,” industry or IoT. This vast category of interconnected, software-powered devices ranges from manufacturing to smart homes, drones to oil rigs, satellites to thermostats. The changes in all of these industries are certainly consequential, but none resonates like those coming to the automotive industry.
Autonomous Cars are Code
The development challenges of making autonomous cars are hard, high-stakes, and critical to human safety. That’s why we decided to tackle it head-on.
Cars are incredibly powerful machines that we trust with our lives every day. We all know driving is dangerous, but we still do it, paying attention to the rules of the road, staying sober, and not texting. To make driving safer, we try to make better drivers.
Increasingly, the wheel of these powerful machines is handed to software. So, we need to make better, safer software. That takes a continuous flow of improving updates.
Rules for Software Mechanics
When our IoT team at JFrog started our demonstration project, we asked ourselves: What are the rules that those software mechanics should be guided by? We decided on these:
Rule 0: Don’t kill anyone!
Of course, that might seem self-evident. But we’re very mindful that the goal of autonomous vehicles is to prevent injuries and fatalities, and that the consequences of any failures can be severe. As the rule-before-the-first-rule, this governs all of our other choices.
Rule 1: Should be up-to-date with the turn of a key.
When you turn on the car, you shouldn’t be left wondering if you have the right version of software. In a Liquid Software world, updates flow constantly to where they’re needed, at the safest moment, so the car is always up-to-date. Except in the most critical circumstances, a driver doesn’t need to plan their schedule or visit a service center to install it.
We’re a long way from that today. While some vehicles on the market enable Over-the-Air (OTA) updates, none have yet streamlined software updates to make it nearly invisible to end users.
When an EV driver in China accidentally initiated an update in rush hour traffic, the hour-long download and install left them stuck in the road. Instead, updates ought to be fast and invisible.
Rule 2: The car should get better over time.
With continuous updates, a car doesn’t have to start becoming obsolete the moment it leaves the lot. Nor should a software bug ever spur a recall, as with Jaguar’s recent braking problem.
Autonomous cars are getting better fast and, with those improvements, logging more miles. Software updates through continuous delivery are essential for making these cars improve. Happy Tesla drivers regularly tweet about the new capabilities that just show up, making their experience better and the car more capable. Normally you would think of a car as a depreciating asset but we all know that software just improves with feedback iterations and testing and customer usage.
Rule 3: Reduce anxiety for drivers and developers.
Passengers and pedestrians may be anxious about self-driving cars, but they’re not alone. Developers may share this nervousness — after all, no one wants to be the one whose code check-in causes a costly recall that makes headlines.
As coders and as companies, we need to be able to trust the updates that we’re pushing. Automated testing is essential, along with better tracking of build metadata, virtual driving environments and other techniques. But we also need to be confident that our updates are free of security vulnerabilities.
A careful system of update creation and distribution should help to build a strong trust relationship between driver and developer.
Liquid Software for Automotive
Our IoT team at JFrog has been using the JFrog platform to prove out the use cases for automotive, and the attendees of swampUP 2019 got to see and explore how Liquid Software can really work.
In San Francisco, we revealed for the first time a live, hands-on demonstration using RC vehicles. On this small scale, we showed how Enterprise+ can be used to update the software of vehicles while they are in motion.
In our system, we are using industry specific technologies including the Yocto build system for embedded linux which we have integrated with Conan, our C/C++ package manager. We also are using Automotive Grade Linux, and we’ve integrated with IoT tools such as Lava for automated device management and testing.
- To help the car be up-to-date at the turn of the key, we relied on JFrog Distribution to deliver release bundles to Artifactory Edge nodes to separate download from install. We used Mender for side-by-side deployments onto the devices, enabling a quick rollback to the last safe version on any failure.
- To help the car get better over time, we made use of JFrog Pipelines for CI/CD to enable continuous software updates and the improvements that come from customer feedback.
- To help reduce anxiety between drivers and developers, Artifactory provides trusted repositories for a traceable record of artifacts, and JFrog Xray to catch and quarantine any security vulnerabilities by scanning artifacts against Risk Based Security’s comprehensive database.
As well as this demonstration works in our lab with our cars, we’re even more excited to work with our customers in their vehicle environment, and help everyone live the rules of software mechanics!