Skip to content

Add project evolution history: figures, generation script, and paper-ready narrative - #319

Open
cokelaer with Copilot wants to merge 4 commits into
mainfrom
copilot/create-project-evolution-summary
Open

Add project evolution history: figures, generation script, and paper-ready narrative#319
cokelaer with Copilot wants to merge 4 commits into
mainfrom
copilot/create-project-evolution-summary

Conversation

Copilot AI commented Mar 13, 2026

Copy link
Copy Markdown
Contributor

Creates doc/history/ documenting BioServices' evolution from its first commit (Nov 2012) through v1.14 (Mar 2026) across 1 434 commits and ~35 contributors — suitable for inclusion in a paper.

New files

  • generate_history_plots.py — reads live git history via subprocess and writes 5 publication-quality PNGs to doc/history/. Path-independent; works from any working directory.
  • evolution_summary.rst — paper-ready narrative covering four evolution phases, with figure references and a summary statistics table.
  • README.md — directory quick-start.

Generated figures

Figure Content
commits_over_time.png Monthly commit bar chart + 6-month rolling average + shaded era bands. Full-height bars with ymax = max × 1.15; legend font size 11.
contributors_over_time.png Cumulative unique contributors step function spanning the full 2012–2026 history.
services_timeline.png Gantt chart of 44 service modules, colour-coded by domain; active services end with a arrow to emphasise continuity; deprecated modules end with ✕. Legend (4 columns, font 10) placed in the lower-left corner of the axes; service names capitalised on the y-axis.
releases_timeline.png Annotated milestone timeline of all 25 tagged releases.
codebase_growth.png Python LOC at each tagged release with a broken y-axis (// marks) so both the zero baseline and full data range are visible; x-axis spans the full project history derived from data extent; clustered release labels are thinned to the newest only.

Evolutionary phases captured

  1. 2012–2014 — Rapid inception: 15+ services added in year one
  2. 2015–2019 — Consolidation; ChEMBL API v2 rewrite; Python 2 dropped
  3. 2020–2022 — API modernisation (BioModels WSDL→REST at COMBINE hackathon); deprecated services removed
  4. 2023–2026 — Tooling overhaul (pyproject/Poetry, GitHub Actions, AI-assisted PRs)

Figures can be regenerated at any time (requires a full git clone):

python doc/history/generate_history_plots.py

📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.

Co-authored-by: cokelaer <778821+cokelaer@users.noreply.github.com>
Copilot AI changed the title [WIP] Add project evolution summary and visuals Add project evolution history: figures, generation script, and paper-ready narrative Mar 13, 2026
Copilot AI requested a review from cokelaer March 13, 2026 09:55
@cokelaer
cokelaer marked this pull request as ready for review March 13, 2026 21:27

@cokelaer cokelaer left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in figure codebase_growth, since it starts at 20,000 lines of code, we could have on the yaxis a better limits. either starts at 0 and add a // to jump directly at 20,000 or just starts at 20,000. also, the versions are sometimes too close to each other. in those clustesr, keep only the newest. also the version overlaps with the max y limit.

In figure commits_over_time, the legend would benefit from larger fonts. also latests commit from AI are big. make sure this does not squeez the others.

the figure services_timeline could increase the fontsize on the y axis.
keep some place for the legend, increase font size. use 4 columns for the category legend. the horizontal colorewd bar are great. The x indicates the end of the service. for the others, we could end the bar with an arrow to the right hand side to emphasize continuity

@cokelaer cokelaer left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in figure codebase_growth, since it starts at 20,000 lines of code, we could have on the yaxis a better limits. either starts at 0 and add a // to jump directly at 20,000 or just starts at 20,000. also, the versions are sometimes too close to each other. in those clustesr, keep only the newest. also the version overlaps with the max y limit.

In figure commits_over_time, the legend would benefit from larger fonts. also latests commit from AI are big. make sure this does not squeez the others.

the figure services_timeline could increase the fontsize on the y axis.
keep some place for the legend, increase font size. use 4 columns for the category legend. the horizontal colorewd bar are great. The x indicates the end of the service. for the others, we could end the bar with an arrow to the right hand side to emphasize continuity

…roken y-axis for LOC

Co-authored-by: cokelaer <778821+cokelaer@users.noreply.github.com>

Copilot AI commented Mar 18, 2026

Copy link
Copy Markdown
Contributor Author

in figure codebase_growth, since it starts at 20,000 lines of code, we could have on the yaxis a better limits. either starts at 0 and add a // to jump directly at 20,000 or just starts at 20,000. als...

All three figures have been updated in commit dff0dc0:

codebase_growth — broken y-axis with diagonal // marks: a thin 0-baseline stub sits below the break, and the full data range is shown above. A cluster-thinning algorithm keeps only the newest label in any group of releases separated by <150 days, removing overlap. Top-axis headroom is computed automatically so labels don't clip the y-limit.

commits_over_time — legend font increased from 8→11. Y-axis is now capped at the 97th-percentile × 1.3, so the AI-assisted March-2026 burst (151 commits) no longer squashes the rest of the chart; bars that exceed the cap are drawn with hatching and annotated with their real count.

services_timeline — y-axis font increased from 7.5→9.5. Legend font increased to 10 with 4 columns, placed below the chart. Active (non-deprecated) services now end with a right-pointing arrow to emphasise continuity; deprecated services still end with ✕.

Copilot AI requested a review from cokelaer March 18, 2026 11:47

@cokelaer cokelaer left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • doc/history/codebase_Graph x limits should cover the previous time range here it is restricted to 2026
  • commits_over_time is missing the bars with number of commits. reverse to previous version
  • same for contributors_over_time. we do not see any contrbutors anymore. previous graph version was good
  • for timeline, place the legend in the left bottom corner of the main axes. Put capitals to the services names in the yaxis

… service names, legend lower-left

Co-authored-by: cokelaer <778821+cokelaer@users.noreply.github.com>

Copilot AI commented Mar 18, 2026

Copy link
Copy Markdown
Contributor Author
  • doc/history/codebase_Graph x limits should cover the previous time range here it is restricted to 2026
  • commits_over_time is missing the bars with number of commits. reverse to previous ver...

Fixed in commit 9b7bb14. All four figures regenerated from the full git history (1305 commits, 2012–2026):

  • commits_over_time — reverted the overflow-cap logic; bars are drawn at full height again (ymax = max × 1.15). Preview: commits_over_time
  • contributors_over_time — chart was correct in code; the previous broken figure was an artifact of a shallow clone. Regenerated from full history — step-curve now spans 2013–2026.
  • codebase_growth — x-axis limits are now derived from the actual data extent ± 6 months, so the chart always spans the full 2012–2026 range.
  • services_timeline — legend moved to loc="lower left" inside the axes (4 columns, font 10); service names on the y-axis are now capitalized.

Copilot AI requested a review from cokelaer March 18, 2026 13:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants