<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ open source - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ open source - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 22 May 2026 10:07:09 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/open-source/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Use GitHub Search Like a Pro ]]>
                </title>
                <description>
                    <![CDATA[ GitHub is a popular code collaboration platform for developers. You can use it to share, manage, and contribute to open-source codebases, save and work on your own code, and more. And to be a more eff ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-github-search-like-a-pro/</link>
                <guid isPermaLink="false">6a0f57a1d8e265f60d4f8624</guid>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Open Source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Rajdeep Singh ]]>
                </dc:creator>
                <pubDate>Thu, 21 May 2026 19:06:09 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/uploads/covers/5fc16e412cae9c5b190b6cdd/0e61e7e1-619c-4a66-b994-6a888100d0dd.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>GitHub is a popular code collaboration platform for developers. You can use it to share, manage, and contribute to open-source codebases, save and work on your own code, and more.</p>
<p>And to be a more effective GitHub user, you'll need to know how to search within the platform.</p>
<p>This involves using qualifiers to efficiently filter through millions of repositories and billions of lines of code. Precise queries help you locate specific function definitions, projects, people, issues, pull requests, code, security vulnerabilities, or contribution opportunities.</p>
<p>In this tutorial, you'll learn how to use GitHub search, whether you're a beginner or a pro developer.</p>
<p>To enhance your learning, I've divided this article into two sections:</p>
<ol>
<li><p>Basic Search Functionality</p>
</li>
<li><p>Advanced Search Functionality</p>
</li>
</ol>
<h3 id="heading-what-well-cover">What We'll Cover:</h3>
<ul>
<li><p><a href="https://stackedit.io/app#heading-what-well-cover">What We’ll Cover:</a></p>
</li>
<li><p><a href="https://stackedit.io/app#heading-basic-search-functionality">Basic Search Functionality</a></p>
<ul>
<li><p><a href="https://stackedit.io/app#heading-how-to-search-globally">How to Search Globally</a></p>
</li>
<li><p><a href="https://stackedit.io/app#heading-how-to-do-a-scoped-search-for-a-particular-repo-or-organization">How to Do a Scoped Search (for a Particular Repo or Organization)</a></p>
</li>
</ul>
</li>
<li><p><a href="https://stackedit.io/app#heading-advanced-search-functionality">Advanced Search Functionality</a></p>
<ul>
<li><p><a href="https://stackedit.io/app#heading-search-qualifiers">Search Qualifiers</a></p>
</li>
<li><p><a href="https://stackedit.io/app#heading-how-to-save-searches">How to Save Searches</a></p>
</li>
<li><p><a href="https://stackedit.io/app#heading-how-to-manage-saved-searches-on-github">How to Manage Saved Searches on GitHub</a></p>
</li>
<li><p><a href="https://stackedit.io/app#heading-why-do-we-need-github-advanced-search">Why Do We Need GitHub Advanced Search?</a></p>
</li>
</ul>
</li>
<li><p><a href="https://stackedit.io/app#heading-conclusion">Conclusion</a></p>
</li>
</ul>
<h2 id="heading-basic-search-functionality">Basic Search Functionality</h2>
<p>Basic search here refers to the most commonly used search functionalities that are fast and easy to use.</p>
<p>To start, click the GitHub search icon, type your query, and GitHub will display your results. With basic search, you can search globally across all of GitHub or narrow your search to a specific repository or organization.</p>
<h3 id="heading-how-to-search-globally">How to Search Globally</h3>
<p>To search on GitHub, click the search tab or press the <code>/</code> key to open the search bar.</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/32ae027d-4d34-4200-b2ae-da12ec67afcf.png" alt="Open search bar input filed on github" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>To search globally (across all of GitHub), open the search input, type your query, and select "Search all of GitHub" from the dropdown menu or press enter.</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/1de2af9b-c281-463a-ac60-08322d121e84.png" alt="global search on github" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>After clicking the "Search all of GitHub" button, you'll be directed to a page displaying all results related to your query.</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/8ea8f5cb-04e8-4376-9e15-f6258f216cc6.png" alt="display all results related to your query in Github" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<h3 id="heading-how-to-do-a-scoped-search-for-a-particular-repo-or-organization">How to Do a Scoped Search (for a Particular Repo or Organization)</h3>
<p>To search within a specific repository or organization, go to the repository or organization page, enter your query in the search field at the top, and press Enter.</p>
<p>For instance, if you're searching for a file name starting with "pnpm" in the <a href="https://github.com/frontendweb3/frontendweb">frontendweb</a> repository:</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/5b714b9d-157c-4c0f-a710-fef3fa2365d1.png" alt="Scoped Search in Github" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>In the search bar, you'll see four suggestions: the first is "Search in this repository," the second is "Search in this organization," the third is "Search all of GitHub," and the last is the code section "Display similar files." Clicking a file opens it in the GitHub web editor.</p>
<h2 id="heading-advanced-search-functionality">Advanced Search Functionality</h2>
<p>In addition to the GitHub search bar, you can search on GitHub using the <a href="https://github.com/search/advanced">advanced search</a> page.</p>
<p>GitHub's advanced search allows you to find specific code, repositories, and issues. You can filter your searches by factors such as the number of stars, owners, forks, followers, programming language, and creation dates.</p>
<p>As you complete the advanced search fields, your query is automatically generated in the top search bar, and you can click on the Search button.</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/518efaf5-f3c0-48bb-a374-e00d31fc5a84.png" alt="GitHub advanced search page" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>For a basic example, let's search for <strong>React</strong> on GitHub, including recent pull and push requests, issues, commits, discussions, and so on, related to ReactJS. We can use GitHub's advanced search functionality for this. Type "React" in the first input field as text and add the owner, in this case, Facebook, to find everything related to ReactJS in the Facebook organization or user.</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/df1c1c8b-3bff-4f77-a008-4659280d9c92.png" alt="Basic example of GitHub's advanced search functionality." style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>After clicking on the Search button, you should see the following results page:</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/b6c638c5-15a1-491e-9304-a6b070203773.png" alt="Show the query result of GitHub's advanced search" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>As you can see, GitHub's advanced search functionality lets you find specific code, repositories and issues using a powerful set of qualifiers and options. Let's talk more about qualifiers now.</p>
<h3 id="heading-search-qualifiers">Search Qualifiers</h3>
<p>You can filter your search directly using various key qualifiers. We can divide these qualifiers into different sections:</p>
<h4 id="heading-advanced-options">Advanced Options</h4>
<ul>
<li><p><strong>From these owners</strong>: type the specific user's or organization's name, such as GitHub, Atom, Electron, Octokit, and so on.</p>
</li>
<li><p><strong>In these repositories</strong>: type the specific user's or organization's name, such as Facebook/React, Vercel/Next.js, and so on.</p>
</li>
<li><p><strong>Created on these dates</strong>: Specify the repository creation date, for example <code>&gt;2016-04-29</code>, <code>=2016-04-29</code>, etc., to learn more, check out the <a href="https://docs.github.com/en/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates"><strong>Query for dates</strong></a> documentation.</p>
</li>
<li><p><strong>Written in this language</strong>: Select the specific language that matches repositories from lists: JavaScript, TypeScript, Rust, and so on, or what it’s written in.</p>
</li>
</ul>
<h4 id="heading-repository-options">Repository Options</h4>
<ul>
<li><p><strong>With this many stars</strong>: Type the number of stars in the <code>stars:</code> field to filter and find repositories by star count. You can apply comparisons like &gt;1000 (more than 1000 stars) or =1000 (exactly 1000 stars) to narrow results based on popularity.</p>
</li>
<li><p><strong>With this many forks</strong>: Type the number of forks to filter and find repositories by fork count. You can apply comparisons like 100..1000 (find repos with 100 to 1000 forks), &gt;1000 (more than 1000 forks), or =1000 (exactly 1000 forks) to narrow results based on popularity.</p>
</li>
<li><p><strong>Of this size</strong>: type the repository size in KB to filter and find repositories, for example, size of 10000 KB</p>
</li>
<li><p><strong>Pushed to</strong>: type the date to filter and find repositories, for example &gt;2013-02-01 matches repositories with the word "react" that were pushed to after January 2013.</p>
</li>
<li><p><strong>With this license</strong>: Select the license to filter or find repositories based on license, for example, those licensed under the Apache License 2.0.</p>
</li>
</ul>
<h4 id="heading-code-options">Code Options</h4>
<ul>
<li><p><strong>With this extension</strong>: type the extension, such as rb, py, or jpg, that you want to search on GitHub.</p>
</li>
<li><p><strong>In this path</strong>: Type the path to filter on GitHub to search for files by their location within a repository. For example, you can find a header.tsx file specifically inside the <code>./components</code> folder by combining filename: with path:.</p>
</li>
<li><p><strong>With this file name</strong>: Type the file name, such as app, footer, or header, that you want to search on GitHub.</p>
</li>
</ul>
<h4 id="heading-issue-options">Issue Options</h4>
<ul>
<li><p><strong>In the state</strong>: Select the issue state (whether the issue is open or closed), for example, libraries <code>state:open mentions:rajdeep</code> matches open issues that mention @rajdeep with the word "libraries," or <code>language:JavaScript state:open</code> matches open issues in JavaScript repositories.</p>
</li>
<li><p><strong>With this many comments</strong>: Enter the comment number based on the comment count. You can filter the issue, for example, <code>state:closed comments:&gt;100</code> matches closed issues with more than 100 comments, or <code>comments:500..1000</code> matches issues with comments ranging from 500 to 1,000.</p>
</li>
<li><p><strong>With the labels</strong>: Enter the label to filter or narrow your results by labels. Since issues can have multiple labels, you can list and add multiple label qualifiers for each issue.</p>
<p>For example, first, <code>label:bug label:resolved</code> matches issues with the labels "bug" and "resolved." Second, <code>label:bug,resolved</code> matches issues with the label "bug" or the label "resolved." Third, example <code>broken in:body -label:bug label:priority</code> matches issues with the word "broken" in the body, that lack the label "bug," but do have the label "priority."</p>
</li>
<li><p><strong>Opened by the author</strong>: Enter the name or username to filter or find issues created by a user or integration account, or filter the issues based on the author.</p>
<p>For example, <code>author:rajdeep</code> matches issues with the word "fixed" that were created by @rajdeep, or <code>author:octocat</code> matches issues created by the account named "octocat."</p>
</li>
<li><p><strong>Mentioning the users</strong>: Enter the name or username to find issues that mention the user. For example, fixed mentions:rajdeep matches issues with the word "fixed" that mention @rajdeep in the issue.</p>
</li>
<li><p><strong>Assigned to the users</strong>: Enter the name or username to find or filter issues based on the specific username assigned to the issue. For example, <code>state:open assignee:rajdeep</code> matches open issues that are assigned to @rajdeep.</p>
</li>
<li><p><strong>Updated before the date</strong>: Enter the date, filter issues based on the time of creation, or when they were last updated.</p>
<p>For example <code>language:c# created:&lt;2011-01-01 state:open</code> matches open issues that were created before 2011 in repositories written in C# or <code>weird in:body updated:&gt;=2013-02-01</code> matches issues with the word "weird" in the body that were updated after February 2013.</p>
</li>
</ul>
<h4 id="heading-user-options">User Options</h4>
<ul>
<li><p><strong>With this full name</strong>: Enter a full name to filter repositories whose name includes “rajdeep singh” on GitHub.</p>
</li>
<li><p><strong>From this location</strong>: Enter a location to find users on GitHub. For example, <code>location:russia language:javascript</code> returns users based in Russia whose repositories are primarily written in JavaScript.</p>
</li>
<li><p><strong>With this many followers</strong>: Enter a follower count to filter users by popularity. For example, <code>followers:&gt;=1000</code> finds users with 1,000 or more followers, while <code>followers:1..10 rajdeep</code> returns users with 1–10 followers whose name includes “rajdeep” on GitHub.</p>
</li>
<li><p><strong>With this many public repositories</strong>: Enter a repository count to filter users by the number of public repositories they have. For example, repos:&gt;10 finds users with more than 10 repositories, while repos:10..30 returns users who have between 10 and 30 public repositories on GitHub.</p>
</li>
<li><p><strong>Working in this language</strong>: Select the language to find users based on the primary languages of their repositories. For example, <code>language:javascript location:russia</code> returns users in Russia whose repositories are mostly written in JavaScript, while <code>language:javascript fullname:rajdeep</code> finds users with JavaScript repositories whose full name includes "rajdeep" on GitHub.</p>
</li>
</ul>
<h4 id="heading-wiki-options">Wiki Options</h4>
<ul>
<li><strong>Updated before the date</strong>: Enter a date to filter wiki pages containing “next.js” that were last updated after <code>2016-01-01</code> in your GitHub wiki.</li>
</ul>
<p>The best way to use advanced search qualifiers is to combine one or multiple qualifier/search options to achieve the best result.</p>
<h3 id="heading-how-to-save-searches">How to Save Searches</h3>
<p>I don't often use GitHub Advanced Search, but I used it to find open-source projects to learn from and contribute to. If you take a moment to fill in the information in GitHub Advanced Search, you can save the search for future use:</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/323b109b-4a7d-4aaa-a7d0-c4e15cdd1f19.png" alt="Save the query result to GitHub" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>Enter the name and click the "Create saved search" button:</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/776a4684-ded9-433b-a35f-8cb28bec3a85.png" alt="Follow these steps to save the query results on GitHub." style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>You can show a list of all your saved searches:</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/33c4f651-d325-4ea1-87a6-9663d3932881.png" alt="List of saved query results on GitHub." style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<h3 id="heading-how-to-manage-saved-searches-on-github">How to Manage Saved Searches on GitHub</h3>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/3d9b99d8-9763-4490-8e7f-4669c1b95ece.png" alt="Manage Saved Searches on GitHub" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>To manage a saved search, open the search bar and type "saved:" in the search bar, then click the "Manage saved searches" button.</p>
<img src="https://cdn.hashnode.com/uploads/covers/5dd3ab9cc4d1027248f20c91/68616625-8c23-4f3d-90d2-e6e6b7b6568d.png" alt="Delete and edit the saved searches on GitHub." style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>To edit a saved search, click the pencil icon next to it. To delete a saved search, click the trash icon.</p>
<h3 id="heading-why-do-we-need-github-advanced-search">Why Do We Need GitHub Advanced Search?</h3>
<p>As mentioned, GitHub Advanced Search helps you find the best issues to contribute to in open source repositories.</p>
<p>For example, I'm an expert in Next.js and React.js, and I can use GitHub Advanced Search to locate suitable issues in open-source projects for contribution.</p>
<p>Even as a beginner developer, you can use GitHub Advanced Search to find "good first issues" labeled by maintainers, making it easier to contribute.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>GitHub Advanced Search is versatile. t's not just for searching but also for researching recent issues, pull requests, and push requests that may be related to your query, repository, user, or anything else. My favorite use is finding open-source contribution opportunities with GitHub Advanced Search.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ GPT-5.4 vs GLM-5: Is Open Source Finally Matching Proprietary AI? ]]>
                </title>
                <description>
                    <![CDATA[ On March 27, 2026, Zhipu AI quietly pushed an update to their open-weight model line. GLM-5.1, they claim, now performs at 94.6% of Claude Opus 4.6 on coding benchmarks. That's a 28% improvement over  ]]>
                </description>
                <link>https://www.freecodecamp.org/news/gpt-5-4-vs-glm-5-is-open-source-finally-matching-proprietary-ai/</link>
                <guid isPermaLink="false">69dd26ba217f5dfcbd1fdd2c</guid>
                
                    <category>
                        <![CDATA[ AI ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ llm ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Oyedele Tioluwani ]]>
                </dc:creator>
                <pubDate>Mon, 13 Apr 2026 17:24:10 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/uploads/covers/5e1e335a7a1d3fcc59028c64/a3eb30b3-57b6-490a-8fd5-3f25994f61b1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>On March 27, 2026, Zhipu AI quietly pushed an update to their open-weight model line. <a href="https://docs.z.ai/devpack/using5.1">GLM-5.1</a>, they claim, now performs at 94.6% of Claude Opus 4.6 on coding benchmarks. That's a 28% improvement over GLM-5, which was released just six weeks prior.</p>
<p>The open-source story is not slowing down. It's accelerating.</p>
<p>And yet, most of the teams celebrating these headlines can't run the models they're celebrating. Self-hosting GLM-5 requires roughly 1,490GB of memory.</p>
<p>The gap between open and proprietary AI has closed on benchmarks, but "open" and "accessible" aren't the same word. Treating them as synonyms is the most expensive mistake a team can make these days.</p>
<p>What follows is a look at the benchmarks that matter, the infrastructure reality the press releases leave out, and a decision framework for teams that need to ship something.</p>
<p>The two models at the center of this comparison are <a href="https://developers.openai.com/api/docs/models/gpt-5.4">GPT-5.4</a>, OpenAI's most capable, frontier model for professional work, released on March 5, 2026, and&nbsp;<a href="https://artificialanalysis.ai/articles/glm-5-everything-you-need-to-know">GLM-5</a>, the 744-billion-parameter open-weight model from China's Zhipu AI, released on&nbsp;February 11.</p>
<p>GPT-5.4 represents the current ceiling of proprietary AI: a model that unifies coding and reasoning into a single system with a one-million token context window, native computer use, and the full weight of OpenAI's platform behind it.</p>
<p>GLM-5 represents something different: the first open-weight model to crack the Intelligence Index score of 50, trained entirely on domestic Chinese hardware, available for free under an MIT license.</p>
<p>The question now shifts from which model scores higher on a given leaderboard to what the gap between them means for teams making real infrastructure decisions.</p>
<h3 id="heading-what-well-cover">What We'll Cover:</h3>
<ul>
<li><p><a href="#heading-what-glm-5-achieved">What GLM-5 Achieved</a></p>
</li>
<li><p><a href="#heading-where-gpt-54-still-has-the-edge">Where GPT-5.4 Still Has the Edge</a></p>
</li>
<li><p><a href="#heading-open-does-not-mean-accessible">"Open" Does Not Mean "Accessible"</a></p>
</li>
<li><p><a href="#heading-the-right-question-is-not-which-model-wins">The Right Question Is Not Which Model Wins</a></p>
</li>
<li><p><a href="#heading-what-this-moment-means">What This Moment Means</a></p>
</li>
</ul>
<h2 id="heading-what-glm-5-achieved"><strong>What GLM-5 Achieved</strong></h2>
<p><a href="https://z.ai/blog/glm-5">GLM-5</a>&nbsp;is a 744-billion-parameter model with 40 billion active parameters per forward pass. It uses a sparse MoE architecture and was trained on 28.5 trillion tokens.</p>
<p>The model was released February 11, 2026, by Zhipu AI, a Tsinghua University spin-off that IPO'd in Hong Kong and raised $558 million in its last funding round. The license is MIT, which means it's commercially usable without restrictions.</p>
<p>The <a href="https://artificialanalysis.ai/evaluations/artificial-analysis-intelligence-index">Artificial Analysis Intelligence Index v4.0</a> is an independent benchmark that aggregates 10 evaluations spanning agentic tasks, coding, scientific reasoning, and general knowledge.</p>
<p>Unlike single-task benchmarks, it's designed to measure a model's overall capability across the kinds of work people actually pay AI to do. Scores are normalized so that even the best frontier models sit around 50 to 57, preserving meaningful separation between them.</p>
<p>GLM-5 scores 50 on this index, the first time any open-weight model has cracked that threshold. GLM-4.7 scored 42. The eight-point jump came from improvements in agentic performance and a 56-percentage-point reduction in the hallucination rate.</p>
<p>On <a href="https://arena.ai/leaderboard/text">Arena (formerly LMArena)</a>, the human-preference benchmark initiated by UC Berkeley, GLM-5 ranked number one among open models in both Text Arena and Code Arena at launch, putting it on par with Claude Opus 4.5 and Gemini 3 Pro overall. That's a human preference, not an automated benchmark.</p>
<p><a href="https://www.swebench.com/">SWE-bench Verified</a>: 77.8%, the number one open-source score. The only models scoring higher are Claude Opus 4.6 (80.8%) and GPT-5.2 (80.0%). On <a href="https://artificialanalysis.ai/evaluations/humanitys-last-exam">Humanity's Last Exam</a> with tools enabled, GLM-5 scores 50.4, beating GPT-5.2's 45.5.</p>
<p><a href="https://arxiv.org/html/2602.15763v1"><img src="https://cdn.hashnode.com/uploads/covers/629e46c5a6bfa05457952a41/71c6d2eb-b6a0-496b-b0a5-62243024ccb7.png" alt="Bar chart comparing GLM-5 against Claude Opus 4.5, GPT-5.2, Gemini 3 Pro, and DeepSeek-V3.2 across eight benchmarks including Humanity's Last Exam, SWE-bench Verified, and Terminal-Bench 2.0" style="display:block;margin:0 auto" width="1094" height="651" loading="lazy"></a></p>
<p>So GLM-5 is genuinely competitive. But competitive at what, exactly? The Intelligence Index gap tells part of the story. The rest lives in specific benchmarks where GPT-5.4 still pulls ahead.</p>
<h2 id="heading-where-gpt-54-still-has-the-edge"><strong>Where GPT-5.4 Still Has the Edge</strong></h2>
<p><a href="https://artificialanalysis.ai/models/comparisons/gpt-5-4-vs-glm-5#intelligence"><img src="https://cdn.hashnode.com/uploads/covers/629e46c5a6bfa05457952a41/b4130b8a-0ab4-41ac-b62b-e1358e272284.png" alt="Bar chart showing GPT-5.4 scoring 57 and GLM-5 scoring 50 on the Artificial Analysis Intelligence Index v4.0 " style="display:block;margin:0 auto" width="1783" height="537" loading="lazy"></a></p>
<p>The gap is not imaginary. On the <a href="https://artificialanalysis.ai/evaluations/artificial-analysis-intelligence-index?models=gpt-5-4%252Cglm-5%252Cgemini-3-1-pro-preview">Artificial Analysis Intelligence Index</a>, GPT-5.4 scores 57 to GLM-5's 50, tied with Gemini 3.1 Pro Preview for number one out of 427 models.</p>
<p>Terminal-Bench is where the gap is most evident. It measures how well a model performs real-world terminal tasks in actual shell environments: file editing, Git operations, build systems, CI/CD pipelines, and system debugging.</p>
<p>Unlike benchmarks that test whether a model can write code in isolation, Terminal-Bench evaluates whether it can operate a computer the way a developer does.</p>
<p>According to <a href="https://developers.openai.com/api/docs/models/gpt-5.4">OpenAI's API documentation</a>, GPT-5.4 scores 75.1%, a 9.7-point lead over the next proprietary model. If your team does DevOps, infrastructure-as-code, or CI/CD debugging, this benchmark maps directly to your actual job.</p>
<p>Context window is another differentiator. GPT-5.4 handles 1.05 million tokens, while GLM-5 caps at 200,000. For agentic workflows that need to plan across large codebases or synthesize multi-document research, this is not a spec difference but a capability difference.</p>
<p>Native computer use is another advantage. This means the model can interact directly with desktop software through screenshots, mouse commands, and keyboard inputs, without requiring a separate plugin or wrapper.</p>
<p>GPT-5.4 is the first general-purpose OpenAI model with this capability built in, while GLM-5 is text-only with no image input. If you're building agents that interact with UIs or need multimodal reasoning, you can't use GLM-5 for that.</p>
<p>OpenAI also claims a 47% token reduction in tool-heavy workflows through something called tool search, a real efficiency gain if you are paying per token.</p>
<p>On pricing, GPT-5.4 at \(2.50 per million input and \)15.00 per million output is 4.2 times more expensive than <a href="https://artificialanalysis.ai/articles/glm-5-everything-you-need-to-know">GLM-5's API</a>. But long-context pricing doubles above 272,000 tokens to $5.00 per million inputs, a tax you'll feel if you run large-context agents.</p>
<p>There's a deeper issue the benchmark numbers don't capture, and it's most likely to trip up teams who rush to adopt open source.</p>
<h2 id="heading-open-does-not-mean-accessible"><strong>"Open" Does Not Mean "Accessible"</strong></h2>
<p>The MIT license is real, and the weights are downloadable, but running GLM-5 in native BF16 precision requires roughly 1,490GB of memory. The recommended production setup for the FP8 model is eight H200 GPUs, each with 141GB of memory. That's a GPU cluster, not something you spin up on a single workstation.</p>
<p>In dollar terms, a used or leased H100 runs \(15,000 to \)25,000. Eight H200S is not a startup purchase. The infrastructure cost of self-hosting GLM-5 rivals or exceeds that of just calling the OpenAI API for most real-world usage volumes.</p>
<p>There is a quantization path. Quantization is a technique that reduces a model's memory footprint by representing its weights at lower numerical precision&nbsp;– for example, compressing from 16-bit to 2-bit values. It makes large models runnable on smaller hardware, but at the cost of some accuracy.</p>
<p>Unsloth's 2-bit GGUF reduces memory usage to 241GB, which fits within a Mac's 256GB unified memory. But quantization degrades model quality. That 77.8% SWE-bench score is for the full-precision model, and the number you get from a quantized local deployment will be lower.</p>
<p>The honest alternative is to use a hosted GLM-5 API. DeepInfra charges \(0.80 per million input tokens, and Novita charges \)1.00 per million input tokens. You can get the model without the hardware, but then you're not self-hosting. You're just using a cheaper API, and the data sovereignty, privacy, and vendor lock-in arguments all evaporate.</p>
<p>"Open weight" in 2026 increasingly means open to enterprises with GPU clusters, open to researchers with cloud credits, and open to teams willing to accept quality trade-offs from quantization. It doesn't mean open to the median developer who wants to avoid their API bill.</p>
<p>The paradox is real: open weights, but not open access. That doesn't mean the choice is impossible. It just means the choice has to be honest.</p>
<h2 id="heading-the-right-question-is-not-which-model-wins"><strong>The Right Question Is Not Which Model Wins</strong></h2>
<table>
<thead>
<tr>
<th></th>
<th><strong>GLM-5 via API</strong></th>
<th><strong>GPT-5.4</strong></th>
<th><strong>Self-hosted GLM-5</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>Best for</strong></td>
<td>Cost-sensitive, under 200K context</td>
<td>Terminal, computer use, long context</td>
<td>Regulated environments with existing GPU infra</td>
</tr>
<tr>
<td><strong>Pricing</strong></td>
<td>$0.80 per million input (DeepInfra)</td>
<td>$2.50 per million input</td>
<td>Hardware cost only</td>
</tr>
<tr>
<td><strong>Context window</strong></td>
<td>200K tokens</td>
<td>1.05M tokens</td>
<td>200K tokens</td>
</tr>
<tr>
<td><strong>Image input</strong></td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td><strong>Data sovereignty</strong></td>
<td>No</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Self-hosting required</strong></td>
<td>No</td>
<td>No</td>
<td>Yes</td>
</tr>
</tbody></table>
<p>The right model depends entirely on what your team is trying to optimize.</p>
<p>Use GLM-5 via API when cost efficiency is the primary constraint, when data residency isn't a concern for Chinese-origin models, when your workflow doesn't require multimodal or image input, and when context demands stay under 200,000 tokens.</p>
<p>It's also the right choice if you want to experiment with open-weight research or contribute back to it. The GLM-5 API is cheap, and if tokens per dollar is your dominant variable, it's hard to beat.</p>
<p>Use GPT-5.4 when your workflow is terminal-heavy or involves computer use, when long-context coherence above 200,000 tokens matters, when you need multimodal input, or when your team is already embedded in the OpenAI ecosystem.</p>
<p>If response consistency at scale is non-negotiable, the premium you pay is real, but for some workloads, the consistency and capabilities justify it.</p>
<p>Consider self-hosting GLM-5 only when your organization already has GPU cluster infrastructure or the budget to build one, when data sovereignty concerns are documented and specific rather than hypothetical, and when you have the ML infrastructure capabilities to manage deployment, updates, and monitoring. Self-hosting a 744-billion parameter model is not a weekend project.</p>
<p>The break-even math is worth doing. At roughly \(0.80 per million tokens via DeepInfra, a team would need to process over one billion tokens per month before self-hosting on \)15,000 H100 hardware begins to pay off. Most teams don't hit that volume, and the ones that do probably already have the infrastructure.</p>
<p>With this decision framework in place, the question shifts to a larger one. What does this moment mean for how teams should think about open source and proprietary AI?</p>
<h2 id="heading-what-this-moment-means"><strong>What This Moment Means</strong></h2>
<p>The benchmark gap has closed. It's real, significant, and historic. The MMLU gap between open and proprietary models was 17.5 points in late 2023 and is now effectively zero. GLM-5, scoring 50 on the Intelligence Index, the first open-weight model to do so, is a genuine milestone.</p>
<p>But the way the gap closed matters as much as the fact that it closed. It closed through architectural ingenuity like DSA sparse attention, MoE efficiency, and asynchronous reinforcement learning, not through democratized compute.</p>
<p>The models that have closed the gap are still large, still expensive to deploy at full fidelity, and still dominated by Chinese labs with significant institutional backing.</p>
<p>The proprietary moat is no longer because they have better models. It's now a better platform, a better ecosystem, a better context window, better enterprise support, and a deployment path that doesn't require a GPU cluster. It's a narrower moat, but it's still a moat.</p>
<p>The question for 2026 is not whether to choose open source or proprietary. It's what you're getting for the premium you pay, and whether that's worth it for your specific workflow. For some teams, the answer will flip. For many, it won't yet.</p>
<p>Most teams reading this won't do the math. They'll see "open source" and assume it means cheaper. They will see "GLM-5 matches GPT-5.4 on benchmarks" and assume they can swap one for the other with no trade-offs.</p>
<p>Those assumptions are how you end up with a $50,000 GPU cluster you don't know how to operate, or a production outage because your quantized model can't handle long context.</p>
<p>The gap between what a benchmark says and what a model does in your actual environment is where engineering judgment lives. If you outsource that judgment to headlines, you're not saving money. You're just deferring the cost until it shows up as an incident.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ OSS Pull Request Therapy: Learning to Enjoy Code Reviews with npmx ]]>
                </title>
                <description>
                    <![CDATA[ For years, I thought Open Source Software (OSS) just wasn’t for me. I had no plans to join any OSS communities on top of my existing developer community obligations. Curious about the hype I saw on Bl ]]>
                </description>
                <link>https://www.freecodecamp.org/news/learning-to-enjoy-code-reviews-with-npmx/</link>
                <guid isPermaLink="false">69a6f99556428acc6fef7fbc</guid>
                
                    <category>
                        <![CDATA[ Programming Blogs ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Open Source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Abbey Perini ]]>
                </dc:creator>
                <pubDate>Tue, 03 Mar 2026 15:09:09 +0000</pubDate>
                <media:content url="https://cloudmate-test.s3.us-east-1.amazonaws.com/uploads/covers/5e1e335a7a1d3fcc59028c64/5765f28c-0d0e-46be-bc60-972a4d879b7e.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>For years, I thought Open Source Software (OSS) just wasn’t for me. I had no plans to join any OSS communities on top of my existing developer community obligations.</p>
