<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Semih702</title>
    <description>The latest articles on DEV Community by Semih702 (@semih702).</description>
    <link>https://dev.to/semih702</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4004588%2F24b0fdc3-3732-47dc-a0fb-3e0e5ead1aaf.png</url>
      <title>DEV Community: Semih702</title>
      <link>https://dev.to/semih702</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/semih702"/>
    <language>en</language>
    <item>
      <title>I Built Chromium in the Cloud in 2 Hours for $2 — What If Google Made This a One-Click Setup?</title>
      <dc:creator>Semih702</dc:creator>
      <pubDate>Fri, 26 Jun 2026 23:06:44 +0000</pubDate>
      <link>https://dev.to/semih702/i-built-chromium-in-the-cloud-in-2-hours-for-2-what-if-google-made-this-a-one-click-setup-23hp</link>
      <guid>https://dev.to/semih702/i-built-chromium-in-the-cloud-in-2-hours-for-2-what-if-google-made-this-a-one-click-setup-23hp</guid>
      <description>&lt;h2&gt;
  
  
  How It Started
&lt;/h2&gt;

&lt;p&gt;I was using Chrome one day and noticed something that looked like a UI bug in the bookmarks side panel, a small visual inconsistency after moving a bookmark. As a developer, my first instinct was to look at the source and see if I could fix it.&lt;/p&gt;

&lt;p&gt;I found the relevant code, understood the likely cause, and thought: "This is probably a one-line fix." Then I looked at what it takes to actually build and test a Chromium change.&lt;/p&gt;

&lt;p&gt;100+ GB of disk space. Hours of build time. Dozens of dependencies. On my machine, that wasn't realistic.&lt;/p&gt;

&lt;p&gt;I could have stopped there. Most people do. But then I thought: what if I ran the build in the cloud? And more importantly, what if someone turned that into a reusable image so that no contributor ever has to go through the full setup again?&lt;/p&gt;

&lt;p&gt;Even if the bug turned out to be harder to reproduce than I expected, the idea felt worth proving. So I did.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Great Codebase With a Heavy Front Door
&lt;/h2&gt;

&lt;p&gt;Even though I mentioned the effort needed to contribute to Chromium informally above, I want to make it more concrete.&lt;/p&gt;

&lt;p&gt;To be clear, Chromium is one of the most well-documented open-source projects out there. The &lt;a href="https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md" rel="noopener noreferrer"&gt;build instructions&lt;/a&gt; are thorough, the code review process is solid, and the community is welcoming. None of that is the problem.&lt;/p&gt;

&lt;p&gt;The problem is purely mechanical. Here's what the official docs require just to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;35–40 GB&lt;/strong&gt; source checkout (&lt;code&gt;fetch chromium&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100+ GB&lt;/strong&gt; total disk space (source + build output + dependencies)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;16+ GB RAM&lt;/strong&gt; recommended (build will thrash or fail with less)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full build: 2–8 hours&lt;/strong&gt; depending on hardware (on a laptop, expect the upper end)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dozens of system packages&lt;/strong&gt; to install, some with version-specific requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a full-time Chromium engineer, this is a one-time cost that pays for itself. But for students, open-source enthusiasts, or anyone who just wants to fix one small thing and move on, this is usually where the journey ends.&lt;/p&gt;

&lt;p&gt;I wanted to see if a Google Cloud image could make this a non-issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea: What If the Build Was Already Done?
&lt;/h2&gt;

&lt;p&gt;Google Cloud has a feature called &lt;strong&gt;Custom Images&lt;/strong&gt;. Essentially, a snapshot of a fully configured VM that you can launch new machines from. Think AWS AMI if you're familiar with that world.&lt;/p&gt;

&lt;p&gt;What if someone built Chromium once, saved it as an image, and every future contributor could just launch a VM with everything ready?&lt;/p&gt;

&lt;p&gt;I decided to test this end-to-end. Not as a thought experiment. Actually do it, measure everything, and see if it's practical.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Experiment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: One Script, Walk Away
&lt;/h3&gt;

&lt;p&gt;I wrote a startup script that does everything automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates a user&lt;/li&gt;
&lt;li&gt;Installs all dependencies&lt;/li&gt;
&lt;li&gt;Clones depot_tools&lt;/li&gt;
&lt;li&gt;Fetches the Chromium source&lt;/li&gt;
&lt;li&gt;Runs a full build&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I launched a Spot VM (cheaper, ~60-70% discount) on Google Cloud and walked away.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud compute instances create chromium-builder &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--machine-type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;n2-standard-32 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provisioning-model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;SPOT &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--boot-disk-size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;200GB &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--boot-disk-type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pd-ssd &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--metadata-from-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;startup-script&lt;span class="o"&gt;=&lt;/span&gt;startup-script.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Check Back Later
&lt;/h3&gt;

