<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://ossd-s26.github.io/Vincent08199-weekly/feed.xml" rel="self" type="application/atom+xml" /><link href="https://ossd-s26.github.io/Vincent08199-weekly/" rel="alternate" type="text/html" /><updated>2026-05-04T19:22:49+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/feed.xml</id><title type="html">Xiancheng Su</title><subtitle>CSCI-UA 480 Student, Spring 2026</subtitle><entry><title type="html">Week 15 – Open Source Presentation Reflection</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week15/" rel="alternate" type="text/html" title="Week 15 – Open Source Presentation Reflection" /><published>2026-05-03T00:00:00+00:00</published><updated>2026-05-03T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week15</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week15/"><![CDATA[<h2 id="preparing-our-group-presentation">Preparing Our Group Presentation</h2>

<p>This week, our group prepared the final presentation for our open source project. To make sure every member had the chance to share their own perspective, we divided the presentation into different sections so that each person could focus on a specific part of the project and their personal contributions.</p>

<p>Our group organization looked like this:</p>
<ul>
  <li><strong>Bella</strong>: Introduction</li>
  <li><strong>Harry</strong>: Challenges</li>
  <li><strong>Tianlang</strong>: Best Moment</li>
  <li><strong>Willow</strong>: Lessons</li>
  <li><strong>Vincent</strong>: Looking Back</li>
</ul>

<p>For my part, I focused on looking back at my contributions to pandas throughout the semester. While preparing the slides, I realized that the presentation itself was also a reflection on my open source learning journey, not just a summary of what I did.
<!--more--></p>

<p>At the beginning of the semester, I was not familiar with pandas or large open source projects in general. The size of the codebase felt overwhelming, and even small tasks took much longer than I expected. I started with documentation PRs to learn the code structure, documentation style, contribution workflow, and CI system. These early PRs may seem simple, but they were extremely important because they helped me become comfortable with the basic process of contributing.</p>

<p>Later, I moved on to fixing a real bug in <code class="language-plaintext highlighter-rouge">Series.combine_first</code>, which was a much bigger step. This experience helped me better understand debugging, edge cases, and how to communicate with maintainers when responding to review comments. Instead of just changing code, I had to think carefully about how the fix might affect other parts of the library and how to test it properly.</p>

<p>Preparing the presentation made me realize that open source contribution is not only about writing code. It is also about understanding how large software projects are maintained collaboratively over time, and learning how to participate in that process respectfully and patiently.</p>

<h2 id="presentations-that-impressed-me">Presentations That Impressed Me</h2>

<p>Among the presentations this week, two groups especially stood out to me: the Frosty group and the p5.js group.</p>

<p>For the Frosty group, I was impressed by how user-oriented their contributions were. Brandon especially seemed very familiar with the platform and approached problems from the perspective of real users. For example, they worked on issues related to reset buttons and accent color customization. These improvements may look small technically, but they directly improve user experience, which is very important in real software projects. It reminded me that not every meaningful contribution has to be a complex algorithmic change. Sometimes, fixing the small details that users actually interact with can have just as much impact.</p>

<p>The p5.js group also gave a very strong presentation because their contributions were highly visual and easy to demonstrate. Since p5.js is a frontend-focused open source project, it was very intuitive to see the impact of their work directly on the webpage. This made their presentation engaging even for audience members who were not familiar with the underlying code.</p>

<p>One example I remember was related to language translation support. When the website failed to support certain translations, the problem immediately appeared visually on the webpage, making the issue easy to understand even for people unfamiliar with the codebase. This kind of clear, visible feedback is something that backend-heavy projects like pandas usually do not have, and it made me appreciate how different open source experiences can be depending on the project.</p>

<h2 id="reflection">Reflection</h2>

<p>This week’s presentations helped me better understand that open source projects can be very different depending on the type of software and the community behind them.</p>

<p>Some projects focus heavily on backend logic and debugging, like pandas, while others focus more on user interaction and visual behavior, like p5.js or Frosty. The skills required, the way contributors interact with maintainers, and even the way progress is measured can vary significantly from one project to another. However, all of these contributions are valuable because they improve the usability and quality of the project in different ways.</p>

<p>Listening to other groups also made me realize how much I had grown over the semester without noticing it day by day. At the start, even reading an issue thread on GitHub felt confusing. Now, I can navigate a large repository, follow CI logs, and engage with maintainers’ feedback with much more confidence.</p>

