16 pull requests across 4 projects. All learning experiences.
Status: No PRs merged yet. These are all active contributions in review or learning experiences.
For each PR, I've documented the issue I faced, how I approached solving it, and what I learned from the experience.
Project: Kyverno - Policy as Code for Kubernetes
Kyverno is a policy engine designed for Kubernetes that enables security, multi-tenancy, and governance through declarative, Kubernetes-native policies.
PR Link: github.com/kyverno/kyverno/pull/16176
While studying Kyverno's background controller, I discovered a
critical operational issue in how the system handles
generateExisting policies. In large clusters with
many resources:
I realized this was a classic batch-processing problem with two dimensions:
I split this into two coordinated PRs:
updateRequestMaxBatchSize configuration
key (default: 100 triggers per UR)
chunkRuleContexts() helper to batch
large trigger sets
handleGenerateForExisting() to create
one UR per batch instead of one mega-UR
PR Link: github.com/kyverno/kyverno/pull/16157
Every reconciliation cycle would create duplicate UpdateRequests for the same generateExisting policy. Over time, this leads to UR sprawl and unnecessary backlog.
Instead of checking timestamps or tracking metadata, I could use the label selector that Kyverno already applies to generate URs. This is simpler and follows existing Kyverno patterns.
handleGenerateForExisting() to skip
creating a new UR when one already exists
PR Link: github.com/kyverno/kyverno/pull/16158
Kyverno logged successful legacy mutate rules with "mutation rules from policy applied successfully", but MutatingPolicy mutations had no equivalent log. This made it harder to debug mutation behavior.
PR Link: github.com/kyverno/kyverno/pull/16164
A spelling error in conformance tests:
webhook-registeration instead of
webhook-registration.
Renamed test folder and updated metadata. Simple but high-impact.
PR Link: github.com/kyverno/kyverno/pull/16163
Typo in Helm chart test values:
default-vaules.yaml instead of
default-values.yaml.
Pattern recognition: Once you start looking for typos, you find them everywhere. These small fixes could be batched into one "cleanup" PR.
PR Link: github.com/kyverno/kyverno/pull/16162
PR Link: github.com/kyverno/kyverno/pull/16136
Kyverno's documentation had started a "Technical Outcomes" section but was missing key pages about Platform Engineering and Governance use cases.
Instead of adding features to existing pages, create two complete new technical outcome pages that describe challenges, map Kyverno capabilities to solutions, and include real examples.
Project: Meshery - The Cloud Native Manager
Meshery is a multi-cluster management plane for designing and operating cloud native infrastructure.
PR Link: github.com/meshery/meshery/pull/19663
No central guide with practical examples for contributors working on relationship definitions. Contributors had to reverse-engineer patterns from existing code.
Create a comprehensive contribution guide with documented relationship types, concrete AWS/Kubernetes examples, selector usage, naming conventions, and best practices.
Project: PipeCD - Continuous Deployment for Everyone
PipeCD is a declarative continuous deployment platform for cloud-native applications.
PR Link: github.com/pipe-cd/pipecd/pull/6815
As AI tools became more common, there was no clear guidance on:
Create lightweight but practical guidelines that acknowledge AI tools are legitimate while setting clear expectations for responsibility and quality.
PR Link: github.com/pipe-cd/pipecd/pull/6799
Docs package metadata pointing to
google/docsy-example instead of
pipe-cd/pipecd. Misleading for contributors.
PR Link: github.com/pipe-cd/pipecd/pull/6798
Unclear wording about how version directories work. Contributors might put changes in the wrong directory.
Project: CCExtractor - Extract Closed Captions from Video
CCExtractor is a tool to extract closed captions from video files.
PR Link: github.com/CCExtractor/ccextractor/pull/2246
No standardized way to benchmark CCExtractor throughput on Linux. Different contributors might use different test files, hardware, and methodologies.
Create a clear benchmarking guide and helper bash script for standardized Linux performance testing.
docs/performance/linux-throughput.md with
detailed benchmarking guide
tools/bench_linux_throughput.sh script
with throughput calculations
The maintainer closed the PR with feedback that:
I had NOT asked the maintainers whether they wanted this contribution before creating the PR.
I assumed the problem existed based on my own need, but I didn't validate the problem-solution fit with maintainers.
Key takeaways:
How I changed my approach:
PR Link: github.com/CCExtractor/ccextractor/pull/2255
Symptom: Segmentation fault when processing WTV files with oversized chunk headers
Root Cause: The
get_sized_buffer() function returned
void (no error signaling). When a chunk exceeded
100MB, it set buffer = NULL silently.
Impact: All 5 callers dereferenced the buffer without NULL checks, causing crashes.
void to
int for error codes
src/lib_ccx/wtv_functions.c to return
int
void types hide errors
PR Link: github.com/CCExtractor/Flood_Mobile/pull/267
For overflow: Make the text area flexible/scrollable instead of hard-coded height
For compatibility: Systematically migrate deprecated APIs to modern equivalents
FlatButton →
TextButton, WillPopScope →
PopScope
l10n.yaml,
updated generation
PR Link: github.com/CCExtractor/rutorrent-flutter/pull/199
The ruTorrent Flutter client had accumulated deprecation warnings from old Flutter APIs. Would eventually break as framework dropped support.
flutter analyze to ensure no warnings
FlatButton →
TextButton, WillPopScope →
PopScope
withOpacity() →
withValues(alpha:)
PR Link: github.com/CCExtractor/sample-platform/pull/1085
Running python -m pytest on Windows (Git Bash)
failed: No module named pytest
pytest wasn't listed in
test-requirements.txt, even though instructions
used it.
pytest to test requirementspytest to
test-requirements.txt
None of my PRs are merged yet, but that's okay. What matters is that I'm:
The journey is about growth, not just merged PRs.