Skip to content

Commit fa17d4a

Browse files
committed
updated
1 parent efba36a commit fa17d4a

File tree

1 file changed

+43
-44
lines changed
  • pages/blog/my-google-summer-of-code-journey

1 file changed

+43
-44
lines changed

pages/blog/my-google-summer-of-code-journey/index.md

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,30 @@ thumbnail: "/header.png"
1010
template: "blog-post.html"
1111
---
1212

13-
<h1>My Google Summer of Code Journey</h1>
14-
1513
# About Me
1614
I am <b>[Kishan Ved](https://github.com/Kishan-Ved)</b>, an undergraduate student at the Indian Institute of Technology Gandhinagar (IIT Gandhinagar), India, in the department of Computer Science and Engineering. I spent the summer after my second year doing my Google Summer of Code 2024 project with the NumFOCUS organization (which serves as an umbrella organization for open source projects), which had Open Science Labs as a sub organization. The project I worked on is: <b>[PyDataStructs](https://github.com/codezonediitj/pydatastructs)</b>.
1715

1816
# About PyDataStructs
1917

2018
<b>[PyDataStructs](https://github.com/codezonediitj/pydatastructs)</b> aims to be a Python package for various data structures in computer science. It also contains several algorithms including their parallel implementations. Everything is just a few calls away, and users don't need to write any code from scratch. The APIs provided are consistent with each other, clean and easy to use. All implementations are well tested, 99% lines of code have already been tested by developers. PyDataStructs is the first well-designed library/package which covers most of the data structures and algorithms, with different backends like Python and C++.
2119

22-
# My first contribution to open source
20+
## My first contribution to open source
2321
I began contributing to open source in December 2023, when I connected to a senior student at my university who had also done GSoC in 2023, with PyDataStructs. I was interested in the project that she did and hence I started exploring the codebase.
2422

25-
## Finding a good first issue
23+
### Finding a good first issue
2624
I went to the issues tab on the repository's github page and searched for good first issues. I noticed an issue that seemed doable: <b>[Implement Introsort](https://github.com/codezonediitj/pydatastructs/issues/545)</b>. This involved implementing the sorting algorithm: Introsort in the Python backend. I had learned this as a part of my academic cousework, and hence, I was able to code this.
2725

28-
## My first Pull Request
26+
### My first Pull Request
2927
I started reading the README file and set up the repository locally and created the conda environment. Then I got to work. In a day, I was able to successfully create a PR (pull request) and open it on GitHub: <b>[Implemented Introsort](https://github.com/codezonediitj/pydatastructs/pull/549)</b>. This PR was reviewed and changes were requested. Once I had done all of them and all the CI checks passed, it was merged. And that's my first open souce contribution!
3028

31-
# Pre-GSoC Phase
29+
## Pre-GSoC Phase
3230

3331
Next, I connected to the maintainer, <b>[Gagandeep Singh](https://github.com/czgdp1807)</b>, and expressed my interest for contributing. He suggested that I contribute to more organizations, like: <b>[LFortran](https://github.com/lfortran/lfortran)</b> and <b>[LPython](https://github.com/lcompilers/lpython)</b> to maximize my chances for GSoC. These organizations also had Gagandeep Sir as the core maintainer and developer.
3432

35-
## The amazing open source community
33+
### The amazing open source community
3634
I found the open source community amazing, everyone was ready to help me with every doubt I had, patiently guide me with differnt git commands to resolve conflicts and review my PRs and give valueable advice. I made new friends, who were almost of the same age as me, who had been contributing since quite a while. They made things easier for me and helped me contribute.
3735

38-
## More open source contributions
36+
### More open source contributions
3937
I spent the next 3 months contributing to these organizations, and I had 10 merged PRs in the LFortran repository and 5 merged PRs in the LPython repository. Here's a link to these:
4038

4139
- <b>[LFortran contributions](https://github.com/lfortran/lfortran/pulls?q=is%3Apr+author%3AKishan-Ved+is%3Amerged)</b>
@@ -44,7 +42,7 @@ I spent the next 3 months contributing to these organizations, and I had 10 merg
4442

4543
These made me well versed with various git commands, the skill of handling a large and dynamic codebase and communicating effectively with the community to incorporate suggestions and solve issues.
4644

47-
## Drafting my GSoC proposal
45+
### Drafting my GSoC proposal
4846
Next, it was time to submit proposals for GSoC projects. By then, I had been contributing to open source for nearly 3 months. I requested a meeting with Gagandeep Sir to help me decide my proposal. He kindly agreed and we set up an online meeting, where we discussed potential GSoC ideas and the timeline that was best suited for me.
4947

5048
I submitted 2 proposals, to LPython (Python Software Foundation) and PyDataStructs (NumFOCUS):
@@ -55,13 +53,13 @@ I submitted 2 proposals, to LPython (Python Software Foundation) and PyDataStruc
5553

5654
The proposals should have personal information, details about previous open source contributions made to the organization's repository, and detailed information about the project that you wish to take up, with a structured plan about your goals. In addition to this, it must contain an expected timeline that you will follow. It's a good practice to set a large number of small goals and plan tasks before starting the project.
5755

58-
## Continuing open source contributions
56+
### Continuing open source contributions
5957
It's a good practice to remain active in the organizations by contributing even after submitting GSoC proposals, this makes the developers believe that you are genuinely interested in the project and enthusiastic to contribute. This amplifies chances for getting selected for Google Summer of Code!
6058

61-
# GSoC Phase
59+
## GSoC Phase
6260
I got my acceptance letter at 11:32 pm IST on May 1, 2024. It was 2 minutes past the result declaration time and I was at the edge of my seat. I was overjoyed to get the mail saying I was accepted as a Google Summer of Code contributor for NumFOCUS! Here's my project: **[Open Science Labs: PyDataStructs: Add a C++ Backend for tree data structures and their algorithms](https://summerofcode.withgoogle.com/programs/2024/projects/2nrxEFTg)**
6361

64-
## My GSoC project goals
62+
### My GSoC project goals
6563

6664
My project involved adding a C++ backend for all tree data structures in **[PyDataStructs](https://github.com/codezonediitj/pydatastructs)**, a Python package for advanced data structures and algorithms. The user has an option to select either the Python backend or the C++ backend.
6765

@@ -73,48 +71,49 @@ tree = RedBlackTree(backend=Backend.CPP)
7371

7472
For any data structure, the Python backend is developed first, and once completely tested and ready, its C++ backend is developed. Both the backends share full functionality and are completely compatible. The C++ backend is extremely fast, it executes codes 8-10 times faster. This enhances the computation speed, making it extremely valuable for scientific computing and high-performance applications.
7573

76-
## The community bonding period
74+
### The community bonding period
7775
I'll be honest, it was difficult at the start. I found the project a little more difficult than I had anticipated, and realized that it demanded a little more that my current skillset. My mentor, Gagandeep Sir, adviced me to read the documentation and first learn about Python-C API, which was something totally new for me. I spent the first week doing this, and I could barely write any code. However, I soon realized the importance of reading the documentation and how smoothly things went following that. Within a week, I became well versed with all the new technology and started coding up my first PR.
7876

79-
## Coding phase
77+
### Coding phase
8078

8179
I started working from the community bonding period itself, and this gave me a good headstart and allowed me to complete the project in 12 weeks. Here's an outline of all the work I did:
8280

83-
### Pre GSoC Work
81+
#### Pre GSoC Work
8482

85-
| PR Description | Contribution |
86-
|------------------|--------------|
87-
| **[Added Introsort algorithm](https://github.com/codezonediitj/pydatastructs/pull/549)** | **+127** |
88-
| **[Fixed version related bugs](https://github.com/codezonediitj/pydatastructs/pull/553)** | **+4** |
83+
| PR Description |
84+
|------------------|
85+
| **[Added Introsort algorithm](https://github.com/codezonediitj/pydatastructs/pull/549)** |
86+
| **[Fixed version related bugs](https://github.com/codezonediitj/pydatastructs/pull/553)** |
8987

90-
### Community bonding period
88+
#### Community Bonding Period
9189

92-
| PR Description | Contribution |
93-
|------------------|--------------|
94-
| **[C++ backend for Node, TreeNode, ArrayForTrees, BinaryTree and BinarySearchTree and all tree traversals implemented](https://github.com/codezonediitj/pydatastructs/pull/556)** | **+1,936** |
90+
| PR Description |
91+
|------------------|
92+
| **[C++ backend for Node, TreeNode, ArrayForTrees, BinaryTree and BinarySearchTree and all tree traversals implemented](https://github.com/codezonediitj/pydatastructs/pull/556)** |
9593

96-
### Coding Phase 1
94+
#### Coding Phase 1
9795

98-
| PR Description | Contribution |
99-
|------------------|--------------|
100-
| **[C++ backend for Self Balancing Binary Tree](https://github.com/codezonediitj/pydatastructs/pull/559)** | **+328** |
101-
| **[C++ backend for Red Black Trees](https://github.com/codezonediitj/pydatastructs/pull/560)** | **+748** |
102-
| **[C++ backend for Binary Indexed Trees](https://github.com/codezonediitj/pydatastructs/pull/561)** | **+179** |
103-
| **[C++ backend for Splay Trees](https://github.com/codezonediitj/pydatastructs/pull/562)** | **+423** |
96+
| PR Description |
97+
|------------------|
98+
| **[C++ backend for Self Balancing Binary Tree](https://github.com/codezonediitj/pydatastructs/pull/559)** |
99+
| **[C++ backend for Red Black Trees](https://github.com/codezonediitj/pydatastructs/pull/560)** |
100+
| **[C++ backend for Binary Indexed Trees](https://github.com/codezonediitj/pydatastructs/pull/561)** |
101+
| **[C++ backend for Splay Trees](https://github.com/codezonediitj/pydatastructs/pull/562)** |
104102

105-
### Coding Phase 2
103+
#### Coding Phase 2
106104

107-
| PR Description | Contribution |
108-
|------------------|--------------|
109-
| **[C++ backend for AVL Trees](https://github.com/codezonediitj/pydatastructs/pull/564)** | **+488** |
110-
| **[C++ backend for Cartesian Trees](https://github.com/codezonediitj/pydatastructs/pull/567)** | **+254** |
111-
| **[C++ backend for Treap](https://github.com/codezonediitj/pydatastructs/pull/568)** | **+150** |
112-
| **[C++ backend for all trees in `binary_trees.py` file complete](https://github.com/codezonediitj/pydatastructs/pull/569)** | **+72** |
113-
| **[Updated Documentation](https://github.com/codezonediitj/pydatastructs/pull/570)** | **+12** |
105+
| PR Description |
106+
|------------------|
107+
| **[C++ backend for AVL Trees](https://github.com/codezonediitj/pydatastructs/pull/564)** |
108+
| **[C++ backend for Cartesian Trees](https://github.com/codezonediitj/pydatastructs/pull/567)** |
109+
| **[C++ backend for Treap](https://github.com/codezonediitj/pydatastructs/pull/568)** |
110+
| **[C++ backend for all trees in `binary_trees.py` file complete](https://github.com/codezonediitj/pydatastructs/pull/569)** |
111+
| **[Updated Documentation](https://github.com/codezonediitj/pydatastructs/pull/570)** |
114112

115113
---
116114

117-
## Contribution Stats:
115+
116+
### Contribution Stats:
118117

119118
Lines added: **+4,721** (#2 contributor in terms of lines added)
120119

@@ -124,7 +123,7 @@ Total merged Pull Requests : 12
124123

125124
Here's a complete list of all my **[merged PRs](https://github.com/codezonediitj/pydatastructs/pulls?q=is%3Apr+is%3Amerged+author%3AKishan-Ved)**
126125

127-
## Speed results
126+
### Speed results
128127

129128
<details>
130129
<summary>Click to see a benchmark code</summary>
@@ -212,19 +211,19 @@ Time taken for methods of Binary Search Tree class to execute in different backe
212211
The picture clearly indicates the utility of the C++ backend. It makes code execution much faster. This is helpful for high-performance computing.
213212

214213

215-
## Weekly reports
214+
### Weekly reports
216215

217216
My Google Summer of Code blogs are available on my website: **[https://kishanved.tech/blog/](https://kishanved.tech/blog/)**
218217

219-
## Final Report
218+
### Final Report
220219

221220
My final report for Google Summer of Code 2024 is available here: **[Google Summer of Code 2024 Report](https://gist.github.com/Kishan-Ved/ebe0a971220d67517ae815e4f92d2459)**
222221

223-
## Future work
222+
### Future work
224223

225224
My project is complete, the C++ backend for all trees is fully functional. Some (non-critical) issues have been opened, these need to be addressed. For upcoming plans (and major goals), refer **[PyDataStructs Wiki](https://github.com/codezonediitj/pydatastructs/wiki/Google-Summer-of-Code-Project-Ideas)** on GitHub.
226225

227-
## Learnings
226+
### Learnings
228227

229228
**Tech**: Mastered the art of linking a Python code to a C++ backend by using the Python-C API to improve speeds greatly. Polished my C++ and Python coding skills.
230229

0 commit comments

Comments
 (0)