Winter of Code
Open Source Hackathon by Cyber Labs
Pre-requisites
● None (Except Git, Github)
Fees
● None
TRACKS (Fields you can contribute in)
● Web Development
● App Development
● Machine Learning
● Graphic Designing
● Information Security
Winter of Code Timeline
● January 24 Registrations open
● January 31 Last date for submission of proposals
● February 14 Coding Period Starts
● February 26 Mid Evaluations
● March 18 Coding Period Ends
● March 30 Results will be announced
Winter of Code Successful completion criterion
Project completion/adequate progress is mandatory.
PRIZES
● Participants from each division, who successfully complete the
winter of code, will receive shortlist chance to interview
process.
● Cash Prizes and Exciting goodies await the winners!
Some Important Points
● The competition will be online, so you can participate from
anywhere.
● Winter of Code is an individual event. (no formation of teams)
Future Events (for first year only)
Winter of Code 2021 April 2021
Winter of Code event by Interviews
CyberLabs inspired by Regular sessions related to fields
Google Summer of Code (only for members of CyberLabs)
January June-October
2021 (No vacation) 2021
June 2021 onwards
March 2021
Test for recruitment procedure Preparation for summer
(optional for participants of Winter of programs (GSoC, RGSoC)
code or IIT (ISM) website competition)
What is open source?
● Computer software where the source code is distributed
under an open source license that allows anyone to study,
change, improve and distribute the software.
● Promotes collaboration by teaching how to work in a big
organization
● Community of dedicated developers
What is GSoC?
Google Summer of Code (GSoC) is an online, international
program funded by Google designed to encourage university
student participation in open source software development.
About
Students work for an open source software organization, and
earn a stipend for successfully completing the project.
University students spend their time outside of school working
in a field that can help them with their studies and career after
university.
Goals of the program
● Motivate students to begin participating in open source
development.
● Provide students in Computer Science and related fields the
opportunity to do work related to their academic pursuits.
● Give students exposure to real-world software development
scenarios (e.g., testing, version control, software licensing,
mailing-list etiquette, etc.).
● Create more open source code.
● Help open source projects bring in new developers.
How does GSoC work?
● Open source software projects apply to be mentor
organizations
● Google chooses the organizations to participate (206 in
2018)
● Students submit project proposals to mentor organizations
How does GSoC work?
● Mentor organizations choose the students they’d like to
accept
● Students are paired with a mentor to help them throughout
their project
● Coding begins! Students work towards milestones laid out
in their project proposal with their mentor over 12 weeks
Evaluations
● Students must pass three evaluations
● Students who pass each evaluation are paid a stipend for
their work
● At the conclusion of GSoC, students submit the code they’ve
written for their project for everyone to see and use!
Eligibility
● Over 18 upon registration
● Accepted into or enrolled in a university program by the
student acceptance date
● Eligible to work in the country in which you reside
● Have participated in no more than 1 previous GSoC
Statistics
● In 14 years over 14,762 students from 109 countries have
been accepted into GSoC
● Countries with the most students:
○ India (3,436), United States (2,432), and Germany (825)
● Approximately 35+ million lines of code have been produced
Statistics (GSoCers from IIT(ISM))
Last 2 years GsoC results from IIT (ISM)
○ GSoC 2017 :- 4 Selections
○ GSoC 2018 :- 9 Selections
○ GSoC 2020 :- 6 Selections
○ GSoC 2021 :- 5 (You decide)
○ GSoC 2022 :- _ _ (You decide)
Useful links
● Program Site: [Link]
● Student Guide: [Link]
● Google Open Source Blog: [Link]
Want to see a sample successful GSoC
Proposal?
version control with git
why git?
history:
Know exactly which files changed, who made those changes, and when
those changes occured.
backup:
Ability to have different versions of the code in different places.
collaboration:
Collaborate easily with other people on the same codebase
workshop outline
my first git:
git good:
git world:
$ terminal commands are typed with
this font and color.
my first git
Create your shiny repo and your first commit.
what is a repository?
A repository is like any other folder on your computer, it can contain any type
of file and works in exactly the same way…
Except:
It has a hidden file named ".git" that stores the history of that folder
first, install git
second, start a new repository by
$ git init <repository name>
what are commits?
snapshots of the state (e.g. code) of your repository
commit your work by using
$ git add .
$ git commit -m “<details>”
more about commits
Bc7fd9 Commits form a linked list
“Add
Oranges” structure which shows what you
have done over time.
a3ffde
“Add apples” Use git log to see your commit
history.
9cd1ce
“First commit,
Add [Link]”
staging changes
git add git commit
Unstaged Staged Committed
Changes Changes Changes
git reset . git reset <hash>
my first git: recap
$ git init - converts a folder to a super smart git repository.
$ git add - adds the files you want to be tracked to the staging area.
$ git commit - creates a new snapshot of your repository at that point in
time.
$ git reset - Undo your commit or unstage your files.
$ git log - View your commit history.
$ git status - See the current status of your repository
git good
branching, context switching, merging
commits
Bc7fd9
“Add oranges”
a3ffde
“Add apples”
9cd1ce
“First commit,
Add [Link]”
working with branches
$ git branch - see a list of all available branches.
$ git branch <branchname> - create a new
branch with the desired name, based on the current
branch.
working with HEAD
$ git checkout <branch name> - Redirect HEAD to
the desired branch
commits branches HEAD
Bc7fd9
master HEAD
“Add oranges”
somebranch
a3ffde
“Add apples”
9cd1ce
“First commit,
Add [Link]”
merging = combining commits
$ git merge <branch name> - creates a new commit
that combines the last commit of the current HEAD branch
with the last commit of the desired branch.
git good: recap...
$ git branch - List all branches
$ git branch <name> - creates a branch with that name
$ git checkout <name> - jump to the branch with this name
$ git merge --no-ff <name> - merge the branch with this name into
the current one.
git world
publishing, updating and downloading
downloading / updating Repos
$ git clone <url> - downloads a copy of a remote
git repository.
$ git pull - performs a merge of what you have on
your computer with what's on the server.
$ git push - sends your version to the server.
QUESTIONS?