Skip to main content

2 posts tagged with "KWoC"

Bolgs related to Kharagpur Winter of Code

View All Tags

KWoC 2023 Report

· 4 min read
Tejas Pandey
Executive

Hello everyone!

The Kharagpur Winter of Code (KWoC) 2023 has come to a close, and what an incredible journey it has been! For those unfamiliar, KWoC is an annual five-week program where students, many of whom are new to open-source software, contribute to coding projects under the guidance of experienced mentors. This program, hosted by the Kharagpur Open Source Society (KOSS) at IIT Kharagpur, is open to students from all universities, creating a diverse and inclusive environment.

The Motivation

KWoC's main aim is to provide students with guidance and mentorship as they take their first steps into the world of open source. It helps build bridges between budding developers and experienced mentors. This early guidance is especially beneficial for freshmen and sophomores, helping them build confidence and skills that will be invaluable for larger programs like Google Summer of Code (GSoC).

How It Works

KWoC has always been an online program, operating through its dedicated website. The process begins with mentors registering their projects. By the last week of November, the accepted projects are listed on the website, and student registrations begin. Students then browse through the projects, select those that interest them, and start contributing.

The Kickoff

This year's journey started with an Introductory Seminar on November 11th, held on Google Meet and livestreamed on youtube.

The seminar covered:

  • What KWoC is all about
  • Eligibility and participation details
  • Benefits for both beginners and experienced coders
  • The program timeline
  • Helpful resources
  • FAQs and live Q&A

Participation Stats

  • Mentor Registrations: Began on November 12th
  • Student Registrations: Started on November 25th
  • Registered Mentors: 107
  • Approved Projects: 69
  • Registered Students: 1393

The Coding Period

The coding period officially started on December 9th. This phase was a hive of activity as students collaborated with their mentors, working on issues, and implementing new features. By December 24th, mid-evaluations were conducted. To pass, students needed to have at least one open or merged pull request (PR) in their project. 133 students met this criterion and moved forward.

Mid and End Evaluations

End evaluations began on January 9th, requiring students to have at least two open or merged PRs. 100 students met this requirement and were asked to write detailed blog reports about their KWoC experience, with a submission deadline of January 15th. These reports, along with mentor feedback, determined the successful participants.

Highlights and Achievements

KWoC 2023 saw tremendous achievements and growth:

  • Projects: 69
  • Mentors: 107
  • Students Registered: 1393
  • Students with At Least One Merged PR: 90
  • Mid Evaluations Passed: 133
  • End Evaluations Passed: 100
  • Blog Reports Submitted: 71
  • Successful Participants: 62
  • Total Merged PRs: 503
  • Total Commits: 1353
  • Lines of Code Changed: +1.01M / -52k

Closing Thoughts

Embarking on an open-source project can be intimidating, especially for those new to coding. It often begins with the excitement of exploring projects and wanting to make a meaningful contribution. However, navigating unfamiliar codebases and understanding project conventions can be intimidating. The key is to break down complex problems into smaller, solvable pieces and to learn progressively. approach not only helps in understanding coding practices but also builds resilience and patience to work on large projects.

Mentor interaction is crucial in KWoC, and while some students faced challenges in communication, many found mentors to be incredibly supportive. The relationship between mentors and mentees often blossomed into a collaborative learning experience, with mentors guiding students through coding practices and project development. We extend our heartfelt thanks to all mentors for their invaluable support and dedication throughout the program

KWoC 2023 has been a celebration of code, collaboration, and community. The success of this edition is a testament to the hard work and passion of everyone involved—students, mentors, and the KOSS team. Certificates were awarded to successful participants, and the top 10 performers will be awarded goodies from FOSS United.

As we wrap up another successful year of KWoC, we're excited to see how this experience will impact the future paths of all participants. Collaboration and learning are at the heart of open source, and KWoC 2023 has been a great example of this spirit.

A heartfelt thank you to everyone who contributed to making this year's event a success.

