<?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>Forem: Fathiraz Arthuro</title>
    <description>The latest articles on Forem by Fathiraz Arthuro (@fathiraz_arthuro).</description>
    <link>https://forem.com/fathiraz_arthuro</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2497256%2F1f21bc23-d663-4d91-839c-097f235475c4.jpg</url>
      <title>Forem: Fathiraz Arthuro</title>
      <link>https://forem.com/fathiraz_arthuro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/fathiraz_arthuro"/>
    <language>en</language>
    <item>
      <title>From Go to Ruby: My first Homebrew contribution! Added Windsurf IDE to make installation easier for macOS users. Learned about package management, Ruby syntax, and open source collaboration. Join me on this coding adventure! 🍺 #OpenSource #IDE #Homebrew</title>
      <dc:creator>Fathiraz Arthuro</dc:creator>
      <pubDate>Fri, 29 Nov 2024 06:58:39 +0000</pubDate>
      <link>https://forem.com/fathiraz_arthuro/from-go-to-ruby-my-first-homebrew-contribution-added-windsurf-ide-to-make-installation-easier-for-4kph</link>
      <guid>https://forem.com/fathiraz_arthuro/from-go-to-ruby-my-first-homebrew-contribution-added-windsurf-ide-to-make-installation-easier-for-4kph</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/fathiraz_arthuro" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2497256%2F1f21bc23-d663-4d91-839c-097f235475c4.jpg" alt="fathiraz_arthuro"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/fathiraz_arthuro/my-first-time-contributing-to-homebrew-adding-windsurf-ide-5bgc" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;My First Time Contributing to Homebrew: Adding Windsurf IDE&lt;/h2&gt;
      &lt;h3&gt;Fathiraz Arthuro ・ Nov 29&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ruby&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#opensource&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>My First Time Contributing to Homebrew: Adding Windsurf IDE</title>
      <dc:creator>Fathiraz Arthuro</dc:creator>
      <pubDate>Fri, 29 Nov 2024 06:42:53 +0000</pubDate>
      <link>https://forem.com/fathiraz_arthuro/my-first-time-contributing-to-homebrew-adding-windsurf-ide-5bgc</link>
      <guid>https://forem.com/fathiraz_arthuro/my-first-time-contributing-to-homebrew-adding-windsurf-ide-5bgc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbrew.sh%2Fassets%2Fimg%2Fhomebrew.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbrew.sh%2Fassets%2Fimg%2Fhomebrew.svg" alt="Homebrew Logo" width="180" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hi developers! Today I want to share my journey about contributing to Homebrew. I want to add Windsurf IDE to community. It was very fun journey and I did learn many new things!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Homebrew and Why You Need It? 🍻
&lt;/h2&gt;

&lt;p&gt;Before I'm going to tell you about my journey, let me explain first about Homebrew! And no worry, it not real beer - which is good since I'm try to be a good Muslim and only brew code, not alcohol 🤣&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/IcLvqPwqVbXVmVhrrN/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/IcLvqPwqVbXVmVhrrN/giphy.gif" alt="Cool" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Me brewing code, not beer - the only brewing that halal&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;People call Homebrew "The Missing Package Manager for macOS". It's kind of like magic helper that install software for you. For me as Muslim developer, this is only brew that make me happy (and stay halal of course 🙏) Instead of manual download and install software and check a regular updates, Homebrew do everything with one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;your-favorite-software
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Why Ruby? 💎
&lt;/h3&gt;


  &lt;img src="https://i.giphy.com/media/3oEhmU1HETIRCQkz9C/giphy.gif" alt="Respect" width="374" height="480"&gt;


&lt;p&gt;&lt;em&gt;Ruby: Make package manager simple since 2009&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Maybe you questioning why Homebrew use Ruby language. Well, in my opinion here is several good reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Easy to Read&lt;/strong&gt;: Ruby code very simple to understand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Already in macOS&lt;/strong&gt;: Ruby is exist on every Mac&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Good for Making Rules&lt;/strong&gt;: Ruby good for making special commands&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Many People Use&lt;/strong&gt;: Ruby have big community&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  How I Start This Journey 🚀
&lt;/h2&gt;

&lt;p&gt;It's all begin when I find Windsurf from this youtube video &lt;a href="https://www.youtube.com/watch?v=C_D8V9odBQ8" rel="noopener noreferrer"&gt;Windsurf IDE: NEW AI Editor - Cursor Alternative That's FREE &amp;amp; LOCAL!&lt;/a&gt;, they call it "The first agentic IDE". From the windsurf website, it said: "The Windsurf Editor is where the work of developers and AI truly flow together, allowing for a coding experience that feels like literal magic."&lt;/p&gt;


  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2F2GoQPFhkRbYAAAAC%2Fkaget-ampun.gif" alt="Mind Blown GIF" width="498" height="256"&gt;


