<?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[ gsoc - 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[ gsoc - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 31 May 2026 05:06:06 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/gsoc/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ GSoC 2023 Guide – How to Prepare for Google Summer of Code ]]>
                </title>
                <description>
                    <![CDATA[ By Abhisman Sarkar Google Summer of Code is an open source program that is managed by Google's Open Source team.  They invite developers to spend their summer contributing to the source code for various different organisations taking part in the prog... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/google-summer-of-code-guide/</link>
                <guid isPermaLink="false">66d45d593a8352b6c5a2a9e5</guid>
                
                    <category>
                        <![CDATA[ gsoc ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 16 Mar 2023 17:04:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/03/pexels-prateek-katyal-2763246.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Abhisman Sarkar</p>
<p><a target="_blank" href="https://summerofcode.withgoogle.com/">Google Summer of Code</a> is an open source program that is managed by Google's Open Source team. </p>
<p>They invite developers to spend their summer contributing to the source code for various different organisations taking part in the program. </p>
<p>There are many organisations that list their project ideas for participants to choose from. Last year, in the <a target="_blank" href="https://summerofcode.withgoogle.com/archive/2022/organizations">2022 season</a>, a whopping 202 different organisations took part in the program and the program ended with around 1166 projects being completed. </p>
<p>Think about the sheer amount of code that was written and how much open source organisations and users in general benefited from it. You can learn more about last season <a target="_blank" href="https://opensource.googleblog.com/2022/12/gsoc-2022-its-wrap.html">here</a>.</p>
<p>I was among those contributors, writing code for the <a target="_blank" href="https://theupdateframework.io/">TUF</a> project. My work involved introducing backwards compatibility to TUF's Python client so that downloading metadata adhering to different tuf versions could be easily managed. </p>
<p>I am writing this tutorial to teach you about GSoC and how you can increase your chances of getting selected into the program. I'll also go over how it'll benefit you both from a learning and a career perspective. I hope it will get you inspired enough to contribute to open-source and apply for GSoC, even if you've never done that before.</p>
<h1 id="heading-gsoc-timeline">GSoC Timeline</h1>
<p>GSoC follows a similar timeline every year. You can find the page for the 2023 session <a target="_blank" href="https://developers.google.com/open-source/gsoc/timeline">here</a>. </p>
<p>The page pretty much explains all you'll need to know, and you can find the precise dates for each announcement. But still, I'll share my tips on how to prepare for each step of the journey and the best courses of action to take along the way.</p>
<p>The first 3 announcements are org-specific. Meaning, you don't have to worry about them since they are dates for organisations to apply to have their projects included as part of the GSoC program.</p>
<h2 id="heading-list-of-accepted-mentoring-organizations-published">List of Accepted Mentoring Organizations Published:</h2>
<p>Once the orgs get announced, start going through the list and take a look at the project ideas that seem interesting to you. </p>
<p>Don't target too many orgs. Try to go for a maximum of 2 or 3 project ideas within the same org. This makes you drive your efforts towards participating in that org and that really boosts your chances of getting selected. </p>
<p>Targeting too many orgs divides up your efforts and it may result in you not getting admitted into the program. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/03/image-137.png" alt="Image" width="600" height="400" loading="lazy">
<em>Org search page</em></p>
<p>Filter through the orgs by entering your preferred programming language/org name/topic in the search bar. Once you open up an org's page, you'll be able to find the technologies and topics mentioned. Let's take a look at CNCF's page:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/03/image-161.png" alt="Image" width="600" height="400" loading="lazy">
<em>CNCF GSoC page</em></p>
<p>Here you can see all the different technologies and topics. Don't be discouraged if you don't know all of the tools, since those lists are for all the project ideas mentioned under the org (so there's a high chance that your particular project won't require all of them). Plus since the program is a learning experience, you'll be learning those topics yourself.</p>
<p>Click on the <strong>Ideas List</strong> next, and you'll be taken to a page that will show you all the different project ideas under that org. This is where you get to read through the description for each project and look at the tech stack for each one. </p>
<p>You might find the <strong>Difficulty</strong> label under your project, but don't get disheartened if a project you find interesting is labelled hard. You can always learn on the go and implement what you learn. Chances are that you'll have to work a bit harder, but that's ok. </p>
<p>Also under the project idea, you'll find the upstream repository and/or the upstream issue's page. Check it out and start reading the repository docs and all the other info.</p>
<p>Now you might be thinking – where would you go if you had any questions? Go back to the org's page on the GSoC website and you'll find links for the organisation's mailing list, public Slack channel, and Twitter among various other links.</p>
<p>If you can't find this info there, then go to the repository's page and you'll probably find links for the communication channels in the Readme file there.</p>
<p>After joining the public channel, introduce yourself over there and express your excitement to contribute to the project.</p>
<p>When you're asking questions, here are some thing to keep in mind. First of all, make sure you do your research by searching about your question online and then asking your question saying: "Hey, I have this problem. I did x research about this and came up with y answer though I think it may not be correct. I'd appreciate it if someone could help me, thanks." </p>
<p>Phrasing your question like this shows to other people that you've thought about your question and tried searching about it online and you haven't just given up and not thought about the problem. People are then more likely to help you. </p>
<p>Many times, if your question is a pretty common one, you'll get the actual answer online. Also, with the proliferation of AI tools, there's a pretty high chance that you'll find what you need. If not, go ahead and ask your question. </p>
<p>Also, always try <strong>not</strong> to personally message someone. Ask your questions in the public channels. This way you have many people looking at your problem and so the chances of you receiving help increases. Personally messaging someone doesn't always guarantee a response since they're probably busy with their own work. So you asking a question with no one else to answer adds onto that work.</p>
<h2 id="heading-gsoc-contributor-application-period-begins">GSoC Contributor Application Period Begins:</h2>
<p>As a contributor, you'll have to form a proposal for your particular project idea within a deadline. </p>
<p>For the 2023 session, contributor proposals start getting accepted from the 20th of March until the deadline on the 4th of April. Start working on your proposals beforehand and don't wait until the submission deadline. </p>
<p>Here are a few tips from my side:</p>
<h3 id="heading-start-the-review-process-early">Start the review process early</h3>
<p>It's totally fine to ask your mentor to review your first draft of the proposal – but try to start the review process as early as possible. Implement your mentor's suggestions and then ask for reviews again. </p>
<p>While doing that, be respectful of their time. They might not always be available, and in that case, try to get feedback from other maintainers working on the project. </p>
<p>Always keep in mind that the maintainers are people who have a seperate work-life and that they're working on the project in their own free time. </p>
<h3 id="heading-create-a-timeline">Create a timeline</h3>
<p>A good proposal is an important aspect of the selection process. <a target="_blank" href="https://google.github.io/gsocguides/student/writing-a-proposal#submit-a-proposal-early">This page</a> has some good info regarding the subtopics you should mention. </p>
<p>Make sure that you formulate a proper Timeline (Deliverable section) since that shows the mentor and maintainers that you've really thought about the project and how you aim to solve it. The actual dates of when you would implement something don't really matter – it's more about how you've thought about solving the project. </p>
<p>Personally speaking, creating a timeline made a big impact on my selection process since my mentor mentioned multiple times that she liked the way I had thought about implementing the project. </p>
<p>This really goes to shows that you've thought about the problem hard enough to come up with an approach toward solving it.</p>
<h3 id="heading-contribute-to-the-projects-repository">Contribute to the project's repository</h3>
<p>Contribute and work on issues in the project repository. They don't need to be big changes, but make sure they aren't only trivial ones either (like fixing grammar, deleting files, and so on). </p>
<p>As you start contributing, start from easy issues and keep ramping up as you keep getting the grasp of the project. If you're someone who's new to all this then understand that the first step is usually the hardest and the upcoming ones are comparetively less difficult. </p>
<p>When formulating your proposal, be sure to mention these prior contributions as they help make your proposal much more impactful. They also show your mentor that you are someone who has been contributing to the project.</p>
<h3 id="heading-talk-about-past-experience">Talk about past experience</h3>
<p>Include a passage about your past work experience and achievements (Biographical Information section). Mention work for which you have evidence as that helps add value to your proposal. Include any past open-source or hackathon or application building experience. </p>
<p>Try to rank these experiences in order of relevance to the project and try not to overfill this section if you have too many. Keep it to a max of 8-10.</p>
<p>In addition to all these points, I suggest you to go through the page mentioned above and study the remaining points to get a good idea of what you should be mentioning in your proposal.</p>
<p>Once you're done formulating a proposal, create your own GSoC account and go to your contributor page. There you'll find the link to select the project you'll be working on and the link for submitting the proposal.</p>
<p> In all, focus on 3 major key points while applying:</p>
<ol>
<li>Have good code contributions to the project repository</li>
<li>Have a high-quality and well-reviewed proposal</li>
<li>Be active in the community by engaging with other contributors and participants</li>
</ol>
<p>There were a few changes that got implemented in the 2022 session which are here to stay. They are:</p>
<ul>
<li><p><strong>Flexible project timing.</strong> You could take anywhere from 10 to 22 weeks to complete your project. Extend your deadline if you feel that the 12 week period is not enough, but make sure to communicate with your mentor about this.</p>
</li>
<li><p><strong>Choice of time commitment.</strong> You'll have a choice between either a medium or long project.</p>
</li>
<li><p><strong>Open to all.</strong> GSoC as a program was open only to students until its 2021 season. But ever since the 2022 season, the program has started accepting everyone, student or not. Anyone looking to get into this program can get started.</p>
</li>
</ul>
<p>The application deadline for the 2023 season is on the 4th of April, and you'll be hearing back on the 4th of May. </p>
<p>I know, a month seems like a long time and you'll probably be getting anxious as the result date approaches. I know I was. If you do get selected, congratulations to you and your hard work. </p>
<p>But if you don't, don't get disappointed since you've probably learnt so much about open-source through the process. And now you can work towards submitting your application for other open-source mentorship programs. <a target="_blank" href="https://github.com/deepanshu1422/List-Of-Open-Source-Internships-Programs">This</a> page has some great info about all the other programs.</p>
<h2 id="heading-why-you-should-do-gsoc">Why You Should Do GSoC</h2>
<p>So far, we've talked about the timeline and how to prepare your proposal. Now let's talk about the why. </p>
<p>Why should you be interested in this program and in open source in general? Let's start by talking about open source.</p>
<h3 id="heading-why-open-source">Why Open Source?</h3>
<p>Working on <strong>Open Source software</strong> is a great way to help the broader community by contributing to projects that are used by millions of people around the world. The work that you put in helps improve software that is an important part of many large scale systems. </p>
<p>Also the fact that almost all open source software is free makes it way for everyone to use it in their daily lives, be it large organizations or an everyday user. So devoting time from your busy life to work on OSS is a great and commendable feat. </p>
<p>All of this sounds awesome, but <strong>how does contributing to open source help you sustain yourself</strong>? Working on open source allows you to obtain industry level experience. You'll learn what it's like to actually work on large projects. </p>
<p>Being a contributor myself, I've had the pleasure of getting to know so much about how to actually work on changes. There are many factors that come in to play such as downloading the source code, adding changes to the code, running tests, testing out the changes manually by building a binary, pushing the changes, and so on. So much to learn.</p>
<p>Being a college student myself, I didn't have to wait for a job to learn about the industry. All I had to do was work hard and contribute to open source projects. </p>
<p>Here are some excerpts from The Linux Foundation's <a target="_blank" href="https://www.linuxfoundation.org/research/the-10th-annual-open-source-jobs-report">10th Annual Open Source Jobs Report</a> that might inspire you:</p>
<blockquote>
<p>According to 93% of the hiring managers surveyed, open source talent is increasingly difficult to find. As a result, companies are now turning towards training their staff in new cloud automation, orchestration, and developer productivity tools to close that gap as much as possible</p>
<p>The vast majority of employers (93%) report difficulty finding sufficient talent with open source skills. This trend is not going away with nearly half (46%) of employers planning to increase their open source hiring in the next six months, and 73% of open source professionals stating it would be easy to find a new role should they choose to move on.</p>
</blockquote>
<p>The report goes on to talk about how companies are willing to offer greater compensation to open source professionals and how financial incentives are making a much bigger difference. I'd recommend you to read and download the report to get a much more detailed description. </p>
<p>All in all, open source is a great way for you to learn and obtain real world knowledge and also provide you with skills that will help you to get an edge in this competitive job market.</p>
<h3 id="heading-how-does-gsoc-help">How Does GSoC Help?</h3>
<p>We talked about the benefits of open source and how it helps you learn a lot of real world skills. Now the question arises – how does GSoC play a role in this? </p>
<p>Working on a repository and contributing code is great, but it can seem really daunting. Under a mentorship program like GSoC, you get to work on a project idea with the help of a guide who's an experienced mentor. They'll help you throughout the entire process. This over a period of 3 months or more really boosts your skills and makes you a much better developer than you were previously.</p>
<p>You'll develop a lot of new skills all while learning to code in a team. Your code contribution helps the project grow, too, since you'll be working on implementing various important features. This benefits both the project and the open source community in general. </p>
<p>When I was participating in GSoC, I learned a lot about collaboration, good code practices, working with Git and so much about testing. I got to understand async practices and how to communicate my developments with my team, even if we were time zones apart. </p>
<p>I was responsible for the code that I put in and delivering the work that was expected of mel. I believe that this really helped me to grow as a person and become a better developer. </p>
<p>I also got to learn so much about what it actually was to work in a real life project and gain so much industry level experience from such talented professionals. This became an experience that I will always cherish.</p>
<p>Through this program you get introduced to the world of open source and get to meet and network with amazing developers who are going the extra mile to keep open source software free and available to all. You're introduced to a wonderful community of like-minded and passionate developers who are extremely welcoming and are willing to help other budding developers.</p>
<p>You also get sponsored while you work on writing code for such organisations which I believe is a great plus point too. All of this makes contributing to Open Source via GSoC an amazing learning experience which I believe every developer should get to enjoy.</p>
<h3 id="heading-thanks-for-reading">Thanks for reading!</h3>
<p>That's it for now! If you've decided to apply for GSoC, good luck. I hope you enjoy the process, learn a lot, and have fun contributing to open source.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I used Python to help me chose an organisation for Google Summer of Code ‘19 ]]>
                </title>
                <description>
                    <![CDATA[ By Vaibhav Gupta In this tutorial, I’ll be using python to scrape data from the Google Summer of Code (GSoC) archive about the participating organizations from the year 2009. My Motivation Behind This Project While I was scrolling through the huge li... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-used-python-to-help-me-chose-an-organisation-for-google-summer-of-code-19-75078de13194/</link>
                <guid isPermaLink="false">66c34e320fa3812cdd5ea9ff</guid>
                
                    <category>
                        <![CDATA[ data analysis ]]>
                    </category>
                
                    <category>
                        <![CDATA[ gsoc ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ web scraping ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 10 Jan 2019 16:59:38 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*ucoUbiOID-texxFdJ8v2jw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Vaibhav Gupta</p>
<p>In this tutorial, I’ll be using python to scrape data from the Google Summer of Code (GSoC) archive about the participating organizations from the year 2009.</p>
<h3 id="heading-my-motivation-behind-this-project">My Motivation Behind This Project</h3>
<p>While I was scrolling through the huge list of organisations that participated in GSoC’18, I realised that exploring an organisation is a repetitive task - choose one, explore its projects, check that if it has participated in previous years or not. But, there are 200+ organizations, and going through them all would take a whole lot of time. So, being a lazy person, I decided to use python to ease my work</p>
<h3 id="heading-requirements">Requirements</h3>
<ul>
<li><em>Python (I’ll be using python3.6, because f-strings are awesome ?)</em></li>
<li><em>Pipenv (for virtual environment)</em></li>
<li><em>requests (for fetching the web page)</em></li>
<li><em>Beautiful Soup 4 (for extracting data from the web pages)</em></li>
</ul>
<h3 id="heading-building-our-script">Building Our Script</h3>
<p>These are the web pages which we are going to scrape:</p>
<ol>
<li>For the years 2009–2015: <a target="_blank" href="https://www.google-melange.com/archive/gsoc">Link</a></li>
<li>For the years 2015–2018: <a target="_blank" href="https://summerofcode.withgoogle.com/archive/">Link</a></li>
</ol>
<h3 id="heading-coding-part">Coding Part</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*u5vEWeGuTXMWZiQQz8PbqQ.gif" alt="Image" width="480" height="268" loading="lazy">
_[GIF from Giphy](https://giphy.com/gifs/nascar-owen-wilson-daytona-500-xTiN0GMUaOI726QYZa" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-step-1-setting-up-the-virtual-environment-and-installing-the-dependencies">Step 1: Setting up the virtual environment and installing the dependencies</h4>
<p><em>virtualenv</em> can be used to create a virtual environment, but I would recommend using <em>Pipenv</em> because it minimizes the work and supports <em>Pipfile</em> and <em>Pipfile.lock</em>.</p>
<p>Make a new folder and enter the following series of commands in the terminal:</p>
<pre><code>pip install pipenv
</code></pre><p>Then create a virtual environment and install all the dependencies with just a single command (Pipenv rocks ?):</p>
<pre><code>pipenv install requests beautifulsoup4 --three
</code></pre><p>The above command will perform the following tasks:</p>
<ul>
<li>Create a virtual environment (for python3).</li>
<li>Install <em>requests</em> and b<em>eautifulsoup4.</em></li>
<li>Create <code>Pipfile</code> and <code>Pipfile.lock</code> in the same folder.</li>
</ul>
<p>Now, activate the virtual environment:</p>
<pre><code>pipenv shell
</code></pre><p>Notice the name of the folder before <code>$</code> upon activation like this:</p>
<pre><code>(gsoc19) $
</code></pre><h4 id="heading-step-2-scraping-data-for-the-years-20092015">Step 2: Scraping data for the years 2009–2015</h4>
<p>Open any code editor and make a new python file (I will name it <code>2009–2015.py</code>). The webpage contains the links for the list of organizations of each year. First, write a utility function in a separate file <code>utils.py</code> which will GET any webpage for us and will raise an <code>Exception</code> if there’s a connection error.</p>
<p>Now, get the link of the web page which contains the list of organizations for each year.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*pyKlRbBI5wfHuxFmSxoWjQ.png" alt="Image" width="722" height="615" loading="lazy">
<em>Webpage preview</em></p>
<p>For that, create a function <code>get_year_with_link</code>. Before writing the function, we need to inspect this webpage a little. Right-click on any year and click on <em>Inspect</em>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*4qOIYUKISEcOIPcshCZ8KQ.png" alt="Image" width="800" height="368" loading="lazy"></p>
<p>Note that there’s a <code>&lt;</code>ul&gt; tag, and inside it, ther<code>e ar</code>e </p><li> tags, each of which <code>conta</code>ins a &lt;span&amp;g<code>t; tag with class mdl-list__it</code>em-primary-content, inside of which is our link and year. Also, notice that this pattern is the same for each year. We want to grab that data.</li><p></p>
<p>The tasks performed by this function are in this order:</p>
<ol>
<li>Get the <code>MAIN_PAGE</code>, raise an exception if there’s a connection error.</li>
<li>If the response code is <code>200 OK</code>, parse the fetched webpage with BeautifulSoup. And if the response code is something else, exit the program.</li>
<li>Find all the <code>&lt;</code>li&gt; tags with <code>class mdl-list__item mdl-list__item — on</code>e-line and store the returned li<code>st in ye</code>ars_li.</li>
<li>Initialize an empty <code>years_dict</code> dictionary.</li>
<li>Start iterating over the <code>years_li</code> list.</li>
<li>Get the year text (2009, 2010, 2011,…), remove all <code>\n</code>, and store it in the <code>year</code>.</li>
<li>Get the relative link of each year (/archive/gsoc/2015, /archive/gsoc/2016,…) and store it in the <code>relative_link</code>.</li>
<li>Convert the <code>relative_link</code> into the full link by combining it with the <code>HOME_PAGE</code> link and store it in <code>full_link</code>.</li>
<li>Add this data to the <code>year_dict</code> dictionary with the year as key and <code>full_link</code> as its value.</li>
<li>Repeat this for all years.</li>
</ol>
<p>This will give us a dictionary with years as keys and their links as values in this format:</p>
<pre><code>{  ...  <span class="hljs-string">'2009'</span>: <span class="hljs-string">'https://www.google-melange.com/archive/gsoc/2009'</span>,  <span class="hljs-string">'2010'</span>: <span class="hljs-string">'https://www.google-melange.com/archive/gsoc/2010'</span>,  ...}
</code></pre><p>Now, we want to visit these links and get the name of every organization with their links from these pages. Right-click on any org name and click on <em>Inspect</em>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*ISaEmvazH3dr8Knfe3MtqA.png" alt="Image" width="800" height="399" loading="lazy"></p>
<p>Note that there’s a <code>&lt;</code>ul&gt; tag with <code>class md</code>l-list, whic<code>h ha</code>s </p><li> tags <code>with class mdl-list__item mdl-list__ite</code>m — one-line. Inside of each <code>th</code>ere’s an <a> tag which has the link and the organization’s name. We want to grab that. For that, let’s create <code>another function get_organizatio</code>ns_list_with_links, which takes the links of web pages which contains the organizations' list for each year (wh<code>ich we scraped in</code> get_year_with_link).</a></li><p></p>
<p>The tasks performed by this function are in this order:</p>
<ol>
<li>Get the org list page, (<a target="_blank" href="https://www.google-melange.com/archive/gsoc/2015">https://www.google-melange.com/archive/gsoc/2015</a>, <a target="_blank" href="https://www.google-melange.com/archive/gsoc/2015">https://www.google-melange.com/archive/gsoc/201</a>6, ….), raise an exception if there’s a connection error.</li>
<li>If the response code is <code>200 OK</code>, parse the fetched webpage with BeautifulSoup. And if the response code is something else, exit the program.</li>
<li>Find all the <code>&lt;</code>li&gt; tags with <code>class mdl-list__item mdl-list__item — on</code>e-line and store the returned li<code>st in o</code>rgs_li.</li>
<li>Initialize an empty <code>orgs_dict</code> dictionary.</li>
<li>Start iterating over the <code>orgs_li</code> list.</li>
<li>Get the org name, remove all <code>\n</code>, and store it in the <code>org_name</code> .</li>
<li>Get the relative link of each org (/archive/gsoc/2015/orgs/n52, /archive/gsoc/2015/orgs/beagleboard,…) and store it in the <code>relative_link</code>.</li>
<li>Convert the <code>relative_link</code> into the full link by combining it with the <code>HOME_PAGE</code> link and store it in <code>full_link</code>.</li>
<li>Add this data to the <code>orgs_dict</code> with the <code>org_name</code> as key and <code>full_link</code> as its value.</li>
<li>Repeat this for all the organizations for a particular year.</li>
</ol>
<p>This will give us a dictionary with organizations’ names as keys and their links as values, like this:</p>
<pre><code>{  ...  <span class="hljs-string">'ASCEND'</span>: <span class="hljs-string">'https://www.google-melange.com/archive/gsoc/2015/orgs/ascend'</span>,
</code></pre><pre><code><span class="hljs-string">'Apache Software Foundation'</span>: <span class="hljs-string">'https://www.google-melange.com/archive/gsoc/2015/orgs/apache'</span>,  ...}
</code></pre><p>Moving ahead, we want to visit these links and get the title, description, and link of each project of each org for each year (?). Right-click on any project’s title and click on I<em>nspect.</em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Sb8nG8HeNSqrwUVG5BTiAQ.png" alt="Image" width="800" height="398" loading="lazy"></p>
<p>Again, the same pattern. There’s a <code>&lt;</code>ul&gt; tag with <code>class md</code>l-list which contain<code>s th</code>e </p><li> tags <code>with class mdl-list__item mdl-list__ite</code>m — two-line, inside of which <code>there</code>’s an <span> <code>whi</code>ch contains an <a> tag containing our project’s <code>name.</code> Also, there’s a<code>n &lt;span&gt; tag with</code> class mdl-list__item-sub-title containing the project’s description<code>. For that, create a</code> function get_org_projects_info to get this task done.</a></span></li><p></p>
<p>The tasks performed by this function are in this order:</p>
<ol>
<li>Get the org’s description page, (<a target="_blank" href="https://www.google-melange.com/archive/gsoc/2015/orgs/ascend">https://www.google-melange.com/archive/gsoc/2015/orgs/ascend</a>, <a target="_blank" href="https://www.google-melange.com/archive/gsoc/2015/orgs/apache">https://www.google-melange.com/archive/gsoc/2015/orgs/apache</a>, ….), raise an exception if there’s a connection error.</li>
<li>If the response code is <code>200 OK</code>, parse the fetched webpage with BeautifulSoup. And if the response code is something else, exit the program.</li>
<li>Find all the <code>&lt;</code>li&gt; tags with class equ<code>al to mdl-list__item mdl-list__item — tw</code>o-line and store the returned li<code>st in proje</code>cts_li.</li>
<li>Initialize an empty <code>projects_info</code> list.</li>
<li>Start iterating over the <code>projects_li</code> list.</li>
<li>Initialize an empty dictionary <code>proj_info</code> in each loop.</li>
<li>Get the project’s title, remove all <code>\n</code>, and store it in the <code>proj_title</code> .</li>
<li>Get the relative link of each project (<a target="_blank" href="https://www.google-melange.com/archive/gsoc/2015/orgs/apache/projects/djkevincr.html">https://www.google-melange.com/archive/gsoc/2015/orgs/apache/projects/djkevincr.html</a>, ….) and store it in the <code>proj_relative_link</code>.</li>
<li>Convert the <code>proj_relative_link</code> into the full link by combining it with the <code>HOME_PAGE</code> link and store it in <code>proj_full_link</code>.</li>
<li>Store the project’s title, description and link in the <code>proj_info</code> dictionary and append this dictionary to the <code>projects_info</code> list.</li>
</ol>
<p>This will give us a list containing dictionaries with the project’s data.</p>
<pre><code>[  ...  {    <span class="hljs-string">'title'</span>: <span class="hljs-string">'Project Title 1'</span>,    <span class="hljs-string">'description'</span>: <span class="hljs-string">'Project Description 1'</span>,    <span class="hljs-string">'link'</span>: <span class="hljs-string">'http://project-1-link.com/'</span>,  },  {    <span class="hljs-string">'title'</span>: <span class="hljs-string">'Project Title 2'</span>,    <span class="hljs-string">'description'</span>: <span class="hljs-string">'Project Description 2'</span>,    <span class="hljs-string">'link'</span>: <span class="hljs-string">'http://project-2-link.com/'</span>,  }  ...]
</code></pre><h4 id="heading-step-3-implementing-the-main-function">Step 3: Implementing the main function</h4>
<p>Let’s see the code first:</p>
<p>The tasks performed by this function are in this order:</p>
<ol>
<li>We want to have a <code>final_dict</code> dictionary so that we can save it as <code>.json</code> file.</li>
<li>Then, we call our function <code>get_year_with_link()</code>, which will return a dictionary with years as keys and links to the list of organizations as values and store it in <code>year_with_link</code>.</li>
<li>We iterate over the dictionary <code>year_with_link</code>.</li>
<li>For each year, we call the function <code>get_organizations_list_with_links()</code> with the link for it as the parameter, which will return a dictionary with organizations’ name as keys and links to the webpage containing information about them as values. We store the returning value in <code>final_dict</code>, with <code>year</code> as keys.</li>
<li>Then we iterate over each org for each year.</li>
<li>For each org, we call the function <code>get_org_projects_info()</code> with the link for the org as parameter, which will return a list of dictionaries containing each projects’ information.</li>
<li>We store that data in the <code>final_dict</code>.</li>
<li>After the loop is over, we will have a <code>final_dict</code> dictionary as follows:</li>
</ol>
<pre><code>{    <span class="hljs-string">"2009"</span>: {        <span class="hljs-string">"Org 1"</span>: [            {                <span class="hljs-string">"title"</span>: <span class="hljs-string">"Project - 1"</span>,                <span class="hljs-string">"description"</span>: <span class="hljs-string">"Project-1-Description"</span>,                <span class="hljs-string">"link"</span>: <span class="hljs-string">"http://project-1-link.com/"</span>            },            {                <span class="hljs-string">"title"</span>: <span class="hljs-string">"Project - 2"</span>,                <span class="hljs-string">"description"</span>: <span class="hljs-string">"Project-2-Description"</span>,                <span class="hljs-string">"link"</span>: <span class="hljs-string">"http://project-2-link.com/"</span>            }        ],        <span class="hljs-string">"Org 2"</span>: [            {                <span class="hljs-string">"title"</span>: <span class="hljs-string">"Project - 1"</span>,                <span class="hljs-string">"description"</span>: <span class="hljs-string">"Project-1-Description"</span>,                <span class="hljs-string">"link"</span>: <span class="hljs-string">"http://project-1-link.com/"</span>            },            {                <span class="hljs-string">"title"</span>: <span class="hljs-string">"Project - 2"</span>,                <span class="hljs-string">"description"</span>: <span class="hljs-string">"Project-2-Description"</span>,                <span class="hljs-string">"link"</span>: <span class="hljs-string">"http://project-2-link.com/"</span>            }        ]    },    <span class="hljs-string">"2010"</span>: {        ...    }}
</code></pre><ol start="9">
<li>Then we will save it as a <code>json</code> file with <code>json.dumps</code> .? ?</li>
</ol>
<h4 id="heading-next-steps">Next Steps</h4>
<p>Data for the years 2016–2018 can be scraped in a similar manner. And then python (or any suitable language) can be used to analyze the data. Or, a web app can be made. In fact, I have already made my version of a webapp using <em>Django</em>, <em>Django REST Framework</em> and <em>ReactJS</em>. <strong>Here is the link for the same:</strong> <a target="_blank" href="https://gsoc-data-analyzer.netlify.com/">https://gsoc-data-analyzer.netlify.com/</a></p>
<blockquote>
<p>All the code for this tutorial is available on my <a target="_blank" href="https://github.com/dojutsu-user/GSoC-Data-Analyser">github</a>.</p>
</blockquote>
<h3 id="heading-improvements">Improvements</h3>
<p>The running time of the script can be improved by using Multithreading. Currently, it fetches one link at one time, it can be made to fetch multiple links simultaneously.</p>
<h3 id="heading-about-me">About Me</h3>
<p>Hi there.</p>
<p>I am <strong>Vaibhav Gupta</strong>, an undergrad student at <strong>Indian Institute of Information Technology, Lucknow</strong>. I love Python and JS.</p>
<p>See my <a target="_blank" href="https://dojutsu-user.github.io/">portfolio</a> or find me on <a target="_blank" href="https://www.facebook.com/vaib79">Facebook</a>, <a target="_blank" href="https://www.linkedin.com/in/vaibhavgupta79/">LinkedIn</a> or <a target="_blank" href="https://github.com/dojutsu-user">Github</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What I experienced at Google Summer of Code ]]>
                </title>
                <description>
                    <![CDATA[ By Aswin G This article is a quick summary of my experience participating in and completing Google Summer of Code 2018 (also referred to as GSoC). What is GSoC? Google Summer of Code is a program organized by Google to bring student developers into ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-google-summer-of-code-experience-e9329da27c66/</link>
                <guid isPermaLink="false">66c36180e4cb1ff6521c8280</guid>
                
                    <category>
                        <![CDATA[ Google ]]>
                    </category>
                
                    <category>
                        <![CDATA[ gsoc ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 24 Aug 2018 12:39:00 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*g5RBYeGe0VLB6t_ZsvO_wQ.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Aswin G</p>
<p>This article is a quick summary of my experience participating in and completing Google Summer of Code 2018 (also referred to as GSoC).</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/dQWqLEerkgkz8Gu89J3gUymNppjOy2ZscfM4" alt="Image" width="800" height="475" loading="lazy"></p>
<h3 id="heading-what-is-gsoc">What is GSoC?</h3>
<p>Google Summer of Code is a program organized by Google to bring student developers into open source development. As the name suggests, it takes place every summer, during the months of April to August. During those months, selected students spend their summer coding for one of the several open source organizations taking part in the event.</p>
<p>Students can browse the list of organizations taking part in the event, with most of them having an <strong>ideas</strong> page that indicates which part of their existing projects could use some more work. Students can then submit up to three proposals to these organizations. The proposal should describe exactly what you have planned to work on over the summer, and why you should be the person to work on that.</p>
<p>Then, after a month long wait, the selected students are announced — and after a brief “community bonding” period, they can begin coding. Apart from the certificate of being a <strong>GSoC scholar</strong>, Google further incentivizes participation by providing a stipend to the student — varying from $6600 to $2400, depending on your location — it’s $2400 here in India.</p>
<h3 id="heading-what-are-open-source-organizations-how-are-they-important">What are open source organizations? How are they important?</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/67ID7G4pwqCBmyyLCJ2qAGSL7aixTT3IxZSY" alt="Image" width="800" height="627" loading="lazy">
_The best tools are often open source! (Image credit: [hackernoon](https://hackernoon.com/lessons-for-creating-good-open-source-software-1b7bbbc13b13" rel="noopener" target="<em>blank" title="))</em></p>
<p>Open source organizations have the code for their product(s) on a collaboration platform, such as GitHub. The idea here is that a core team directly working for the organization will maintain the code repository (and often contribute the largest chunks of code) — while anyone else can contribute to the code, open issues with the existing product, or use the product themselves (for free, usually).</p>
<p>Open source organizations are the backbone of the FOSS culture, which promotes free and open source software, encourages sharing and collaboration, and tries to make software available to a wider audience by removing monetary restrictions. Some of the best products and tools out there are open source, particularly in the software development world with just about everything from popular IDEs to the programming languages themselves being open source.</p>
<h3 id="heading-getting-selected">Getting Selected</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/RcNw3oCUXWpyZZJ9hLavh5MoSOzYavx4TWqe" alt="Image" width="740" height="258" loading="lazy">
_We all have to start somewhere! (Image credit: [xkcd](https://xkcd.com/" rel="noopener" target="<em>blank" title="))</em></p>
<p>Initially, since I was a freshman, I had planned to apply for GSoC at the end of my sophomore year in college — and spend the time in between sharpening my skills so as to be good enough to get selected.</p>
<p>Out of curiosity, I decided to browse through the GSoC organizations list a week before the proposal submission deadline to see what kind of projects was available. Interestingly enough, I found quite a few projects that I felt was not too complicated for me.</p>
<p>After a brief “Oh, I could try for this right now” moment, I hastily drafted three proposals for three different organizations and submitted them before the deadline. The proposal I had submitted for <a target="_blank" href="https://zulipchat.com/">Zulip</a>, an open source productivity chat application, based around improving the UI/UX of their React Native mobile app ultimately got accepted.</p>
<p>Most organizations select students who have previously contributed to their code base, since they would have an assurance on the quality of code these students could produce — rather than selecting solely on the basis of their proposals. The Zulip proposal guidelines explicitly asked the students to submit links pointing to their previous contributions to Zulip and other open source organizations, which was a blank for me. As a result I wasn’t particularly hopeful that I would get selected, but I decided to try all the same.</p>
<p>Communication with the members of the organization is crucial for GSoC. Sometimes you’ll have to go hunting for IRC channels or mail lists to establish communication. Zulip is a chat application and had a dedicated chat server for developers. I hopped on it after the proposal submission deadline and made sure to get involved in the conversation there. I solved a few minor issues, submitted a number of Pull Requests to the Zulip mobile repository on GitHub, updated them as per code review and got them merged.</p>
<p>Of course, there were several other students doing this too, but when the selected students were finally announced, my name was on the list. This was the single biggest achievement I had obtained so far, and I was incredibly happy.</p>
<h3 id="heading-the-coding-period">The Coding Period</h3>
<p>I had a wonderful time coding with the fantastic and helpful community at Zulip. My mentors were two former GSoC students — and along with the admins who carefully reviewed my code — they patiently explained the mistakes I had made, if any, and helped me shape my code to hit the standard required for it to be merged in.</p>
<p>Another pleasant perk of being part of Zulip was attending the week-long meetup of Zulip members. Getting to personally know the team of coders from all over the world was amazing, and was truly an experience that made me feel part of the community.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/-65OBR6C6FRClietbCkLkulrVEdsa743O2gt" alt="Image" width="800" height="533" loading="lazy">
<em>The week-long Zulip retreat was quite amazing!</em></p>
<p>In short, I can definitely say my coding skills have improved over the three months of GSoC. My git-fu (GitHub skills) — which were restricted to the basic cycle of <code>add-commit-push</code> — significantly improved first. I was required to rebase, reorder and split commits to get them in an order that made more sense.</p>
<p>The single biggest difference between contributing to an organization and a personal project is that the organization’s product is used by thousands of people around the world. The existing code base was created by someone else, and the code I contribute should be understandable to another person who might work on it in the future.</p>
<p>Writing clear documentation, structuring your code to meet standards, and making sure your changes does not break anything else was a truly educational experience — for a person who was used to tearing down and hastily refactoring large chunks of code to make room for new features and write little to no documentation for my hobby projects ‘till then.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Google Summer of Code is a great opportunity for students to work on a project that truly matters, and exponentially increase their ability as a coder and the ability to work in a large team. Of course, coming off $2400 richer is great as well :)</p>
<p>Going forward I will continue to contribute to Zulip, and remain a part of that community. I would strongly recommend to anyone who has a passion in coding and FOSS to apply to GSoC’19 when it is announced, as it is quite the experience to remember.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