Best wishes, Kharagpur Open Source Society

An informal introduction to KWoC

· 9 min read

Great People of tomorrow, every perfume starts with one ingredient but it is the last one that makes it come to life.

Hi! and Welcome! To all esteemed student who are trying to pursue their dreams irrespective of their departments and previous experience.

Everyone is welcome. Here “Everyone” is not a metaphor, “Everyone” means everyone.

Open source is not just “GSoC”. It is a lot about, idea, ego, altruism, expression and satisfaction. From software to hardware to information anything can be opensource. We do open-source because we love to. “GSoC” is just a good motivation to start.

Some famous open source projects:

Firefox, Linux, Ubuntu, VLC.

Now coming back to KWoC, common problems faced and how to be prepared.

Psychological Barriers :- Completing KWoC requires you to overcome a statement “I have just started with coding” or “These are State of Art things,It requires a lot of experience”. I will easily term these statements as myths or excuse.

Why these thoughts arise?

From project info. You will read fancy terms as “Scraping” “Audio-recognition” “Natural Language Processing” “Deep Learning” “Networking” and you will lose your heart. But the matter of truth is that project info tells you just about what that project really does, not about the process how it performs that task. In most of the projects mentioned, you are not going to implement everything yourself and you don’t need to read everything present in the codebase. There are pre-implemented library for most of state of art things, you just need to learn some basic info about how to use these libraries.

Most of the software development is based on basic conditional statements, libraries and lot of common sense.

Mentor Problem:- A lot of time there is a problem in response of mentor. A lot of time mentor doesn’t respond in a helpful way or doesn’t respond at all. Let me tell you a ravishing truth “This phenomenon happens in GSoC as well”. Really you can’t help. Now what, you are in shoes of Robert frost, “Two roads diverged in a yellow wood, And sorry I could not travel both”, either you can become hopeless again and take a road more traveled or you can make it a memorable event where you overcame your mediocrity. Try some other project with similar portfolio. The cycle is shortlist project, talk to mentor, if you find him convincing or if you think you can do project without his guidance then only proceed, then code debug and repeat.Bug co-ordinator, but mark my word if you are bugging anyone it’s your responsibility to respect his/her time, give back your effort or remember that “Karma is a bitch”.

**Ubuntu:-**If you are new to ubuntu, “KWOC is going to be really awesome” . Because you will remember this winter for like 1–2 years, because if you are high on grit you will be going through a lot of learning shit. Okay, Siri is here to your rescue, Ubuntu is nothing like Windows but considering you as a Windows user, Instead of .exe there are other methods to install applications.

Here is some Chinese wisdom for you my friend.

There is terminal in ubuntu (ctrl + alt + t). Here is an important [link] to make you little aware of terminal. Get aware of this blog, terminal is quite important for software development. Here is the **[chest] of all beginner friendly links.How to install software and libraries[link]. You don’t need to learn everything at one go. As you start coding and setting up environment for your respective project refer to these link as per need. If you have not installed Ubuntu then visit this [link]**.

Git:- A command line tool to save different versions of your code wrt to changes. Nothing more or less than that. People have complicated this unnecessarily. It also interacts with Github and Bitbucket.

One of the best places to learn git is Learn Git Branching

Starter pack of git :-

a) If you have installed Ubuntu very recently then for installation of git

sudo apt update && sudo apt install git

b) When you use git for the first time, you’ll have to configure it with details matching with your GitHub profile.

git config — global user.name “ ”

git config — global user.email “ ”

c) If you are behind a proxy server then to configure git to access Github.

git config — global http.proxy 172.16.2.30:8080

d) Then login in your Github account.

This is just a sample. Change URL according to your project. Don’t just blindly copy paste. Read instruction properly.

e) Visit this link Kossiitkgp website repo [Visit your respective project link].

f) On top right of that window click on watch button and pick watching option