&lt;p&gt;&lt;em&gt;My face when first time use Windsurf AI&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;After I tried it for several times, I think "Woah, wouldn't it will be nice if people can install this easy with Homebrew! since it's not officially supported by the Windsurf team". That's mark my journey of contribution to Homebrew started!&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 1: Finding the Download URLs Like Detective 🕵️‍♂️
&lt;/h2&gt;

&lt;p&gt;Attempt, first challenge: i am downloading right from the Windsurf website, i have to find the download URL, Windsurf supports both of Arm Mac and Intel Mac architecture. I found a nice google chrome extension called "OpenAPI DevTools" to help me for the first task. The extensions is &lt;a href="https://chromewebstore.google.com/detail/openapi-devtools/jelghndoknklgabjgaeppjhommkkmdii" rel="noopener noreferrer"&gt;here&lt;/a&gt;, it's really nice extension (very helpful tool!) that make it easy for me to get the API request, response and make it to OpenAPI spec. The first task done in less than 3 minutes!&lt;/p&gt;


  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FU-mPzEWxNOMAAAAd%2Fpresiden-jokowi-minum.gif" alt="Drink GIF" width="134" height="168"&gt;


&lt;p&gt;&lt;em&gt;Pov OpenAPI DevTools user&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;The Windsurf IDE have two different URL for different Mac:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Arm archictecture Mac: &lt;code&gt;https://windsurf-stable.codeium.com/api/update/darwin-arm64-dmg/stable/latest&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;For Intel archictecture Mac: &lt;code&gt;https://windsurf-stable.codeium.com/api/update/darwin-x64-dmg/stable/latest&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  What API Give Back 📦
&lt;/h3&gt;

&lt;p&gt;When we request to that API endpoint, it will give back this kind of JSON data:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-darwin-arm64-&amp;lt;version&amp;gt;.dmg"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;version&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;sha-commit&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"productVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;version&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;hash&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;timestamp&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sha256hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;sha256-hash&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"supportsFastUpdate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"windsurfVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;version&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 2: Make the Homebrew Formula 🍼
&lt;/h2&gt;


  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FTOvdjlVjBLoAAAAC%2Fgibran-savage.gif" alt="Have no idea GIF" width="498" height="334"&gt;


&lt;p&gt;&lt;em&gt;Me try to make Homebrew magic&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Next step, I have to create a Homebrew formula. I don't know where to start, but the homebrew team created a really good documentation to help me through the process. I read &lt;a href="https://docs.brew.sh/Adding-Software-to-Homebrew" rel="noopener noreferrer"&gt;Homebrew documentation&lt;/a&gt; - wow, so detail and deep! I also read The &lt;a href="https://docs.brew.sh/Formula-Cookbook#add-a-test-to-the-formula" rel="noopener noreferrer"&gt;Formula Cookbook&lt;/a&gt; also very complete, it takes more than 20 minutes to read all of it, and I think i'm ready to start coding! As i want to add Windsurf as a cask, I need to know how to make cask. I read &lt;a href="https://docs.brew.sh/Cask-Cookbook" rel="noopener noreferrer"&gt;Cask cookbook&lt;/a&gt; - so very detail and deep!&lt;/p&gt;
&lt;h3&gt;
  
  
  Here is the Important Parts in Cask 📚
&lt;/h3&gt;

&lt;p&gt;To make good cask, we need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Version and SHA256&lt;/strong&gt;: For make sure app download is safe&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support Different Mac&lt;/strong&gt;: For Arm and Intel Mac&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download URL&lt;/strong&gt;: Where to get the app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install Rules&lt;/strong&gt;: Where to put files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean Up&lt;/strong&gt;: How to remove app clean&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Step 3: My Code and Terminal Adventure 💻
&lt;/h2&gt;

