{"id":70642,"date":"2023-03-09T10:00:44","date_gmt":"2023-03-09T18:00:44","guid":{"rendered":"https:\/\/github.blog\/?p=70642"},"modified":"2023-03-09T08:35:04","modified_gmt":"2023-03-09T16:35:04","slug":"how-github-accelerates-development-for-embedded-systems","status":"publish","type":"post","link":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/","title":{"rendered":"How GitHub accelerates development for embedded systems"},"content":{"rendered":"<p>We\u2019re living in a world where software and hardware are ubiquitous\u2014even more than you might initially think! When you think of hardware, what\u2019s the first thing that comes to mind? Your phone? Your laptop? What about your washing machine or car? Or, one of the many smart home devices very likely scattered throughout your home?<\/p>\n<p>When you consider these embedded systems from an industrial perspective, the opportunities are endless. From lifts (or elevators) to aircrafts, manufacturing lines to traffic signals, or medical equipment to the innovative world of robotics.<\/p>\n<p>Those systems fundamentally rely upon software. The type of software that you find in these devices has historically been specialized for a given task. In your car, you may have systems that deal with functional aspects, such as engine and transmission management, or safety-critical systems, including airbag deployment or control of anti-lock braking systems.<\/p>\n<p>We rely on these types of control systems every day. And the likelihood is that you never think about the critically that they play in our day-to\u2013day lives. After all, as Arthur C. Clarke said, \u201cAny sufficiently advanced technology is indistinguishable from magic.\u201d<\/p>\n<p>We know that DevOps is all about the continuous delivery of value to end-users. For these types of systems, quality and security are fundamental, non-negotiable aspects. Whether it\u2019s <a href=\"https:\/\/www.iso.org\/standard\/43464.html\">ISO 26262<\/a> for automotive, <a href=\"https:\/\/www.iso.org\/standard\/38421.html\">IEC 62304<\/a> for medical devices, or any of the other myriad of functional safety standards, compliance to the standards adds significant complexity to the development process. When you add in <a href=\"https:\/\/www.iso.org\/isoiec-27001-information-security.html\">ISO 27001<\/a> and the new <a href=\"https:\/\/unece.org\/sustainable-development\/press\/un-regulations-cybersecurity-and-software-updates-pave-way-mass-roll\">UN regulatory requirements for cybersecurity<\/a> on top of industry coding standards like <a href=\"https:\/\/www.autosar.org\">AUTOSAR<\/a> and <a href=\"https:\/\/www.misra.org.uk\">Misra<\/a>, you can see why finding ways to automate becomes even more critical in the world of embedded development.<\/p>\n<p>In this post, we explore how GitHub can add value throughout the development lifecycle when designing, building, and deploying systems of this kind.<\/p>\n<h2 id=\"collaborative-development\"><a class=\"heading-link\" href=\"#collaborative-development\">Collaborative development<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h2>\n<p>We know that software development starts with a well-understood plan. The fun part comes once your team has a clear plan, writing the code and shipping incredible experiences for your users! GitHub assists with all areas of the software development cycle, from plan to build, to deployment and continuous feedback.<\/p>\n<p>Fundamentally, this all starts with version control software. GitHub has been around since 2008, and you probably know the platform because of our Git version control capabilities (though, you\u2019ll understand there\u2019s a lot more to GitHub these days!). Prior to 2008, source code management took many different forms.<\/p>\n<p>From a software development perspective, storing your code in version control is critical to unlocking the many benefits that we can gain from modern software engineering practices. Storing our code in a Git repository in GitHub provides:<\/p>\n<ul>\n<li>A fully traceable history of the development on our codebase.<\/li>\n<li>Engineering teams with the ability to work in separate branches, so they don\u2019t interfere with each other&#8217;s active work in development.<\/li>\n<li>The ability to rollback to a prior version of the codebase if needed.<\/li>\n<li>The option to add <a href=\"https:\/\/docs.github.com\/en\/repositories\/configuring-branches-and-merges-in-your-repository\/defining-the-mergeability-of-pull-requests\/about-protected-branches\">branch protection rules<\/a> to the production codebase, so that all changes must be peer-reviewed or pass a set of automated quality gates before being merged.<\/li>\n<li>And much more!<\/li>\n<\/ul>\n<p>These few bullet points highlight how version control is vital to developing these critical systems. With a detailed set of historical changes, the ability to add quality gates with branch protection rules and mandatory peer-reviews via pull requests, compliance suddenly becomes part of the process, as opposed to an afterthought or some additional set of boxes to check.<\/p>\n<h2 id=\"security-in-everything-that-you-do\"><a class=\"heading-link\" href=\"#security-in-everything-that-you-do\">Security in everything that you do<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h2>\n<p>Think about these types of systems from a security perspective. What happens if someone was able to take over a set of embedded computers in a vehicle? The impact of this would depend on which specific systems, but could potentially be catastrophic. For safety systems, then it could potentially lead to loss of life.<\/p>\n<p>With that context, security, understandably, should be a high priority for development teams making these critical systems. At GitHub, we believe that security is everyone\u2019s responsibility, and should not be an afterthought, or a one-time review before go-live. Instead, it\u2019s something which can, and should, be incorporated into the development workflow. Just like compliance in the above section, it\u2019s something that becomes a part of what you do every day.<\/p>\n<p>GitHub has several tools that can help you to bring security into your workflow. Let\u2019s explore some of them a little further.<\/p>\n<h3 id=\"securing-the-code-that-you-write\"><a class=\"heading-link\" href=\"#securing-the-code-that-you-write\">Securing the code that you write<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h3>\n<p>One of your first concerns may be the code that you write. We are human, and we are not perfect, so we don\u2019t always write perfect code. Earlier, we talked about branch protection rules as an option to add quality checks into our development lifecycle. What if we could add security as one of those quality checks, and review the code that we have written?<\/p>\n<p>This is where GitHub code scanning capabilities come in. You can think of this from two perspectives; <a href=\"https:\/\/docs.github.com\/en\/code-security\/code-scanning\/automatically-scanning-your-code-for-vulnerabilities-and-errors\/about-code-scanning-with-codeql\">CodeQL<\/a> (GitHub\u2019s built-in code analysis engine that powers code scanning) and <a href=\"https:\/\/docs.github.com\/en\/code-security\/code-scanning\/automatically-scanning-your-code-for-vulnerabilities-and-errors\/configuring-code-scanning-for-a-repository#configuring-code-scanning-using-starter-workflows\">third-party integrations<\/a>.<\/p>\n<p>CodeQL supports several languages, <a href=\"https:\/\/codeql.github.com\/docs\/codeql-overview\/supported-languages-and-frameworks\/\">including C, C++, Java, and Python<\/a>; all common languages when building embedded systems. CodeQL is able to translate your code into a database-like structure. You\u2019re then able to use a number of queries made by GitHub out-of-the-box, and can expand these with queries from the open source community to identify patterns that occur in your codebase, such as injection or buffer overflow vulnerabilities.<\/p>\n<p>A CodeQL scan can be executed as part of the pull request flow that we mentioned earlier. So, security now becomes another check as part of your quality assurance process, before merging code into your production codebase.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image6.png?w=1024&#038;resize=1024%2C743\" alt=\"Screenshot showing a GitHub code scanning failure as it potentially allowed an injection attack\" width=\"1024\" height=\"743\" class=\"aligncenter size-large wp-image-70643 width-fit\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image6.png?w=1044 1044w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image6.png?w=300 300w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image6.png?w=768 768w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image6.png?w=1024 1024w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>In fact, Brittany O\u2019Shea <a href=\"https:\/\/github.blog\/2022-06-20-adding-support-for-coding-standards-autosar-c-and-cert-c\/\">wrote a blog post last year<\/a> about CodeQL queries that implement the standards, CERT C++ and AUTOSAR C++.<\/p>\n<p>But what if you\u2019re already using some security scanning tools? Not to worry\u2014code scanning integrates with third-party tools, as long as they <a href=\"https:\/\/docs.github.com\/en\/code-security\/code-scanning\/integrating-with-code-scanning\/sarif-support-for-code-scanning\">support the SARIF output format<\/a>.<\/p>\n<h3 id=\"depending-on-secure-packages\"><a class=\"heading-link\" href=\"#depending-on-secure-packages\">Depending on secure packages<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h3>\n<p>The software that you ship isn\u2019t made of just the code you and your team have written. Open source software is increasingly being used, to build on the work of the wider community, rather than reinventing the wheel.<\/p>\n<p>But now for the important question. How can you be sure that you\u2019re not relying upon a vulnerable dependency in the software that you\u2019re shipping? The answer isn\u2019t to stop relying on open source. Instead, it\u2019s about adopting open source software in a way that you are in control. This includes <a href=\"https:\/\/github.blog\/2022-08-26-3-ways-every-company-can-get-started-with-an-open-source-software-strategy\/\">creating an Open Source Program Office (OSPO)<\/a> in your organization to help manage your open source usage.<\/p>\n<p>GitHub has tools available to help you keep your dependencies up to date. Let\u2019s talk about <strong>Dependabot<\/strong> and <strong>dependency review<\/strong>.<\/p>\n<p>Dependabot is our handy tool to help you keep your dependencies up to date. Dependabot is able to identify if you are already using a package that contains a vulnerability. If you are using an insecure dependency, then it will privately alert you in your repository. This means you can take the appropriate action to expedite fixes and ensure your code is patched with the latest version. You can even directly open a pull request based upon the alert to expedite your fixes.<\/p>\n<p>But Dependabot can help even further, by keeping your dependency versions proactively up to date. By tracking the contents of <a href=\"https:\/\/docs.github.com\/en\/code-security\/dependabot\/dependabot-version-updates\/configuration-options-for-the-dependabot.yml-file\">supported package manifests (such as Maven, pip, and others)<\/a>, it can open pull requests when more recent package versions are available. The best bit? As it\u2019s a pull request, all of your quality checks must still be met! That includes any automated checks (more on those in a bit), and manual approvals must be met, before the changes can be merged.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image1-3.png?w=717&#038;resize=717%2C529\" alt=\"Screenshot showing a GitHub Pull Request that fixes vulnerabilities by upgrading from one version of a package to a more recent version\" width=\"717\" height=\"529\" class=\"aligncenter size-large wp-image-70644 width-fit\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image1-3.png?w=717 717w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image1-3.png?w=300 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/p>\n<p>While Dependabot primarily works on manifests that are already being used in production, what can you do to add guardrails to your quality assurance process? GitHub Advanced Security\u2019s <a href=\"https:\/\/docs.github.com\/en\/code-security\/supply-chain-security\/understanding-your-software-supply-chain\/about-dependency-review\">dependency review capability<\/a> can help there.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image2-2.png?w=1000&#038;resize=1000%2C464\" alt=\"Screenshot showing dependency review as part of a GitHub Action workflow. Dependency review detected a newly introduced dependency, and blocked the workflow from progressing.\" width=\"1000\" height=\"464\" class=\"aligncenter size-large wp-image-70645 width-fit\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image2-2.png?w=1000 1000w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image2-2.png?w=300 300w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image2-2.png?w=768 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>The <a href=\"https:\/\/docs.github.com\/en\/code-security\/supply-chain-security\/understanding-your-software-supply-chain\/configuring-dependency-review\">Dependency Review GitHub Action<\/a> is used in a pull request to scan for dependency changes. If a new vulnerability is detected (such as introducing a new package, or adjusting an existing package to a vulnerable version), then an error is raised by the GitHub Action, preventing the pull request from being merged.<\/p>\n<h3 id=\"keeping-secrets-out-of-the-equation\"><a class=\"heading-link\" href=\"#keeping-secrets-out-of-the-equation\">Keeping secrets out of the equation<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h3>\n<p>According to the <a href=\"https:\/\/www.ibm.com\/reports\/data-breach\">IBM \u201cCost of a Data Breach 2022\u201d report<\/a>, exposed secrets and credentials are the most common cause of data breaches and often go untracked. Storing secrets in source control is an anti-pattern and can be problematic in scenarios where you\u2019re shipping software that is accessible to anyone. Think of software being shipped to untrusted hardware devices, such as a lift (or elevator), a car, manufacturing production line equipment or an Internet of Things (IoT) device. Malicious actors may be able to get access to the software running on the device, gain access to any credentials stored locally, and use these secret materials for a breach.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image3-2.png?w=676&#038;resize=676%2C241\" alt=\"Screenshot showing that GitHub security scanning detected an AWS Secret Access Key in code\" width=\"676\" height=\"241\" class=\"aligncenter size-large wp-image-70646 width-fit\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image3-2.png?w=676 676w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image3-2.png?w=300 300w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/><\/p>\n<p>Fortunately, <a href=\"https:\/\/docs.github.com\/en\/code-security\/secret-scanning\/about-secret-scanning\">GitHub\u2019s secret scanning<\/a> capability can help. It can scan for <a href=\"https:\/\/docs.github.com\/en\/code-security\/secret-scanning\/secret-scanning-patterns#supported-secrets-for-partner-alerts\">hundreds of partner patterns<\/a>, and allows you to even <a href=\"https:\/\/docs.github.com\/en\/enterprise-cloud@latest\/code-security\/secret-scanning\/defining-custom-patterns-for-secret-scanning\">define your own custom patterns<\/a>, too. This works well for retrospective scans of your codebase. Buthow do you prevent it from ever entering production? This is where <a href=\"https:\/\/docs.github.com\/en\/enterprise-cloud@latest\/code-security\/secret-scanning\/protecting-pushes-with-secret-scanning\">secret scanning push protection<\/a> comes in, which was <a href=\"https:\/\/github.blog\/changelog\/2022-12-15-secret-scanning-now-push-protects-custom-patterns\/\">recently updated to also identify custom patterns<\/a>.<\/p>\n<h3 id=\"stay-in-the-know\"><a class=\"heading-link\" href=\"#stay-in-the-know\">Stay in the know<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h3>\n<p>One of the main challenges from a security perspective is knowing where the weak points may be. As software engineers and engineering leads, we\u2019re typically working in the scope of a project. However, our colleagues in security typically focus on the security posture of the overall organization. For them, it\u2019s important to understand which repositories contain vulnerable code or packages, or whether secrets have been committed into those repositories.<\/p>\n<p>We know that monitoring and observing these metrics is important, so we provide a <a href=\"https:\/\/docs.github.com\/en\/enterprise-cloud@latest\/code-security\/security-overview\/about-the-security-overview\">security overview in GitHub Enterprise Cloud<\/a>. This visualizes the results from GitHub Advanced Security, so that you have an all-up view of your current coverage and risk areas.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image4-2.png?w=1000&#038;resize=1000%2C566\" alt=\"Screenshot showing GitHub's security risk overview dashboard. It demonstrates the number of alerts generated by Dependabot, Code Scanning and Secret Scanning across enabled repositories.\" width=\"1000\" height=\"566\" class=\"aligncenter size-large wp-image-70647 width-fit\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image4-2.png?w=1000 1000w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image4-2.png?w=300 300w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image4-2.png?w=768 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image5-1.png?w=1000&#038;resize=1000%2C531\" alt=\"Screenshot showing GitHub's security coverage overview dashboard. It shows the number of repositories that have had Dependabot, Code Scanning and Secret Scanning enabled, and helps identify potential gaps across the estate.\" width=\"1000\" height=\"531\" class=\"aligncenter size-large wp-image-70648 width-fit\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image5-1.png?w=1000 1000w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image5-1.png?w=300 300w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image5-1.png?w=768 768w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image5-1.png?w=800 800w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image5-1.png?w=400 400w, https:\/\/github.blog\/wp-content\/uploads\/2023\/03\/image5-1.png?w=516 516w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>If you have invested in security information and event management (SIEM) tooling, then you\u2019ll be pleased to know that <a href=\"https:\/\/github.blog\/2022-10-13-introducing-github-advanced-security-siem-integrations-for-security-professionals\/\">there are integrations available with several providers<\/a> to further aid your management and monitoring needs.<\/p>\n<h2 id=\"empowering-developers-with-automation\"><a class=\"heading-link\" href=\"#empowering-developers-with-automation\">Empowering developers with automation<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h2>\n<p>We\u2019ve mentioned that these types of software can be critical, so safeguards and controls should be in place. But to empower your developers, you need to give them access to tools to get the job done. That includes the ability to easily build, test, and deploy your software.<\/p>\n<p>Building on the earlier themes, you can use <a href=\"https:\/\/docs.github.com\/en\/repositories\/configuring-branches-and-merges-in-your-repository\/defining-the-mergeability-of-pull-requests\/about-protected-branches\">GitHub branch protection rules<\/a> to ensure certain standards are met before code is ever allowed to be merged into your production codebase. Earlier, we talked about peer reviews and collaboration. But what about using automation to help accelerate the process?<\/p>\n<p>This is where <a href=\"https:\/\/docs.github.com\/en\/actions\/learn-github-actions\/understanding-github-actions\">GitHub Actions<\/a> comes in. GitHub Actions is our <a href=\"https:\/\/github.com\/solutions\/ci-cd\">CI\/CD solution<\/a> that allows you to automate your software workflows. You can use GitHub Actions in the development lifecycle of your embedded systems to:<\/p>\n<ul>\n<li>Easily share common build and deployment patterns across your engineering teams using <a href=\"https:\/\/docs.github.com\/en\/actions\/using-workflows\/reusing-workflows\">reusable workflows<\/a>.<\/li>\n<li>Cross-compile across different hardware platforms with <a href=\"https:\/\/docs.github.com\/en\/actions\/using-jobs\/using-a-matrix-for-your-jobs#using-a-matrix-strategy\">GitHub Action\u2019s matrix capabilities<\/a>, or with <a href=\"https:\/\/github.blog\/2022-11-02-github-partners-with-arm-to-revolutionize-internet-of-things-software-development-with-github-actions\/\">Arm development tools inside GitHub Actions<\/a> cloud-hosted runners. <\/li>\n<li>Automatically build and test software as part of your continuous integration process. In your pull requests, ensure that a successful build takes place, and tests are successful before merging to production.<\/li>\n<li>Automatically package and deploy updated firmware images efficiently, so that they are available to end-users timely and efficiently.<\/li>\n<li>Automatically deploy firmware updates to embedded systems, by orchestrating updates and releases as part of your CD process. <\/li>\n<\/ul>\n<h2 id=\"continue-your-journey-with-github\"><a class=\"heading-link\" href=\"#continue-your-journey-with-github\">Continue your journey with GitHub<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h2>\n<p>This has been a high-level overview of GitHub, and how it can help from an embedded software perspective. With our collaborative platform to empower developer productivity and enable secure development, we\u2019re sure there are many scenarios where GitHub can help you even further.<\/p>\n<div class=\"post-content-cta\"><p>Want to find out more? We will be at <a href=\"https:\/\/www.embedded-world.de\/en\">Embedded World 2023<\/a>, so <a href=\"https:\/\/embeddedcomputing.com\/technology\/open-source\/the-road-to-embedded-world-23-san-francisco-california-github\">come and chat with us there<\/a>! We\u2019ll be at stand no. 4-501a in Hall 4.<\/p>\n<\/div>\n<p>Not able to join us? Then start a free trial on <a href=\"https:\/\/github.com\/enterprise\">GitHub Enterprise<\/a> to explore how GitHub can help with your day-to-day development!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.<\/p>\n","protected":false},"author":2042,"featured_media":69525,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_gh_post_show_toc":"no","_gh_post_is_no_robots":"no","_gh_post_is_featured":"no","_gh_post_is_excluded":"no","_gh_post_is_unlisted":"no","_gh_post_related_link_1":"","_gh_post_related_link_2":"","_gh_post_related_link_3":"","_gh_post_sq_img":"","_gh_post_sq_img_id":"","_gh_post_cta_title":"","_gh_post_cta_text":"","_gh_post_cta_link":"","_gh_post_cta_button":"Click Here to Learn More","_gh_post_recirc_hide":"no","_gh_post_recirc_col_1":"","_gh_post_recirc_col_2":"","_gh_post_recirc_col_3":"","_gh_post_recirc_col_4":"","_featured_video":"","_gh_post_additional_query_params":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"_links_to":"","_links_to_target":""},"categories":[3318,3313],"tags":[3005],"coauthors":[2855,3004],"class_list":["post-70642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devsecops","category-enterprise-software","tag-embedded-systems"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How GitHub accelerates development for embedded systems - The GitHub Blog<\/title>\n<meta name=\"description\" content=\"In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How GitHub accelerates development for embedded systems\" \/>\n<meta property=\"og:description\" content=\"In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/\" \/>\n<meta property=\"og:site_name\" content=\"The GitHub Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-09T18:00:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Chris Reddington, Clay Nelson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Reddington, Clay Nelson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/\"},\"author\":{\"name\":\"Chris Reddington\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/41d9826cc8ac1ff5046babb473f45cbf\"},\"headline\":\"How GitHub accelerates development for embedded systems\",\"datePublished\":\"2023-03-09T18:00:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/\"},\"wordCount\":2066,\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/1200x640.png?fit=1200%2C640\",\"keywords\":[\"embedded systems\"],\"articleSection\":[\"DevSecOps\",\"Enterprise software\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/\",\"url\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/\",\"name\":\"How GitHub accelerates development for embedded systems - The GitHub Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/1200x640.png?fit=1200%2C640\",\"datePublished\":\"2023-03-09T18:00:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/41d9826cc8ac1ff5046babb473f45cbf\"},\"description\":\"In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/#primaryimage\",\"url\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/1200x640.png?fit=1200%2C640\",\"contentUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/1200x640.png?fit=1200%2C640\",\"width\":1200,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/how-github-accelerates-development-for-embedded-systems\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/github.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enterprise software\",\"item\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"DevSecOps\",\"item\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devsecops\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How GitHub accelerates development for embedded systems\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/github.blog\\\/#website\",\"url\":\"https:\\\/\\\/github.blog\\\/\",\"name\":\"The GitHub Blog\",\"description\":\"Updates, ideas, and inspiration from GitHub to help developers build and design software.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/github.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/41d9826cc8ac1ff5046babb473f45cbf\",\"name\":\"Chris Reddington\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f13237cef25f9ea39c7b14998c10240131997a92b727935036e91e8e5a1a91f?s=96&d=mm&r=gf20d0c0e75ed760f3706fb0a941e50f3\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f13237cef25f9ea39c7b14998c10240131997a92b727935036e91e8e5a1a91f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f13237cef25f9ea39c7b14998c10240131997a92b727935036e91e8e5a1a91f?s=96&d=mm&r=g\",\"caption\":\"Chris Reddington\"},\"description\":\"Chris is a passionate developer advocate and senior program manager in GitHub\u2019s Developer Relations team. He works with execs, engineering leads, and teams from the smallest of startups, established enterprises, open source communities and individual developers, helping them \u2764\ufe0f GitHub and unlock their software engineering potential.\",\"jobTitle\":\"Sr Program Manager, DevRel Strategy\",\"url\":\"https:\\\/\\\/github.blog\\\/author\\\/chrisreddington\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How GitHub accelerates development for embedded systems - The GitHub Blog","description":"In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/","og_locale":"en_US","og_type":"article","og_title":"How GitHub accelerates development for embedded systems","og_description":"In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.","og_url":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/","og_site_name":"The GitHub Blog","article_published_time":"2023-03-09T18:00:44+00:00","og_image":[{"width":1200,"height":640,"url":"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640","type":"image\/png"}],"author":"Chris Reddington, Clay Nelson","twitter_card":"summary_large_image","twitter_image":"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640","twitter_misc":{"Written by":"Chris Reddington, Clay Nelson","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/#article","isPartOf":{"@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/"},"author":{"name":"Chris Reddington","@id":"https:\/\/github.blog\/#\/schema\/person\/41d9826cc8ac1ff5046babb473f45cbf"},"headline":"How GitHub accelerates development for embedded systems","datePublished":"2023-03-09T18:00:44+00:00","mainEntityOfPage":{"@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/"},"wordCount":2066,"image":{"@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640","keywords":["embedded systems"],"articleSection":["DevSecOps","Enterprise software"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/","url":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/","name":"How GitHub accelerates development for embedded systems - The GitHub Blog","isPartOf":{"@id":"https:\/\/github.blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/#primaryimage"},"image":{"@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640","datePublished":"2023-03-09T18:00:44+00:00","author":{"@id":"https:\/\/github.blog\/#\/schema\/person\/41d9826cc8ac1ff5046babb473f45cbf"},"description":"In a world where software and hardware is ubiquitous, GitHub can help enable secure development for mission-critical embedded systems.","breadcrumb":{"@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/#primaryimage","url":"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640","contentUrl":"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640","width":1200,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/github.blog\/enterprise-software\/devsecops\/how-github-accelerates-development-for-embedded-systems\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/github.blog\/"},{"@type":"ListItem","position":2,"name":"Enterprise software","item":"https:\/\/github.blog\/enterprise-software\/"},{"@type":"ListItem","position":3,"name":"DevSecOps","item":"https:\/\/github.blog\/enterprise-software\/devsecops\/"},{"@type":"ListItem","position":4,"name":"How GitHub accelerates development for embedded systems"}]},{"@type":"WebSite","@id":"https:\/\/github.blog\/#website","url":"https:\/\/github.blog\/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/github.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/github.blog\/#\/schema\/person\/41d9826cc8ac1ff5046babb473f45cbf","name":"Chris Reddington","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7f13237cef25f9ea39c7b14998c10240131997a92b727935036e91e8e5a1a91f?s=96&d=mm&r=gf20d0c0e75ed760f3706fb0a941e50f3","url":"https:\/\/secure.gravatar.com\/avatar\/7f13237cef25f9ea39c7b14998c10240131997a92b727935036e91e8e5a1a91f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7f13237cef25f9ea39c7b14998c10240131997a92b727935036e91e8e5a1a91f?s=96&d=mm&r=g","caption":"Chris Reddington"},"description":"Chris is a passionate developer advocate and senior program manager in GitHub\u2019s Developer Relations team. He works with execs, engineering leads, and teams from the smallest of startups, established enterprises, open source communities and individual developers, helping them \u2764\ufe0f GitHub and unlock their software engineering potential.","jobTitle":"Sr Program Manager, DevRel Strategy","url":"https:\/\/github.blog\/author\/chrisreddington\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/github.blog\/wp-content\/uploads\/2023\/01\/1200x640.png?fit=1200%2C640","jetpack_shortlink":"https:\/\/wp.me\/pamS32-ino","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/70642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/users\/2042"}],"replies":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/comments?post=70642"}],"version-history":[{"count":4,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/70642\/revisions"}],"predecessor-version":[{"id":70650,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/70642\/revisions\/70650"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media\/69525"}],"wp:attachment":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media?parent=70642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/categories?post=70642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/tags?post=70642"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/coauthors?post=70642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}