g) Beside that button is star, star it as well, then there is fork button, click on fork button.

h) Then you will be automatically directed to your forked window.

k) Click on that green button of clone or download.

l) When you click there, a menu appears where there is an option to copy link but ensure that you copy the link is in this format

And not in this format:

m) Then press ctrl+alt+t

n)Then enter in terminal “git clone ” and then press ctrl+shift + v and then hit enter (hitting enter is an untold rule).

git clone

o) cd kossiitkgp.github.io [change according to name of your project]

p) Then enter in terminal git remote add upstream and then press ctrl+shift+v

git checkout -b newbranch

r) If you can, edit some files in cloned folder (using git clone)for productive use, save your changes by ctrl + s (if using sublime or gedit etc) .

s) Then properly review your changes then type this command in terminal in already opened terminal.

git add -A

git commit -m “ ”

git push origin

v) Enter your username and password. While entering password you will not see anything

w) Done

x) Then visit https://github.com/your-user-name(plz change)/kossiitkgp.github.io

y) Then click on pull request then click on create new pr.(Check two branches which you are comparing)

z) If you are sending pr after few days of cloning then before git push first do

git pull

**(there are other methods as well like fetch and rebase) **or face the wrath of merge conflict.

For proper crisp tutorial read [this].

Github:- It is just a website(like Fb/Orkut) where pull request are similar to Fb’s friend request. It is definitely more productive and useful.

But a more complicated definition

“GitHub is a web-based Git or version control repository and Internet hosting service. It is mostly used for code. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project.”

Definitely, it gives a lot more insight only if you understand the terminology :) :)

Reading codebase:- My steps would be:

A)

1. Setup a source insight( or any good source code browser you use) workspace/project with all the source, header files, in the code base. Browsing at a higher level from the top most function(main) to lowermost function. During this code browsing, keep making notes on a paper/or a word document tracing the flow of the function calls. Do not get into function implementation nitti-gritties in this step, keep that for a later iterations. In this step keep track of what arguments are passed on to functions, return values, how the arguments that are passed to functions are initialized how the value of those arguments set modified, how the return values are used ?

2. After one iteration of step 1, after which you have some level of understanding of code and data structures used in the code base, setup a…………………..[source]

B)

  1. Identify why I’m reading code. Could be to understand an algorithm, see different coding style, learn a language, find a defect, figure out a workaround, understand a badly documented feature, know how to extend a feature, make a plugin, discover how to exploit a feature beyond the initial intents, …

  2. Find where to start reading. That could be the main/index file of the application or library, a manifest. Or you could search the code for a documented feature……………….[source]

Googling:- Google any error which comes while development.This [URL] is in different context though. But you can get some idea. If you face any problem while development just translate your problem to words and search, if you are not getting solution reframe your problem and then search again. Before asking anyone perform the above instruction at least two times.

Learning:- Learn what you google. If you are just googling and not learning you are equally dependent as you were before. Here learning refers to mugging.

**Libraries:-**This is the basic difference b/w Windows and Ubuntu , In Windows, we install whole everything to do something but in Ubuntu, we install something to do a lot of thing. A minimalistic approach towards development.

As one of the member of open-source community, I would like you to introduce to its manifesto

We need to take information, wherever it is stored, make our copies and share them with the world. We need to take stuff that’s out of copyright and add it to the archive. We need to buy secret databases and put them on the Web. We need to download scientific journals and upload them to file sharing networks. We need to fight for……….[source]

Collective intelligence — multinational, multiagency, multidisciplinary, multidomain information-sharing and sense-making — is the only means of obtaining near-real time understanding of complex systems sufficient to achieve resilience in the face of changes. Many of these changes, including biospheric ones such as climate change and depletion of planetary resources, are the result of human activity and industry in the last three centuries.[source]

In a more beautiful way

“Beneath the mask, there is more than flesh, there is an idea and ideas are bulletproof”

With Love From:

Kharagpur Open Source Society