Skip to content

Commit 4438a10

Browse files
Merge pull request #306 from Samk1710/gsoc-2026-report-sampurna
Add GSoC 2026 report for VulnerableCode Insights
2 parents 635026c + 8b19c5f commit 4438a10

2 files changed

Lines changed: 240 additions & 0 deletions

File tree

docs/source/archive/gsoc-toc.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ designed to encourage university student participation in open source
88
software development. It was started by Google in 2005. More about GSoC -
99
`<https://summerofcode.withgoogle.com/about/>`_
1010

11+
GSoC 2026
12+
---------
13+
14+
.. toctree::
15+
:maxdepth: 2
16+
17+
gsoc/reports/2026/vulnerablecode_sampurna
18+
1119
GSoC 2025
1220
---------
1321

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
=======================
2+
VulnerableCode Insights
3+
=======================
4+
5+
| Mentee: **Sampurna Pyne**
6+
| GitHub: `Samk1710 <https://github.com/Samk1710>`_
7+
| LinkedIn: `@samk1710 <https://www.linkedin.com/in/samk1710/>`_
8+
| Repository: `VulnerableCode <https://github.com/aboutcode-org/vulnerablecode>`_
9+
| Official GSoC project page: `Project Link
10+
<https://summerofcode.withgoogle.com/programs/2026/projects/nlwOImQP>`_
11+
| GSoC Proposal: `Proposal Link
12+
<https://docs.google.com/document/d/1xBapGNBjmkRrNeKFeXPyB014XOkDcpbJNFjGuw59sAc/edit?tab=t.0>`_
13+
14+
Overview
15+
--------
16+
17+
VulnerableCode imports vulnerability advisories from dozens of data sources and
18+
grows its database continuously. However, it previously lacked a way to
19+
demonstrate its quality. This project enables VulnerableCode to visually
20+
showcase its data richness and coverage, while highlighting areas for improvement. This transparency
21+
gives users confidence in VulnerableCode and provides maintainers with actionable
22+
insights to improve it.
23+
24+
.. raw:: html
25+
26+
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; height: auto; margin-bottom: 2em; margin-top: 1em;">
27+
<iframe src="https://www.youtube.com/embed/pCTos7DMD5c" frameborder="0" allowfullscreen style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></iframe>
28+
</div>
29+
30+
This GSoC project builds three key features:
31+
32+
* `Insights Dashboard`_: A multi-panel dashboard containing various interactive
33+
charts to showcase VulnerableCode's strengths and identify areas for improvement.
34+
* `History of Advisories`_: A diff view for tracking changes in an advisory and
35+
viewing its historical versions as snapshots.
36+
* `EPSS History`_: Visual tracking of EPSS score and percentile trends over time.
37+
38+
Detailed Report
39+
---------------
40+
41+
Insights Dashboard
42+
^^^^^^^^^^^^^^^^^^
43+
44+
The Insights Dashboard is a multi-panel interactive dashboard designed to
45+
visualize various features of VulnerableCode through infographic charts.
46+
47+
A dedicated ``insights`` Django app houses the dashboard's core functionality.
48+
To ensure fast and scalable chart rendering, an automated daily snapshot pipeline
49+
(``insights_snapshot_pipeline.py``) pre-computes database-wide metrics once every night, avoiding
50+
heavy on the fly queries across VulnerableCode's million-row tables. These metrics
51+
are stored in dedicated models linked to a ``DailySnapshot``, keeping the telemetry
52+
structured and instantly queryable.
53+
54+
Below is the tree view of ``insights`` for better understanding ::
55+
56+
insights
57+
├── models.py
58+
├── views.py
59+
├── urls.py
60+
├── utils.py
61+
├── insights_snapshot_pipeline.py
62+
├── charts/
63+
│ ├── __init__.py
64+
│ ├── overview_panel.py
65+
│ ├── package_panel.py
66+
│ ├── severity_panel.py
67+
│ ├── importer_panel.py
68+
│ └── data_quality_panel.py
69+
├── templates/insights/
70+
│ ├── dashboard.html
71+
│ └── components/
72+
└── static/insights/
73+
├── css/insights.css
74+
└── js/
75+
76+
77+
The dashboard panels are implemented using a modular framework in the ``charts/``
78+
directory. Each chart is driven by a ``ChartDefinition`` dataclass, which encapsulates
79+
all the metadata, collection, and formatting logic required to render it. These
80+
definitions are centrally registered in the ``insights/charts/__init__.py`` chart registry.
81+
At request time, the API simply fetches the latest pre-computed snapshot using these
82+
definitions, ensuring instantaneous page loads.
83+
84+
The UI integrates Billboard.js to render interactive charts.
85+
86+
More:
87+
88+
* https://github.com/aboutcode-org/vulnerablecode/pull/2391
89+
* https://github.com/aboutcode-org/vulnerablecode/pull/2408
90+
91+
92+
History of Advisories
93+
^^^^^^^^^^^^^^^^^^^^^
94+
95+
Advisory data imported from upstream sources is constantly updated. Previously,
96+
VulnerableCode only exposed the latest version of an advisory, making
97+
it impossible for users to track what changed over time.
98+
99+
This feature introduces a chronological list of advisory versions, allowing users
100+
to click into any historical snapshot and view the advisory exactly as it
101+
existed at that moment. To provide a quick overview, the UI displays diffs between
102+
versions directly.
103+
104+
These diffs are generated at import time. For existing advisories,
105+
they can also be backfilled using the ``HistoryDiffImproverPipeline``. The diffs
106+
are stored in the ``AdvisoryHistoryDiff`` model.
107+
108+
109+
| More: https://github.com/aboutcode-org/vulnerablecode/pull/2356
110+
111+
112+
113+
114+
EPSS History
115+
^^^^^^^^^^^^
116+
117+
This feature adds an EPSS History Trend on the advisory page in the form of a line chart
118+
and a paginated history table showing the percentile and score of EPSS over time
119+
for a given advisory.
120+
121+
| More: https://github.com/aboutcode-org/vulnerablecode/pull/2328
122+
123+
124+
125+
126+
Linked Pull Requests
127+
--------------------
128+
129+
.. list-table::
130+
:widths: 10 60 30
131+
:width: 100%
132+
:header-rows: 1
133+
134+
* - No.
135+
- Name
136+
- Link
137+
* - 1
138+
- Insights Dashboard (Part 1)
139+
- `vulnerablecode#2391 <https://github.com/aboutcode-org/vulnerablecode/pull/2391>`_
140+
* - 2
141+
- Insights Dashboard (Part 2)
142+
- `vulnerablecode#2408 <https://github.com/aboutcode-org/vulnerablecode/pull/2408>`_
143+
* - 3
144+
- History of Advisories
145+
- `vulnerablecode#2356 <https://github.com/aboutcode-org/vulnerablecode/pull/2356>`_
146+
* - 4
147+
- EPSS History
148+
- `vulnerablecode#2328 <https://github.com/aboutcode-org/vulnerablecode/pull/2328>`_
149+
150+
151+
Pre-GSoC Work
152+
-------------
153+
154+
.. list-table::
155+
:widths: 10 60 30
156+
:width: 100%
157+
:header-rows: 1
158+
159+
* - No.
160+
- Name
161+
- Link
162+
* - 1
163+
- Add Mirror Pipeline for EUVD using GitHub Actions
164+
- `aboutcode-mirror-euvd#1 <https://github.com/aboutcode-org/aboutcode-mirror-euvd/pull/1>`_
165+
* - 2
166+
- Document the readme.md for EUVD Mirror
167+
- `aboutcode-mirror-euvd#3 <https://github.com/aboutcode-org/aboutcode-mirror-euvd/pull/3>`_
168+
* - 3
169+
- Add Importer Pipeline for Tuxcare Advisories
170+
- `vulnerablecode#2104 <https://github.com/aboutcode-org/vulnerablecode/pull/2104>`_
171+
* - 4
172+
- Add Importer Pipeline for Vmware Photon Advisories
173+
- `vulnerablecode#2198 <https://github.com/aboutcode-org/vulnerablecode/pull/2198>`_
174+
* - 5
175+
- Add Importer Pipeline for Openstack Advisories
176+
- `vulnerablecode#2154 <https://github.com/aboutcode-org/vulnerablecode/pull/2154>`_
177+
* - 6
178+
- Fix Nix Flake error in GitHub Actions
179+
- `vulnerablecode#2161 <https://github.com/aboutcode-org/vulnerablecode/pull/2161>`_
180+
* - 7
181+
- Add Importer Pipeline for EUVD
182+
- `vulnerablecode#2046 <https://github.com/aboutcode-org/vulnerablecode/pull/2046>`_
183+
* - 8
184+
- Add alpine in RANGE_CLASS_BY_SCHEME
185+
- `univers#185 <https://github.com/aboutcode-org/univers/pull/185>`_
186+
* - 9
187+
- Add support for Openstack Advisories
188+
- `univers#184 <https://github.com/aboutcode-org/univers/pull/184>`_
189+
* - 10
190+
- Fix missing cwe2 dependency
191+
- `vulnerablecode-ai-experiments#15 <https://github.com/aboutcode-org/vulnerablecode-ai-experiments/pull/15>`_
192+
* - 11
193+
- Identify and fix env load failures due to improper typecasts
194+
- `vulnerablecode-ai-experiments#18 <https://github.com/aboutcode-org/vulnerablecode-ai-experiments/pull/18>`_
195+
* - 12
196+
- Researched and documented VulDB API for Vulntotal
197+
- `vulnerablecode#1199 <https://github.com/aboutcode-org/vulnerablecode/issues/1199>`_
198+
199+
200+
Post-GSoC
201+
---------
202+
203+
The Insights Dashboard can be extended further with additional charts and panels to provide even
204+
richer data analytics and visibility. These insights act as a direct feedback loop, helping us
205+
continuously refine VulnerableCode by guiding the development of new data pipelines,
206+
targeted improvers, and architectural enhancements.
207+
208+
Next Steps
209+
^^^^^^^^^^
210+
211+
* `Review Vulnerablecode after Insights is Live #2413 <https://github.com/aboutcode-org/vulnerablecode/issues/2413>`_
212+
* `Risk Panel in Insights #2414 <https://github.com/aboutcode-org/vulnerablecode/issues/2414>`_
213+
* `Improve UX of CWE distribution chart #2416 <https://github.com/aboutcode-org/vulnerablecode/issues/2416>`_
214+
* `Make charts more interactive #2417 <https://github.com/aboutcode-org/vulnerablecode/issues/2417>`_
215+
216+
Closing Thoughts
217+
----------------
218+
219+
Working on VulnerableCode Insights was a truly rewarding experience that I thoroughly enjoyed.
220+
Designing the Insights Dashboard was a particularly thought-intensive process where
221+
I found myself drawing inspiration from various insights features like Spotify Capsule
222+
and GitHub Insights.
223+
224+
The most amazing part of this journey was the `weekly meetings <https://meet.jit.si/AboutCode>`_ with my mentors. It was an
225+
incredibly smooth experience, and I owe a huge thanks to them for all their
226+
thoughtful inputs, guidance and feedback:
227+
228+
Mentors: `Philippe Ombredanne <https://github.com/pombredanne>`_, `Hritik Vijay <https://github.com/hritik14>`_, `Keshav Priyadarshi <https://github.com/keshav-space>`_, `Ziad Hany <https://github.com/ziadhany>`_, `Ayan Sinha Mahapatra <https://github.com/AyanSinhaMahapatra>`_, and `Tushar Goel <https://github.com/TG1999>`_
229+
230+
It was truly amazing to have this opportunity to learn, contribute, and grow with `AboutCode <https://github.com/aboutcode-org>`_ this summer, filled with tons of bugs and caffeine.
231+
232+
Until next time!

0 commit comments

Comments
 (0)