<p>Overall, this week felt less like a normal class presentation and more like a summary of everything we learned about open source development throughout the semester. It was a good reminder that the value of this experience is not measured only by the number of merged PRs, but also by the understanding we gained about how real software is built and maintained in the open.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Preparing Our Group Presentation This week, our group prepared the final presentation for our open source project. To make sure every member had the chance to share their own perspective, we divided the presentation into different sections so that each person could focus on a specific part of the project and their personal contributions. Our group organization looked like this: Bella: Introduction Harry: Challenges Tianlang: Best Moment Willow: Lessons Vincent: Looking Back For my part, I focused on looking back at my contributions to pandas throughout the semester. While preparing the slides, I realized that the presentation itself was also a reflection on my open source learning journey, not just a summary of what I did.]]></summary></entry><entry><title type="html">Week 14 – Contributing to pandas: From Documentation to Bug Fixing</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week14/" rel="alternate" type="text/html" title="Week 14 – Contributing to pandas: From Documentation to Bug Fixing" /><published>2026-04-20T00:00:00+00:00</published><updated>2026-04-20T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week14</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week14/"><![CDATA[<h2 id="getting-familiar-with-pandas-through-documentation">Getting Familiar with pandas Through Documentation</h2>

<p>This week, our group project focused on contributing to open source, specifically the :contentReference[oaicite:0]{index=0} project.</p>

<p>To get started, I worked on two documentation pull requests:</p>

<ul>
  <li><a href="https://github.com/pandas-dev/pandas/pull/64989">DOC: Fix observed default value in pivot_table docstring</a></li>
  <li><a href="https://github.com/pandas-dev/pandas/pull/65129">DOC: Fix non-standard default value formatting in Grouper docstring</a></li>
</ul>

<p>Through these small contributions, I gradually became familiar with the structure of pandas. At first, the codebase felt overwhelming, but documentation turned out to be a great entry point.</p>

<p>Unlike jumping directly into complex logic, working on docstrings helped me understand how functions are organized, how parameters are defined, and how consistency is maintained across the library.</p>

<!--more-->

<h2 id="from-documentation-to-real-bug-fixing">From Documentation to Real Bug Fixing</h2>

<p>After getting comfortable with the structure, I started looking for real issues.</p>

<p>This week, I found an issue:</p>

<blockquote>
  <p>BUG: Fix AttributeError in concat when result is Series</p>
</blockquote>

<p>This was my first time trying to fix a real bug in pandas, not just documentation. I submitted a pull request:</p>

<ul>
  <li>BUG: fix Series.combine_first crash when names are Timestamps (#65333)</li>
</ul>

<p>What I found interesting is that even a “small bug” is not actually simple. It required:</p>

<ul>
  <li>Understanding how <code class="language-plaintext highlighter-rouge">Series</code> behaves internally</li>
  <li>Tracing how <code class="language-plaintext highlighter-rouge">concat</code> and <code class="language-plaintext highlighter-rouge">combine_first</code> interact</li>
  <li>Reproducing the bug with specific edge cases (like <code class="language-plaintext highlighter-rouge">Timestamp</code> as names)</li>
</ul>

<p>This process made me realize that debugging in large systems is more about understanding assumptions than just fixing code.</p>

<h2 id="learning-from-maintainer-feedback">Learning from Maintainer Feedback</h2>

<p>After submitting the PR, I received feedback from the maintainers.</p>

<p>This was probably the most valuable part of the experience.</p>

<p>Instead of just telling me what is wrong, the maintainers guided me to:</p>

<ul>
  <li>follow pandas coding conventions</li>
  <li>write cleaner and more robust logic</li>
  <li>think about edge cases I didn’t consider</li>
</ul>

<p>It felt less like “fixing a bug” and more like learning how professional engineers think.</p>

<h2 id="what-is-pre-commit-and-why-it-matters">What is Pre-commit and Why It Matters</h2>

<p>One new thing I learned during this process is <strong>pre-commit</strong>.</p>

<p>Pre-commit is a tool that runs automatic checks before your code is committed. It helps ensure that your changes follow the project’s standards.</p>

<p>In pandas, pre-commit can automatically:</p>

<ul>
  <li>format code (e.g., remove unnecessary whitespace)</li>
  <li>check for style issues (PEP8 compliance)</li>
  <li>detect simple bugs or bad patterns</li>
  <li>ensure consistency across the codebase</li>
</ul>

<p>This is important because in a large open-source project, maintainers cannot manually review every small detail.</p>

<p>Pre-commit acts as a first layer of quality control.</p>

<p>From my experience, it also improves developer efficiency. Instead of waiting for review comments about formatting or style, you can catch and fix them locally before pushing your code.</p>

<h2 id="iterating-on-the-bug-fix">Iterating on the Bug Fix</h2>

<p>Based on maintainer feedback, I am still refining my bug fix.</p>

<p>This process is iterative:</p>

<ol>
  <li>Submit initial solution</li>
  <li>Receive feedback</li>
  <li>Update implementation</li>
  <li>Re-run tests and pre-commit checks</li>
  <li>Push again</li>
</ol>

<p>This cycle made me realize that open source contribution is not about getting things right the first time. It is about gradually improving your solution through collaboration.</p>

<h2 id="comparing-with-previous-work">Comparing with Previous Work</h2>

<p>Compared to my previous exploration of zero-knowledge systems :contentReference[oaicite:1]{index=1}, contributing to pandas feels very different.</p>

<p>In ZK projects, the challenge is <strong>mathematical complexity</strong>.</p>

<p>In pandas, the challenge is <strong>system complexity</strong>:</p>

<ul>
  <li>handling edge cases</li>
  <li>maintaining backward compatibility</li>
  <li>ensuring consistency across APIs</li>
</ul>

<p>Both require rigor, but in different ways.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Getting Familiar with pandas Through Documentation This week, our group project focused on contributing to open source, specifically the :contentReference[oaicite:0]{index=0} project. To get started, I worked on two documentation pull requests: DOC: Fix observed default value in pivot_table docstring DOC: Fix non-standard default value formatting in Grouper docstring Through these small contributions, I gradually became familiar with the structure of pandas. At first, the codebase felt overwhelming, but documentation turned out to be a great entry point. Unlike jumping directly into complex logic, working on docstrings helped me understand how functions are organized, how parameters are defined, and how consistency is maintained across the library.]]></summary></entry><entry><title type="html">Week 13 – Zero Knowledge, Trust, and Open Source Infrastructure</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week13/" rel="alternate" type="text/html" title="Week 13 – Zero Knowledge, Trust, and Open Source Infrastructure" /><published>2026-04-19T00:00:00+00:00</published><updated>2026-04-19T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week13</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week13/"><![CDATA[<h2 id="what-is-zero-knowledge-zk">What is Zero-Knowledge (ZK)</h2>

<p>This week, I explored the concept of zero-knowledge proofs (ZK), which is one of the most interesting ideas in modern cryptography.</p>

<p>At a high level, zero-knowledge allows one party to prove that a statement is true without revealing the underlying information. For example, instead of revealing a password, a user can prove that they know the password. Instead of disclosing income, someone could prove that their income is above a certain threshold.</p>

<p>This changes how we think about data. Traditionally, verification requires disclosure. With ZK, verification and privacy can coexist.</p>

<!--more-->

<h2 id="why-zk-is-important">Why ZK is Important</h2>

<p>What stood out to me is that ZK is not just a cryptographic trick, but a new model of trust.</p>

<p>In many systems today, trust depends on intermediaries. Banks, governments, and platforms verify information by collecting and storing data. However, this creates risks, including privacy leaks, data misuse, and security vulnerabilities.</p>

<p>Zero-knowledge shifts trust from institutions to mathematics. Instead of trusting an entity, we trust the correctness of a proof.</p>

<p>This is especially important in areas like finance and real estate, where sensitive data is involved. For example, instead of revealing full financial records, a user could prove eligibility for a loan. This reduces information exposure while still enabling decision-making.</p>

<p>In this sense, ZK can be seen as a foundational technology for building more secure and privacy-preserving systems.</p>

<h2 id="how-arkworks-is-structured">How arkworks is Structured</h2>

<p>To better understand how ZK is implemented in practice, I looked into the arkworks ecosystem, which is an open-source library for building zkSNARK systems.</p>

<p>One thing I realized is that arkworks is not a single library, but a layered system:</p>

<ul>
  <li><strong>algebra</strong>: provides the mathematical foundations, such as finite fields and elliptic curves</li>
  <li><strong>crypto-primitives</strong>: implements core cryptographic building blocks</li>
  <li><strong>r1cs-std</strong>: defines constraint systems used to express computations</li>
  <li><strong>groth16 / marlin</strong>: implement actual proving systems</li>
</ul>

<p>This structure reflects how complex ZK systems are. What looks like a simple “proof” at the application level is actually built on multiple layers of mathematical abstractions.</p>

<h2 id="the-challenge-of-contributing">The Challenge of Contributing</h2>

<p>While exploring arkworks, I realized that contributing to this project is very different from contributing to something like pandas.</p>

<p>The technical barrier is significantly higher. To understand even a small part of the code, one needs knowledge of algebra, finite fields, and cryptographic protocols. This makes it harder for beginners to get started.</p>

<p>However, I also think this barrier is not accidental—it is necessary.</p>

<p>Security in cryptography depends on precision. A small mistake or ambiguity can lead to vulnerabilities. Unlike many other systems, where bugs may cause inconvenience, a bug in a cryptographic system can completely break security.</p>

<h2 id="mathematical-rigor-vs-simplicity">Mathematical Rigor vs Simplicity</h2>

<p>This idea became clearer when I looked at a discussion in arkworks about how to define the degree of the zero polynomial.</p>

<p>Mathematically, the degree of the zero polynomial is not well-defined (often treated as negative infinity or undefined). However, in code, returning a simple value like 0 is more convenient.</p>

<p>This creates a trade-off between mathematical correctness and programming simplicity.</p>

<p>In that discussion, I found myself leaning toward mathematical rigor. While returning 0 may simplify usage, it can break important properties such as:</p>

<blockquote>
  <p>deg(fg) = deg(f) + deg(g)</p>
</blockquote>

<p>If such assumptions are violated, it may introduce subtle bugs, especially in complex systems.</p>

<p>For me, this reflects a broader principle in cryptographic engineering:</p>

<blockquote>
  <p>It is better to sacrifice convenience than to risk incorrectness.</p>
</blockquote>

<h2 id="connecting-zk-and-open-source">Connecting ZK and Open Source</h2>

<p>Another interesting aspect is how open source plays a role in ZK development.</p>

<p>Because ZK systems are complex and rapidly evolving, many teams end up reimplementing similar components. This leads to duplication and fragmentation. Projects like arkworks aim to provide a shared infrastructure that others can build on.</p>

<p>In this sense, arkworks represents a “commodity layer” for cryptography, similar to how pandas serves as infrastructure for data analysis.</p>

<p>However, unlike typical open-source projects, contributing to such infrastructure requires not only programming skills, but also mathematical understanding.</p>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>This week changed how I think about both trust and open source.</p>

<p>Zero-knowledge shows that trust does not have to rely on institutions—it can be encoded in mathematics. At the same time, projects like arkworks demonstrate that building this kind of infrastructure requires a high level of rigor and collaboration.</p>

<p>For me, this also connects to my broader interest in real-world systems. In areas like finance or real estate, where trust and verification are critical, ZK could play an important role in reducing reliance on intermediaries while preserving privacy.</p>

<p>At the same time, contributing to these systems is not easy. It requires patience, learning, and a willingness to engage with complex ideas.</p>

<p>But I think that is exactly what makes it meaningful.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[What is Zero-Knowledge (ZK) This week, I explored the concept of zero-knowledge proofs (ZK), which is one of the most interesting ideas in modern cryptography. At a high level, zero-knowledge allows one party to prove that a statement is true without revealing the underlying information. For example, instead of revealing a password, a user can prove that they know the password. Instead of disclosing income, someone could prove that their income is above a certain threshold. This changes how we think about data. Traditionally, verification requires disclosure. With ZK, verification and privacy can coexist.]]></summary></entry><entry><title type="html">Week 12 – Industry Use of Open Source and Participation</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week12/" rel="alternate" type="text/html" title="Week 12 – Industry Use of Open Source and Participation" /><published>2026-04-12T00:00:00+00:00</published><updated>2026-04-12T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week12</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week12/"><![CDATA[<h2 id="why-companies-use-open-source">Why Companies Use Open Source</h2>

<p>This week’s discussion focused on how companies use open source and why they actively participate in producing it.</p>

<p>Previously, I thought companies mainly used open source because it is free. However, the lecture changed my understanding. Today, companies use open source more for strategic reasons, such as avoiding vendor lock-in, accelerating development, and attracting talent.</p>

<p>Instead of building everything from scratch, companies can reuse existing infrastructure and focus on what makes them unique. This makes open source more of a strategic tool rather than just a cost-saving option.</p>

<!--more-->

<h2 id="open-source-is-not-a-business-model">Open Source is Not a Business Model</h2>

<p>One idea that stood out to me is that open source itself is not a business model.</p>

<p>Even though the code is free, companies still make money by building services around it. For example, companies can sell support, offer hosted services (SaaS), or provide enterprise features on top of an open core.</p>

<p>This helped me understand that open source and profit are not contradictory. Instead, open source can actually enable sustainable business models.</p>

<h2 id="commodity-vs-differentiation">Commodity vs Differentiation</h2>

<p>The most interesting concept for me is the idea of “commodity vs differentiation.”</p>

<p>Companies no longer compete on basic infrastructure like operating systems, protocols, or data formats. These are considered “commodity layers.” Instead, they collaborate on these layers through open source.</p>

<p>At the same time, companies compete on the “differentiation layer,” such as user experience, product design, and algorithms.</p>

<p>This explains why companies are willing to contribute to open source. By sharing the cost of building common infrastructure, they can focus more resources on innovation.</p>

<h2 id="why-companies-participate-in-open-source">Why Companies Participate in Open Source</h2>

<p>This also answers a question I had before: why would companies contribute to open source instead of just using it?</p>

<p>From this week’s discussion, I think there are several reasons.</p>

<p>First, contributing allows companies to influence the direction of the project. Instead of depending on others, they can shape the tools they rely on.</p>

<p>Second, it reduces development costs. If multiple companies work on the same infrastructure, they do not need to duplicate effort.</p>

<p>Third, it helps build industry standards. This improves interoperability and makes it easier for systems to work together.</p>

<h2 id="connecting-to-my-experience">Connecting to My Experience</h2>

<p>This idea actually relates to my own experience with pandas.</p>

<p>When I contributed to pandas, I was working on a small documentation issue. But now I realize that even small contributions are part of a much larger system. Many contributors together help maintain and improve a shared “commodity layer.”</p>

<p>At the same time, companies that use pandas are not competing on the library itself, but on what they build using it.</p>

<h2 id="thoughts-on-open-source-and-industry">Thoughts on Open Source and Industry</h2>

<p>This week made me realize that open source is not just a development model, but also an industry strategy.</p>

<p>Different companies can collaborate on shared infrastructure, while still competing in the market. This balance between collaboration and competition is something I did not fully understand before.</p>

<p>It also changed how I think about the future. In areas like finance or real estate, I can imagine companies sharing core systems (such as data standards or blockchain infrastructure), while competing on financial products and services.</p>

<p>Overall, this week helped me see open source from a broader perspective, not just as code, but as a system that shapes how industries collaborate and compete.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Why Companies Use Open Source This week’s discussion focused on how companies use open source and why they actively participate in producing it. Previously, I thought companies mainly used open source because it is free. However, the lecture changed my understanding. Today, companies use open source more for strategic reasons, such as avoiding vendor lock-in, accelerating development, and attracting talent. Instead of building everything from scratch, companies can reuse existing infrastructure and focus on what makes them unique. This makes open source more of a strategic tool rather than just a cost-saving option.]]></summary></entry><entry><title type="html">Week 11 – Cathedral vs Bazaar and My Open Source Experience</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week11/" rel="alternate" type="text/html" title="Week 11 – Cathedral vs Bazaar and My Open Source Experience" /><published>2026-03-31T00:00:00+00:00</published><updated>2026-03-31T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week11</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week11/"><![CDATA[<h2 id="cathedral-vs-bazaar-in-practice">Cathedral vs Bazaar in Practice</h2>

<p>This week we learned about the cathedral vs bazaar model of development.</p>

<p>The cathedral model is more centralized and controlled, where a small group of developers carefully builds the system. In contrast, the bazaar model is open and collaborative, where anyone can contribute and development happens continuously.</p>

<p>In theory, most open source projects follow the bazaar model. However, from my experience, it is not completely “open.” While anyone can submit a pull request, maintainers still control what gets accepted. This creates a structure that is somewhere between cathedral and bazaar.
<!--more--></p>

<h2 id="my-progress-on-the-project">My Progress on the Project</h2>

<p>Our group is working on pandas, and I was able to make my first contribution. I submitted a documentation pull request, which has already been accepted:</p>

<p>https://github.com/pandas-dev/pandas/pull/64989</p>

<p>This experience changed my perspective on open source. Before, I thought contributing to large projects like pandas was something very difficult or even unreachable. However, after completing this PR, I realized that contributions can start from small things, such as improving documentation or fixing minor configuration issues.</p>

<p>Sometimes, maintainers may not notice small details, and contributors can help improve those parts. This makes open source feel much more accessible than I initially thought.</p>

<h2 id="reflection-on-other-groups">Reflection on Other Groups</h2>

<p>I was surprised that almost every group has already made one or two pull requests. This shows that contributing to open source is not as “high-level” or exclusive as it seems.</p>

<p>At the same time, many groups reported similar challenges, such as slow PR reviews or difficulty understanding large codebases. This aligns with our experience as well.</p>

<h2 id="thoughts-on-open-source-and-incentives">Thoughts on Open Source and Incentives</h2>

<p>One question I keep thinking about is sustainability. If people contribute to open source, how do they support themselves financially? It seems unrealistic for most contributors to rely entirely on open source work for income.</p>

<p>However, I still strongly support open source. I think collaboration is the only way to build large and meaningful systems. Open source allows many people to contribute together, which would not be possible in a fully closed model.</p>

<h2 id="how-ai-changes-the-bazaar-model">How AI Changes the Bazaar Model</h2>

<p>AI is making open source even more interesting.</p>

<p>On one hand, AI lowers the barrier to contribution. More people can generate code and participate in projects, which strengthens the bazaar model.</p>

<p>On the other hand, this may lead to a large increase in pull requests, many of which may not be deeply thought through. This puts more pressure on maintainers, since reviewing code is time-consuming and mentally demanding.</p>

<p>This made me think about a possible future role: an “AI maintainer.” If AI can help review pull requests, check code quality, and detect potential issues, it could significantly reduce the workload of human maintainers.</p>

<p>Personally, I do not think AI-generated code is a bad thing. The original motivation of open source is that one person cannot build everything alone. AI simply allows more people to participate. However, it also introduces risks, especially when contributors do not fully understand the system structure, which may lead to bugs or inconsistencies.</p>

<h2 id="looking-forward">Looking Forward</h2>

<p>In the remaining weeks, I hope our group can:</p>
<ul>
  <li>make more meaningful contributions beyond documentation</li>
  <li>better understand the pandas codebase</li>
  <li>continue engaging with the open source community</li>
</ul>

<p>Overall, this experience helped me realize that open source is not only about coding, but also about collaboration, patience, and system-level thinking.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Cathedral vs Bazaar in Practice This week we learned about the cathedral vs bazaar model of development. The cathedral model is more centralized and controlled, where a small group of developers carefully builds the system. In contrast, the bazaar model is open and collaborative, where anyone can contribute and development happens continuously. In theory, most open source projects follow the bazaar model. However, from my experience, it is not completely “open.” While anyone can submit a pull request, maintainers still control what gets accepted. This creates a structure that is somewhere between cathedral and bazaar.]]></summary></entry><entry><title type="html">Week 10 – Choosing My Open Source Direction</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week10/" rel="alternate" type="text/html" title="Week 10 – Choosing My Open Source Direction" /><published>2026-03-15T00:00:00+00:00</published><updated>2026-03-15T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week10</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week10/"><![CDATA[<h2 id="my-current-progress">My Current Progress</h2>

<p>At this point in the semester, I realized that my individual contribution to open source is still very limited.</p>

<p>Although our group has been exploring different projects and doing evaluations, I have not yet made a strong technical contribution on my own. Most of my work so far has been focused on understanding projects and setting up development environments.</p>

<p>This made me think more seriously about what I actually want to contribute to.</p>

<!--more-->

<h2 id="decision-to-work-on-arkworks">Decision to Work on Arkworks</h2>

<p>For the second half of the semester, I decided to focus on contributing to Arkworks.</p>

<p>One reason is that I am very interested in Web3 and blockchain-related technologies. Compared to other projects, Arkworks feels more aligned with what I want to learn in the long term.</p>

<p>Arkworks is related to cryptography and zero-knowledge systems, which are important for many blockchain applications. I am especially curious about how these tools are used in tokenization and real-world asset (RWA) systems.</p>

<h2 id="why-this-direction">Why This Direction</h2>

<p>Another reason for choosing Arkworks is that I want to challenge myself.</p>

<p>Compared to projects like pandas or freeCodeCamp, Arkworks requires more mathematical and cryptographic understanding. This makes it harder, but also more meaningful from a learning perspective.</p>

<p>I know that contributing to this project will not be easy. I may need to spend time reading documentation, learning new concepts, and understanding unfamiliar code.</p>

<p>However, I think this is exactly the kind of challenge that can help me grow.</p>

<h2 id="goals-for-the-second-half">Goals for the Second Half</h2>

<p>My goal is to make at least one meaningful contribution that can be accepted.</p>

<p>To achieve this, I plan to:</p>
<ul>
  <li>study the documentation and basic concepts behind Arkworks</li>
  <li>identify beginner-friendly issues or areas for improvement</li>
  <li>gradually understand the structure of the codebase</li>
</ul>

<p>Even if the process is slow, I think it is important to take the first step.</p>

<h2 id="reflection">Reflection</h2>

<p>This decision also reflects a shift in my mindset.</p>

<p>At the beginning, I was more focused on choosing “easier” projects to contribute to. Now, I care more about whether the project aligns with my long-term interests.</p>

<p>Even if I fail to get a PR accepted immediately, I think the learning process itself is valuable.</p>

<p>Overall, this week helped me clarify my direction and set a more concrete goal for the rest of the semester.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[My Current Progress At this point in the semester, I realized that my individual contribution to open source is still very limited. Although our group has been exploring different projects and doing evaluations, I have not yet made a strong technical contribution on my own. Most of my work so far has been focused on understanding projects and setting up development environments. This made me think more seriously about what I actually want to contribute to.]]></summary></entry><entry><title type="html">Week 8 – Reflecting on Other Groups’ Experiences</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week8/" rel="alternate" type="text/html" title="Week 8 – Reflecting on Other Groups’ Experiences" /><published>2026-03-09T00:00:00+00:00</published><updated>2026-03-09T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week8</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week8/"><![CDATA[<h2 id="comparing-experiences-across-groups">Comparing Experiences Across Groups</h2>

<p>This week, we listened to reports from other groups about their open source project progress. One thing that stood out to me is that many groups are facing very similar challenges, regardless of which project they chose.</p>

<p>For example, several groups mentioned that the contribution process is much slower than they expected. Even after submitting a pull request, it can take a long time to receive feedback. In some cases, their PRs have not been reviewed at all. This is something our group can strongly relate to.</p>

<p>Another common issue is understanding large codebases. Many groups said that it takes a significant amount of time just to understand the structure of the project before making any meaningful contribution. This is also consistent with our experience, especially when working with a large project like pandas.
<!--more--></p>

<h2 id="what-i-learned-from-these-comparisons">What I Learned from These Comparisons</h2>

<p>Hearing other groups’ experiences helped me realize that these challenges are not unique to our group. Instead, they are part of the normal process of contributing to open source projects.</p>

<p>One important takeaway is that open source contribution is not only about writing code. It also involves:</p>
<ul>
  <li>understanding project structure</li>
  <li>reading documentation</li>
  <li>communicating with maintainers</li>
  <li>being patient with the review process</li>
</ul>

<p>I also realized that timing is something we cannot fully control. Since most open source projects rely on volunteer maintainers, delays in reviewing PRs are expected.</p>

<h2 id="reflection-on-our-own-group">Reflection on Our Own Group</h2>

<p>Compared to other groups, I think our situation is quite similar. We also spent a lot of time setting up the environment and understanding the repository before making contributions.</p>

<p>One thing we might improve is aligning our expectations earlier. Some groups seemed more focused on smaller, achievable contributions, while we initially aimed at larger or more complex tasks. This made our progress feel slower.</p>

<h2 id="moving-forward">Moving Forward</h2>

<p>Based on what I learned this week, I think our group should:</p>
<ul>
  <li>focus on smaller, well-defined issues</li>
  <li>not rely too much on immediate PR feedback</li>
  <li>treat the process of exploration as part of the learning experience</li>
</ul>

<p>Overall, this week helped me adjust my expectations about open source. It is not a fast or straightforward process, but it is a valuable experience in understanding how real-world software development works.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Comparing Experiences Across Groups This week, we listened to reports from other groups about their open source project progress. One thing that stood out to me is that many groups are facing very similar challenges, regardless of which project they chose. For example, several groups mentioned that the contribution process is much slower than they expected. Even after submitting a pull request, it can take a long time to receive feedback. In some cases, their PRs have not been reviewed at all. This is something our group can strongly relate to. Another common issue is understanding large codebases. Many groups said that it takes a significant amount of time just to understand the structure of the project before making any meaningful contribution. This is also consistent with our experience, especially when working with a large project like pandas.]]></summary></entry><entry><title type="html">Week 7 – Choosing an Open Source Project</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week07/" rel="alternate" type="text/html" title="Week 7 – Choosing an Open Source Project" /><published>2026-03-08T00:00:00+00:00</published><updated>2026-03-08T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week07</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week07/"><![CDATA[<h2 id="working-toward-a-project-choice">Working Toward a Project Choice</h2>

<p>This week our group discussed which open source project we want to work on. The two main options we considered were <strong>freeCodeCamp</strong> and <strong>pandas</strong>. Some of my teammates suggested pandas because they have used it before in Python data analysis. However, I personally prefer freeCodeCamp.</p>

<p>One reason is the technical difficulty. From what I learned while researching both projects, pandas requires a deeper understanding of topics such as vectorization, memory layout, and the internal implementation of DataFrames. It also involves NumPy builds and sometimes even C or Cython compilation. For someone like me who does not have a very strong Python background, contributing to pandas may be more challenging.</p>

<p>On the other hand, freeCodeCamp is mainly based on JavaScript and web technologies. Although the setup process took some time, the overall development environment feels more approachable for beginners. I spent about one hour setting up the development environment following the wiki instructions. One difficulty was that the local machine setup requires the correct versions of <strong>Node.js, pnpm, Docker, and MongoDB</strong>, so it took some time to configure everything correctly. However, once the environment was set up, it became much easier to understand how the system runs.</p>

<p>I also forked the repository and prepared the development environment for freeCodeCamp:<br />
https://github.com/Vincent08199/freeCodeCamp
<!--more--></p>

<h2 id="challenges-within-the-group">Challenges Within the Group</h2>

<p>One challenge our group is currently facing is that our expectations for the project may be slightly different. Some members are more familiar with pandas and are interested in working on a data science related project, while others may prefer something more web-based like freeCodeCamp. Because of this, our group discussion is still ongoing.</p>

<p>Another issue is that our group might be a little ambitious. Both projects are large and complex open source projects, and we are still learning how to navigate their repositories and contribution guidelines. Different team members also have different levels of familiarity with these tools and technologies.</p>

<h2 id="moving-forward">Moving Forward</h2>

<p>To resolve this, I think our group needs to communicate more clearly about our strengths and learning goals. Instead of only focusing on the popularity of a project, we should also consider whether the project is realistic for us to contribute to within the course timeline.</p>

<p>Personally, I still lean toward freeCodeCamp because it seems easier to get started and may allow us to make meaningful contributions earlier. However, I am open to discussing with the group and finding a project that everyone feels comfortable working on.</p>

<p>For the next step, I plan to continue exploring the freeCodeCamp repository and look for beginner-friendly issues. At the same time, our group will keep discussing which project fits our team best.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Working Toward a Project Choice This week our group discussed which open source project we want to work on. The two main options we considered were freeCodeCamp and pandas. Some of my teammates suggested pandas because they have used it before in Python data analysis. However, I personally prefer freeCodeCamp. One reason is the technical difficulty. From what I learned while researching both projects, pandas requires a deeper understanding of topics such as vectorization, memory layout, and the internal implementation of DataFrames. It also involves NumPy builds and sometimes even C or Cython compilation. For someone like me who does not have a very strong Python background, contributing to pandas may be more challenging. On the other hand, freeCodeCamp is mainly based on JavaScript and web technologies. Although the setup process took some time, the overall development environment feels more approachable for beginners. I spent about one hour setting up the development environment following the wiki instructions. One difficulty was that the local machine setup requires the correct versions of Node.js, pnpm, Docker, and MongoDB, so it took some time to configure everything correctly. However, once the environment was set up, it became much easier to understand how the system runs. I also forked the repository and prepared the development environment for freeCodeCamp: https://github.com/Vincent08199/freeCodeCamp]]></summary></entry><entry><title type="html">Week 6 – Small Contributions and Exploring Open Source Projects</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week06/" rel="alternate" type="text/html" title="Week 6 – Small Contributions and Exploring Open Source Projects" /><published>2026-03-01T00:00:00+00:00</published><updated>2026-03-01T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week06</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week06/"><![CDATA[<h2 id="my-expected-role-in-the-group-project">My Expected Role in the Group Project</h2>

<p>For our group project, I hope to contribute mainly to the backend logic and system structure. I am interested in understanding how different parts of a system interact and how software architecture is designed. Because of my background in computer science and some exposure to cryptography and security, I am also interested in exploring how security or data integrity could be considered in system design.</p>

<p>One challenge that may stand in the way is understanding a new codebase. Many open source or group projects already have large structures and many files, so it takes time to understand how everything connects. Another challenge may be coordinating work among teammates and making sure our work is organized properly through Git.</p>

<p>However, I believe I can contribute to the group by helping with debugging, organizing our Git workflow, and writing clear documentation. I also enjoy exploring technical details and reading source code, which may help the team understand complex parts of the project.
<!--more--></p>

<h2 id="comment-on-my-small-contributions">Comment on My Small Contributions</h2>

<p>This week I made several small contributions during the project evaluation activities. In class, my partner and I worked on evaluating the <strong>iGraph</strong> open source project. We first tried using AI tools to generate an evaluation draft and then manually verified the information by searching through the GitHub repository.</p>

<p>During this process, I realized that AI can help generate a basic structure, but it often makes mistakes with factual details. For example, the number of commits and contributors was sometimes incorrect, and the latest commit information seemed to have delays. Some of the links generated by AI were also inaccurate. Because of this, we had to manually check the GitHub repository to confirm the information.</p>

<p>I also tried to explore another open source project called <strong>Arkworks</strong>, and looked at an issue related to improving documentation for Pedersen hash functions. However, I quickly realized that contributing to this project requires stronger mathematical knowledge, especially in cryptography and elliptic curve concepts. Because of this gap, the process was challenging. I tried to read online documentation and quickly summarize the concepts to better understand the problem.</p>

<p>The contribution I am most proud of is that I actively tried to engage with the open source community. Even though my contributions are still small, exploring repositories, reading issues, and trying to understand real problems gave me a better understanding of how collaboration works in open source communities.</p>

<h2 id="an-open-source-project-i-may-want-to-contribute-to">An Open Source Project I May Want to Contribute To</h2>

<p>One open source project I am interested in contributing to is <strong>Arkworks</strong>. Arkworks is a Rust-based ecosystem that provides tools for cryptography and zero-knowledge proof systems. The project focuses on building efficient cryptographic primitives such as elliptic curves, hash functions, and proof systems that are widely used in blockchain and privacy-preserving technologies.</p>

<p>This project interests me because I have been studying cryptography at NYU and have learned about concepts such as hash functions, digital signatures, and secure protocols. Arkworks represents a practical implementation of many of these theoretical ideas. Contributing to such a project could help me understand how cryptographic systems are implemented in real-world software.</p>

<p>However, I also recognize that contributing to Arkworks will be challenging because it requires strong mathematical understanding, especially in algebra and elliptic curve cryptography. To prepare for this, I plan to spend more time reading documentation and learning the mathematical background behind these systems.</p>

<p>Even if my contributions start with small improvements such as documentation or clarifying explanations, participating in this project would allow me to gradually build deeper knowledge in cryptography and open source development.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[My Expected Role in the Group Project For our group project, I hope to contribute mainly to the backend logic and system structure. I am interested in understanding how different parts of a system interact and how software architecture is designed. Because of my background in computer science and some exposure to cryptography and security, I am also interested in exploring how security or data integrity could be considered in system design. One challenge that may stand in the way is understanding a new codebase. Many open source or group projects already have large structures and many files, so it takes time to understand how everything connects. Another challenge may be coordinating work among teammates and making sure our work is organized properly through Git. However, I believe I can contribute to the group by helping with debugging, organizing our Git workflow, and writing clear documentation. I also enjoy exploring technical details and reading source code, which may help the team understand complex parts of the project.]]></summary></entry><entry><title type="html">Week 5 – Presentations, Open Source, and What I Learned</title><link href="https://ossd-s26.github.io/Vincent08199-weekly/week05/" rel="alternate" type="text/html" title="Week 5 – Presentations, Open Source, and What I Learned" /><published>2026-02-22T00:00:00+00:00</published><updated>2026-02-22T00:00:00+00:00</updated><id>https://ossd-s26.github.io/Vincent08199-weekly/week05</id><content type="html" xml:base="https://ossd-s26.github.io/Vincent08199-weekly/week05/"><![CDATA[<h2 id="comment-on-student-presentations">Comment on Student Presentations</h2>

<p>This week we watched several student presentations of Chrome extensions. Overall, I was impressed by how confident most teams looked during their demos. Many groups clearly rehearsed their flow, so their presentations felt smooth and intentional.</p>

<p>One thing I noticed is that the strongest presentations were not always the most technically complex ones. Instead, the best teams clearly explained the <strong>problem → solution → demo</strong> flow. This made it much easier for the audience to follow.</p>

<p>Watching other groups also helped me see different design directions for browser extensions. Some teams focused on productivity, while others focused on user experience improvements. It expanded my view of what is possible on the Chrome extension platform.</p>

<!--more-->

<h2 id="biggest-takeaway-from-our-group-work">Biggest Takeaway from Our Group Work</h2>

<p>Our group presented QuickHistory this week. The demo did not go exactly as planned, but it was a valuable learning experience.</p>

<p>During the first part of the demo, we deleted some browsing history to create a clean example. However, this accidentally removed the exact data we needed later in the presentation. When we asked the AI agent to search, there was nothing to find. In the moment it felt awkward, but in hindsight it was actually a useful lesson.</p>

<p>The biggest takeaway for me is:</p>

<blockquote>
  <p><strong>Demo reliability is part of the product.</strong></p>
</blockquote>

<p>Even if the system works technically, the presentation can fail without careful planning. In the future, I will always:</p>

<ul>
  <li>Do a full dry run</li>
  <li>Prepare backup data</li>
  <li>Think through the demo flow end-to-end</li>
</ul>

<p>This experience made me realize that engineering and presentation discipline go hand in hand.</p>

<h2 id="reflections-on-the-three-videos">Reflections on the Three Videos</h2>

<h3 id="craig-mcluckie--supply-chain-risk-in-ai">Craig McLuckie – Supply Chain Risk in AI</h3>

<p>This talk stood out to me the most. I had not fully considered that AI-assisted coding could also <strong>scale malicious package creation</strong>. If AI helps developers move faster, it can also help attackers move faster.</p>

<p>His emphasis on provenance tools like Sigstore and SBOMs makes a lot of sense. As AI-generated code becomes more common, being able to trace where code comes from will become critical for security.</p>

<h3 id="kelsey-hightower--thoughts-on-open-source">Kelsey Hightower – Thoughts on Open Source</h3>

<p>I really liked his metaphor comparing open-source maintainers to quiet craftsmen. It highlights how much invisible labor exists behind the software we use every day.</p>

<p>The HashiCorp fork discussion was especially interesting. It reminded me that open source is fundamentally about <strong>shared ownership and freedom to fork</strong>, even when it feels uncomfortable.</p>

<h3 id="linus-torvalds-conversation">Linus Torvalds Conversation</h3>

<p>Torvalds’ calm and pragmatic tone was refreshing. His view that AI is like “auto-correct on steroids” feels realistic. AI is powerful for productivity, but human judgment is still essential.</p>

<p>What I found most interesting is his comment that a mature project becomes “calm and boring.” That changed how I think about software maturity — stability itself is a sign of success.</p>

<h2 id="presentation-style-observations">Presentation Style Observations</h2>

<p>Comparing student presentations with OSS conference talks, the biggest difference is <strong>storytelling</strong>.</p>

<p>Conference speakers:</p>

<ul>
  <li>Start with a relatable story</li>
  <li>Build tension around a real problem</li>
  <li>Then introduce the technical solution</li>
</ul>

<p>Student presentations (including ours):</p>

<ul>
  <li>Often jump directly into features</li>
  <li>Focus heavily on mechanics</li>
  <li>Sometimes feel linear and flat</li>
</ul>

<p>This week made me realize that strong technical content is not enough. Delivery matters.</p>

<h2 id="how-i-plan-to-improve-my-style">How I Plan to Improve My Style</h2>

<p>Going forward, I want to improve my presentation style in three ways:</p>

<p><strong>1. Start with the human problem</strong><br />
Instead of opening with features, I want to frame the real user pain first.</p>

<p><strong>2. Use clearer narrative flow</strong><br />
Problem → frustration → solution → demo → impact.</p>

<p><strong>3. Rehearse demos more rigorously</strong><br />
Technical correctness must be paired with presentation reliability.</p>

<p>Overall, this week helped me see open source work from both the <strong>technical</strong> and <strong>communication</strong> perspectives. Building good software is important, but explaining it clearly is just as critical.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Comment on Student Presentations This week we watched several student presentations of Chrome extensions. Overall, I was impressed by how confident most teams looked during their demos. Many groups clearly rehearsed their flow, so their presentations felt smooth and intentional. One thing I noticed is that the strongest presentations were not always the most technically complex ones. Instead, the best teams clearly explained the problem → solution → demo flow. This made it much easier for the audience to follow. Watching other groups also helped me see different design directions for browser extensions. Some teams focused on productivity, while others focused on user experience improvements. It expanded my view of what is possible on the Chrome extension platform.]]></summary></entry></feed>