<?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: Mohd. Ibrahim Iqbal</title>
    <description>The latest articles on DEV Community by Mohd. Ibrahim Iqbal (@ibrahimiqbal).</description>
    <link>https://dev.to/ibrahimiqbal</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%2F473979%2F63a2bd1a-2d0d-425a-b6bc-af4a1dd2618b.jpeg</url>
      <title>DEV Community: Mohd. Ibrahim Iqbal</title>
      <link>https://dev.to/ibrahimiqbal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ibrahimiqbal"/>
    <language>en</language>
    <item>
      <title>oss buddy: a local gemma that picks weekend-sized issues so my cousin can finally land his first PR</title>
      <dc:creator>Mohd. Ibrahim Iqbal</dc:creator>
      <pubDate>Fri, 02 Oct 2026 17:52:59 +0000</pubDate>
      <link>https://dev.to/ibrahimiqbal/oss-buddy-a-local-gemma-that-picks-weekend-sized-issues-so-my-cousin-can-finally-land-his-first-pr-277f</link>
      <guid>https://dev.to/ibrahimiqbal/oss-buddy-a-local-gemma-that-picks-weekend-sized-issues-so-my-cousin-can-finally-land-his-first-pr-277f</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I have a cousin. He has been telling me he wants to contribute to open source for about a year. Every month or two he sends me a screenshot of a repo and asks "is this a good one to start with?" I say yes. He opens it, scrolls for twenty minutes, closes the tab. The screenshot never turns into a PR.&lt;/p&gt;

&lt;p&gt;I used to tell him "just pick a good first issue." That advice is useless. Good first issues live in repos with four hundred files and eighty open issues each. You still have to pick. He had already been doing that for a year.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;OSS Buddy&lt;/strong&gt;. You point it at any GitHub repo and a local Gemma 3 model tells you three things in forty-five seconds:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What the project actually does, in two plain sentences&lt;/li&gt;
&lt;li&gt;Up to three &lt;code&gt;good first issue&lt;/code&gt; tickets ranked easiest to hardest, with time estimates&lt;/li&gt;
&lt;li&gt;Which specific directory to start reading&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nothing leaves his laptop. No account, no API key, no credit card. He downloads Gemma once, forgets about it, the tool works forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fgithub.com%2Fibrahim-iqbal%2Foss-buddy%2Fraw%2Fmain%2Fdemo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fgithub.com%2Fibrahim-iqbal%2Foss-buddy%2Fraw%2Fmain%2Fdemo.gif" alt="demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One command, forty-five seconds, zero cloud calls. Terminal recording against &lt;code&gt;kiwix/kiwix-android&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ibrahim-iqbal" rel="noopener noreferrer"&gt;
        ibrahim-iqbal
      &lt;/a&gt; / &lt;a href="https://github.com/ibrahim-iqbal/oss-buddy" rel="noopener noreferrer"&gt;
        oss-buddy
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      local gemma 3 reads any github repo and picks weekend-sized good-first-issues for you. nothing leaves your machine.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;oss buddy&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/ibrahim-iqbal/oss-buddy/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fibrahim-iqbal%2Foss-buddy%2FHEAD%2Fdemo.gif" alt="demo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;point it at a github repo. a local gemma 3 model reads the readme, the
top-level file tree, and the open &lt;code&gt;good first issue&lt;/code&gt; tickets, then
tells you:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;what the project does, in plain words&lt;/li&gt;
&lt;li&gt;up to three issues that look weekend-sized, ranked easiest to hardest&lt;/li&gt;
&lt;li&gt;where in the repo to start reading&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;nothing leaves your machine. your github token stays local. the model
runs on your laptop via &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;ollama&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;why&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;a friend of mine kept opening huge oss repos, scrolling for twenty
minutes, closing the tab. he wanted to contribute. he did not know
where to start. every guide said "pick a good first issue" and every
repo had dozens.&lt;/p&gt;
&lt;p&gt;this reads the repo for him and says "here, pick one of these three
start reading here."&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;install&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;needs python 3.9+, the github cli, and ollama.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; ollama (macos)&lt;/span&gt;
brew install ollama
brew services start ollama&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ibrahim-iqbal/oss-buddy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;~150 lines of stdlib Python. No &lt;code&gt;pip install&lt;/code&gt;. MIT.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Open-source AI used:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ai.google.dev/gemma" rel="noopener noreferrer"&gt;Gemma 3 (4B)&lt;/a&gt; — Google's open-weight model, running on my laptop&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; — open-source runtime for the model&lt;/li&gt;
&lt;li&gt;GitHub CLI (&lt;code&gt;gh&lt;/code&gt;) for repo data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pipeline (lazy on purpose):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    gh api  (readme + top-level tree + good-first-issues)
                        │
                        ▼
                 one tuned prompt
                        │
                        ▼
         POST localhost:11434 (ollama)
                        │
                        ▼
                   gemma 3 4b
                        │
                        ▼
         stream the answer to the terminal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three HTTP calls to GitHub, one HTTP call to a server running on my own laptop. That is the whole pipeline. The Python file is small enough to read in one sitting.&lt;/p&gt;

&lt;p&gt;The prompt went through three real iterations in the git history. The first version produced great summaries but ended every answer with "Would you like me to delve deeper?" — chatty, off-brand. The second version started paraphrasing issue titles instead of quoting them, which was worse than useless because then you couldn't &lt;code&gt;grep&lt;/code&gt; for the issue on GitHub. The third version pins Gemma: "Quote the issue number and the EXACT title from the data below. Do not paraphrase or invent." That one shipped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;He does not need to sign up for anything before he can start contributing to open source. He already has GitHub, git, and a dozen tabs open. A new contributor does not need another sign-up flow before the one he actually came for. Open-source AI removes that friction entirely — he downloads the model once, forgets about it, and the tool just works.&lt;/p&gt;

&lt;p&gt;The second thing matters more. His GitHub token and the repos he explores never leave his laptop. Some of those repos are private — half-built side projects, work stuff. A closed API would have meant sending every README and every issue title to a third party's servers. With Gemma running locally that whole class of problem does not exist.&lt;/p&gt;

&lt;p&gt;The third thing is practical. It runs on a plane. It runs in a cafe with slow wifi. It runs inside offices that block third-party API calls. It costs zero rupees forever. For someone taking their first step into open source every friction point is a chance to quit — the open stack removes a few of them.&lt;/p&gt;

&lt;p&gt;And the whole chain is readable. 150 lines of Python. An open-weight model with public weights. A runtime with public source. If my cousin wants to see what the LLM did with his repo, he can trace it from his terminal all the way down to the weights. That is the open-source story — not just the model, the whole stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;Skipping DevRelay sessions on this one. The story is in the git log instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;31b5e08&lt;/code&gt; initial scaffold: fetch readme + good-first-issues via gh&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;4a8dbb5&lt;/code&gt; wire up ollama + first prompt that asks for 3 ranked issues&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ede3d7f&lt;/code&gt; tighten prompt (no outro, quote exact issue titles)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;b430d72&lt;/code&gt; add demo gif + vhs tape&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Four commits, one Saturday night.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — Gemma 3 (4B) via Ollama is the only model used. The entire pipeline depends on it. No fallback, no closed-model path, no "bring your own API key." Just Gemma, local, free.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
    </item>
  </channel>
</rss>