<p>Curious about the hype I saw on <a href="https://bsky.app/">Bluesky</a>, I recently joined the <a href="https://npmx.dev/">npmx</a> Discord server on a whim. My journey from lurker to contributor taught me a lot about OSS and gave me new confidence going into code reviews.</p>
<p>In this article, I’ll walk you through my journey to give you a little insight into the process of getting involved in Open Source.</p>
<h3 id="heading-heres-what-ill-cover">Here’s what I’ll cover:</h3>
<ul>
<li><p><a href="#heading-my-struggles-with-pull-requests">My Struggles with Pull Requests</a></p>
</li>
<li><p><a href="#heading-my-former-view-of-oss">My Former View of OSS</a></p>
<ul>
<li><p><a href="#heading-the-basics-of-oss">The Basics of OSS</a></p>
</li>
<li><p><a href="#heading-the-dark-side-of-oss">The Dark Side of OSS</a></p>
</li>
</ul>
</li>
<li><p><a href="#heading-getting-started-with-npmx">Getting Started with npmx</a></p>
</li>
<li><p><a href="#heading-the-not-so-perfect-pr">The Not So Perfect PR</a></p>
</li>
<li><p><a href="#heading-collaboration-over-perfection">Collaboration Over Perfection</a></p>
</li>
<li><p><a href="#heading-my-current-view-of-oss">My Current View of OSS</a></p>
</li>
<li><p><a href="#heading-tips-for-pr-authors-and-reviewers">Tips for PR Authors and Reviewers</a></p>
</li>
<li><p><a href="#heading-conclusion">Conclusion</a></p>
</li>
</ul>
<h2 id="heading-my-struggles-with-pull-requests">My Struggles with Pull Requests</h2>
<p>I’ll admit, I’ve always had a hard time with code reviews. I can be quite the perfectionist. I’ll entertain every nitpick and only hear the criticism.</p>
<p>If reviews go on for days, I easily get overwhelmed. I enjoy pairing and co-working. I want to enjoy Pull Request (PRs), but addressing PR comments takes a lot out of me.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771264593124/b5674020-6b0d-4ad2-bb92-921d05ebecc7.png" alt="Me looking at the bugs that my colleagues pointed out in my pull request Patrick Star from Spongebob looking absolutely horrified and staring at a computer" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>Some of my struggle is a need for <a href="https://askjan.org/disabilities/Attention-Deficit-Hyperactivity-Disorder-AD-HD.cfm#spy-scroll-heading-2">accommodations</a> that I rarely get. I also have plenty of lived experience with how hostile code reviews can become (even in a professional setting). Finally, there’s how I was introduced to PR reviews.</p>
<p>Outside of work, I had only ever experienced perfunctory PRs – I’d receive at most one suggestion, but usually just got a “LGTM” (Looks Good to Me) comment. Professionally, I went from no code reviews to incredibly detailed code reviews basically overnight. I still feel like I’m playing catch up.</p>
<p>On the one hand, thinking deeply about every suggestion has made me a better developer. I thrive in collaborative environments with thoughtful code reviews. Developers who have worked with me have told me that they benefit from answering all my “why?” questions.</p>
<p>On the other hand, I demand compliments, gifs, and video calls from my reviewers. I don’t do well with a bombardment of vague comments on my PRs. I’ve spent a lot of time documenting code guidelines and review processes that other people seem to understand and remember much more easily than I do.</p>
<p>Developer communities have helped me navigate all of this. Community is a priceless resource for career changers and new grads. When everyone shares their experience, the uninitiated learn about how things could be and what kinds of things aren’t normal (like very hostile code reviews).</p>
<h2 id="heading-my-former-view-of-oss">My Former View of OSS</h2>
<p>When I’ve talked and written about developer community, I’ve recommended online networking communities, going to meetups, tech conferences, social media, writing, and posting your writing online. The one thing I haven’t written about? OSS.</p>
<p>My first real introduction to OSS was through the online networking group <a href="https://virtualcoffee.io/">Virtual Coffee</a>. By the end of my first <a href="https://hacktoberfest.com/">Hacktoberfest</a>, I knew the basics.</p>
<h3 id="heading-the-basics-of-oss">The Basics of OSS</h3>
<ul>
<li><p>Find a project that interests you.</p>
</li>
<li><p>Check the Contributing Guide.</p>
</li>
<li><p>Claim an issue.</p>
</li>
<li><p>Following the Contributing Guide, make a fork, write the code, and open a PR.</p>
</li>
<li><p>The maintainer merges it.</p>
</li>
<li><p>You did it! That’s OSS.</p>
</li>
</ul>
<h3 id="heading-the-dark-side-of-oss">The Dark Side of OSS</h3>
<p>Over time, I couldn’t help but see the “dark side” of OSS – maintainers <a href="https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md">burning out</a>, <a href="https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957">friction between users and maintainers</a>, corporations suddenly trying to assert control over OSS (for example, <a href="https://www.cmswire.com/digital-experience/whats-with-the-open-source-drama-between-wordpress-and-wp-engine/">Wordpress</a>, <a href="https://dev.to/cseeman/what-just-happened-to-rubygems-31n9">Ruby</a>), and the thankless, frustrating job of maintaining a package that everyone uses but no one wants to pay for.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771191134959/871a6a8d-85ea-402a-950e-ec25d4738859.png" alt="A large structure made out of building blocks labelled All Modern Digital Infrastructure. One tiny, integral block is labelled A project some random person in Nebraska has been thanklessly maintaining since 2003" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>I have to be honest: I had begun to think of open source maintainers as <a href="https://www.youtube.com/watch?v=mm8R3u_b0yU">Roz from Monsters Inc.</a> – justifiably fed up with the extra work dumped on them by unappreciative people.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770053555027/4f38e415-3100-4737-af1c-947725c60b23.png" alt="A slug person wearing a cardigan, holding a pencil and clipboard with the Monsters Inc. logo. She's wearing glasses and lipstick. Her grey hair is styled straight up, she has a mole on her bottom lip. She currently looks disgusted." style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>Meeting maintainers in-person didn’t contradict my view. Every single one had a story about <a href="https://medium.com/@sohail_saifii/the-open-source-maintainer-burnout-crisis-nobodys-fixing-5cf4b459a72b">burnout and lack of funding</a>. I started to assume that anyone excited about OSS just hadn’t been in it long enough</p>
<p>…so my friends were quite surprised when I suddenly announced that I had joined the OSS project <a href="https://npmx.dev/">npmx</a>.</p>
<h2 id="heading-getting-started-with-npmx">Getting Started with npmx</h2>
<p>It wasn’t the first mention of the npmx project that interested me. It wasn’t the second. It was a <a href="https://bsky.app/profile/erus.dev/post/3mdicpnmijk2o">meme</a>. I’ve known <a href="https://roe.dev/">Daniel Roe</a> long enough to know that he is brilliant. I like learning from people who are smarter than I am.</p>
<p>I reached out to <a href="https://bsky.app/profile/patak.dev">Patak</a>, and got an invite to the <a href="https://chat.npmx.dev/">npmx Discord server</a>. I was amazed by what I saw: a rapidly growing, excited, and inclusive community. I realized that I had only ever contributed to communities with at most a handful of people. My view of OSS immediately changed.</p>
<p>This was it. I was finally going to have fun doing PRs.</p>
<p>So I hopped into the <a href="https://github.com/npmx-dev/npmx.dev">npmx GitHub repository</a> and tried to get my bearings. Very quickly, I was overwhelmed. The project moves <em>so fast.</em> I tried to do step 3 – claim a ticket. As far as I could tell, all the tickets were being claimed in Discord before or as they were being written.</p>
<p><a href="https://bsky.app/profile/jonathanyeong.com">Jono</a> kindly welcomed me into his fork for working on the blog page, but I ran into frustrating and weird issues with running the repository (repo) locally and the pre-commit hooks. Multiple people tried to help me debug and were just as stumped as I was.</p>
<p>The next day, <a href="https://bsky.app/profile/whitep4nth3r.com">Salma</a> arrived. The day after, she was in charge of outreach, and asked me to write a blog. Then life got in the way. I couldn’t keep my promise to <a href="https://www.software.com/devops-guides/context-switching">context switch</a> into a feature branch in a new repo. I felt like my only contribution was going to be a single line change on the blog page and a blog.</p>
<p>It didn’t help that I wasn’t happy with the blog I had started writing. I gave up on keeping up and lurked in the Discord channels. I chimed in on a few conversations, and offered to help with things like failing accessibility tests.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771190012891/ac34a318-46f7-45d8-90c3-10837627ad17.png" alt="check @AbbeyPerini's reaction here, if we manage to set an example on how good an app can be with good #a11y, great #perf, and a good #test story, listening to the #e18e folks on keeping deps clean, the npmx repo will be a great learning resource for folks learning how to build websites Salma If anything I made it MORE accessible with a this react Abbey Perini let me run it locally and see if I can spot something with 3 purple heart reacts God it's nice to look at a repo where a11y wasn't an afterthought 6 100 reacts" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>Four days later, the project was officially two weeks old. The maintainers announced a mandatory week of vacation – community members experienced with burnout had seen the writing on the wall. Vacation would start in 10 days, so that’s basically how long I had to get a contribution in before the alpha release.</p>
<h2 id="heading-the-not-so-perfect-pr">The Not So Perfect PR</h2>
<p>An hour later, I finally saw it – my chance to contribute code. <a href="https://bsky.app/profile/alexdln.com">Alex</a> needed <a href="https://github.com/npmx-dev/npmx.dev/issues/1028">a toggle re-written as a checkbox</a>. It was my time to shine. I commented on the ticket to claim it as soon as it was written. I slapped up a draft PR to show I was working on it. Predictably, my focus was once again pulled away from the repo.</p>
<p>A couple days later, <a href="https://bsky.app/profile/knowler.dev">Knowler</a> reviewed my draft PR, and all my PR anxieties came tumbling back. This was going to be The Perfect PR. How dare anyone look at it before I was ready to defend my work. What would they think about my abilities looking at my old copy and pasted portfolio site code that I hadn’t even finished translating from <a href="https://react.dev/">React</a> to <a href="https://vuejs.org/">Vue</a>? I was legitimately embarrassed someone was looking at my code in that state.</p>
<p>Fueled by embarrassment and productive procrastination, I sprung into action. In what little free time I had, I must have toggled my toggle a thousand times. Three days later, it was finally in a state I was happy with. It was time to open up my PR for review.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771263500393/64bc78f5-dd9c-48b7-805b-fcba0456753a.png" alt=" Mona-Lisa Saperstein, played by Jenny Slate, hand outstretched, saying &quot;money please,&quot; but the meme is captioned &quot;review please&quot;" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<p>A couple dozen comments came in. Overwhelmed, I tried to remember that I had asked for this. I resolved most of the comments and left a comment saying I’d get to the last item, <a href="https://polypane.app/blog/forced-colors-explained-a-practical-guide/">forced colors mode</a>, in the morning. Frustrated with the code for the forced colors and myself for forgetting a few tiny things, I went to play games with friends.</p>
<p>A few hours later, I got a DM from Daniel. He had some code for my PR. I agreed with his reasoning for all the changes and found out an entire tooltip had been added while I was blissfully ignoring the rest of the repo. (I’m confident in my ability to merge or rebase my way out of any situation.)</p>
<p>Splitting my attention between <a href="https://store.steampowered.com/app/1203620/Enshrouded/">Enshrouded</a> and talking to Daniel, I felt defeated. I knew I finish the forced colors fix the next day, but also adding a tooltip felt daunting. Still, it felt like I needed to do it all.</p>
<h2 id="heading-collaboration-over-perfection">Collaboration Over Perfection</h2>
<p>And then I remembered, this wasn’t work and it wasn’t going to come up on a performance review. I wasn’t alone – Knowler and Daniel were taking the time to help me get this PR merged because they wanted to. I had the opportunity to collaborate with some brilliant people and see how they would write the same thing.</p>
<p>So I pushed through my perfectionism, demanded compliments, and asked Daniel to push his changes. I told him I’d review them in the morning.</p>
<p>Reviewing Daniel’s code, I found that he had forgotten a couple tiny things, just like I had. The code I was frustrated with the night before was legitimately frustrating. <a href="https://cssence.com/2024/forced-colors-mode-strategies/">Emulating forced colors on a Mac</a> was giving me weird and contradictory results. I needed to test on a Windows machine to finally get it right.</p>
<p>Then, six days after I opened the PR, I finally merged it. I was on top of the world. I had gotten my contribution in before our vacation (and more importantly, I had received multiple compliments). Finally, I knew what to write this blog about.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771191470445/caeb7ab5-d54b-4dd9-907c-a95a85e650b1.png" alt="Abbey Perini Bluesky Elder I'd like to thank @knowler.dev and @danielroe.dev and my confidence in my git skills because this is the fastest moving repo I've ever been in. Quoted post - npmx @npmx.dev @abbeyperini.dev at chat.npmx.dev#contributing. A screenshot of the npmx Discord server. The npmx APP posted @Abbey Perini (abbeyperini) is now a contributor! Abbey Perini NERD responds with a gif of Jim Carrey as the Mask giving an acceptance speech and saying Thank You! with 6 raised hands reacts, 2 trophy reacts, and 2 clapping hands reacts 4:10 PM Feb 11, 2026" style="display:block;margin:0 auto" width="600" height="400" loading="lazy">