&lt;p&gt;I checked the build progress periodically:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;Progress&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;30 min&lt;/td&gt;
&lt;td&gt;Source fetched, build started&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1h 30min&lt;/td&gt;
&lt;td&gt;~70% compiled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1h 50min&lt;/td&gt;
&lt;td&gt;~92% compiled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2h 2min&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Build complete. Zero errors.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Make a Change, Rebuild
&lt;/h3&gt;

&lt;p&gt;Here's where it gets interesting. I made a small change to a UI component to see how fast it would rebuild.&lt;/p&gt;

&lt;p&gt;Thanks to Chromium's incremental build system, the rebuild took just &lt;strong&gt;11 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The full build took 2 hours, but every change after that rebuilds in seconds. And that's exactly the experience a contributor would get when starting from a pre-built image.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Save the Image
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud compute instances stop chromium-builder
gcloud compute images create chromium-workstation-v1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--source-disk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;chromium-builder &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--family&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;chromium-contributor-workstation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, anyone can launch a VM from this image and start coding within minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Clean Up
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud compute instances delete chromium-builder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;VM gone. Only the image remains (~$3-5/month storage). Zero ongoing compute cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What I Measured
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Machine&lt;/td&gt;
&lt;td&gt;n2-standard-32 (32 vCPU, 128 GB RAM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full build time&lt;/td&gt;
&lt;td&gt;2 hours 2 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incremental build (1 file change)&lt;/td&gt;
&lt;td&gt;11 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total cost (Spot VM)&lt;/td&gt;
&lt;td&gt;~$2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total cost (on-demand)&lt;/td&gt;
&lt;td&gt;~$6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image storage&lt;/td&gt;
&lt;td&gt;~$3-5/month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  How It Scales (Hopefully)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Machine&lt;/th&gt;
&lt;th&gt;vCPUs&lt;/th&gt;
&lt;th&gt;Est. Build Time&lt;/th&gt;
&lt;th&gt;Cost/hr&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;n2-standard-8&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;~6–8 hours&lt;/td&gt;
&lt;td&gt;$0.39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n2-standard-16&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;~3–5 hours&lt;/td&gt;
&lt;td&gt;$0.78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n2-standard-32&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;~2–3 hours&lt;/td&gt;
&lt;td&gt;$1.56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n2-standard-64&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;~1–1.5 hours&lt;/td&gt;
&lt;td&gt;$3.12&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the one-time image build, go big. For contributor sessions with incremental builds, smaller machines work just fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  What If This Were Official?
&lt;/h2&gt;

&lt;p&gt;Imagine if the Chromium project published an official Google Cloud image. The contributing guide could include something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud compute instances create my-chromium-dev &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--image-family&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;chromium-contributor-workstation &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--image-project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;chromium-contributor-images &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--machine-type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;n2-standard-8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command. VM boots in 2 minutes. Source and build are ready. Start coding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this makes sense:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Nothing changes about how code gets reviewed or merged. The image only changes how contributors set up their environment.&lt;/li&gt;
&lt;li&gt;No security concern. The image would contain only public source code and open-source tools. No credentials, no internal code, nothing proprietary.&lt;/li&gt;
&lt;li&gt;It doesn't slow down any existing Chromium workflows. Image builds can run in parallel or as a low-priority job.&lt;/li&gt;
&lt;li&gt;Every contributor who launches a VM becomes a Google Cloud user organically.&lt;/li&gt;
&lt;li&gt;Since Chromium and Google Cloud are not far apart, hosting a few contributor images might be simpler to arrange than it would be for most open-source projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Implementation:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add image creation to an existing build bot&lt;/li&gt;
&lt;li&gt;Publish to a public project&lt;/li&gt;
&lt;li&gt;Add a one-liner to the contributing guide&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The technology already exists. This is just connecting the pieces.&lt;/p&gt;

&lt;p&gt;If you've tried contributing to Chromium and hit the same setup wall, or if you have thoughts on how this could work better, I'd love to hear from you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;All measurements from a real session on June 26, 2026. Machine: GCP Compute Engine n2-standard-32 Spot VM, europe-west1-b.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>infrastructure</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