&lt;p&gt;Let me tell you about my command line journey! First, I try simple way:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;windsurf
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Tapping homebrew/core
Cloning into &lt;span class="s1"&gt;'/opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-core'&lt;/span&gt;...
remote: Enumerating objects: 2341771, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
remote: Counting objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;6918/6918&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
remote: Compressing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;2701/2701&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
remote: Total 2341771 &lt;span class="o"&gt;(&lt;/span&gt;delta 4955&lt;span class="o"&gt;)&lt;/span&gt;, reused 6008 &lt;span class="o"&gt;(&lt;/span&gt;delta 4217&lt;span class="o"&gt;)&lt;/span&gt;, pack-reused 2334853 &lt;span class="o"&gt;(&lt;/span&gt;from 1&lt;span class="o"&gt;)&lt;/span&gt;
Receiving objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;2341771/2341771&lt;span class="o"&gt;)&lt;/span&gt;, 839.11 MiB | 4.46 MiB/s, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Resolving deltas: 100% &lt;span class="o"&gt;(&lt;/span&gt;1704571/1704571&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Tapped 4 commands and 7224 formulae &lt;span class="o"&gt;(&lt;/span&gt;7,565 files, 1GB&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Warning: No available formula with the name &lt;span class="s2"&gt;"windsurf"&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Searching &lt;span class="k"&gt;for &lt;/span&gt;similarly named formulae and casks...
Error: No formulae or casks found &lt;span class="k"&gt;for &lt;/span&gt;windsurf.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FQBxBlwtXQjQAAAAd%2Fkita-harus-selalu-optimis-jokowi.gif" alt="First Try Fail GIF" width="640" height="528"&gt;


&lt;p&gt;&lt;em&gt;When Homebrew say "not found"&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Of course Homebrew cannot find it - because I not make it yet! The homebrew team make things simpler to just using brew create command. Here is the command of creating a cask package:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew create &lt;span class="nt"&gt;--cask&lt;/span&gt; https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-darwin-arm64-&amp;lt;version&amp;gt;.dmg
Cask name &lt;span class="o"&gt;[&lt;/span&gt;Windsurf-darwin-arm64-&amp;lt;version&amp;gt;]: windsurf
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-d
&lt;span class="c"&gt;############################################################################################################################ 100.0%&lt;/span&gt;
Please run &lt;span class="sb"&gt;`&lt;/span&gt;brew audit &lt;span class="nt"&gt;--cask&lt;/span&gt; &lt;span class="nt"&gt;--new&lt;/span&gt; windsurf&lt;span class="sb"&gt;`&lt;/span&gt; before submitting, thanks.
Editing /opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/w/windsurf.rb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Make sure you add &lt;code&gt;--cask&lt;/code&gt; before the URL, also don't forget to empty some space because it will clone the big repository of homebrew-cask (it is about 400 MB in total) also with downloading the application. The command also opening your default editor to edit the cask file.&lt;/p&gt;

&lt;p&gt;Here my code for Windsurf:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;cask&lt;/span&gt; &lt;span class="s2"&gt;"windsurf"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;arch&lt;/span&gt; &lt;span class="ss"&gt;arm: &lt;/span&gt;&lt;span class="s2"&gt;"darwin-arm64"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;intel: &lt;/span&gt;&lt;span class="s2"&gt;"darwin-x64"&lt;/span&gt;
  &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;version&amp;gt;,&amp;lt;sha-commit&amp;gt;"&lt;/span&gt;
  &lt;span class="n"&gt;sha256&lt;/span&gt; &lt;span class="ss"&gt;arm: &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;sha256-hash-arm&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="ss"&gt;intel: &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;sha256-hash-intel&amp;gt;"&lt;/span&gt;

  &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="s2"&gt;"https://windsurf-stable.codeiumdata.com/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;arch&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/stable/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;second&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/Windsurf-&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.dmg"&lt;/span&gt;
  &lt;span class="c1"&gt;# more code here&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After finished the code, I try to install it, first run to test the code didn't going well:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;HOMEBREW_NO_AUTO_UPDATE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;HOMEBREW_NO_INSTALL_FROM_API&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--build-from-source&lt;/span&gt; windsurf
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading https://windsurf-stable.codeiumdata.com/darwin-arm64/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-&amp;lt;version&amp;gt;
curl: &lt;span class="o"&gt;(&lt;/span&gt;56&lt;span class="o"&gt;)&lt;/span&gt; The requested URL returned error: 404                                                                                   

Error: Download failed on Cask &lt;span class="s1"&gt;'windsurf'&lt;/span&gt; with message: Download failed: https://windsurf-stable.codeiumdata.com/darwin-arm64/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-&amp;lt;version&amp;gt;.dmg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FO2CO4fmGEDMAAAAC%2Fjokowi-bingung.gif" alt="Error GIF" width="198" height="190"&gt;


&lt;p&gt;&lt;em&gt;404 Error: what!?&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;I'm checking the error message, it said "The requested URL returned error: 404". It means the download URL is wrong. I fix some things and try to edit the code, it will open the editor again. I change the download URL to the correct one:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew edit &lt;span class="nt"&gt;--cask&lt;/span&gt; windsurf
Editing /opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/w/windsurf.rb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After I edit the code, I run &lt;code&gt;brew install --build-from-source windsurf&lt;/code&gt; again, Alhamdulillah, it work! But still need more check...&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--build-from-source&lt;/span&gt; windsurf &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-d
Already downloaded: /Users/fathiraz/Library/Caches/Homebrew/downloads/&amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;--Windsurf-darwin-arm64-&lt;/span&gt;&amp;lt;version&amp;gt;.dmg
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Installing Cask windsurf
Password:
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Moving App &lt;span class="s1"&gt;'Windsurf.app'&lt;/span&gt; to &lt;span class="s1"&gt;'/Applications/Windsurf.app'&lt;/span&gt;
🍺  windsurf was successfully installed!
Warning: No available formula with the name &lt;span class="s2"&gt;"windsurf"&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Searching &lt;span class="k"&gt;for &lt;/span&gt;similarly named formulae and casks...
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Casks
windscribe                                                        windsurf ✔

To &lt;span class="nb"&gt;install &lt;/span&gt;windscribe, run:
  brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; windscribe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Check Everything Strictly like a Detective 😎
&lt;/h3&gt;

&lt;p&gt;Now most difficult part - the audit:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew audit &lt;span class="nt"&gt;--strict&lt;/span&gt; &lt;span class="nt"&gt;--new&lt;/span&gt; &lt;span class="nt"&gt;--online&lt;/span&gt; windsurf
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading and extracting artifacts
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-d
Already downloaded: /Users/fathiraz/Library/Caches/Homebrew/downloads/&amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;--Windsurf-darwin-arm64-&lt;/span&gt;&amp;lt;version&amp;gt;.dmg
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-d
Already downloaded: /Users/fathiraz/Library/Caches/Homebrew/downloads/&amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;--Windsurf-darwin-arm64-&lt;/span&gt;&amp;lt;version&amp;gt;.dmg
audit &lt;span class="k"&gt;for &lt;/span&gt;windsurf: failed
 - The URL&lt;span class="s1"&gt;'s domain windsurf-stable.codeiumdata.com does not match the homepage domain www.codeium.com, a '&lt;/span&gt;verified&lt;span class="s1"&gt;' parameter has to be added to the '&lt;/span&gt;url&lt;span class="s1"&gt;' stanza. See https://docs.brew.sh/Cask-Cookbook#when-url-and-homepage-domains-differ-add-verified
 - Upstream defined :catalina as the minimum OS version but the cask declared :big_sur
windsurf
  * The URL'&lt;/span&gt;s domain windsurf-stable.codeiumdata.com does not match the homepage domain www.codeium.com, a &lt;span class="s1"&gt;'verified'&lt;/span&gt; parameter has to be added to the &lt;span class="s1"&gt;'url'&lt;/span&gt; stanza. See https://docs.brew.sh/Cask-Cookbook#when-url-and-homepage-domains-differ-add-verified
  &lt;span class="k"&gt;*&lt;/span&gt; Upstream defined :catalina as the minimum OS version but the cask declared :big_sur
Error: 2 problems &lt;span class="k"&gt;in &lt;/span&gt;1 cask detected.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FPJYamV48OakAAAAd%2Fhoklaiii.gif" alt="Debugging GIF" width="295" height="480"&gt;


&lt;p&gt;&lt;em&gt;Me want to fix problems one by one with dance&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;I Need to fix many things as informed by the audit, it is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;URL domain does not match homepage&lt;/li&gt;
&lt;li&gt;macOS version need update, it should be Catalina or later, but the cask declare Big Sur&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Try to Fix the Code 🔧
&lt;/h3&gt;

&lt;p&gt;I fixed the code, and try to running audit command again:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew audit &lt;span class="nt"&gt;--strict&lt;/span&gt; &lt;span class="nt"&gt;--new&lt;/span&gt; &lt;span class="nt"&gt;--online&lt;/span&gt; windsurf
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading and extracting artifacts
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-darwin-arm64-&amp;lt;version&amp;gt;.dmg
Already downloaded: /Users/fathiraz/Library/Caches/Homebrew/downloads/&amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;--Windsurf-darwin-arm64-&lt;/span&gt;&amp;lt;version&amp;gt;.dmg
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Downloading https://windsurf-stable.codeiumdata.com/darwin-arm64-dmg/stable/&amp;lt;sha-commit&amp;gt;/Windsurf-darwin-arm64-&amp;lt;version&amp;gt;.dmg
Already downloaded: /Users/fathiraz/Library/Caches/Homebrew/downloads/&amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;--Windsurf-darwin-arm64-&lt;/span&gt;&amp;lt;version&amp;gt;.dmg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Make Code Look Nice ✨
&lt;/h3&gt;

&lt;p&gt;Last step, make code look good by using &lt;code&gt;brew style&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew style &lt;span class="nt"&gt;--fix&lt;/span&gt; windsurf
Taps/homebrew/homebrew-cask/Casks/w/windsurf.rb:29:14: C: &lt;span class="o"&gt;[&lt;/span&gt;Corrected] Cask/ArrayAlphabetization: The array elements should be ordered alphabetically
  zap trash: &lt;span class="o"&gt;[&lt;/span&gt; ...
             ^
Taps/homebrew/homebrew-cask/Casks/w/windsurf.rb:36:5: C: &lt;span class="o"&gt;[&lt;/span&gt;Corrected] Style/TrailingCommaInArrayLiteral: Put a comma after the last item of a multiline array.
    &lt;span class="s2"&gt;"------------------------------------------------------------------------"&lt;/span&gt;
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Taps/homebrew/homebrew-cask/Casks/w/windsurf.rb:38:4: C: &lt;span class="o"&gt;[&lt;/span&gt;Corrected] Layout/TrailingEmptyLines: Final newline missing.
end


1 file inspected, 3 offenses detected, 3 offenses corrected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Fix the syntax error and trailing comma, try to running the style command again:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew style &lt;span class="nt"&gt;--fix&lt;/span&gt; windsurf
1 file inspected, no offenses detected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2Fj0pA0av8REwAAAAd%2Findonesia-maju.gif" alt="Success GIF" width="288" height="288"&gt;


&lt;p&gt;&lt;em&gt;Finally success&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 4: Send Pull Request Time 🖥️
&lt;/h2&gt;

&lt;p&gt;With bismillah, I click "Submit" on my &lt;a href="https://github.com/Homebrew/homebrew-cask/pull/193585" rel="noopener noreferrer"&gt;pull request&lt;/a&gt;. Masyaallah, what journey! &lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/Homebrew/homebrew-cask/pull/193585" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        windsurf 1.0.5 (new cask)
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#193585&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/fathiraz" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F6995203%3Fv%3D4" alt="fathiraz avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/fathiraz" rel="noopener noreferrer"&gt;fathiraz&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/Homebrew/homebrew-cask/pull/193585" rel="noopener noreferrer"&gt;&lt;time&gt;Nov 28, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; &lt;em&gt;Do not tick a checkbox if you haven’t performed its action.&lt;/em&gt; Honesty is indispensable for a smooth review process.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;In the following questions &lt;code&gt;&amp;lt;cask&amp;gt;&lt;/code&gt; is the token of the cask you're submitting.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;After making any changes to a cask, existing or new, verify:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] The submission is for &lt;a href="https://docs.brew.sh/Acceptable-Casks#stable-versions" rel="nofollow noopener noreferrer"&gt;a stable version&lt;/a&gt; or &lt;a href="https://docs.brew.sh/Acceptable-Casks#but-there-is-no-stable-version" rel="nofollow noopener noreferrer"&gt;documented exception&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;[x] &lt;code&gt;brew audit --cask --online &amp;lt;cask&amp;gt;&lt;/code&gt; is error-free.&lt;/li&gt;
&lt;li&gt;[x] &lt;code&gt;brew style --fix &amp;lt;cask&amp;gt;&lt;/code&gt; reports no offenses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, &lt;strong&gt;if adding a new cask&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] Named the cask according to the &lt;a href="https://docs.brew.sh/Cask-Cookbook#token-reference" rel="nofollow noopener noreferrer"&gt;token reference&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;[x] Checked the cask was not &lt;a href="https://github.com/search?q=repo%3AHomebrew%2Fhomebrew-cask+is%3Aclosed+is%3Aunmerged+&amp;amp;type=pullrequests" rel="noopener noreferrer"&gt;already refused&lt;/a&gt; (add your cask's name to the end of the search field).&lt;/li&gt;
&lt;li&gt;[x] &lt;code&gt;brew audit --cask --new &amp;lt;cask&amp;gt;&lt;/code&gt; worked successfully.&lt;/li&gt;
&lt;li&gt;[x] &lt;code&gt;HOMEBREW_NO_INSTALL_FROM_API=1 brew install --cask &amp;lt;cask&amp;gt;&lt;/code&gt; worked successfully.&lt;/li&gt;
&lt;li&gt;[x] &lt;code&gt;brew uninstall --cask &amp;lt;cask&amp;gt;&lt;/code&gt; worked successfully.&lt;/li&gt;
&lt;/ul&gt;


    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Homebrew/homebrew-cask/pull/193585" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2F0fsiH7ErtlMAAAAd%2Fanies-baswedan.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2F0fsiH7ErtlMAAAAd%2Fanies-baswedan.gif" alt="Clear GIF" width="326" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My brain try process all Homebrew docs&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;You know what crazy? I spend almost 1 hour just to learn how everything work. First, i have to be a detective to find Windsurf download URLs. Then read many Homebrew docs! &lt;/p&gt;

&lt;p&gt;While I learn and try make good contribution, I see my PR keep saying - "Update Branch" because many people already merged their PR by the maintainer. In short time, maybe 12 PR already merged, what a busy repository!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FLu_CCIqK2VcAAAAd%2Fcak-imin-olahraga.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FLu_CCIqK2VcAAAAd%2Fcak-imin-olahraga.gif" alt="Sport GIF" width="308" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Me: "Almost ready!" Homebrew: "Done, merged 3 PR more!"&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learn from This? 🧠
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2Fv7yMAfdQtpAAAAAd%2Fmakruf-amin.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2Fv7yMAfdQtpAAAAAd%2Fmakruf-amin.gif" alt="Applause GIF" width="300" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every day chance for learn!&lt;/em&gt;&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Technical Things&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How the Homebrew formula work&lt;/li&gt;
&lt;li&gt;How good documentation of the Homebrew&lt;/li&gt;
&lt;li&gt;How to create Homebrew formula for cask&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Good Practice&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test everything&lt;/li&gt;
&lt;li&gt;Follow rules strict&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Soft Skills&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read documentation patient&lt;/li&gt;
&lt;li&gt;Keep spirit in process&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tips for New Contributors
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read Docs First&lt;/strong&gt;: Seriously, Homebrew docs very good&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test Local&lt;/strong&gt;: Use &lt;code&gt;brew audit&lt;/code&gt; and &lt;code&gt;brew style&lt;/code&gt; before submit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be Patient&lt;/strong&gt;: Review process strict because it has reason&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What Next? 🚀
&lt;/h2&gt;

&lt;p&gt;This experience make me more motivated to contribute to open source. Amazing think my small contribution can help other developers install Windsurf easy. Now looking for next project to contribute!&lt;/p&gt;

&lt;h3&gt;
  
  
  Future Ideas
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add more tools to Homebrew&lt;/li&gt;
&lt;li&gt;Contribute to other project&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Remember: every big journey start from first step. Wanna contribute? Just do it! Community welcome you with open arms. &lt;/p&gt;

&lt;h2&gt;
  
  
  Resources for Start 📚
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.brew.sh/" rel="noopener noreferrer"&gt;Homebrew Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.brew.sh/Cask-Cookbook" rel="noopener noreferrer"&gt;Homebrew Cask Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.brew.sh/Formula-Cookbook" rel="noopener noreferrer"&gt;Homebrew Formula&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/openapi-devtools/jelghndoknklgabjgaeppjhommkkmdii" rel="noopener noreferrer"&gt;OpenAPI DevTools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codeium.com/windsurf" rel="noopener noreferrer"&gt;Windsurf Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;You ever contribute to open source? How your first time? Share your story in comments!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FyBcW4GtGK4IAAAAd%2Fmegawati.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FyBcW4GtGK4IAAAAd%2Fmegawati.gif" alt="ApplauseGIF" width="638" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thank you for reading! Now go brew something cool!&lt;/em&gt;&lt;/p&gt;







&lt;h2&gt;
  
  
  UPDATE: Great News, PR Merged! 🎉
&lt;/h2&gt;

&lt;p&gt;Alhamdulillah, I have amazing update! My pull request has been merged into Homebrew! Now anyone can install Windsurf IDE easily using Homebrew. You can check the official formula page here: &lt;a href="https://formulae.brew.sh/cask/windsurf#default" rel="noopener noreferrer"&gt;Windsurf on Homebrew&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To install Windsurf, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; windsurf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ruby</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