<h2 id="heading-my-current-view-of-oss">My Current View of OSS</h2>
<p>When you’re looking for a project that interests you, the code isn’t the only thing to evaluate. Early in my career, I learned three rules for evaluating software tools.</p>
<ol>
<li><p>Check the date of the last update to make sure it’s actively maintained.</p>
</li>
<li><p>Look at the documentation. Is it up to date and easy to follow?</p>
</li>
<li><p>Check out the community. Do people get fairly quick responses to their questions?</p>
</li>
</ol>
<p>After joining npmx, I’ve discovered that, with a few tweaks, these rules also apply to evaluating an OSS project.</p>
<ol>
<li><p>Check out the last few tickets and PRs to see how fast the repo moves. If it’s fairly slow, you can probably claim an issue in GitHub easily. If it’s rapid, start by getting to know the community and how they’re assigning tickets.</p>
</li>
<li><p>You should always check the repo for a code of conduct, contributing guide, and sufficient documentation. Also evaluate the tickets. Are contributors expected to research solutions on their own or given strict requirements? How do maintainers respond to comments on issues?</p>
</li>
<li><p>Check out the community. An active, inclusive community makes contributing a lot more fun.</p>
</li>
</ol>
<p>Now, my view of OSS is much more nuanced. Yes, there are issues with OSS as whole, but there’s a reason people want to fix them. OSS can be collaborative, inspirational, and enjoyable.</p>
<h2 id="heading-tips-for-pr-authors-and-reviewers">Tips for PR Authors and Reviewers</h2>
<p>People underestimate the importance of the relationship between PR author and reviewer. A collaborative OSS code review process doesn’t happen in a vacuum. It takes careful cultivation by the PR author, PR reviewer, and project community.</p>
<p>For a long time, I focused on the responsibility of the reviewer to make the PR author comfortable (for example, compliments, gifs). Don’t get me wrong – I think one of the most important parts of a senior developer’s job is to provide constructive, actionable feedback.</p>
<p>But I now understand that the PR author’s sense of agency and desire to learn are just as important.</p>
<p>A sense of agency is a sense of control over actions and consequences. In other words, the PR author needs to feel that they have control over what goes into their PR. Before npmx, I understood this a little bit. I always ask “why?” because I’m not putting my name on code that I don’t understand and agree with. I have counseled my own junior developer that it’s his job to get PRs he’s authored reviewed and merged.</p>
<p>After experiencing an in-depth code review outside of work, I finally understand that a PR is a process. Reviews exist to get consensus, so “perfect” is far more subjective than I originally thought. There’s a reason you get a conversation, not a grade.</p>
<p>Maybe I’ll even ignore some nitpicks in the future.</p>
<p>A desire to learn makes remaining open to a reviewer’s suggestions and requests a lot easier. During my first npmx PR, it was only when my desire to learn outweighed my desire to prove something that I started having fun.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Today, March 3rd, 2026, is <a href="https://npmx.dev/blog/alpha-release">the alpha release of npmx</a>, and I am very proud to be a contributor and member of the community.</p>
<p>I look forward to learning about OSS from Patak, fancy, smart code from Daniel, outreach from Salma, and accessibility from Knowler. I know I’ll learn many things outside of that list, too. I’m grateful I’m not the smartest person in the room and that I finally get to have fun with Pull Requests.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How To Run an Open-Source LLM on Your Personal Computer – Run Ollama Locally ]]>
                </title>
                <description>
                    <![CDATA[ Running a large language model (LLM) on your computer is now easier than ever. You no longer need a cloud subscription or a massive server. With just your PC, you can run models like Llama, Mistral, or Phi, privately and offline. This guide will show... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-run-an-open-source-llm-on-your-personal-computer-run-ollama-locally/</link>
                <guid isPermaLink="false">691256ca726af9fcf5543027</guid>
                
                    <category>
                        <![CDATA[ LLM&#39;s  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ llm ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ollama ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Manish Shivanandhan ]]>
                </dc:creator>
                <pubDate>Mon, 10 Nov 2025 21:19:06 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762809417189/37e154b9-9bf0-4210-921a-4722cd448b09.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Running a large language model (LLM) on your computer is now easier than ever. You no longer need a cloud subscription or a massive server. With just your PC, you can run models like Llama, Mistral, or Phi, privately and offline.</p>
<p>This guide will show you how to set up an open-source LLM locally, explain the tools involved, and walk you through both the UI and command-line installation methods.</p>
<h2 id="heading-what-well-cover">What We’ll Cover</h2>
<ul>
<li><p><a class="post-section-overview" href="#heading-understanding-open-source-llms">Understanding Open Source LLMs</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-choosing-a-platform-to-run-llms-locally">Choosing a Platform to Run LLMs Locally</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-install-ollama">How to Install Ollama</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-install-and-run-llms-via-the-command-line">How to Install and Run LLMs via the Command Line</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-manage-models-and-resources">How to Manage Models and Resources</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-use-ollama-with-other-applications">How to Use Ollama with Other Applications</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-troubleshooting-and-common-issues">Troubleshooting and Common Issues</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-why-running-llms-locally-matters">Why Running LLMs Locally Matters</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></p>
</li>
</ul>
<h2 id="heading-understanding-open-source-llms">Understanding Open Source LLMs</h2>
<p>An open-source large language model is a type of AI that can understand and generate text, much like ChatGPT, but it can function without depending on external servers. </p>
<p>You can download the model files, run them on your machine, and even <a target="_blank" href="https://www.turingtalks.ai/p/how-ai-agents-remember-things-the-role-of-vector-stores-in-llm-memory">fine-tune</a> them for your use cases.</p>
<p>Projects like Llama 3, Mistral, Gemma, and Phi have made it possible to run models that fit well on consumer hardware. You can choose between smaller models that run on CPUs or larger ones that benefit from GPUs.</p>
<p>Running these models locally gives you privacy, control, and flexibility. It also helps developers integrate AI features into their applications without relying on cloud APIs.</p>
<h2 id="heading-choosing-a-platform-to-run-llms-locally">Choosing a Platform to Run LLMs Locally</h2>
<p>To run an open source model, you need a platform that can load it, manage its parameters, and provide an interface to interact with it.</p>
<p>Three popular choices for local setup are:</p>
<ol>
<li><p><a target="_blank" href="https://ollama.com/"><strong>Ollama</strong></a> — a user-friendly system that runs models like OpenAI GPT OSS, Google Gemma with one command. It has both a Windows UI and CLI version.</p>
</li>
<li><p><a target="_blank" href="https://lmstudio.ai/"><strong>LM Studio</strong></a> — a graphical desktop application for those who prefer a point-and-click interface.</p>
</li>
<li><p><a target="_blank" href="https://www.nomic.ai/gpt4all">Gpt4All</a> — another popular GUI desktop application.</p>
</li>
</ol>
<p>We’ll use Ollama as the example in this guide since it’s widely supported and integrates easily with other tools.</p>
<h2 id="heading-how-to-install-ollama">How to Install Ollama</h2>
<p>Ollama provides a one-click installer that sets up everything you need to run local models. Visit <a target="_blank" href="https://ollama.com/">the official Ollama website</a> and download the Windows installer.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762438947066/9b6c84c1-e8ae-4765-9b55-a444bdf68283.png" alt="Ollama home page" class="image--center mx-auto" width="1241" height="721" loading="lazy"></p>
<p>Once downloaded, double-click the file to start installation. The setup wizard will guide you through the process, which only takes a few minutes.</p>
<p>When the installation finishes, Ollama will run in the background as a local service. You can access it either through its graphical desktop interface or using the command line.</p>
<p>After installing Ollama, you can open the application from the Start Menu. The UI makes it easy for beginners to start interacting with local models.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762439008725/a1ebb4fc-c638-41f0-817a-cd6772c8577e.png" alt="Ollama Interface" class="image--center mx-auto" width="1000" height="532" loading="lazy"></p>
<p>On the Ollama interface, you’ll see a simple text box where you can type prompts and receive responses. There’s also a panel that lists available models.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762439045357/760b04b6-f826-422d-8ba9-6a255917ae29.png" alt="Ollama Models" class="image--center mx-auto" width="759" height="622" loading="lazy"></p>
<p>To download and use a model, just select it from the list. Ollama will automatically fetch the model weights and load them into memory.</p>
<p>The first time you ask a question, it will download the model if it does not exist. You can also choose the model from the <a target="_blank" href="https://ollama.com/search">models search page</a>. </p>
<p>I’ll use the <a target="_blank" href="https://ollama.com/library/gemma3">gemma 270m</a> model which is the smallest model available in Ollama. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762439068617/c88f191b-f2f7-4c7a-b1dc-b1eea7745a35.png" alt="Ollama downloading model" class="image--center mx-auto" width="1000" height="345" loading="lazy"></p>
<p>You can see the model being downloaded when used for the first time. Depending on the model size and your system’s performance, this might take a few minutes.</p>
<p>Once loaded, you can start chatting or running tasks directly within the UI. It’s designed to look and feel like a normal chat window, but everything runs locally on your PC. </p>
<p>You don’t need an internet connection after the model has been downloaded.</p>
<h2 id="heading-how-to-install-and-run-llms-via-the-command-line">How to Install and Run LLMs via the Command Line</h2>
<p>If you prefer more control, you can use the Ollama command-line interface (CLI). This is useful for developers or those who want to integrate local models into scripts and workflows.</p>
<p>To open the command line, search for “Command Prompt” or “PowerShell” in Windows and run it. You can now interact with Ollama using simple commands.</p>
<p>To check if the installation worked, type:</p>
<pre><code class="lang-python-repl">ollama --version
</code></pre>
<p>If you see a version number, Ollama is ready. Next, to run your first model, use the pull command:</p>
<pre><code class="lang-python-repl">ollama pull gemma3:270m
</code></pre>
<p>This will download the Gemma model to your machine.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762439104192/14ed4a53-330f-41c6-82dd-f2a22ecb9d05.png" alt="Ollama pull model" class="image--center mx-auto" width="1000" height="204" loading="lazy"></p>
<p>When the process finishes, start it with:</p>
<pre><code class="lang-python-repl">ollama run gemma3:270m
</code></pre>
<p>Ollama will launch the model and open an interactive prompt where you can type messages.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762439115178/9d17c753-52af-4834-93f4-155bad39bd8d.png" alt="Ollama Interactive shell" class="image--center mx-auto" width="844" height="157" loading="lazy"></p>
<p>Everything happens locally, and your data never leaves your computer.</p>
<p>You can stop the model anytime by typing <code>/bye</code>.</p>
<h2 id="heading-how-to-manage-models-and-resources">How to Manage Models and Resources</h2>
<p>Each model you download takes up disk space and memory. Smaller models like Phi-3 Mini or Gemma 2B are lighter and suitable for most consumer laptops. Larger ones such as Mistral 7B or Llama 3 8B require more powerful GPUs or high-end CPUs.</p>
<p>You can list all installed models using:</p>
<pre><code class="lang-python-repl">ollama list
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762439131985/31bc6125-aec9-47bb-90a8-7017d422e527.png" alt="Ollama installed models" class="image--center mx-auto" width="848" height="104" loading="lazy"></p>
<p>And remove one when you no longer need it:</p>
<pre><code class="lang-python-repl">ollama rm model_name
</code></pre>
<p>If your PC has limited RAM, try running smaller models first. You can experiment with different ones to find the right balance between speed and accuracy.</p>
<h2 id="heading-how-to-use-ollama-with-other-applications">How to Use Ollama with Other Applications</h2>
<p>Once you’ve installed Ollama, you can use it beyond the chat interface. Developers can connect to it using APIs and local ports.</p>
<p>Ollama runs a local server on <code>http://localhost:11434</code>. This means you can send requests from your own scripts or applications.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762439148881/b506c227-8b83-45f4-a2c3-662081ec9faf.png" alt="Ollama API" class="image--center mx-auto" width="1000" height="343" loading="lazy"></p>
<p>For example, a simple Python script can call the local model like this:</p>
<pre><code class="lang-python"><span class="hljs-keyword">import</span> requests, json

<span class="hljs-comment"># Define the local Ollama API endpoint</span>
url = <span class="hljs-string">"http://localhost:11434/api/generate"</span>

<span class="hljs-comment"># Send a prompt to the Gemma 3 model</span>
payload = {
    <span class="hljs-string">"model"</span>: <span class="hljs-string">"gemma3:270m"</span>,
    <span class="hljs-string">"prompt"</span>: <span class="hljs-string">"Write a short story about space exploration."</span>
}

<span class="hljs-comment"># stream=True tells requests to read the response as a live data stream</span>
response = requests.post(url, json=payload, stream=<span class="hljs-literal">True</span>)

<span class="hljs-comment"># Ollama sends one JSON object per line as it generates text</span>
<span class="hljs-keyword">for</span> line <span class="hljs-keyword">in</span> response.iter_lines():
    <span class="hljs-keyword">if</span> line:
        data = json.loads(line.decode(<span class="hljs-string">"utf-8"</span>))
        <span class="hljs-comment"># Each chunk has a "response" key containing part of the text</span>
        <span class="hljs-keyword">if</span> <span class="hljs-string">"response"</span> <span class="hljs-keyword">in</span> data:
            print(data[<span class="hljs-string">"response"</span>], end=<span class="hljs-string">""</span>, flush=<span class="hljs-literal">True</span>)This setup turns your computer into a local AI engine. You can integrate it <span class="hljs-keyword">with</span> chatbots, coding assistants, <span class="hljs-keyword">or</span> automation tools without using external APIs.
</code></pre>
<h2 id="heading-troubleshooting-and-common-issues">Troubleshooting and Common Issues</h2>
<p>If you face issues running a model, check your system resources first. Models need enough RAM and disk space to load properly. Closing other apps can help free up memory.</p>
<p>Sometimes, antivirus software may block local network ports. If Ollama fails to start, add it to the list of allowed programs.</p>
<p>If you use the CLI and see errors about GPU drivers, ensure that your graphics drivers are up to date. Ollama supports both CPU and GPU execution, but having updated drivers improves performance.</p>
<h2 id="heading-why-running-llms-locally-matters">Why Running LLMs Locally Matters</h2>
<p>Running LLMs locally changes how you work with AI. You’re no longer tied to API costs or rate limits. It’s ideal for developers who want to prototype fast, researchers exploring fine-tuning, or hobbyists who value privacy.</p>
<p>Local models are also great for offline environments. You can experiment with prompt design, generate content, or test AI-assisted apps without an internet connection.</p>
<p>As hardware improves and open source communities grow, local AI will continue to become more powerful and accessible.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Setting up and running an open-source LLM on Windows is now simple. With tools like Ollama and LM Studio, you can download a model, run it locally, and start generating text in minutes.</p>
<p>The UI makes it friendly for beginners, while the command line offers full control for developers. Whether you’re building an app, testing ideas, or exploring AI for personal use, running models locally puts everything in your hands, making it fast, private, and flexible.</p>
<p><em>Hope you enjoyed this article. Signup for my free newsletter</em> <a target="_blank" href="https://www.turingtalks.ai/"><strong><em>TuringTalks.ai</em></strong></a> <em>for more hands-on tutorials on AI. You can also</em> <a target="_blank" href="https://manishshivanandhan.com/"><strong><em>visit my website</em></strong></a><em>.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Publish an npm Package - Explained with Examples ]]>
                </title>
                <description>
                    <![CDATA[ If you’ve spent any time working with JavaScript, you’ve most likely come across npm—whether installing packages like Express, Lodash, or React, or running commands like npm init. While using npm is second nature for many JavaScript developers, some ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-publish-an-npm-package/</link>
                <guid isPermaLink="false">68d44cc07b532bf921e47213</guid>
                
                    <category>
                        <![CDATA[ npm ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Ikegah Oliver ]]>
                </dc:creator>
                <pubDate>Wed, 24 Sep 2025 19:55:44 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1758743190885/78dd4f19-53eb-4101-9cf9-7c22ab5f6be2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you’ve spent any time working with JavaScript, you’ve most likely come across npm—whether installing packages like Express, Lodash, or React, or running commands like <code>npm init</code>. While using npm is second nature for many JavaScript developers, some have never explored how those packages are created, structured, and shared with the rest of the world. Behind each command lies a powerful system for building, managing, and distributing JavaScript code at scale.</p>
<p>This article will guide you through the basics of npm, explain how it functions behind the scenes, and demonstrate step-by-step how to create and publish your own npm package to the official npm registry.  Whether you’re a beginner just starting with JavaScript or a seasoned developer who has used npm but never published a package, this guide will help you confidently navigate the entire process, from setup to sharing your code with the global developer community.</p>
<h2 id="heading-table-of-contents">Table of Contents</h2>
<ul>
<li><p><a class="post-section-overview" href="#heading-what-is-npm">What is npm?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-components-of-npm">Components of npm</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-the-command-line-interface">The Command Line Interface</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-the-registry">The Registry</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-the-website">The Website</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-what-is-the-packagejson-file">What is the Package.json File?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-npm-works">How npm Works</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-publish-an-npm-library">How to Publish an npm Library</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-verify-and-install-your-package">How to Verify and Install Your Package</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-update-your-package">How to Update Your Package</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-notes-and-best-practices">Notes and Best Practices</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-beyond-the-basics">Beyond the Basics</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></p>
</li>
</ul>
<h2 id="heading-what-is-npm">What is npm?</h2>
<p>npm, which stands for Node Package Manager, is a command-line tool for installing and managing JavaScript packages. It is an ecosystem that powers modern JavaScript development (<a target="_blank" href="http://node.js">Node.js</a>, frontend tools, frameworks, and so on). Developers use npm to share and borrow packages, and many organizations use npm to manage private development.</p>
<p>Essentially, npm is to JavaScript what pip is to Python or Maven to Java. It enables developers to reuse code written by others (most of the time to fulfil a function in their project), manage dependencies, and share their own code with the world.</p>
<p>You can use npm to:</p>
<ul>
<li><p>Get and utilize code packages in your applications, either as-is or with custom modifications.</p>
</li>
<li><p>Download and run standalone tools instantly.</p>
</li>
<li><p>Execute packages directly from the registry without installing them using npx.</p>
</li>
<li><p>Share your own code with developers around the world through the npm registry.</p>
</li>
<li><p>Limit access to specific packages so only approved developers can use them.</p>
</li>
<li><p>Create organizations to manage code, teams, and packages in one place.</p>
</li>
<li><p>Collaborate as virtual teams using shared organizational accounts.</p>
</li>
<li><p>Handle different versions of packages and their dependencies with ease.</p>
</li>
<li><p>Keep your applications up to date by syncing with the latest package updates.</p>
</li>
<li><p>Explore different packages that offer various solutions to the same problem.</p>
</li>
<li><p>Connect with developers working on similar challenges and projects.</p>
</li>
</ul>
<h2 id="heading-components-of-npm">Components of npm</h2>
<p>npm consists of three core components:</p>
<ul>
<li><p>The command line interface (CLI)</p>
</li>
<li><p>The registry</p>
</li>
<li><p>The website</p>
</li>
</ul>
<h2 id="heading-the-command-line-interface">The Command Line Interface</h2>
<p>There are different npm commands you can run on your terminal. For example, <code>npm init</code> can be used to initialize a Node project, <code>npm install</code> can be used to install a package. It also allows you to do things like:</p>
<ul>
<li><p>Publish packages (<code>npm publish</code>)</p>
</li>
<li><p>Update packages (<code>npm update</code>)</p>
</li>
<li><p>Manage versioning (<code>npm version</code>)</p>
</li>
<li><p>Run scripts (<code>npm run build</code>, <code>npm test</code>, and so on)</p>
</li>
</ul>
<p>Think of it as your control panel.</p>
<h2 id="heading-the-registry">The Registry</h2>
<p>You can find the huge public database at <a target="_blank" href="https://registry.npmjs.org">https://registry.npmjs.org</a>, where packages are stored and shared. It also contains all the meta-information surrounding the package.</p>
<p>Example, when you run:</p>
<pre><code class="lang-bash">npm install express
</code></pre>
<p>npm fetches the Express package from the registry.</p>
<p>The npm registry enables collaboration by allowing developers to:</p>
<ul>
<li><p>Publish their own packages</p>
</li>
<li><p>Install packages created by others</p>
</li>
<li><p>Discover new tools and libraries</p>
</li>
</ul>
<p>Its collaboration features include:</p>
<ul>
<li><p>Open-source packages: The code is publicly visible (usually hosted on GitHub).</p>
</li>
<li><p>Versioning: Multiple versions of the same package let users safely adopt updates.</p>
</li>
<li><p>Scoped packages: Namespaces allow teams and organizations to manage ownership.</p>
</li>
<li><p>Issues &amp; pull requests: Most npm packages link to GitHub, allowing developers too contribute fixes and enhancements.</p>
</li>
<li><p>Organisations: Teams can manage access to shared private or public packages.</p>
</li>
</ul>
<h2 id="heading-the-website">The Website</h2>
<p>At <a target="_blank" href="https://www.npmjs.com">https://www.npmjs.com</a>, this is where you can:</p>
<ul>
<li><p>Browse packages.</p>
</li>
<li><p>Read documentation.</p>
</li>
<li><p>View download stats and dependencies.</p>
</li>
<li><p>Create and manage your account, organization, and package access.</p>
</li>
</ul>
<h2 id="heading-what-is-the-packagejson-file">What is the Package.json File?</h2>
<p>A very important component of any npm tool that you’ll come across as a JavaScript developer installing an npm package, is the <code>package.json</code> file. It is a metadata file that lives at the root of every npm or Node project. It tells npm (and other tools) everything it needs to know about your project, like:</p>
<ul>
<li><p>What the project is called.</p>
</li>
<li><p>What it depends on</p>
</li>
<li><p>How to run it</p>
</li>
<li><p>How to version it</p>
</li>
<li><p>and how to publish it</p>
</li>
</ul>
<p>You can think of it like the blueprint of your JavaScript project. Without it, npm doesn't know how to work with your code.</p>
<p>You can create a <code>package.json</code> file by typing the command <code>npm init</code> in your terminal and filling in the prompts provided. Alternatively, you can create a file named <code>package.json</code> and manually populate it with JSON content.</p>
<h3 id="heading-key-fields-in-an-npm-packagejson-file">Key Fields in an npm package.json File</h3>
<p>The following is a list of commonly used fields and how they interact with npm:</p>
<ol>
<li><p><code>name</code> and <code>version</code></p>
<pre><code class="lang-json"> <span class="hljs-string">"name"</span>: <span class="hljs-string">"my-awesome-package"</span>,
 <span class="hljs-string">"version"</span>: <span class="hljs-string">"1.0.0"</span>
</code></pre>
<ul>
<li><p>This is required for publishing.</p>
</li>
<li><p><code>name</code> must be unique (if publishing to the public npm registry).</p>
</li>
<li><p><code>version</code> follows semantic versioning (semver) (for example, major.minor.patch).  </p>
</li>
</ul>
</li>
<li><p><code>description</code>, <code>keywords</code>, <code>author</code>, and <code>license</code></p>
<pre><code class="lang-json"> <span class="hljs-string">"description"</span>: <span class="hljs-string">"A utility to convert markdown to HTML"</span>,
 <span class="hljs-string">"keywords"</span>: [<span class="hljs-string">"markdown"</span>, <span class="hljs-string">"html"</span>, <span class="hljs-string">"converter"</span>],
 <span class="hljs-string">"author"</span>: <span class="hljs-string">"Ikegah Oliver"</span>,
 <span class="hljs-string">"license"</span>: <span class="hljs-string">"MIT"</span>
</code></pre>
<ul>
<li><p>Helps npm users discover your package</p>
</li>
<li><p>Show up on <a target="_blank" href="http://npmjs.com">npmjs.com</a>.</p>
</li>
<li><p>Sets collaboratory license</p>
</li>
</ul>
</li>
<li><p><code>scripts</code></p>
<pre><code class="lang-json"> <span class="hljs-string">"scripts"</span>: {
   <span class="hljs-attr">"start"</span>: <span class="hljs-string">"node index.js"</span>,
   <span class="hljs-attr">"test"</span>: <span class="hljs-string">"jest"</span>,
   <span class="hljs-attr">"build"</span>: <span class="hljs-string">"tsc"</span>
 }
</code></pre>
<ul>
<li><p>Defines custom commands.</p>
</li>
<li><p>Run with npm run test, npm run build, and so on.</p>
</li>
<li><p>Automates build, test, lint, deploy processes.</p>
</li>
</ul>
</li>
<li><p><code>main</code> and <code>exports</code></p>
<pre><code class="lang-json"> <span class="hljs-string">"main"</span>: <span class="hljs-string">"dist/index.js"</span>,
 <span class="hljs-string">"exports"</span>: {
   <span class="hljs-attr">"."</span>: <span class="hljs-string">"./dist/index.js"</span>
 }
</code></pre>
<ul>
<li><p><code>main</code>: Entry point for <code>require()</code> or import.</p>
</li>
<li><p><code>exports</code>: Controls exactly what parts of your package are exposed (especially useful for modern ESM and package security).</p>
</li>
</ul>
</li>
<li><p><code>dependencies</code> and <code>devDependencies</code></p>
<pre><code class="lang-json"> <span class="hljs-string">"dependencies"</span>: {
   <span class="hljs-attr">"express"</span>: <span class="hljs-string">"^4.18.2"</span>
 },
 <span class="hljs-string">"devDependencies"</span>: {
   <span class="hljs-attr">"eslint"</span>: <span class="hljs-string">"^8.0.0"</span>,
   <span class="hljs-attr">"jest"</span>: <span class="hljs-string">"^29.0.0"</span>
 }
</code></pre>
<ul>
<li><p><code>dependencies</code> : Core packages your project needs to run in production (for example, <code>express</code>).</p>
</li>
<li><p><code>devDependencies</code> : Packages used only during development, like testing or build tools (for example, <code>jest</code>).</p>
</li>
</ul>
</li>
<li><p><code>engines</code></p>
<pre><code class="lang-json"> <span class="hljs-string">"engines"</span>: {
   <span class="hljs-attr">"node"</span>: <span class="hljs-string">"&gt;=14.0.0"</span>
 }
</code></pre>
<ul>
<li><p>Specifies Node.js version your package supports.</p>
</li>
<li><p>Helps warn users before they install with an unsupported version.</p>
</li>
</ul>
</li>
<li><p><code>private</code></p>
<pre><code class="lang-json"> <span class="hljs-string">"private"</span>:<span class="hljs-string">"true"</span>
</code></pre>
<ul>
<li><p>Prevents accidental publishing to the public npm registry.</p>
</li>
<li><p>Used for monorepos and internal-only projects.</p>
</li>
</ul>
</li>
<li><p><code>files</code> (optional)</p>
<pre><code class="lang-json"> <span class="hljs-string">"files"</span>:[<span class="hljs-string">"/dist"</span>, <span class="hljs-string">"README.md"</span>]
</code></pre>
<ul>
<li><p>Controls what files get included when you run npm publish.</p>
</li>
<li><p>Reduces package size, omits build artifacts or test files.</p>
</li>
</ul>
</li>
</ol>
<p>A minimal npm <code>package.json</code> file looks like this:</p>
<pre><code class="lang-json">{
  <span class="hljs-attr">"name"</span>: <span class="hljs-string">"@oliver/markdown-to-html"</span>,
  <span class="hljs-attr">"version"</span>: <span class="hljs-string">"1.0.0"</span>,
  <span class="hljs-attr">"description"</span>: <span class="hljs-string">"Converts markdown to HTML with styles"</span>,
  <span class="hljs-attr">"main"</span>: <span class="hljs-string">"dist/index.js"</span>,
  <span class="hljs-attr">"scripts"</span>: {
    <span class="hljs-attr">"build"</span>: <span class="hljs-string">"tsc"</span>,
    <span class="hljs-attr">"test"</span>: <span class="hljs-string">"jest"</span>
  },
  <span class="hljs-attr">"keywords"</span>: [<span class="hljs-string">"markdown"</span>, <span class="hljs-string">"html"</span>, <span class="hljs-string">"converter"</span>],
  <span class="hljs-attr">"author"</span>: <span class="hljs-string">"Ikegah Oliver"</span>,
  <span class="hljs-attr">"license"</span>: <span class="hljs-string">"MIT"</span>,
  <span class="hljs-attr">"dependencies"</span>: {
    <span class="hljs-attr">"marked"</span>: <span class="hljs-string">"^5.0.0"</span>
  },
  <span class="hljs-attr">"devDependencies"</span>: {
    <span class="hljs-attr">"jest"</span>: <span class="hljs-string">"^29.0.0"</span>
  },
  <span class="hljs-attr">"engines"</span>: {
    <span class="hljs-attr">"node"</span>: <span class="hljs-string">"&gt;=14.0.0"</span>
  },
  <span class="hljs-attr">"files"</span>: [<span class="hljs-string">"dist/"</span>, <span class="hljs-string">"README.md"</span>]
}
</code></pre>
<p>The <code>package.json</code> file plays a central role in every npm workflow. It defines your project's identity, lists its dependencies, specifies useful scripts, and outlines how the package should behave when published. Without it, npm can't properly install packages, run commands, or publish your code to the registry.</p>
<h2 id="heading-how-npm-works">How npm Works</h2>
<p>When you type <code>npm install</code> in your terminal, npm initiates a behind-the-scenes process to install the necessary packages for your project. Depending on how you run the command, the process varies slightly as follows:</p>
<h3 id="heading-method-1-packagejson-already-has-dependencies"><strong>Method 1</strong> - <code>package.json</code> Already Has Dependencies</h3>
<p>If your <code>package.json</code> lists packages under <code>dependencies</code> or <code>devDependencies</code>, npm will:</p>
<ol>
<li><p><strong>Read those entries:</strong> It looks at the names and version ranges of each dependency.</p>
</li>
<li><p><strong>Contact the registry:</strong> npm queries <a target="_blank" href="https://registry.npmjs.org">https://registry.npmjs.org</a> to fetch metadata about each required package.</p>
</li>
<li><p><strong>Download the correct versions:</strong> It selects versions that match your version rules (such as ^4.17.0) and downloads the <code>.tgz</code> files.</p>
</li>
<li><p><strong>Unpack and install:</strong> It places the packages into the <code>node_modules</code> directory and caches them.</p>
</li>
<li><p><strong>Update package-lock.json:</strong> It logs the exact versions and dependency tree in this file to ensure consistent installs later.</p>
</li>
</ol>
<h3 id="heading-method-2-you-run-npm-install-without-existing-dependencies"><strong>Method 2</strong> - You Run <code>npm install &lt;package-name&gt;</code> Without Existing Dependencies</h3>
<p>If your <code>package.json</code> doesn't have any dependencies yet and you run something like this in your terminal:</p>
<pre><code class="lang-bash">npm install express
</code></pre>
<p>Then npm will run:</p>
<ol>
<li><p><strong>Resolve the package version:</strong> It fetches the latest version of Express (unless you specify a version manually).</p>
</li>
<li><p><strong>Download and install:</strong> The tarball is downloaded and placed in the <code>node_modules/</code> folder that is automatically generated. A tarball is the zipped-up version of the package (<code>express</code> in this case), containing the package’s JavaScript files, a <code>package.json</code>, a README, and anything else the author included for distribution that npm downloads and extracts onto your machine.</p>
</li>
<li><p><strong>Add to</strong> <code>package.json</code>: npm automatically adds the package to your dependencies list like this:</p>
</li>
</ol>
<pre><code class="lang-json"><span class="hljs-string">"dependencies"</span>: {
  <span class="hljs-attr">"express"</span>: <span class="hljs-string">"^4.18.2"</span>
}
</code></pre>
<ol start="4">
<li><strong>Create a</strong> <code>package-lock.json</code> <strong>(if it doesn't exist):</strong> It writes all the version info to lock things down for future installs.</li>
</ol>
<p>Note: If you run <code>npm install --save-dev jest</code>It’ll add the package under devDependencies instead.</p>
<h2 id="heading-how-to-publish-an-npm-library">How to Publish an npm Library</h2>
<p>To follow through with this guide section, you will need to have the following prerequisites:</p>
<ul>
<li><p>Stable network connection</p>
</li>
<li><p>A code editor with a terminal (like VSCode)</p>
</li>
<li><p>Basic knowledge of JavaScript and Node</p>
</li>
<li><p>A basic understanding of the Markdown Markup language (for README documentation)</p>
</li>
</ul>
<p>Now, let’s dive into publishing an npm library. Assuming you just built and tested a fantastic JavaScript tool that you would like to share with the world, and allow people to use it in their projects and applications, the steps below will guide you from having the tool on your local machine to making it publicly available as an npm package for anyone to install and enjoy:</p>
<h3 id="heading-step-1-create-a-free-npm-account">Step 1: Create a free npm account</h3>
<p>Before publishing, you will need an npm account.</p>
<ul>
<li><p>Go to <a target="_blank" href="https://www.npmjs.com/signup">https://www.npmjs.com/signup</a>.</p>
</li>
<li><p>Fill in the form with your username, email, and password.</p>
</li>
<li><p>Confirm your email address by clicking the link in the verification email.</p>
</li>
</ul>
<h3 id="heading-step-2-log-in-from-the-command-line">Step 2: Log in from the Command Line</h3>
<p>Once you’ve created your account, you need to log in through your terminal. Run:</p>
<pre><code class="lang-bash">npm login
</code></pre>
<p>npm will prompt you for your username, password, and email address. If everything is correct, npm will generate an authentication token and store it locally, so you don’t have to log in every time.</p>
<h3 id="heading-step-3-create-a-packagejson-file">Step 3: Create a <code>package.json</code> file</h3>
<p>If your project doesn't already have a <code>package.json</code> file, create one by typing this command in your terminal:</p>
<pre><code class="lang-bash">npm init
</code></pre>
<p>You will be prompted to fill in the following information:</p>
<ul>
<li><p><strong>name</strong>: Must be unique if it’s public.</p>
</li>
<li><p><strong>version</strong>: Start with 1.0.0 (it represents the first version of your project; subsequently, you will change it accordingly after each update push) </p>
</li>
<li><p><strong>description</strong>: One-line summary of your package.</p>
</li>
<li><p><strong>entry point</strong>: Entry file of your project, usually <code>index.js</code> or <code>dist/index.js</code>.</p>
</li>
<li><p><strong>keywords</strong>: Help others discover your package.</p>
</li>
<li><p><strong>author</strong>: Your name or GitHub handle.</p>
</li>
<li><p><strong>license</strong>: Use MIT, ISC, or another open-source license.</p>
</li>
</ul>
<p>When you’re done, npm will generate a <code>package.json</code> like this:</p>
<pre><code class="lang-json">{
  <span class="hljs-attr">"name"</span>: <span class="hljs-string">"my-awesome-package"</span>,
  <span class="hljs-attr">"version"</span>: <span class="hljs-string">"1.0.0"</span>,
  <span class="hljs-attr">"description"</span>: <span class="hljs-string">"A demo package for npm publishing"</span>,
  <span class="hljs-attr">"main"</span>: <span class="hljs-string">"index.js"</span>,
  <span class="hljs-attr">"keywords"</span>: [<span class="hljs-string">"demo"</span>, <span class="hljs-string">"npm"</span>, <span class="hljs-string">"tutorial"</span>],
  <span class="hljs-attr">"author"</span>: <span class="hljs-string">"Your Name"</span>,
  <span class="hljs-attr">"license"</span>: <span class="hljs-string">"MIT"</span>
}
</code></pre>
<h3 id="heading-step-4-add-a-readmemdhttpreadmemd">Step 4: Add a <a target="_blank" href="http://readme.md">README.md</a></h3>
<p>Explain what your package does and how to use it in a <code>README.md</code> file. The README appears on your package page on <a target="_blank" href="http://npmjs.com">npmjs.com</a>. Example content:</p>
<pre><code class="lang-markdown"><span class="hljs-section"># my-awesome-package</span>

A simple package that says hello.

<span class="hljs-section">## Usage</span>

<span class="hljs-code">```js
const greet = require('my-awesome-package');
console.log(greet('Oliver'));
// Output: Hello, Oliver!</span>
</code></pre>
<h3 id="heading-step-5add-an-npmignore-file">Step 5:Add an .npmignore file</h3>
<p>This will exclude folders like <code>node_modules</code>, <code>dist</code>, or <code>.env</code>, and any other file or folder within the package you don’t wish to publish. Example content:</p>
<pre><code class="lang-bash">node_modules
.env
dist
</code></pre>
<h3 id="heading-step-6-check-if-the-package-name-you-chose-is-available">Step 6: Check if the package name you chose is available</h3>
<p>Before publishing, check if the package name you chose is not already taken. To check, run this command on your terminal:</p>
<pre><code class="lang-bash">npm search my-awesome-package
</code></pre>
<p>Or enter the URL <a target="_blank" href="https://www.npmjs.com/package/my-awesome-package">https://www.npmjs.com/package/my-awesome-package</a> in your browser (replace my-awesome-package with the name you chose). If no package page shows up, the name is not taken.</p>
<p>If the package name has been taken, change it in your <code>package.json</code> and any documentation (<code>README.md</code>), the name is reflected, or publish it under a scope. A scope is like a namespace tied to your npm username or organization. It ensures your package name is unique, even if the base name is common. For example, if my-awesome-package is taken, you can publish under a scope by setting the name section in its <code>package.json</code> like this: </p>
<pre><code class="lang-json">{
  <span class="hljs-attr">"name"</span>: <span class="hljs-string">"@yourname/my-awesome-package"</span>
}
</code></pre>
<h3 id="heading-step-6-publish-your-package">Step 6: Publish your package</h3>
<p>You are now ready to publish. Run:</p>
<pre><code class="lang-bash">npm publish
</code></pre>
<p>If you used a scoped name, when publishing, you must make it public:</p>
<pre><code class="lang-bash">npm publish --access public
</code></pre>
<p>If everything is valid, npm will publish your package and give you a URL like:</p>
<p><a target="_blank" href="https://www.npmjs.com/package/my-awesome-package">https://www.npmjs.com/package/my-awesome-package</a></p>
<h2 id="heading-how-to-verify-and-install-your-package">How to Verify and Install Your Package</h2>
<p>Visit your project page on npm to see it live. For example: <a target="_blank" href="https://www.npmjs.com/package/my-awesome-package">https://www.npmjs.com/package/my-awesome-package</a>, or search your project name on the npm website search bar.</p>
<p>Now, try installing it in a node project:</p>
<pre><code class="lang-bash">npm install my-awesome-package
</code></pre>
<p>Test out its features and functionalities, depending on what it is built to do.</p>
<h2 id="heading-how-to-update-your-package">How to Update Your Package</h2>
<p>If you make changes or update features in your package, you can publish the update.</p>
<p>After applying your changes, you can update the version in your <code>package.json</code>. Using semantic versioning, you can update it as follows:</p>
<ul>
<li><p>Patch update: 1.0.0 → 1.0.1</p>
</li>
<li><p>Minor update: 1.0.0 → 1.1.0</p>
</li>
<li><p>Major update: 1.0.0 → 2.0.0</p>
</li>
</ul>
<p>Or you can use the CLI:</p>
<pre><code class="lang-bash">npm version &lt;update_type&gt;
</code></pre>
<p>Replace <code>&lt;update_type&gt;</code> with your new semantic version. </p>
<p>Now run:</p>
<pre><code class="lang-bash">npm publish
</code></pre>
<h2 id="heading-notes-and-best-practices">Notes and Best Practices</h2>
<p>Although publishing to npm is straightforward, you still need to follow best practices to maintain a clean, secure, and user-friendly package.</p>
<ul>
<li><p>Exclude Sensitive Files: Never include <code>.env</code>, credentials, or secrets. Use <code>.npmignore</code> or the "files" field in <code>package.json</code> to control what gets published.</p>
</li>
<li><p>Test Before Publishing: Run <code>npm pack</code> to preview the package and install it locally in another project to ensure everything works.</p>
</li>
<li><p>Unpublish Carefully: You can unpublish within 72 hours using <code>npm unpublish --force</code>, but avoid doing this frequently to prevent breaking other projects that rely on your package.</p>
</li>
<li><p>Always Bump the Version: npm won’t let you overwrite a version, so use semantic versioning (npm version patch|minor|major) before publishing updates.</p>
</li>
<li><p>Add Essentials: Include a clear <code>README.md</code> file, a license, and relevant keywords to make your package discoverable and easy to use.</p>
</li>
</ul>
<h2 id="heading-beyond-the-basics">Beyond the Basics</h2>
<p>Now that you've got the hang of the basics, you can put your npm skills to work and level up as a developer. Here are some simple, practical steps you can take:</p>
<h3 id="heading-get-involved-in-open-source">Get Involved in Open Source</h3>
<p>One of the best ways to gain real-world experience is by contributing to existing projects on npm. Check out their repositories on GitHub and GitLab and see how you can contribute to them. This teaches you how to collaborate, handle code reviews, and manage versions. A great way to start is by looking for projects on GitHub with a "good first issue" label.</p>
<h3 id="heading-maintain-your-own-package">Maintain Your Own Package</h3>
<p>Publishing is just the first step. To truly master the process, keep your package up to date. This involves fixing bugs, listening to user feedback, and adding new features. You will quickly learn about versioning, ensuring your package remains compatible with older projects, and effectively manage dependencies.</p>
<h3 id="heading-dig-into-advanced-features">Dig into Advanced Features</h3>
<p>Explore advanced npm topics like semantic versioning, using private packages, creating scoped packages, and automating your releases with CI/CD pipelines. These are essential skills for any professional developer.</p>
<p>Taking these steps will help you transition from merely understanding npm to confidently utilizing it in real-world scenarios.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Congratulations! You have now learned the essentials of npm from the <code>package.json</code> file to publishing and maintaining a JavaScript package with the npm library. With this knowledge, you can share your JavaScript tools with the world, collaborate with other developers, and contribute to the growing ecosystem of open-source libraries.</p>
<p>By following best practices, testing locally, and learning from standard errors, you can confidently create packages that are clean, secure, and useful for other developers. Whether you’re building a small utility or a full-fledged framework, publishing on npm gives your ideas visibility and helps you contribute to the wider JavaScript community.</p>
<p>If you’d like to get hands-on experience collaborating on a real package, I published an npm project called <a target="_blank" href="https://www.npmjs.com/package/route-pilot?activeTab=readme">route-pilot</a>, a powerful CLI tool for testing and analyzing Express.js routes in your Node.js applications. I’m actively seeking contributors who want to enhance the code, add new features, or refine the documentation. It’s a simple way to practice working with npm in a collaborative setting while learning more about open-source development. Head over to the <a target="_blank" href="https://github.com/oliverTwist2/express-route-tester">GitHub repo</a> and join in. We’d love to have you on board!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Donate to freeCodeCamp.org – Ways to Give and Support our Charity's Mission ]]>
                </title>
                <description>
                    <![CDATA[ freeCodeCamp.org is a 501(c)(3) donor-supported public charity. I built the first version of freeCodeCamp's website in 2014. And now more than half a million people use freeCodeCamp every day. Our tin ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-donate-to-free-code-camp/</link>
                <guid isPermaLink="false">66b8d3e88cd1c2aa053d497e</guid>
                
                    <category>
                        <![CDATA[ charity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ nonprofit ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Wed, 19 Mar 2025 18:18:00 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/uploads/covers/5dfa3725066598ab2752cc5d/7abd50ab-4562-403e-bc22-4859205b576b.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>freeCodeCamp.org is a 501(c)(3) <a href="https://www.freecodecamp.org/donate/">donor-supported public charity</a>.</p>
<p>I built the first version of freeCodeCamp's website in 2014. And now more than half a million people use freeCodeCamp every day.</p>
<p>Our tiny charity is able to help so many people thanks to clever use of technology and the help of thousands of volunteers.</p>
<p>In this brief article, I'll tell you how you can support our mission by donating. And I'll give you all the information you need to get involved.</p>
<h3 id="heading-how-transparent-is-freecodecamporg">How transparent is freeCodeCamp.org?</h3>
<p>Very. We have a Platinum transparency rating <a href="https://www.guidestar.org/profile/82-0779546">from GuideStar.org</a>.</p>
<p>You can <a href="https://s3.amazonaws.com/freecodecamp/Free+Code+Camp+Inc+IRS+Determination+Letter.pdf">download our IRS Determination Letter here</a>.</p>
<p>And you can <a href="https://projects.propublica.org/nonprofits/organizations/820779546/202413179349308591/full">download our most recent 990 (annual tax report) here</a>.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1728568025735/846bc44d-b39a-4a66-91fb-4b3810d9b76f.png" alt="A screenshot from nonprofit transparency site GuideStar.org" style="display:block;margin:0 auto" width="1870" height="800" loading="lazy">

<h3 id="heading-how-efficient-is-freecodecamp">How efficient is freeCodeCamp?</h3>
<p>freeCodeCamp's budget is much smaller than most comparable charities. Part of that is because I am admittedly bad at fundraising. We haven't brought in professional fundraisers. Instead, I just do everything myself.</p>
<p>Am I a fool for doing this? Maybe. But I can look you in the eye and tell you exactly where all the money is going, because I oversee everything myself.</p>
<p>I can also tell you that – on a budget of only a few hundred thousand dollars per year – <a href="https://www.freecodecamp.org/news/freecodecamp-2021-review-budget-usage-statistics/">we have been able to help millions of people</a>.</p>
<h3 id="heading-whats-the-most-common-way-people-support-freecodecamp">What's the most common way people support freeCodeCamp?</h3>
<p>You can <a href="https://freecodecamp.org/donate/">set up a simple \(5 / month donation to our charity here</a>. We are a very donation-efficient charity, and every \)5 you donate will help us provide more than 250 hours of learning to people around the world.</p>
<p>More than 11,000 kind people support us this way every month.</p>
<p>Depending on where you are in the world, $5 per month may not seem like much money. But it does add up, and this monthly approach makes it easier for our charity to budget its mission.</p>
<h3 id="heading-how-can-i-make-a-one-time-donation">How can I make a one-time donation?</h3>
<p>If you'd prefer to make one-time donations, you can support freeCodeCamp's mission whenever you have cash to spare. You can use <a href="https://paypal.me/freecodecamp">this link to donate whatever amount feels right through PayPal</a>.</p>
<p>If you'd prefer to use a credit card to make a one-time donation, here are some quick links you can use. Just click the "checkout" button and you can input your information securely into Stripe (only they will see your credit card information):</p>
<ul>
<li><p><a href="https://www.freecodecamp.org/news/make-a-one-time-20-donation-to-freecodecamporg/">Make a one-time donation of $20</a></p>
</li>
<li><p><a href="https://www.freecodecamp.org/news/make-a-one-time-65-donation-to-freecodecamporg/">Make a one-time donation of $65</a></p>
</li>
<li><p><a href="https://www.freecodecamp.org/news/make-a-one-time-100-donation-to-freecodecamporg/">Make a one-time donation of $100</a></p>
</li>
</ul>
<h3 id="heading-does-freecodecamp-accept-donations-in-bitcoin-or-other-cryptocurrencies">Does freeCodeCamp accept donations in Bitcoin or other cryptocurrencies?</h3>
<p>Yes, and we would welcome your cryptocurrency donations. Please <a href="https://www.twitter.com/ossia">email quincy@freecodecamp.org</a> and he can give you a wallet address for whichever currency you'd like to donate.</p>
<h3 id="heading-can-i-mail-a-physical-check">Can I mail a physical check?</h3>
<p>Yes, we would welcome a check. You can mail it to us at:</p>
<pre><code class="language-c">Free Code Camp, Inc.
3905 Hedgcoxe Rd
PO Box 250352
Plano, TX 75025
</code></pre>
<h3 id="heading-how-can-i-set-up-matching-gifts-from-my-employer-or-payroll-deductions">How can I set up matching gifts from my employer, or payroll deductions?</h3>
<p>This varies from employer to employer, and our charity is already listed in many of the big donation-matching databases.</p>
<p>Some people are able to volunteer for freeCodeCamp and their employer matches by donating a fixed amount per hour they volunteer. Other employers will match any donations the donors make up to a certain amount.</p>
<p>If you need help with this, please email me directly: <a href="mailto:quincy@freecodecamp.org">quincy@freecodecamp.org</a>.</p>
<h3 id="heading-how-can-i-set-up-an-endowment-gift-to-freecodecamporg">How can I set up an Endowment Gift to freeCodeCamp.org?</h3>
<p>This would be a huge help. Since this is a more manual process, I can help walk you through it personally. Please email me directly at <a href="mailto:quincy@freecodecamp.org">quincy@freecodecamp.org</a>.</p>
<h3 id="heading-how-can-i-donate-stock-to-freecodecamporg">How can I donate stock to freeCodeCamp.org?</h3>
<p>We would welcome your stock donations. Please email me directly and I can help you with this, and share our charity’s brokerage account details: <a href="mailto:quincy@freecodecamp.org">quincy@freecodecamp.org</a>.</p>
<h3 id="heading-how-can-i-set-up-a-legacy-gift-to-freecodecamporg">How can I set up a Legacy gift to freeCodeCamp.org?</h3>
<p>We would be honored to put such a gift to good use helping people around the world learn to code. Depending on where you live, this may also be tax exempt.</p>
<p>You can add this language, or something like it, to your will:</p>
<blockquote>
<p>I give, devise, and bequeath [the sum of _____ USD (or other currency) OR _____ percent of the rest and residue of my estate] to freeCodeCamp.org (Free Code Camp, Inc. tax identification number 82-0779546), a charitable corporation organized under the laws of the State of Delaware, United States, currently located at 3905 Hedgcoxe Rd, PO Box 250352, Plano, Texas, 75025 United States, to be used for its general charitable purposes at its discretion.</p>
</blockquote>
<p>And I'd like to thank the Wikimedia Foundation for providing this formal language for us to use.</p>
<p>Again, if you have any questions about this process, please email me at <a href="mailto:quincy@freecodecamp.org">quincy@freecodecamp.org</a>.</p>
<h3 id="heading-can-i-donate-microsoft-rewards-points-or-bing-points">Can I donate Microsoft Rewards points or Bing points?</h3>
<p>Yes. If you use Microsoft Rewards, you can donate your points to freeCodeCamp through Give with Bing. These are sometimes called Bing points or Microsoft points.</p>
<p>You can use <a href="https://rewards.bing.com/redeem/000900000011?causeId=840-820779546&amp;publ&amp;crea&amp;pn&amp;utm_source=chatgpt.com">this Give with Bing link for Free Code Camp, Inc.</a> to make a one-time points donation, or you can set up a monthly recurring donation of your points.</p>
<p>This does not charge your credit card. Microsoft converts your points redemption into a cash donation through Benevity, and those donations help support freeCodeCamp’s servers, services, staff, and education initiatives.</p>
<h3 id="heading-can-i-get-a-donation-receipt-so-that-i-can-deduct-my-donation-from-my-taxes">Can I get a donation receipt so that I can deduct my donation from my taxes?</h3>
<p>Absolutely. Just forward the receipt from your transaction to <a href="mailto:donors@freecodecamp.org">donors@freecodecamp.org</a>, and tell us you'd like a receipt and any special instructions you may have, and we'll reply with a receipt for you.</p>
<h3 id="heading-i-set-up-a-monthly-donation-but-i-need-to-update-or-pause-the-monthly-recurrence-how-can-i-do-this"><strong>I set up a monthly donation, but I need to update or pause the monthly recurrence. How can I do this?</strong></h3>
<p>Just forward one of your monthly donation receipts to <a href="mailto:donors@freecodecamp.org">donors@freecodecamp.org</a> and tell us what you'd like us to do. We'll take care of this for you and send you confirmation.</p>
<h3 id="heading-is-there-anything-else-i-can-learn-about-donating-to-freecodecamporg">Is there anything else I can learn about donating to freeCodeCamp.org?</h3>
<p>I think that's everything. I’m just a teacher who is still learning a lot of this as I go.</p>
<p>If there is some other way you'd like to support our charity and its mission that isn't listed here, or if you have any questions at all, please email me at <a href="mailto:quincy@freecodecamp.org">quincy@freecodecamp.org</a>.</p>
<p>I am honored by the faith you have placed in freeCodeCamp.org to be a good steward of the global developer community. We will take seriously all donations, and any questions you may have about our charity. May peace be with you.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Start Your Open Source Journey: A Beginner's Guide to Contributing ]]>
                </title>
                <description>
                    <![CDATA[ Open source software has become the backbone of modern technology, powering everything from small startups to giant corporations. Contributing to open source projects is not just a way to give back to the community – it's also an excellent opportunit... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-start-your-open-source-journey-beginners-guide/</link>
                <guid isPermaLink="false">66feb1cb585b533e05ec318d</guid>
                
                    <category>
                        <![CDATA[ Open Source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ opensource ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Sahil ]]>
                </dc:creator>
                <pubDate>Thu, 03 Oct 2024 15:01:31 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1727909892455/221e81fb-d41d-463a-a1fa-d5ef2d316eaf.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Open source software has become the backbone of modern technology, powering everything from small startups to giant corporations.</p>
<p>Contributing to open source projects is not just a way to give back to the community – it's also an excellent opportunity to enhance your skills, build your portfolio, and connect with like-minded developers from around the world.</p>
<p>But for many beginners, the prospect of contributing to open source can be daunting. Common barriers include not knowing where to start, fear of making mistakes, or feeling intimidated by complex codebases.</p>
<p>This guide aims to break down these barriers and provide you with a clear path to making your first open source contribution.</p>
<h3 id="heading-what-well-cover">What we’ll cover:</h3>
<ol>
<li><p><a class="post-section-overview" href="#heading-understanding-open-source">Understanding Open Source</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-prepare-for-your-first-contribution">How to Prepare for Your First Contribution</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-find-the-right-open-source-project">How to Find the Right Open Source Project</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-understand-the-project-guidelines">Understand the Project Guidelines</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-make-your-first-contribution">How to Make Your First Contribution</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-best-practices-for-open-source-contribution">Best Practices for Open Source Contribution</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-practical-tools-for-getting-started">Practical Tools for Getting Started</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-continuing-your-open-source-journey">Continuing Your Open Source Journey</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></p>
</li>
</ol>
<h2 id="heading-understanding-open-source">Understanding Open Source</h2>
<h3 id="heading-what-is-open-source">What is open source?</h3>
<p>Open source refers to software whose source code is freely available for anyone to view, modify, and distribute. This collaborative approach to software development has led to the creation of many powerful tools and platforms we use daily, such as Linux, WordPress, and TensorFlow.</p>
<h3 id="heading-benefits-of-contributing-to-open-source-projects">Benefits of contributing to open source projects</h3>
<p>Contributing to open source projects offers numerous advantages for developers. It's an excellent way to improve your skills, exposing you to diverse coding styles and best practices. Your contributions can also help you build a strong portfolio, providing tangible proof of your abilities to potential employers.</p>
<p>The open source community offers valuable networking opportunities, connecting you with developers worldwide and potentially leading to job opportunities or mentorships. By contributing, you also give back to the community, helping improve tools that you and others rely on daily.</p>
<p>Lastly, you gain insights into project management, learning how large-scale software projects are coordinated and maintained. These benefits collectively enhance your technical skills, career prospects, and understanding of the software development ecosystem.</p>
<h2 id="heading-how-to-prepare-for-your-first-contribution">How to Prepare for Your First Contribution</h2>
<h3 id="heading-set-up-your-development-environment">Set up your development environment</h3>
<ol>
<li><p>Choose a code editor or IDE (Integrated Development Environment) that you're comfortable with. Popular options include Visual Studio Code, Sublime Text, or JetBrains IDEs.</p>
</li>
<li><p>Install Git on your computer. Git is the most widely used version control system in open source projects.</p>
</li>
</ol>
<h3 id="heading-learn-version-control-basics-git">Learn version control basics (Git):</h3>
<p>Understanding Git is crucial for contributing to open source. Here are some key concepts to start with:</p>
<ul>
<li><p>Repository: A project's folder containing all files and version history.</p>
</li>
<li><p>Clone: Creating a local copy of a repository on your machine.</p>
</li>
<li><p>Branch: A separate line of development for new features or bug fixes.</p>
</li>
<li><p>Commit: Saving changes to your local repository.</p>
</li>
<li><p>Push: Uploading your local changes to the remote repository.</p>
</li>
<li><p>Pull Request: Proposing your changes to be merged into the main project.</p>
</li>
</ul>
<p>Take some time to practice these concepts on a personal project before diving into open source contributions.</p>
<h2 id="heading-how-to-find-the-right-open-source-project">How to Find the Right Open Source Project</h2>
<h3 id="heading-identify-your-skills-and-interests">Identify your skills and interests:</h3>
<p>Start by listing your skills (programming languages, frameworks, design, documentation) and areas of interest. This will help you find projects that align with your abilities and passions.</p>
<h3 id="heading-explore-resources-for-finding-projects">Explore resources for finding projects:</h3>
<p>While we'll introduce some specific tools later in this guide, here are some general platforms you can explore to find open source projects:</p>
<ol>
<li><p>GitHub's "Explore" section</p>
</li>
<li><p>CodeTriage</p>
</li>
<li><p>Up For Grabs</p>
</li>
<li><p>First Timers Only</p>
</li>
<li><p>Your favorite software's repository (look for "good first issue" labels)</p>
</li>
</ol>
<p>Remember, the key is to find a project you're genuinely interested in, as this will keep you motivated throughout the contribution process.</p>
<h2 id="heading-understand-the-project-guidelines">Understand the Project Guidelines</h2>
<p>Before you start contributing to an open source project, it's crucial to understand the project's guidelines. These guidelines are typically found in files like <a target="_blank" href="http://CONTRIBUTING.md">CONTRIBUTING.md</a>, CODE_OF_<a target="_blank" href="http://CONDUCT.md">CONDUCT.md</a>, or in the project's README file.</p>
<h3 id="heading-read-the-contribution-guidelines">Read the Contribution Guidelines</h3>
<p>The <a target="_blank" href="http://CONTRIBUTING.md">CONTRIBUTING.md</a> file is your roadmap to becoming a valuable contributor. It usually contains information on:</p>
<ul>
<li><p>How to set up the project locally</p>
</li>
<li><p>The process for submitting contributions</p>
</li>
<li><p>Coding standards and style guides</p>
</li>
<li><p>How to report bugs or suggest new features</p>
</li>
<li><p>Communication channels for the project</p>
</li>
</ul>
<p>For example, the popular open source library React has a comprehensive <a target="_blank" href="https://github.com/facebook/react/blob/main/CONTRIBUTING.md">CONTRIBUTING.md</a> file. It includes sections on:</p>
<ul>
<li><p>Code of Conduct</p>
</li>
<li><p>Development Workflow</p>
</li>
<li><p>Bugs</p>
</li>
<li><p>Proposing a Change</p>
</li>
<li><p>Sending a Pull Request</p>
</li>
</ul>
<h3 id="heading-familiarize-yourself-with-project-structure-and-coding-standards">Familiarize Yourself with Project Structure and Coding Standards</h3>
<p>Take time to understand the project's architecture and file organization. This might involve:</p>
<ol>
<li><p>Exploring the directory structure</p>
</li>
<li><p>Reading documentation on the project's architecture</p>
</li>
<li><p>Reviewing existing code to understand the coding style</p>
</li>
</ol>
<p>Many projects use automated tools to enforce coding standards. For instance, a JavaScript project might use ESLint for code linting. You might see a configuration file like .eslintrc.js in the project root:</p>
<pre><code class="lang-javascript"><span class="hljs-built_in">module</span>.exports = {
  <span class="hljs-string">"extends"</span>: <span class="hljs-string">"airbnb"</span>,
  <span class="hljs-string">"rules"</span>: {
    <span class="hljs-string">"react/jsx-filename-extension"</span>: [<span class="hljs-number">1</span>, { <span class="hljs-string">"extensions"</span>: [<span class="hljs-string">".js"</span>, <span class="hljs-string">".jsx"</span>] }],
    <span class="hljs-string">"no-console"</span>: <span class="hljs-string">"off"</span>
  }
};
</code></pre>
<p>This configuration tells you that the project follows Airbnb's JavaScript style guide with a few custom modifications.</p>
<h2 id="heading-how-to-make-your-first-contribution">How to Make Your First Contribution</h2>
<p>Let's walk through the process of making your first contribution, using a real-life example.</p>
<h3 id="heading-choose-an-issue">Choose an Issue</h3>
<p>Suppose you've found an issue in the repository of a popular markdown editor. The issue is labeled "good first issue" and describes a bug where the preview doesn't update when the user types a backtick (`).</p>
<h3 id="heading-communicate-with-project-maintainers">Communicate with Project Maintainers</h3>
<p>Before starting work, you comment on the issue:</p>
<pre><code class="lang-plaintext">Hi there! I'm new to open source and would love to work on this issue. 
Is it still available? I'm thinking of approaching it by modifying the 
event listener for the editor component. Does that sound like a good approach?
</code></pre>
<p>A maintainer responds, welcoming you and confirming your approach.</p>
<h3 id="heading-create-a-fork-and-work-on-your-solution">Create a Fork and Work on Your Solution</h3>
<ol>
<li><p>Fork the repository to your GitHub account.</p>
</li>
<li><p>Clone your fork locally:</p>
<pre><code class="lang-plaintext"> git clone https://github.com/yourusername/markdown-editor.git
</code></pre>
</li>
<li><p>Create a new branch:</p>
<pre><code class="lang-plaintext"> git checkout -b fix-backtick-preview
</code></pre>
</li>
<li><p>Make your changes. For example, you might modify the editor component:</p>
<pre><code class="lang-javascript"> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Editor</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">React</span>.<span class="hljs-title">Component</span> </span>{
   handleChange = <span class="hljs-function">(<span class="hljs-params">event</span>) =&gt;</span> {
     <span class="hljs-keyword">const</span> { value } = event.target;
     <span class="hljs-built_in">this</span>.props.onChange(value);

     <span class="hljs-comment">// Force update preview on backtick</span>
     <span class="hljs-keyword">if</span> (value.endsWith(<span class="hljs-string">'`'</span>)) {
       <span class="hljs-built_in">this</span>.props.forceUpdatePreview();
     }
   }

   render() {
     <span class="hljs-comment">// ... rest of the component</span>
   }
 }
</code></pre>
</li>
<li><p>Commit your changes:</p>
<pre><code class="lang-plaintext"> git add .
 git commit -m "Fix: Update preview on backtick input"
</code></pre>
</li>
<li><p>Push to your fork:</p>
<pre><code class="lang-plaintext"> git push origin fix-backtick-preview
</code></pre>
</li>
</ol>
<h3 id="heading-submit-a-pull-request">Submit a Pull Request</h3>
<ol>
<li><p>Go to the original repository on GitHub.</p>
</li>
<li><p>Click "New pull request" and select your branch.</p>
</li>
<li><p>Fill in the pull request template:</p>
<pre><code class="lang-markdown"> ## Description
 This PR fixes the issue where the preview doesn't update when a backtick is typed.

 ## Changes
<span class="hljs-bullet"> -</span> Modified the Editor component to force an update when a backtick is entered

 ## Testing
<span class="hljs-bullet"> 1.</span> Open the editor
<span class="hljs-bullet"> 2.</span> Type some text followed by a backtick
<span class="hljs-bullet"> 3.</span> Verify that the preview updates immediately

 Fixes #123
</code></pre>
</li>
<li><p>Submit the pull request and wait for feedback.</p>
</li>
</ol>
<h2 id="heading-best-practices-for-open-source-contribution">Best Practices for Open Source Contribution</h2>
<h3 id="heading-write-clear-commit-messages">Write Clear Commit Messages</h3>
<p>Good commit messages are crucial for project maintainability. Follow these guidelines:</p>
<ul>
<li><p>Use the imperative mood in the subject line</p>
</li>
<li><p>Limit the subject line to 50 characters</p>
</li>
<li><p>Capitalize the subject line</p>
</li>
<li><p>Do not end the subject line with a period</p>
</li>
<li><p>Separate subject from body with a blank line</p>
</li>
<li><p>Wrap the body at 72 characters</p>
</li>
<li><p>Use the body to explain what and why vs. how</p>
</li>
</ul>
<p>Example of a good commit message:</p>
<pre><code class="lang-plaintext">Fix race condition in connection pool

- Add mutex lock when accessing shared resource
- Implement retry mechanism for failed connections

This change prevents multiple threads from accessing the connection
pool simultaneously, which was causing occasional crashes in high
load scenarios. The retry mechanism improves resilience to temporary
network issues.
</code></pre>
<h3 id="heading-document-your-changes">Document Your Changes</h3>
<p>Clear documentation is as important as good code. Here are some best practices:</p>
<ol>
<li><p>Update relevant README files</p>
</li>
<li><p>Add inline comments for complex logic</p>
</li>
<li><p>Update or create API documentation for new features</p>
</li>
</ol>
<p>For example, if you've added a new function to a Python library:</p>
<pre><code class="lang-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">validate_email</span>(<span class="hljs-params">email: str</span>) -&gt; bool:</span>
    <span class="hljs-string">"""
    Validate an email address.

    Args:
        email (str): The email address to validate.

    Returns:
        bool: True if the email is valid, False otherwise.

    Example:
        &gt;&gt;&gt; validate_email("user@example.com")
        True
        &gt;&gt;&gt; validate_email("invalid-email")
        False
    """</span>
    <span class="hljs-comment"># Implementation details...</span>
</code></pre>
<h3 id="heading-respond-to-feedback">Respond to Feedback</h3>
<p>When you receive feedback on your pull request:</p>
<ol>
<li><p>Respond promptly and politely</p>
</li>
<li><p>Address all comments, even if just to acknowledge them</p>
</li>
<li><p>If you disagree with a suggestion, explain your reasoning respectfully</p>
</li>
<li><p>Make requested changes and update your pull request</p>
</li>
</ol>
<p>For example:</p>
<p>Reviewer: "Could you add a unit test for the new validate_email function?"</p>
<p>You: "Absolutely, that's a great suggestion. I'll add a comprehensive test suite for various email formats and edge cases. I'll push the changes shortly."</p>
<h2 id="heading-practical-tools-for-getting-started">Practical Tools for Getting Started</h2>
<h3 id="heading-git-begin-your-gateway-to-open-source-contributions">Git Begin: Your Gateway to Open Source Contributions</h3>
<p>To help you take your first steps in open source, I’ve developed Git Begin, a free web application designed to make finding your first contribution opportunity as easy as possible.</p>
<h4 id="heading-how-git-begin-works">How Git Begin works:</h4>
<ol>
<li><p>Visit <a target="_blank" href="https://gitbegin.theenthusiast.dev">Git Begin</a></p>
</li>
<li><p>Select your preferred programming language or framework from the options provided.</p>
</li>
<li><p>Browse through a curated list of issues tagged as "good first issue" or "beginner-friendly" across various open source projects.</p>
</li>
<li><p>Each issue is presented with key information such as the project name, issue description, and required skills.</p>
</li>
<li><p>When you find an issue that interests you, click on it to be directed to the original issue on GitHub.</p>
</li>
</ol>
<p>Git Begin eliminates the overwhelming process of searching through countless repositories. It presents you with targeted, beginner-friendly opportunities that match your skills and interests, making it easier than ever to start your open source journey.</p>
<h3 id="heading-a-real-world-project-for-first-time-contributors">A Real-World Project for First-Time Contributors</h3>
<p>In addition to Git Begin, I’m excited to introduce you to another free, open-source project designed specifically for beginners to practice their skills and make meaningful contributions:</p>
<ul>
<li><p>Project: Job Scraper</p>
</li>
<li><p>Description: A tool for scraping job listings from multiple company career pages</p>
</li>
<li><p>Repository: <a target="_blank" href="https://github.com/The-Enthusiast-404/career-craft-scrapper">https://github.com/The-Enthusiast-404/career-craft-scrapper</a></p>
</li>
</ul>
<h4 id="heading-about-the-project">About the project:</h4>
<p>This Job Scraper project is a crucial component of a larger, ambitious platform I’m helping develop that will revolutionize the job-seeking process. This free platform aims to be a comprehensive resource for job seekers, offering a range of tools to streamline their job search and application process.</p>
<p>The Job Scraper itself aggregates job listings from various company career pages, forming the foundation of our platform. But that's just the beginning. Our vision extends to creating a full-fledged ecosystem that will include:</p>
<ol>
<li><p>A centralized job application system, allowing users to apply to multiple positions across different companies seamlessly.</p>
</li>
<li><p>AI-powered resume creation tools to help job seekers craft compelling CVs tailored to their target roles.</p>
</li>
<li><p>An innovative AI mock interviewer, capable of simulating interviews for specific roles and tech stacks, helping candidates prepare more effectively.</p>
</li>
</ol>
<p>By contributing to the Job Scraper project, you're not only gaining valuable experience in web scraping and data processing but also playing a part in building a platform that will make a real difference in people's careers.</p>
<p>It's an opportunity to work on a project with immediate practical applications while also contributing to a larger vision of making job seeking more accessible and efficient for everyone.</p>
<p>As an open source contributor, you'll have the chance to work on various aspects of this system, from improving the scraping algorithms to potentially helping develop some of the AI-powered features in the future.</p>
<p>This project offers a unique blend of practical coding experience and the satisfaction of working on a tool that will directly impact job seekers worldwide.</p>
<h4 id="heading-current-contribution-opportunities">Current contribution opportunities:</h4>
<p>There are a number of "good first issues" available, all focused on web scraping tasks. These might include:</p>
<ul>
<li><p>Adding support for scraping job listings from a new company's career page</p>
</li>
<li><p>Improving the data cleaning process for a specific job site</p>
</li>
<li><p>Enhancing the scraper's resilience against changes in a website's structure</p>
</li>
</ul>
<p>Each issue is carefully documented to help newcomers understand the task and its context within the larger project.</p>
<h4 id="heading-first-steps-in-open-source">First Steps in Open Source</h4>
<p>The Job Scraper project has become a welcoming entry point for many developers making their first open source contributions. To date, we've had several contributors who chose the repository for their first pull request, most of them being students eager to gain real-world experience.</p>
<p>These newcomers to open source have successfully added new scraping functionalities, improved existing algorithms, and enhanced our data processing capabilities.</p>
<p>Their achievements demonstrate that our repository is an ideal starting point for anyone looking to begin their open source journey, especially students wanting to apply their skills to a practical project.</p>
<h4 id="heading-how-to-get-involved">How to get involved:</h4>
<ol>
<li><p>Visit the repository: <a target="_blank" href="https://github.com/The-Enthusiast-404/career-craft-scrapper">https://github.com/The-Enthusiast-404/career-craft-scrapper</a></p>
</li>
<li><p>Read through the README and <a target="_blank" href="http://CONTRIBUTING.md">CONTRIBUTING.md</a> files to understand the project and contribution guidelines</p>
</li>
<li><p>Browse the open issues labeled "good first issue"</p>
</li>
<li><p>Comment on an issue you'd like to work on, and I will guide you through the next steps</p>
</li>
</ol>
<p>Remember, both Git Begin and the Job Scraper project are completely free resources. We're committed to providing a supportive environment for developers to learn and grow in their open source journey.</p>
<h2 id="heading-continuing-your-open-source-journey">Continuing Your Open Source Journey</h2>
<h3 id="heading-building-on-your-first-contribution">Building on your first contribution:</h3>
<p>After making your first contribution, take some time to reflect on what you've learned. Consider:</p>
<ul>
<li><p>What aspects of the process did you find challenging?</p>
</li>
<li><p>What new skills or knowledge did you gain?</p>
</li>
<li><p>How can you apply this experience to future contributions?</p>
</li>
</ul>
<p>Use these insights to guide your next steps in open source.</p>
<h3 id="heading-become-a-regular-contributor">Become a regular contributor:</h3>
<p>To become a regular contributor:</p>
<ol>
<li><p>Set up project notifications to stay informed about new issues and discussions.</p>
</li>
<li><p>Participate in project discussions, offering insights or asking questions.</p>
</li>
<li><p>Take on increasingly complex issues as you become more familiar with the project.</p>
</li>
<li><p>Help other newcomers by answering questions or reviewing their pull requests.</p>
</li>
<li><p>Consider contributing to documentation or writing tests, which are often overlooked but crucial aspects of open source projects.</p>
</li>
</ol>
<h3 id="heading-explore-new-projects">Explore new projects:</h3>
<p>As you gain confidence, don't hesitate to explore new projects:</p>
<ol>
<li><p>Look for projects in different domains to broaden your skills.</p>
</li>
<li><p>Consider contributing to tools or libraries you use in your daily work.</p>
</li>
<li><p>Explore projects with different scales - from small utilities to large frameworks.</p>
</li>
</ol>
<p>Remember, each project offers unique learning opportunities and challenges.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Contributing to open source can be an incredibly rewarding experience. It allows you to improve your coding skills, collaborate with developers worldwide, and make a meaningful impact on projects used by millions of people.</p>
<p>Remember, everyone starts somewhere. Don't be afraid to make mistakes – they're part of the learning process. The open source community is generally welcoming and supportive of newcomers.</p>
<p>We hope this guide, along with tools like Git Begin and our Job Scraper project, will help you take your first steps into the world of open source contribution. Happy coding, and we look forward to seeing your contributions!</p>
<h4 id="heading-resources">Resources:</h4>
<ul>
<li><p>Git Begin: <a target="_blank" href="https://gitbegin.theenthusiast.dev">https://gitbegin.theenthusiast.dev</a></p>
</li>
<li><p>Job Scraper Project: <a target="_blank" href="https://github.com/The-Enthusiast-404/career-craft-scrapper">https://github.com/The-Enthusiast-404/career-craft-scrapper</a></p>
</li>
<li><p>Git Documentation: <a target="_blank" href="https://git-scm.com/doc">https://git-scm.com/doc</a></p>
</li>
<li><p>GitHub Guides: <a target="_blank" href="https://guides.github.com/">https://guides.github.com/</a></p>
</li>
<li><p>Open Source Guide: <a target="_blank" href="https://opensource.guide/">https://opensource.guide/</a></p>
</li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Become an Open Source Project Maintainer ]]>
                </title>
                <description>
                    <![CDATA[ By BekahHW You might be wondering why you would want to become an open source maintainer.  Well, I can tell you from my own experience that you'll learn a lot, grow your network, and meet and collaborate with people you wouldn’t have the opportunity ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-become-an-open-source-maintainer/</link>
                <guid isPermaLink="false">66d45dd77df3a1f32ee7f7dd</guid>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 20 May 2024 17:21:07 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/05/fcc_maintain.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By BekahHW</p>
<p>You might be wondering <em>why</em> you would want to become an open source maintainer. </p>
<p>Well, I can tell you from my own experience that you'll learn a lot, grow your network, and meet and collaborate with people you wouldn’t have the opportunity to otherwise. </p>
<p>It also helps you to get a deeper understanding of the open source ecosystem – which is increasingly important, as 90% of companies use open source according to the <a target="_blank" href="https://octoverse.github.com/2022/">2022 Octoverse report</a>.</p>
<p>You can see why others enjoy being a maintainer by checking out <a target="_blank" href="https://x.com/github/status/1788632936247611690">this post from GitHub education</a>.</p>
<p>To be an open source maintainer means that you’re responsible for the project. You define its goals, work with contributors, and make decisions about the development and growth of the project. </p>
<p>Since it's your project, you can create something that’s interesting, fun, or solves a pain point in your life. Remember, it should be something you want to work on.  </p>
<h2 id="heading-how-to-become-an-open-source-maintainer">How to Become an Open Source Maintainer</h2>
<p>Becoming an open source maintainer can be a really rewarding experience that allows you to grow with a community of people. </p>
<p>Being a maintainer means that you create a public repository on the repository hosting platform of your choice (like GitHub), and you invite others to contribute to the project.</p>
<p>But before we learn more about the steps to do that, let’s explore what it means to be an open source maintainer.</p>
<h3 id="heading-what-does-an-open-source-maintainer-do">What Does an Open Source Maintainer Do?</h3>
<p>An open source maintainer is responsible for overseeing the development and growth of an open source project. This could involve:</p>
<ul>
<li>Creating a clear process and documentation for contributors</li>
<li>Reviewing and merging pull requests</li>
<li>Managing issues and feature requests</li>
<li>Writing and maintaining documentation</li>
<li>Ensuring code quality and project consistency</li>
<li>Engaging with the community and encouraging contributions</li>
</ul>
<p>Open source maintainers perform a lot of roles, so it’s helpful to come into the project with an understanding of your strengths and weaknesses and a willingness to grow. </p>
<h3 id="heading-support-your-projects-contributors">Support Your Project's Contributors</h3>
<p>Before becoming a maintainer, you should understand the open source ecosystem and how to contribute to a project. Once you’ve explored some projects, you should recognize that there are valuable paths for your own contributors. </p>
<p>Some good ways to support your contributors include:</p>
<h4 id="heading-create-clear-documentation">Create Clear Documentation</h4>
<p>Improving existing documentation or creating new guides to help others understand the project can be a really valuable way to get people involved in your project. </p>
<p>This should start with your own documentation. Make sure you have a clear README and Contribution Guidelines. Let the contributors know how they can contribute, the process for getting assigned issues and submitting Pull Requests (PRs), and the best way to communicate with you.</p>
<h4 id="heading-call-out-good-first-issues">Call Out Good First Issues</h4>
<p>Create open issues labeled "good first issue" or "beginner-friendly" to indicate to your contributors that folks who are new to open source can start here. This could include writing documentation, making updates, fixing bugs, and more. Just make sure that you clearly write the steps for completing the issue.</p>
<h4 id="heading-give-constructive-feedback">Give Constructive Feedback</h4>
<p>Offer timely, specific, and helpful feedback on contributions to help your contributors learn and grow.</p>
<h4 id="heading-recognize-your-contributors">Recognize Your Contributors</h4>
<p>Recognition is not only a great motivator, but it shows appreciation to your contributors. Thank them on social media, in a blogpost, or in some other meaningful way.</p>
<h4 id="heading-create-a-welcoming-environment">Create a Welcoming Environment</h4>
<p>Create a supportive environment for your contributors by always being respectful in your communication and including a Code of Conduct in your repository.</p>
<h3 id="heading-provide-your-contributors-with-opportunities">Provide Your Contributors with Opportunities</h3>
<p>You can’t have contributors if you don’t provide them with opportunities. So what types of tasks can they do? While this will ultimately depend on the needs of your project, here are some common ways for contributors to support your project:</p>
<ul>
<li><strong>Submitting Pull Requests</strong>: They can contribute code, documentation, or other improvements to address open issues for the project. Consider adding a PR template to make the process easier for everyone.</li>
<li><strong>Writing Issues</strong>: Contributors can identify and document bugs, create feature requests, or give you feedback on your project. Adding issue templates makes creating issues easier for both you and your contributors.</li>
<li><strong>Writing Documentation</strong>: Adding to existing documentation or creating guides, tutorials, and or blog posts to help users and contributors understand the project can be a good way to get non-code contributions and to extend awareness of your project.</li>
<li><strong>Providing Support</strong>: Having contributors help each other is a great way to strengthen your community and to take pressure off of you as the maintainer. They can answer questions, offer guidance, and help troubleshoot problems. They can also share their experiences and provide feedback to other contributors.</li>
<li><strong>Reviewing Code</strong>: Checking out pull requests and providing feedback on the submission is another great way to provide support. If you have a specific way of reviewing code, include that in your documentation to empower others to be able to do it as well.</li>
</ul>
<h3 id="heading-engage-with-the-community">Engage with the Community</h3>
<p>Building relationships with your contributors is a great way to support the community, recognize their impact, and to help grow your project. </p>
<p>You can do this by: </p>
<ul>
<li><strong>Joining Discussions</strong>: Participate in issue discussions, pull request reviews, and community forums.</li>
<li><strong>Providing Support</strong>: Answer questions, provide resources, and help new contributors find their way.</li>
<li><strong>Creating Meetings</strong>: You don’t have to do this, but it’s a good way to create engagement and provide support for your contributors, especially in the early days of your project. </li>
</ul>
<p>Being active and supportive in your community can also help to build your reputation as a maintainer.</p>
<h3 id="heading-learn-and-adapt">Learn and Adapt</h3>
<p>Once you become a maintainer, the learning doesn't stop. You can improve your skills and adapt to new challenges by:</p>
<ul>
<li><strong>Understanding Your Community</strong>: Hanging out with your community is a great way to understand your project through their perspective. It also strengthens your relationship with them and provides more opportunities to grow.</li>
<li><strong>Seeking Feedback</strong>: Regularly seek feedback from your contributors to improve your work or learn how they understand your project.</li>
<li><strong>Learning from Others</strong>: I truly believe that we all can learn from each other, no matter what stage of our journey we’re on. Look at how your community members write issues and pull requests, communicate with each other, and provide feedback.</li>
</ul>
<p>Being a maintainer is a continuous learning journey, and the more practice you get and the knowledge you seek, the better you’ll get at it. </p>
<h2 id="heading-how-to-setup-your-open-source-project">How to Setup Your Open Source Project</h2>
<p>There are some key components to include when setting up your project. </p>
<h3 id="heading-create-a-readme">Create a README</h3>
<p>A README file introduces your project, provides setup instructions, images, code examples, and links to essential resources, and is the first impression you give to your contributors. </p>
<p>Here are some things you should include in your README:</p>
<ul>
<li>Project title and summary</li>
<li>Brief setup instructions</li>
<li>Images of the app and code examples</li>
<li>Technologies and tools used</li>
<li>Links to contributing guidelines, code of conduct, open source license, and community channels (Discord, Slack, GitHub Discussions)</li>
</ul>
<h3 id="heading-create-an-installation-guide">Create an Installation Guide</h3>
<p>If your project requires running code, this guide should include step-by-step instructions for forking, cloning, installing dependencies, setting up environment variables and databases, and running the project locally so new contributors can quickly get started. </p>
<p>Details should include:</p>
<ul>
<li>Forking the repository</li>
<li>Cloning the repository</li>
<li>Installing dependencies</li>
<li>Setting up environment variables and database (if applicable)</li>
<li>Running the project locally</li>
</ul>
<h3 id="heading-have-an-open-source-software-license">Have an Open Source Software License</h3>
<p>An open source license gives legal permissions for others to use, distribute, and contribute to your project. <a target="_blank" href="https://www.freecodecamp.org/news/permissive-and-protective-software-licenses/">There are many different types of licenses</a>, and choosing the right one depends on your needs. The MIT license is a popular one on GitHub.</p>
<h3 id="heading-create-a-code-of-conduct">Create a Code of Conduct</h3>
<p>A code of conduct is important for keeping your community safe and supportive. It outlines acceptable behaviors, consequences for violations, and how to create a welcoming environment for all contributors. </p>
<p>Some things it might include:</p>
<ul>
<li><strong>Pledge</strong>: Establishes a welcoming environment</li>
<li><strong>Standards</strong>: Acceptable and unacceptable behaviors</li>
<li><strong>Enforcement</strong>: Consequences for violations</li>
</ul>
<p>As an example, here's <a target="_blank" href="https://www.freecodecamp.org/news/code-of-conduct/">freeCodeCamp's code of conduct</a>.</p>
<h3 id="heading-write-up-some-contributing-guidelines">Write Up Some Contributing Guidelines</h3>
<p>These guidelines help contributors understand how to get involved, including instructions for setting up the project, reporting issues, creating pull requests, and how to communicate with maintainers. </p>
<p>They should include:</p>
<ul>
<li>Project setup instructions</li>
<li>Guidelines for creating issues and pull requests</li>
<li>Commit and style conventions</li>
<li>Communication pathways, including links to discord, discussion boards, or other spaces for community interaction.</li>
</ul>
<h2 id="heading-takeaways">Takeaways</h2>
<p>Becoming a maintainer can be a great learning experience. You don’t ever have to get it perfect, but if you treat people with respect, create clear lines of communication, and consider it a journey you’re taking together, you’ll be providing with really unique opportunities for growing and finding a community.</p>
<p>If you're ready to take the next step and want a comprehensive course to help you navigate the journey, check out <a target="_blank" href="https://oss.fyi/maintainer-course">OpenSauced’s Introduction to Maintainer Course</a>. This course will provide you with an in-depth understanding of what it means to be a maintainer, provide you with guides to make the experience good for you and your contributors, and walk you through how to get started today.  </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Quincy's 5 freeCodeCamp Resources Worth Your Time Email – You Need to Re-subscribe Real Quick ]]>
                </title>
                <description>
                    <![CDATA[ I've been sending my "5 freeCodeCamp resources worth your time" for 8 years now. That's nearly 400 emails that I've authored and sent out over the years. Don't worry. I'm not tired. I love doing this, I'm going to keep working hard to share helpful ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/quincys-5-worth-your-time-update/</link>
                <guid isPermaLink="false">66b8d55eeb5c4db85a0b340c</guid>
                
                    <category>
                        <![CDATA[ community ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Thu, 18 Apr 2024 16:43:10 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/04/rinck-content-studio-jF-8LUJMrdk-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>I've been sending my "5 freeCodeCamp resources worth your time" for 8 years now. That's nearly 400 emails that I've authored and sent out over the years.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/04/8-Years-of-Email-Newsletter.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Don't worry. I'm not tired. I love doing this, I'm going to keep working hard to share helpful learning resources with you.</p>
<p>I just need to make sure you're actually reading these emails. <a target="_blank" href="https://docs.google.com/forms/d/e/1FAIpQLSfwh2v6SoldZiFOE8yE_r7OqbJmBjH6i2Z9PiFhZfrV8k48vg/viewform?usp=sf_link">Please fill out this Google form real quick. It will take less than 1 minute.</a></p>
<h3 id="heading-why-im-asking-people-to-re-subscribe">Why I'm asking people to re-subscribe</h3>
<p>Each week I send this email to all 7 million people who have opted in to receive it. This isn't cheap. Even with the cheapest email service on Earth (Amazon's Simple Email Service) it still costs our charity about $700 each week.</p>
<p>Now – I don't know exactly how many people open these emails. (Out of respect for your privacy, I refuse to add a tracking pixel or analytics to my emails, and instead send them in plain text.) But I suspect not all 7 million of you actually open them. 🙂</p>
<p>Again, if you want to keep getting these emails from me each week, <a target="_blank" href="https://docs.google.com/forms/d/e/1FAIpQLSfwh2v6SoldZiFOE8yE_r7OqbJmBjH6i2Z9PiFhZfrV8k48vg/viewform?usp=sf_link">please fill out this Google form real quick. It will take less than 1 minute.</a></p>
<p>Thanks, and happy coding! 🏕️</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Run Open Source LLMs Locally Using Ollama ]]>
                </title>
                <description>
                    <![CDATA[ This article will guide you through downloading and using Ollama, a powerful tool for interacting with open-source large language models (LLMs) on your local machine.  Unlike closed-source models like ChatGPT, Ollama offers transparency and customiza... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-run-open-source-llms-locally-using-ollama/</link>
                <guid isPermaLink="false">66bb880c3e3fa59ecfecb847</guid>
                
                    <category>
                        <![CDATA[ Artificial Intelligence ]]>
                    </category>
                
                    <category>
                        <![CDATA[ LLM&#39;s  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Sahil ]]>
                </dc:creator>
                <pubDate>Tue, 02 Apr 2024 09:25:07 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/04/Neon-Green-Motivational-Quote--1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>This article will guide you through downloading and using Ollama, a powerful tool for interacting with open-source large language models (LLMs) on your local machine. </p>
<p>Unlike closed-source models like ChatGPT, Ollama offers transparency and customization, making it a valuable resource for developers and enthusiasts.</p>
<p>We'll explore how to download Ollama and interact with two exciting open-source LLM models: LLaMA 2, a text-based model from Meta, and LLaVA, a multimodal model that can handle both text and images.</p>
<h2 id="heading-how-to-download-ollama">How to Download Ollama</h2>
<p>To download Ollama, head on to the official website of <a target="_blank" href="https://ollama.com/">Ollama</a> and hit the download button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/03/ollama-homepage-download.png" alt="Image" width="600" height="400" loading="lazy">
<em>ollama homepage</em></p>
<p>Ollama supports 3 different operating systems, and the Windows version is in preview mode.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/03/ollama-download-screen.png" alt="Image" width="600" height="400" loading="lazy">
<em>ollama download page</em></p>
<p>You can choose the executable file according to your OS and after successfully downloading the executable file, you can install it by running the executable file.</p>
<p>For Linux users, you have to execute the command that is being shown on the screen instead of downloading an executable file.</p>
<h2 id="heading-how-to-run-ollama">How to Run Ollama</h2>
<p>To show you the power of using open source LLMs locally, I'll present multiple examples with different open source models with different use-cases. This will help you to use any future open source LLM models with ease. </p>
<p>So, lets get started with the first example!</p>
<h3 id="heading-how-to-run-the-llama2-model-from-meta">How to Run the LLama2 Model from Meta</h3>
<p>Llama 2 model is an open-source LLM model from Meta and we'll interact with it like we'd do with ChatGPT (free version), only text based interaction.</p>
<p>First, let's download the model using the following command:</p>
<pre><code class="lang-bash">ollama run llama2
</code></pre>
<p>You should see a output similar to this after the downloading of the model.</p>
<pre><code class="lang-bash">pulling manifest
pulling 8934d96d3f08... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏ 3.8 GB
pulling 8c17c2ebb0ea... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏ 7.0 KB
pulling 7c23fb36d801... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏ 4.8 KB
pulling 2e0493f67d0c... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏   59 B
pulling fa304d675061... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏   91 B
pulling 42ba7f8a01dd... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏  557 B
verifying sha256 digest
writing manifest
removing any unused layers
success
&gt;&gt;&gt; Send a message (/? <span class="hljs-keyword">for</span> <span class="hljs-built_in">help</span>)
</code></pre>
<p>Now, its should ask you to send a message or prompt. Let's ask llama2 "What can you do for me?" (You can ask whatever you want).</p>
<p>If you asked the same question as above, then you should get a reply like this:</p>
<pre><code class="lang-bash">&gt;&gt;&gt; What can you <span class="hljs-keyword">do</span> <span class="hljs-keyword">for</span> me?

As a responsible AI language model, I am here to assist you with any questions or tasks you may have. Here are some examples of things I can <span class="hljs-built_in">help</span>
with:

1. Answering questions: I can provide information on a wide range of topics, from science and technology to <span class="hljs-built_in">history</span> and culture.
2. Generating ideas: I can <span class="hljs-built_in">help</span> you brainstorm ideas <span class="hljs-keyword">for</span> creative projects, or provide suggestions <span class="hljs-keyword">for</span> solving problems.
3. Writing assistance: I can <span class="hljs-built_in">help</span> you with writing tasks such as proofreading, editing, and suggesting alternative words or phrases.
4. Translation: I can translate text from one language to another.
5. Summarizing content: I can summarize long pieces of text, such as articles or documents, into shorter, more digestible versions.
6. Creativity: I can <span class="hljs-built_in">help</span> you generate creative ideas <span class="hljs-keyword">for</span> stories, poems, or other forms of writing.
7. Language learning: I can assist you <span class="hljs-keyword">in</span> learning a new language by providing grammar explanations, vocabulary lists, and practice exercises.
8. Chatting: I<span class="hljs-string">'m here to chat with you and provide a response to any question or topic you'</span>d like to discuss.

Please <span class="hljs-built_in">let</span> me know <span class="hljs-keyword">if</span> there is anything specific you would like me to <span class="hljs-built_in">help</span> you with.

&gt;&gt;&gt; Send a message (/? <span class="hljs-keyword">for</span> <span class="hljs-built_in">help</span>)
</code></pre>
<p>So that is the response that I got from llama2.</p>
<p>To exit the program, you can type <code>/exit</code>.</p>
<p>Let's now run a multi-modal model where you can send an image and ask questions based on that.</p>
<h3 id="heading-how-to-run-the-llava-model">How to Run the LLaVA Model</h3>
<p>LLaVA is a open-source multi-modal LLM model. A multi-modal model can take input of multiple types and generate a response accordingly.</p>
<p>Using this model, we are now going to pass an image and ask a question based on that.</p>
<p>So, first things first, lets download the model:</p>
<pre><code class="lang-bash">ollama run llava
</code></pre>
<p>After successfully downloading the model, you should see something like this in the terminal:</p>
<pre><code class="lang-bash">pulling manifest
pulling 170370233dd5... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏ 4.1 GB
pulling 72d6f08a42f6... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏ 624 MB
pulling 43070e2d4e53... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏  11 KB
pulling c43332387573... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏   67 B
pulling ed11eda7790d... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏   30 B
pulling 7c658f9561e5... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████▏  564 B
verifying sha256 digest
writing manifest
removing any unused layers
success
&gt;&gt;&gt; Send a message (/? <span class="hljs-keyword">for</span> <span class="hljs-built_in">help</span>)
</code></pre>
<p>I'll be using this <a target="_blank" href="https://www.pexels.com/photo/aerial-view-of-vehicles-on-a-street-and-a-man-on-a-crosswalk-16456833/">image</a> from <a target="_blank" href="https://www.pexels.com/">pexels.com</a>.</p>
<p>This is the output I got from LLaVA:</p>
<pre><code class="lang-bash">&gt;&gt;&gt; What<span class="hljs-string">'s in this image? ./Downloads/test-image-for-llava.jpeg
Added image '</span>./Downloads/test-image-for-llava.jpeg<span class="hljs-string">'
 The image shows a person walking across a crosswalk at an intersection. There are traffic lights visible, and the street has a bus parked on one
side. The road is marked with lane markings and a pedestrian crossing signal. The area appears to be urban and there are no visible buildings or
structures in the immediate vicinity of the person.

&gt;&gt;&gt; Send a message (/? for help)</span>
</code></pre>
<p>You can see that its an accurate explanation of the image.</p>
<p>Feel free to try something else and have fun with it.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>That's it! With Ollama, you can experiment with powerful LLMs like LLaMA 2 and LLaVA on your own machine. </p>
<p>Download Ollama and explore the exciting world of open-source large language models!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How Do Open Source Software Lifecycles Work? ]]>
                </title>
                <description>
                    <![CDATA[ Software projects follow identifiable milestones as they move towards a successful completion. If you want to give your project the best chances of success, it's important to understand what those milestones mean and how they're defined. This article... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/understanding-open-source-software-lifecycles/</link>
                <guid isPermaLink="false">66b99657c39234149cf0110b</guid>
                
                    <category>
                        <![CDATA[ lifecycle methods ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ David Clinton ]]>
                </dc:creator>
                <pubDate>Tue, 26 Mar 2024 17:01:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/03/danial-igdery-FCHlYvR5gJI-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Software projects follow identifiable milestones as they move towards a successful completion. If you want to give your project the best chances of success, it's important to understand what those milestones mean and how they're defined.</p>
<p>This article comes from my Complete LPI Open Source Essentials Exam Study Guide <a target="_blank" href="https://www.udemy.com/course/complete-lpi-open-source-essentials-exam-study-guide/?referralCode=05B999CE18EF4D6E243C">Udemy course</a> and <a target="_blank" href="https://www.amazon.com/dp/B0CK3Q8DCF">book</a>. You can also <a target="_blank" href="https://youtu.be/eZ_4DLVxs7Q">view the video version</a>.</p>
<h2 id="heading-what-are-software-releases">What are Software Releases?</h2>
<p>There are several types of software releases and some related versioning methods used to keep track of software changes and to communicate them to users. We'll start with releases.</p>
<ul>
<li>There's the <strong>alpha release</strong> – an initial version of software that is typically not feature-complete and is not intended for use by the general public. It is used for testing and internal use only. </li>
<li>A <strong>beta release</strong> is a pre-release version of software that is feature-complete but may still have bugs or other issues. It is released to a limited audience for testing and feedback before the final release. </li>
<li>Next will be a <strong>release candidate</strong>, which is a version of software that is considered stable and ready for release, pending final testing and bug fixes. </li>
<li>And finally you'll produce a <strong>general availability release</strong> as the final version of software that's released to the general public.</li>
</ul>
<h2 id="heading-what-is-software-versioning">What is Software Versioning?</h2>
<p>Software versioning (sometimes known as semantic versioning) is the practice of assigning unique version numbers to different releases of software. </p>
<p>Here's a useful example:</p>
<pre><code>vmlinuz<span class="hljs-number">-5.19</span><span class="hljs-number">.0</span><span class="hljs-number">-40</span>-generic
</code></pre><p>In some approaches, the first number in the version number ("5" in this case) is the major version. A major version change indicates significant changes or new features that are not backward compatible with previous versions. </p>
<p>The second number ("19") is the minor version. A minor version change indicates new features or functionality that are backward compatible with previous versions.</p>
<p>The third number in the version number ("0") is the patch version. A patch version change indicates bug fixes or minor changes that are backward compatible with previous versions.</p>
<p>Why distinguish between major and minor releases? Major releases are typically used for significant changes or new features that are not backward compatible with previous versions. Major releases are usually announced to users and customers with a lot of fanfare, as they represent a significant milestone in the development of the software.</p>
<p>Minor releases, on the other hand, are used for smaller changes or new features that are backward compatible with previous versions. Minor releases are typically released more frequently and are intended to provide users with incremental improvements to the software.</p>
<h2 id="heading-what-does-backward-compatibility-mean">What Does Backward Compatibility Mean?</h2>
<p>Backward compatibility is the ability of a newer version of software or system to work with files, data, and other components created in an older version of that software or system. This means that users can upgrade to the newer version without losing access to their existing data or files.</p>
<p>For example, let's assume a user has created a document in an older version of a word processing program. If the newer version of the program is backward compatible, the user can open and edit the same document without any issues. This is because the newer version of the program is designed to read and interpret the file format used in the older version. </p>
<p>However, if the newer version of the program is not backward compatible, the user may not be able to open or edit the file created in the older version without first converting or re-creating it in the newer version. This can be a significant inconvenience for users and can lead to compatibility issues and data loss.</p>
<p>Here are some more quick – but important – definitions.</p>
<h2 id="heading-feature-freeze">Feature Freeze</h2>
<p>Feature freeze is a stage in the software development process where no new features are added to the product or project. It is typically implemented as a deadline by which all new features must be completed and approved before the release of the software product.</p>
<p>The primary goal of a feature freeze is to stabilize the software product in preparation for release. By setting a feature freeze deadline, developers can focus on completing and testing existing features rather than introducing new ones. This allows time for rigorous testing and bug fixing, improving the overall quality and reliability of the software product.</p>
<h2 id="heading-roadmaps">Roadmaps</h2>
<p>A roadmap is a high-level strategic document that outlines the goals, objectives, and timeline for a software product's development. It provides a visual representation of the product development plan, outlining key milestones and the expected timeline for completion. </p>
<p>Roadmaps are useful for communicating the overall direction of a software product to stakeholders, including developers, product managers, investors, and customers.</p>
<h2 id="heading-milestones">Milestones</h2>
<p>Milestones are specific, measurable achievements that mark progress towards the completion of a software product. They're typically set at regular intervals throughout the development process and are used to track progress and ensure that the project stays on schedule. </p>
<p>Examples of milestones might include the completion of a specific feature, the successful completion of a testing phase, or the release of a beta version of the software product.</p>
<h2 id="heading-changelog">Changelog</h2>
<p>A changelog is a document that lists the changes made to a software product over time, including bug fixes, new features, and other updates. Changelogs allow developers and other stakeholders to understand what's been updated and when. </p>
<p>Changelogs are particularly useful for software products that are updated frequently or have a large number of contributors.</p>
<h2 id="heading-long-term-support-lts">Long Term Support (LTS)</h2>
<p>Long term support refers to a software version that is designated for longer-term support and maintenance, typically for a period of several years. During this time, the software vendor provides ongoing support, including bug fixes, security updates, and other maintenance activities. </p>
<p>LTS versions are often used in enterprise environments where stability and reliability are critical. In April of each even year, for example, Canonical will release an LTS version of Ubuntu. These versions are normally supported for four or five years.</p>
<h2 id="heading-end-of-life-eol">End of Life (EOL)</h2>
<p>On the other hand, end-of-life refers to a point in time when a software version is no longer supported by the vendor. This means that the vendor will no longer provide updates or fixes for the software, and any security vulnerabilities or bugs that are discovered will not be addressed. This can leave users with unsupported software that may be prone to security risks and other issues.</p>
<p>When a software product reaches its end-of-life, it is typically retired, and users are encouraged to upgrade to a newer version or switch to a different product. The EOL process is often gradual, with the vendor providing advance notice and guidance to users to help them migrate to a new version or product.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>You've seen how it's important to understand the stages through which successful software projects will move. And this isn't just theoretical, because this knowledge gives you the tools to track your progress and quickly identify when things are going off rails.</p>
<p><em>This article comes from my</em> <a target="_blank" href="https://www.udemy.com/course/complete-lpi-open-source-essentials-exam-study-guide/?referralCode=05B999CE18EF4D6E243C"><em>Complete LPI</em></a> Open Source <em>Essentials Study Guide course__.</em> <em>And there's much more technology goodness available at <a target="_blank" href="https://bootstrap-it.com/">bootstrap-it.com</a></em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Ensure Open Source License Compliance in Your Business ]]>
                </title>
                <description>
                    <![CDATA[ If you're using open source code in your operations, you'll want to manage things properly or potentially face legal issues, financial penalties, and damage to your reputation.  You don't need a law degree to avoid problems, but you should definitely... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/ensure-open-source-license-compliance-in-business/</link>
                <guid isPermaLink="false">66b995db77e922646120d72d</guid>
                
                    <category>
                        <![CDATA[ business ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ David Clinton ]]>
                </dc:creator>
                <pubDate>Tue, 05 Mar 2024 11:01:08 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/03/romain-dancre-doplSDELX7E-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you're using open source code in your operations, you'll want to manage things properly or potentially face legal issues, financial penalties, and damage to your reputation. </p>
<p>You don't need a law degree to avoid problems, but you should definitely familiarize yourself with some basic principles.</p>
<p>This article comes from my Complete LPI Open Source Essentials Exam Study Guide <a target="_blank" href="https://www.udemy.com/course/complete-lpi-open-source-essentials-exam-study-guide/?referralCode=05B999CE18EF4D6E243C">Udemy course</a> and <a target="_blank" href="https://www.amazon.com/dp/B0CK3Q8DCF">book</a>. You can also view the video version here:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/u3zGMRAPAiI" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p>We'll begin with some best practices:</p>
<ul>
<li>Conduct an inventory of all open source software used in your business workflow, including third-party libraries and dependencies. This will help you identify the licenses and terms of use associated with each piece of software. You'll also want to implement a system for tracking licenses and their terms of use. This can include using tools or software that automatically identify open source software and their associated licenses.</li>
<li>Create a license policy that outlines the procedures and guidelines for using open source software in your business workflow. This policy should be communicated to all employees and stakeholders involved in the software development process.</li>
<li>Use only approved open source licenses that comply with your license policy. This can help you avoid legal issues and ensure compliance with regulations.</li>
<li>Monitor changes to open source software licenses and updates to ensure continued compliance. This can include subscribing to notifications or alerts about license changes and updating your license inventory accordingly.</li>
<li>Document all steps taken to ensure compliance with open source licenses, including license reviews, approvals, and renewals. This documentation can help you demonstrate compliance in the event of an audit or legal challenge.</li>
</ul>
<p>That sounds like a lot of work. Well, you might consider creating an Open Source Program Office. Let's see how that works.</p>
<h2 id="heading-open-source-program-offices-ospo">Open Source Program Offices (OSPO)</h2>
<p>An OSPO is an organizational unit or team within a company or organization that's responsible for managing open source software and its use within the organization.</p>
<p>An OSPO helps organizations effectively manage the use of open source software by providing guidelines, policies, and procedures that ensure legal and regulatory compliance, proper usage, and contribution to the open source community. </p>
<p>The OSPO can also help organizations to establish a strategic direction for open source use, including identifying opportunities for collaboration with other organizations or contributing to industry-wide initiatives.</p>
<p>Typically, an OSPO is responsible for ensuring that the organization complies with the terms of open source licenses, including understanding license obligations, tracking license usage, and managing compliance risk. It'll also work to:</p>
<ul>
<li>Build relationships with the open source community, contributing to projects, and promoting internal contributions to open source projects</li>
<li>Develop and implement policies and governance frameworks that guide the organization's use of open source software</li>
<li>Develop and execute strategic plans for open source software use within the organization</li>
<li>Provide training and education to employees and stakeholders on the use of open source software, including compliance, governance, and community engagement.</li>
</ul>
<p>There are some useful business tools that can help simplify the administration of your software resources.</p>
<h2 id="heading-software-package-data-exchanges-spdx">Software Package Data Exchanges (SPDX)</h2>
<p>A Software Package Data Exchange, for instance, is a standard format for exchanging data related to software packages, including open source licenses, copyrights, and other related information. </p>
<p>SPDX is intended to simplify the sharing of information between developers, software vendors, and other stakeholders in the software supply chain. SPDX provides a common language for describing software packages and their associated licenses, making it easier to understand the terms of use and comply with license obligations.</p>
<p>The primary purpose of SPDX is to promote license compliance and facilitate the management of open source software. SPDX allows developers and organizations to easily identify the open source software components in their software products and track license obligations associated with each component.</p>
<h2 id="heading-the-software-bill-of-materials">The Software Bill of Materials</h2>
<p>A Software Bill of Materials (SBOM) is a list of all the components and dependencies that make up a software application or system. The SBOM provides information about the software's components, such as open source libraries, commercial software components, and proprietary code. </p>
<p>The goal of an SBOM is to improve transparency and accountability in software supply chains by providing a detailed inventory of the software components used in a product.</p>
<p>An SBOM typically includes information about the version, license, and origin of each component. An SBOM can help identify security vulnerabilities in a software system. By providing a complete list of all software components, developers and security teams can more easily identify and address security risks. </p>
<p>An SBOM can also helps ensure compliance with open source licenses and other legal requirements by providing information about the licenses associated with each component. And an SBOM can help manage supply chain risks by providing visibility into the software components used in a product. By knowing what components are used and where they come from, companies can more easily assess the risks associated with each component and make informed decisions about their use.</p>
<p>We should also take some time to talk about lawyers. Or, at least, the things that might get lawyers all excited. By which I mean to say that open source business models can carry legal risks, including risks related to product liability and export regulations. It's important for companies that use or distribute open source software to understand these risks and take appropriate measures to manage them.</p>
<h2 id="heading-product-liability">Product Liability</h2>
<p>Product liability is a legal concept that holds manufacturers or distributors of products liable for any harm caused to consumers by defects in the products. When a company uses or distributes open source software as part of its products, it assumes responsibility for any defects in the software that could cause harm to consumers. This could result in legal claims for product liability, which can be costly and damaging to the company's reputation.</p>
<p>To manage product liability risks associated with open source software, companies should implement effective quality assurance processes to ensure that the software is free from defects and meets industry standards. Companies should also work closely with their legal teams to understand the legal implications of using and distributing open source software, including any potential product liability risks.</p>
<p>Export regulations are another area of concern for companies that use or distribute open source software. Export regulations are laws and regulations that govern the export of goods and technology from one country to another. These regulations can restrict the export of certain types of technology or require companies to obtain licenses or certifications before exporting certain types of products.</p>
<p>Like any other technology, open source software can be subject to export regulations. Companies that use or distribute open source software should be aware of these regulations and ensure that their use and distribution of open source software comply with all applicable laws and regulations.</p>
<h2 id="heading-mergers-and-acquisitions">Mergers and Acquisitions</h2>
<p>One more lawyerly thing: mergers and acquisitions can have a significant impact on the use of open source software within organizations. When two companies merge or one company acquires another, they may have different approaches to the use of open source software and different policies and practices for managing open source licensing and compliance. This can create challenges and risks related to the integration of open source software.</p>
<p>One potential impact is that the acquiring company may need to conduct due diligence to understand the open source licensing and compliance practices of the acquired company. This can be a complex and time-consuming process, especially if the acquired company has a large and diverse software portfolio. The merged company may also need to reconcile different approaches to open source licensing and compliance. For example, if one company has a more permissive approach to open source licensing than the other, the merged company may need to develop a new policy or approach that takes both approaches into account.</p>
<p>Mergers and acquisitions can also impact the use of open source software in terms of product development and innovation. For example, if the acquiring company has a different technology stack or development process than the acquired company, it may need to integrate or replace open source components used by the acquired company. This can result in delays and added costs.</p>
<p>And don't forget that mergers and acquisitions can also impact the open source community. If a company that is an active contributor to an open source project is acquired, the new company may change its approach to the project or reduce its contributions. This can have a negative impact on the project and the community that supports it.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>The bottom line? Building software can be fun and profitable and can change people's lives in positive ways. But, if you're not careful, it can also get you into a lot of trouble. </p>
<p>So take some time to educate yourself on your business and compliance responsibilities. </p>
<p><em>This article comes from my</em> <a target="_blank" href="https://www.udemy.com/course/complete-lpi-open-source-essentials-exam-study-guide/?referralCode=05B999CE18EF4D6E243C"><em>Complete LPI</em></a> Open Source <em>Essentials Study Guide course__.</em> <em>And there's much more technology goodness available at <a target="_blank" href="https://bootstrap-it.com/">bootstrap-it.com</a></em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How Do Open Source Licenses Work? Permissive and Protective Software Licenses Explained ]]>
                </title>
                <description>
                    <![CDATA[ If you're going to use or work with open source resources, you'll need to understand the fine print on various classes of an open source license. Otherwise, how can you be sure you're not infringing on someone else's rights?  This article will introd... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/permissive-and-protective-software-licenses/</link>
                <guid isPermaLink="false">66b9962194b336889c60043e</guid>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ David Clinton ]]>
                </dc:creator>
                <pubDate>Wed, 28 Feb 2024 17:07:49 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/02/katerina-pavlyuchkova-FQYCJSqER_0-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you're going to use or work with open source resources, you'll need to understand the fine print on various classes of an open source license. Otherwise, how can you be sure you're not infringing on someone else's rights? </p>
<p>This article will introduce you to the big players and concepts in the open source license universe.</p>
<p>This article comes from my Complete LPI Open Source Essentials Exam Study Guide <a target="_blank" href="https://www.udemy.com/course/complete-lpi-open-source-essentials-exam-study-guide/?referralCode=05B999CE18EF4D6E243C">Udemy course</a> and <a target="_blank" href="https://www.amazon.com/dp/B0CK3Q8DCF">book</a>. You can also view the video version here:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/G7S5wY0PKkw" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p>In broad terms, we'll divide those classes into two categories. We'll discuss both permissive and restrictive licenses here.</p>
<h2 id="heading-working-with-permissive-software-licenses">Working with Permissive Software Licenses</h2>
<p>Permissive open source software licenses are a type of software license that allows for a wide range of uses of the licensed software. Some examples of permissive open source software licenses — that we'll explore in greater depth a bit later — include Apache, BSD, and MIT.</p>
<p>In general, permissive open source software licenses give you the right to use the software for any purpose – including commercial purposes – and the right to modify the software to suit your needs. </p>
<p>You'll get the right to distribute the software to others, either in its original form or as a modified version and the right to sublicense the software to others, allowing them to exercise the same rights as the original licensee. You'll also have the right to use any patents or trademarks associated with the software, as long as they comply with any applicable laws.</p>
<p>At the same time, permissive open source software licenses also impose certain obligations on users. You might be required to include a copyright notice when making further copies or distributions of the software. </p>
<p>You could also need to include a copy of the license in subsequent distributions. You might need to disclaim any warranties or liability for damages that may arise from the use of the software. And you'll often have to give attribution to the original software authors or contributors. Although there might also be times when using the names of those authors without explicit permission is <em>forbidden</em>.</p>
<p>The bottom line: make sure you read the fine print.</p>
<p>Now let's take a more detailed look at some actual permissive licenses.</p>
<h3 id="heading-the-2-clause-bsd-license">The 2-Clause BSD License</h3>
<p>The 2-Clause BSD License, also known as the Simplified BSD License, is a permissive open source software license that allows for a wide range of uses of the licensed software. </p>
<p>The license permits users to use, copy, modify, and distribute the software, as long as they include a copyright notice and disclaimer of any warranties or liability. The 2-Clause BSD License is commonly used for software that is released as open source but also used in proprietary software products.</p>
<h3 id="heading-the-3-clause-bsd-license">The 3-Clause BSD License</h3>
<p>The 3-Clause BSD License, also known as the New BSD License, is similar to the 2-Clause BSD License but includes an additional clause that requires users to include a copy of the license and copyright notice in any distributions of the software. This license is commonly used for open source software projects that want to ensure proper attribution and give credit to the original authors or contributors.</p>
<p>"BSD", by the way, stands for "Berkeley Software Distribution". The license is associated with the version of the Unix operating system that was developed at the University of California, Berkeley in the late 1970s and early 1980s.</p>
<h3 id="heading-the-mit-license">The MIT License</h3>
<p>The MIT License is a permissive open source software license that allows users to use, copy, modify, and distribute the software, as long as they include a copyright notice and disclaimer of any warranties or liability. </p>
<p>The license is similar to the 2-Clause BSD License but is often preferred for its brevity and simplicity. The MIT License is commonly used for open source software projects, especially those related to web development and programming languages.</p>
<p>"MIT", of course, stands for Massachusetts Institute of Technology, a private research university located in Cambridge, Massachusetts, USA. The MIT License is named after the university because it was developed by the university's computer science department and used for its open source software releases.</p>
<h3 id="heading-the-apache-license">The Apache License</h3>
<p>The Apache License version 2.0 is widely used for open source software projects, especially those related to web and server software. The license permits users to use, copy, modify, and distribute the software, as long as they include a copyright notice, disclaimer of any warranties or liability, and a notice of any changes made to the original software. </p>
<p>The license also includes patent grant provisions that protect users against patent infringement lawsuits. The Apache License version 2.0 is often considered to be one of the most permissive open source software licenses available.</p>
<h3 id="heading-the-eclipse-public-license-epl">The Eclipse Public License (EPL)</h3>
<p>The EPL is a permissive open source software license that was developed by the Eclipse Foundation for use with the Eclipse software development environment. On the other hand, EPL is <em>not</em> a permissive open source software license. In fact, EPL kind of straddles the border between permissive and restrictive. I'll describe it here, but bear in mind that it actually shares some features with the restrictive copyleft licenses we'll talk about later.</p>
<p>At any rate, the license is designed to be compatible with other open source software licenses and allows for the creation of derivative works.</p>
<p>The EPL version 1.0 is a copyleft license that requires any modifications or derivative works to be released under the same license. The license also includes a patent license grant that allows users to use any patents associated with the software, as long as they comply with the terms of the license.</p>
<p>The EPL version 2.0, released in 2017, is also a copyleft license but includes several updates and improvements over the previous version. The license has been updated to address some of the legal issues that arose with the previous version and to make it more compatible with other open source software licenses. One notable change in version 2.0 is the addition of a patent non-assertion covenant, which assures users that the software's licensors will not assert their patents against the user for using or distributing the licensed software.</p>
<h2 id="heading-working-with-protective-software-licenses">Working with Protective Software Licenses</h2>
<p>Copyleft software licenses aim to ensure that the licensed software remains free and open for future users and developers. These licenses use copyright law to achieve this goal by requiring any derivative works of the software to be licensed under the same license terms.</p>
<p>This means that anyone who modifies or distributes the software must also make their changes and additions available to others under the same license.</p>
<p>The most well-known copyleft software license is the GNU General Public License (GPL), but there are many other copyleft licenses such as the Lesser General Public License (LGPL), the Mozilla Public License (MPL), and the Affero General Public License (AGPL).</p>
<p>The rights and obligations defined by copyleft software licenses can vary depending on the specific license, but some common aspects include rights, typically granting users the right to use, modify, and distribute the software. The licenses often require that any derivative works be licensed under the same terms, which ensures that the software remains free and open for future use and development.</p>
<p>Copyleft software licenses also impose certain obligations on users and developers of the software. These obligations can include requirements to include a copy of the license with any distributions of the software, to make the source code available, and to maintain copyright notices and attribution to the original authors.</p>
<p>Copyleft licenses can have implications for compatibility with other licenses. For example, using individual software components licensed as copyleft as <em>part</em> of a larger project may require the entire project to be released under a copyleft license. This is because the copyleft license requires any derivative works to be licensed under the same terms.</p>
<p>Let's work through some of the more popular copyleft templates, one at a time.</p>
<h3 id="heading-the-gnu-general-public-license">The GNU General Public License</h3>
<p>The GPL is developed by the Free Software Foundation (FSF). It requires any derivative works of the licensed software to be licensed under the same terms. </p>
<p>The GPL has several versions, including version 2.0 (GPLv2) and version 3.0 (GPLv3). The GPL is widely used for software development projects and is often seen as a key component of the free software movement. </p>
<p>GPLv2 (that is, "version 2") of the GPL includes provisions for distributing the source code and making modifications to the software. GPLv3 added provisions for preventing "tivoization" (meaning, the practice of using digital restrictions to prevent users from modifying the software) and for addressing patent issues.</p>
<h3 id="heading-the-gnu-lesser-general-public-license">The GNU Lesser General Public License</h3>
<p>The LGPL is another license developed by the FSF that allows for more flexibility in the use of the licensed software. The LGPL has two versions, version 2 (LGPLv2) and version 3 (LGPLv3). </p>
<p>The LGPL is commonly used for software libraries and other software components that are designed to be linked with other software. LGPLv2 and LGPLv3 added more flexibility in the use of the licensed software, particularly for software libraries. Later versions also worked to add greater compatibility with the GPLv3.</p>
<h3 id="heading-the-gnu-affero-general-public-license">The GNU Affero General Public License</h3>
<p>The AGPL also comes from the FSF. It's similar to the GPL but includes additional requirements for software that is distributed over a network. </p>
<p>The AGPL is often used for software that's designed to be run on servers and accessed over a network, such as web applications. </p>
<p>Version 3 (AGPLv3) includes additional requirements for software that is distributed over a network. It requires anyone who uses the software over a network to make the source code available and to provide a copy of the license to users.</p>
<h3 id="heading-the-mozilla-public-license">The Mozilla Public License</h3>
<p>The MPL was developed by the Mozilla Foundation – the people behind the Firefox browser. It is a copyleft license that allows for the distribution of the licensed software under both proprietary and open source terms. The MPL is compatible with the GNU General Public License (GPL), allowing code to be shared between MPL-licensed software and GPL-licensed software. The MPL is also compatible with other open source licenses such as Apache and MIT.</p>
<p>The MPL requires that the source code for any modified versions of the licensed software be made available. This allows others to see and modify the code, promoting the growth and development of the software. The MPL also requires that any distribution of the licensed software, whether in its original or modified form, be made under the MPL. </p>
<p>This means that anyone who distributes the software must provide a copy of the license with the software and make the source code available. The MPL includes provisions to protect users from patent claims related to the licensed software. These provisions ensure that users of the software are able to use and distribute the software without fear of legal action.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>With this information you're now ready to carefully evaluate the benefits and limitations of each specific collection of open source code you might use. And you can similarly understand how you might want to license your own code when it's ready to be shared with the world.</p>
<p><em>This article comes from my</em> <a target="_blank" href="https://www.udemy.com/course/complete-lpi-open-source-essentials-exam-study-guide/?referralCode=05B999CE18EF4D6E243C"><em>Complete LPI</em></a> Open Source <em>Essentials Study Guide course__.</em> <em>And there's much more technology goodness available at <a target="_blank" href="https://bootstrap-it.com/">bootstrap-it.com</a></em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Podcast: Oh My Zsh creator and Planet Argon CEO Robby Russell ]]>
                </title>
                <description>
                    <![CDATA[ In this week's episode of the podcast, I interview Robby Russell. Robby created the open-source project Oh My ZSH.  Oh My Zsh is a framework for managing your Zsh configuration for your command line terminal. It's been extremely popular among develop... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/podcast-oh-my-zsh-creator-and-ceo-robby-russell/</link>
                <guid isPermaLink="false">66b8d52ff583f6362a68ce1c</guid>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ podcast ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Fri, 02 Feb 2024 17:11:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/02/robby-russell-freecodecamp-oh-my-zsh.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>In this week's episode of the podcast, I interview Robby Russell. Robby created the open-source project Oh My ZSH. </p>
<p>Oh My Zsh is a framework for managing your Zsh configuration for your command line terminal. It's been extremely popular among developers for more than a decade.</p>
<p>Robby is also the CEO of <a target="_blank" href="https://www.planetargon.com/">Planet Argon</a>, a developer consultancy he created two decades ago. He's done work for Nike and lots of other companies.</p>
<p>Be sure to follow The freeCodeCamp podcast in your favorite podcast app. And share this podcast with a friend. Let's inspire more folks to learn to code and build careers for themselves in tech.</p>
<p>You can listen to my interview in your favorite podcast player (be sure to subscribe), or right below in your browser:</p>
<div class="embed-wrapper"><iframe style="border:none" src="https://play.libsyn.com/embed/episode/id/29772173/height/192/theme/modern/size/large/thumbnail/yes/custom-color/0a0a23/time-start/00:00:00/playlist-height/200/direction/backward/download/yes/font-color/FFFFFF" height="192" width="100%" title="Embedded content" loading="lazy"></iframe></div>

<p>Or you can watch me interview Robby on the freeCodeCamp YouTube channel:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/OwjKN9_NqPI" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p>Links we talk about during the interview:<br>Robby reading his classic "d'Oh My Zshell" article recording on an older freeCodeCamp podcast episode: <a target="_blank" href="https://freecodecamp.libsyn.com/site/ep-34-doh-my-zsh">https://freecodecamp.libsyn.com/site/ep-34-doh-my-zsh</a></p>
<p>The Sandi Metz interview episode of Maintainable that Robby mentions: <a target="_blank" href="https://maintainable.fm/episodes/sandi-metz-making-is-easy-mending-is-a-challenge">https://maintainable.fm/episodes/sandi-metz-making-is-easy-mending-is-a-challenge</a></p>
<p>The Mighty Missoula (Robby's Post Rock band) live set: <a target="_blank" href="https://www.youtube.com/watch?v=63DE2tNlAWY">https://www.youtube.com/watch?v=63DE2tNlAWY</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Get Started with Hugging Face – Open Source AI Models and Datasets ]]>
                </title>
                <description>
                    <![CDATA[ By Ambreen Khan What is Hugging Face 🤗? If you are interested in Artificial Intelligence and Natural Language Processing, you have probably heard of Hugging Face – the company named after a cute emoji.  Hugging Face is not only a company, but also a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/get-started-with-hugging-face/</link>
                <guid isPermaLink="false">66d45d97706b9fb1c166b918</guid>
                
                    <category>
                        <![CDATA[ Artificial Intelligence ]]>
                    </category>
                
                    <category>
                        <![CDATA[ natural language processing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ nlp ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 10 Jan 2024 21:05:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/01/HuggingFace_Title-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ambreen Khan</p>
<h2 id="heading-what-is-hugging-face"><strong>What is Hugging Face 🤗?</strong></h2>
<p>If you are interested in Artificial Intelligence and Natural Language Processing, you have probably heard of Hugging Face – the company named after a cute emoji. </p>
<p>Hugging Face is not only a company, but also a platform that is transforming the fields of AI and NLP through open source and open science.</p>
<p>Hugging Face offers a platform called the Hugging Face Hub, where you can find and share thousands of AI models, datasets, and demo apps. The Hub is like the GitHub of AI, where you can collaborate with other machine learning enthusiasts and experts, and learn from their work and experience.</p>
<p>Hugging Face’s mission is to democratize good machine learning, one commit at a time. Whether you are a beginner or a professional, you can benefit from the amazing resources and tools that Hugging Face provides.</p>
<p>In this post, I'll guide you through the basics of Hugging Face. You'll learn how to create your Hugging Face account, set up your development environment, and use some of the pre-trained models that are available on the Hub. Let’s get started! 🚀</p>
<h2 id="heading-heres-what-well-cover">Here's what we'll cover:</h2>
<ol>
<li><a class="post-section-overview" href="#heading-what-can-you-do-on-the-hugging-face-platform">What can you do on the Hugging Face Platform?</a><ul>
<li><a class="post-section-overview" href="#download-and-fine-tune-existing-open-source-models">Download and fine-tune existing Open Source models</a></li>
<li><a class="post-section-overview" href="#run-models-directly-from-hugging-face">Run models directly from Hugging Face</a></li>
<li><a class="post-section-overview" href="#addcreate-your-own-model">Add/create your own model</a></li>
<li><a class="post-section-overview" href="#use-existing-datasets">Use existing datasets</a></li>
<li><a class="post-section-overview" href="#createbrowse-demo-apps-also-known-as-spaces">Create/browse demo apps (also known as Spaces)</a></li>
<li><a class="post-section-overview" href="#join-or-create-an-organization">Join or create an organization</a></li>
<li><a class="post-section-overview" href="#create-a-portfolio">Create a portfolio</a></li>
<li><a class="post-section-overview" href="#learn-ai-skills">Learn AI skills</a></li>
</ul>
</li>
<li><a class="post-section-overview" href="#heading-hugging-face-terminology">Hugging Face terminology</a></li>
<li><a class="post-section-overview" href="#heading-how-to-get-started-with-hugging-face">How to get started with Hugging Face</a><ul>
<li><a class="post-section-overview" href="#heading-create-a-hugging-face-account">Create a Hugging Face account</a></li>
<li><a class="post-section-overview" href="#heading-set-up-your-environment">Set up your environment</a></li>
</ul>
</li>
<li><a class="post-section-overview" href="#heading-how-to-use-pre-trained-models-in-hugging-face">How to use pre-trained models in Hugging Face</a></li>
<li><a class="post-section-overview" href="#heading-how-to-find-the-right-pre-trained-model">How to find the right pre-trained model</a></li>
<li><a class="post-section-overview" href="#whats-next">What's next?</a></li>
</ol>
<h2 id="heading-what-can-you-do-on-the-hugging-face-platform">What Can You Do on the Hugging Face Platform?</h2>
<p>Here are some of the awesome things you can do on Hugging Face:</p>
<h3 id="heading-download-and-fine-tune-existing-open-source-models">Download and fine-tune existing Open Source models:</h3>
<p>Why start from scratch when you can leverage the power of over 450k models that are already available on the Hugging Face model library? </p>
<p>You can easily download these models and fine-tune them on your own custom dataset with just a few lines of code. This way, you can save time and resources, and still get a model that suits your specific needs.</p>
<p>You can use these models to perform various tasks, such as:</p>
<ol>
<li>Natural language processing (for example, translation, summarization, and text generation)</li>
<li>Audio-related functions (for example, automatic speech recognition, voice activity detection, and text-to-speech)</li>
<li>Computer vision tasks (for example, depth estimation, image classification, and image-to-image processing),</li>
<li>Multimodal models capable of handling diverse data types (text, images, audio) and producing multiple types of output.</li>
</ol>
<h3 id="heading-run-models-directly-from-hugging-face">Run Models directly from Hugging Face:</h3>
<p>If you don’t want to set up these models on your own machines, you can simply use Hugging Face’s Transformer library to connect to these models, send requests, and receive outputs. </p>
<h3 id="heading-addcreate-your-own-model">Add/create your own model:</h3>
<p>If you have a brilliant idea for a new model, or you want to improve an existing one, you can also add/create your own model on Hugging Face. </p>
<p>The platform will host your model, and allow you to provide additional information, upload essential files, and manage different versions. You can also choose whether your models are public or private, so you can decide when or if you want to share them with the world. </p>
<p>Once your model is ready, you can access it directly from Hugging Face, send requests, and retrieve the outputs for integration into any applications you are developing.</p>
<h3 id="heading-use-existing-datasets">Use existing datasets:</h3>
<p>A good model needs a good dataset. Hugging Face provides a repository of over 90,000 datasets that you can use and feed into your models. </p>
<p>You can take an in-depth look inside the dataset using the dataset viewer. You can also contribute your own datasets to the repository, and help the machine learning community grow.</p>
<p><img src="https://lh7-us.googleusercontent.com/tYogXTtF_pOn4dIRAFUDP20kpbf4yzTvkWdINjnFqjka6N5b4xfDRT_ssvVqQCig09SlSfb3voil16yE37YOPLDmsHj508xkPtYWKHF63rX8ozOW21BQH2dKQL5jEuhq5Yn-m1xyU9pKKHOimOlDqHk" alt="Image" width="1600" height="1136" loading="lazy">
<em>Screenshot of dataset viewer</em></p>
<h3 id="heading-createbrowse-demo-apps-also-known-as-spaces">Create/browse demo apps (also known as Spaces):</h3>
<p>Hugging Face’s Spaces are Git repositories that allow you to showcase your machine learning applications. You can also browse and try out the Spaces created by other users, and find inspiration for your next AI app. </p>
<p>With thousands of ML apps to choose from, you will never run out of fun and interesting things to do.</p>
<p>Here are a few cool Spaces you can check out:</p>
<ul>
<li><a target="_blank" href="https://huggingface.co/spaces/openai/whisper">OpenAI's Whisper</a>: Transcribe long-form microphone or audio inputs with the click of a button.</li>
<li><a target="_blank" href="https://huggingface.co/spaces/jbilcke-hf/ai-comic-factory">AI Comic Factory</a>: Create your own comic books.</li>
<li><a target="_blank" href="https://huggingface.co/spaces/huggingface-projects/QR-code-AI-art-generator">QR Code AI Art Generator</a>: Generate beautiful QR codes using AI.</li>
<li><a target="_blank" href="https://huggingface.co/spaces/multimodalart/stable-video-diffusion">Stable Video Diffusion</a> (Img2Vid - XT): Generate 4s video from a single image.</li>
<li><a target="_blank" href="https://huggingface.co/spaces/DAMO-NLP-SG/Video-LLaMA">Video-LLaMA</a>: Audio-Visual Language Model for Video Understanding.</li>
</ul>
<h3 id="heading-join-or-create-an-organization">Join or create an organization:</h3>
<p>You can join or create your own organization on Hugging Face. This allows you to showcase your work and collaborate with other members from your university, lab, or company. You can also work on private datasets, models, and spaces with your organization.</p>
<h3 id="heading-create-a-portfolio">Create a portfolio:</h3>
<p>You can create a professional portfolio on Hugging Face to showcase your work and start building your reputation. This can help you land jobs related to AI model training, integration, and development. </p>
<p>Hugging Face provides the basic computing resources for running the demo app, including 16 GB of RAM, 2 CPU cores, and 50 GB of disk space for free. You can also upgrade your hardware for improved and faster performance with paid options.</p>
<h3 id="heading-learn-ai-skills">Learn AI Skills:</h3>
<p>Hugging Face is an excellent platform for learning AI skills. It offers a comprehensive set of tools and resources for training and using models. This includes demos, use cases, documentation, and tutorials that guide you through the entire process of using these tools and training models.</p>
<p>You can also learn from the experts and the community on Hugging Face, and improve your AI knowledge and skills.</p>
<h2 id="heading-hugging-face-terminology">Hugging Face Terminology</h2>
<p>There are some terms you'll need to know to get the most out of working with Hugging Face.</p>
<p><strong>Pretrained model:</strong> A model that has been trained on a large dataset for a specific task before being made available for use. </p>
<p><strong>Inference:</strong> Inference is the process of using a trained model to make predictions or draw conclusions about new, unseen data based on the learned patterns from the training data.</p>
<p><strong>Transformers:</strong> Transformers are models that can handle text-based tasks, such as translation, summarization, and text generation. They use a special architecture that relies on attention mechanisms to capture the relationships between words and sentences.</p>
<p><strong>Tokenizer</strong>: A tokenizer is a process that breaks down text into smaller units called tokens. Tokens are usually words or subwords that can be used for natural language processing (NLP) tasks.</p>
<h2 id="heading-how-to-get-started-with-hugging-face"><strong>How to Get Started with Hugging Face</strong></h2>
<p>To get started with HuggingFace, you will need to set up an account and install the necessary libraries and dependencies. Don’t worry, it’s easy and fun! </p>
<p>Here are the steps you need to follow:</p>
<h3 id="heading-create-a-hugging-face-account">Create a Hugging Face Account</h3>
<p>Signing up as a Community individual contributor is free of charge. You can also opt for a ‘Pro’ plan or a customized plan for Organizations if you need more features and resources.</p>
<p>Go to the Hugging Face website and click on “Sign Up” to create a free account.</p>
<p>Then enter your email address and a password. Click next and complete your profile and security check.</p>
<p><img src="https://lh7-us.googleusercontent.com/OQA0CUGvs2Dg4LKI3X5mPVjNj7LYIbeUDF0q46sC2p39n-Ca56OwiGNYYdPJU4NrcZG4s-G_KKYX1YADa9QL2yyjHcMDoQ43BBllp6SHgq6P_33XG7ta4nVDTsjierUonbH3YYwuj7CploOW2tpAopo" alt="Image" width="890" height="1138" loading="lazy">
<em>Setting up a Hugging Face account</em></p>
<p>Congratulations, you are now a Hugging Face member! 🎉 You will be directed to the Hugging Face ‘Welcome’ page, where you can find more information and tips on how to use the platform.</p>
<p>As a bonus, you also get a Git-based hosted repository where you can create your Models, Datasets and Spaces. You can do this directly using the website or using the CLI. If you prefer the latter, you can check the detailed instructions on the ‘Welcome’ page under the ‘Programmatic access’ section.</p>
<p><img src="https://lh7-us.googleusercontent.com/PhM1PcZxLn4jgchRlU2J6ZEemobdrBTBq0ypqFM3Y2mZsTwtvFUg7nhJ4KBL4HfvYJz4Zp2KsZa7SvbfJMe8o9ARKvy1NOdCGSn4WEJ0JUivxT2Lp4nnWrU21cCjjGl5yJMG7BqfaGzvqVGd9z06Mrg" alt="Image" width="1600" height="1221" loading="lazy">
<em>Hugging Face welcome screen showing options to create a new model, browse the docs, and set up programmatic access</em></p>
<h3 id="heading-set-up-your-environment">Set Up Your Environment</h3>
<p>Before you start using the Hugging Face hub programmatically, you will need to set up your environment.  </p>
<h4 id="heading-step-1-install-python-and-pip">Step 1: Install Python and Pip:</h4>
<p>Make sure you have Python 3.8 or higher installed on your system. You will also need Pip, the package manager for Python, to install the Hugging Face libraries. If you don’t have Python, you can install it by following the instructions <a target="_blank" href="https://www.python.org/downloads/">here</a>.</p>
<h4 id="heading-step-2-install-huggingface-libraries">Step 2: Install HuggingFace libraries:</h4>
<p>Open a terminal or command prompt and run the following command to install the HuggingFace libraries: </p>
<pre><code class="lang-shell">pip install transformers
</code></pre>
<p>This will install the core Hugging Face library along with its dependencies. To have the full capability, you should also install the datasets and the tokenizers library.</p>
<pre><code class="lang-shell">pip install tokenizers, datasets
</code></pre>
<h4 id="heading-step-3-set-up-a-development-environment">Step 3: Set up a development environment:</h4>
<p>Choose a code editor or IDE of your choice, such as Jupyter Notebook, PyCharm, or Visual Studio Code. Create a new project directory and set up a virtual environment to isolate your project dependencies. You can find more information on how to do this <a target="_blank" href="https://docs.python.org/3/library/venv.html">here</a>.</p>
<p>With these steps completed, you have successfully set up Hugging Face on your system and are ready to start exploring its features and capabilities. Let’s go! 🚀</p>
<h2 id="heading-how-to-use-pre-trained-models-in-hugging-face">How to Use Pre-Trained Models in Hugging Face</h2>
<p>One of the best things about Hugging Face is that it gives you access to thousands of pre-trained models that can perform various tasks on different types of data. Whether you are working with text, vision, audio, or a combination of them, you can find a model that suits your needs.</p>
<p>Hugging Face has two main libraries that provide access to pre-trained models: <strong>Transformers</strong> and <strong>Diffusers</strong>. The Transformers library handles text-based tasks, such as translation, summarization, and text generation. Diffusers can handle image-based tasks, such as image synthesis, image editing, and image captioning.</p>
<p>You have already installed the transformers library during the environment setup. Let’s see how you can use it to work with pre-trained models.</p>
<h3 id="heading-step-1-visit-the-pypi-page">Step 1: Visit the PyPI page</h3>
<p>To learn more about the transformers library, you can visit its page on PyPI, the Python Package Index. </p>
<p>Go to <a target="_blank" href="https://pypi.org/">PyPi</a> and search for ‘transformers’. Click on the latest version of the transformers library displayed in the search result. You will see a brief introduction of the library, as well as some useful links and information.</p>
<h3 id="heading-step-2-download-and-use-pre-trained-models">Step 2: Download and use pre-trained models</h3>
<p>The transformers library provides APIs to quickly download and use pre-trained models on a given text, fine-tune them on your own datasets, and then share them with the community on Hugging Face’s <a target="_blank" href="https://huggingface.co/models">model hub</a>.</p>
<h3 id="heading-step-3-use-the-pipeline-method">Step 3: Use the <code>pipeline()</code> method</h3>
<p>To use a pre-trained model on a given input, Hugging Face provides a <code>pipeline()</code> method, an easy-to-use API for performing a wide variety of tasks. </p>
<p>The <a target="_blank" href="https://huggingface.co/docs/transformers/v4.36.1/en/main_classes/pipelines#transformers.pipeline">pipeline()</a> method makes it simple to use any <a target="_blank" href="https://huggingface.co/models">model</a> from the Hub for inference on any language, computer vision, speech, and multimodal tasks.</p>
<p>Let’s try to perform a task using the pipeline() method.</p>
<h4 id="heading-task-sentiment-analysis">Task: Sentiment analysis:</h4>
<p>Let’s use the <code>pipeline()</code> method to classify positive versus negative texts provided by the user:</p>
<pre><code class="lang-python"><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

<span class="hljs-comment"># Load the pre-trained sentiment analysis model</span>
sentiment_analysis = pipeline(
<span class="hljs-string">"sentiment-analysis"</span>, model=<span class="hljs-string">"distilbert-base-uncased-finetuned-sst-2-english"</span>)

input_text = [
<span class="hljs-string">"It’s a great app, my biggest problem is the card readers regularly do not connect. Which is very poor customer service for us because we have to manually enter our customers debit cards, which takes time. This slows down our efficiency."</span>
]

<span class="hljs-comment"># Perform sentiment analysis on the input text</span>
result = sentiment_analysis(input_text)

<span class="hljs-comment"># Print the result</span>
print(result)
</code></pre>
<p>The pipeline statement downloads and caches the pretrained model used by the pipeline, while the statement <code>result = sentiment_analysis(input_text)</code> evaluates it on the given text. </p>
<p><strong>Output:</strong></p>
<pre><code class="lang-shell">[{'label': 'NEGATIVE', 'score': 0.9996176958084106}]
</code></pre>
<p>Here, the answer is "NEGATIVE" with a confidence of 99.96%.</p>
<h4 id="heading-task-automatic-speech-recognition">Task: Automatic speech recognition</h4>
<p>Let’s try another task that involves speech recognition.</p>
<pre><code class="lang-python"><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

transcriber = pipeline(task=<span class="hljs-string">"automatic-speech-recognition"</span>,
                       model=<span class="hljs-string">"openai/whisper-small"</span>)
result = transcriber(
    <span class="hljs-string">"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"</span>)

print(result)
</code></pre>
<p><strong>Output:</strong></p>
<pre><code class="lang-shell">{'text': ' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'}
</code></pre>
<p>You can see how easy it is to get a pre-trained model up and running using Hugging Face's libraries. </p>
<h3 id="heading-how-to-find-the-right-pre-trained-model">How to find the right pre-trained model</h3>
<p>But how can you find the right pre-trained model if you want to perform a specific task? </p>
<p>This is actually quite easy. You can browse the models on the Hugging Face website, and filter them by task, language, framework, and more. You can also search for models and datasets by keyword and sort them by trending, most likes, most downloads, or by recent updates.</p>
<p><img src="https://lh7-us.googleusercontent.com/e94ThjikQ7rAFXu-LUx6a0ZosgWFKqjfSION915OcA9fQweqZO62wLdyPkAH657OFOlO-Zw4O9WLvtQ1auZl8Oo9inxtul7J1hkuXs1Bqs10n_FRy8P6o-mhGVB_QKVEz4CHL7-mOm9wTGzbqr6gJJY" alt="Image" width="1600" height="710" loading="lazy">
<em>Searching for models</em></p>
<p>Each model has a model card that contains important information, such as model details, inference example, training procedure, community interaction features, and link to the files. You can also try the model on the model card page by using the Inference API section.</p>
<p><img src="https://lh7-us.googleusercontent.com/Fs-OKp8zUOF4WIN9-dFBYQIQDL5loPowHzEzIr7T8mWZltyGSDGEj8K-U-CrTZwPK3D1RjkFZwSfhNex_BhWYCYW4AkUFuADkefneuJtyHSYkDoTqAU24zqvUFdTjx978g8jfVkoajhZ9PF_lTi2Ekg" alt="Image" width="1124" height="756" loading="lazy">
<em>Inference API</em></p>
<p>You can also check the list of spaces that are using that particular model and further explore the spaces by clicking on the space link.</p>
<p><img src="https://lh7-us.googleusercontent.com/z2abf18c-bvqWM82OJz7ua_sebywG4DHXQQbWE4QD0Vmv1tIOw35Okw56Va5nBrJlVRWJArC_L6RWdgYIl1nadcaRlMfbt_fyZyK6hFpDkhXAgURyDiU24hzRy91W8jQbwMbs4tavsAv2r3Di-Qjpo0" alt="Image" width="1102" height="964" loading="lazy">
<em>Spaces</em></p>
<h2 id="heading-whats-next">What's Next?</h2>
<p>In this guide, you have learned the basics of Hugging Face, and how to use its libraries, models, datasets, and spaces. But there is so much more to discover and enjoy!</p>
<p>Here are some tips on how to make the most of Hugging Face:</p>
<ul>
<li>Dive into Hugging Face’s Spaces: Spaces are where the magic happens. You can find and try out thousands of machine learning applications created by the community, and see what’s trending and popular. You can also create your own spaces and showcase your work to the world.</li>
<li>Explore the Hugging Face documentation and tutorials: If you want to learn more about the Hugging Face platform and its features, you can check out the documentation and tutorials. They provide detailed information and guidance on how to use the tools and resources that Hugging Face offers. You can also find information about common ML/AI tasks, such as text classification, image generation, and speech recognition, on the tasks page.</li>
<li>Visit the <a target="_blank" href="https://huggingface.co/learn">learn</a> section:  If you are interested in acquiring new skills and knowledge in AI and NLP, you can visit the ‘learn’ page that displays courses from Hugging Face. Here, you can learn from the experts and the best practices in the field, and apply them to your own projects.</li>
<li>Join the Hugging Face community: Machine learning is more fun when collaborating! You can join the Hugging Face community on platforms like GitHub, Discord, and Twitter to connect with other users and stay updated on the latest developments. You can also share your feedback, questions, and ideas with the community, and help Hugging Face grow and improve.</li>
</ul>
<p>Hugging Face is not just a platform for AI and NLP – it's also a playground for your curiosity and creativity. You can experiment with new models, expand your AI knowledge, and enrich your AI toolkit with various tools and resources. So, keep learning, keep exploring. There is always something new and exciting to discover with Hugging Face. 😊</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
